劉 燕 劉 巖
(中國(guó)電子科技集團(tuán)公司第二十八研究所 江蘇 210007)
計(jì)算機(jī)軟件是由專業(yè)人員開發(fā)并長(zhǎng)期維護(hù)的軟件產(chǎn)品,是指計(jì)算機(jī)系統(tǒng)中的程序、數(shù)據(jù)及其文檔。完整的軟件產(chǎn)品包括:可以在各種不同規(guī)模及體系結(jié)構(gòu)的計(jì)算機(jī)上運(yùn)行的程序,程序運(yùn)行過程中產(chǎn)生的各種結(jié)果,以及各種描述信息,這些信息可以以硬拷貝或是各種電子媒介形式存在。在現(xiàn)代社會(huì)中,軟件應(yīng)用于多個(gè)方面。常用的軟件有電子郵件、各種各樣的操作界面、辦公軟件、WEB瀏覽器、人工智能、殺毒軟件、電子銀行、游戲等。軟件已成為今天商業(yè)、工程和科學(xué)所必需的技術(shù),軟件促進(jìn)了新科技的發(fā)展,如:納米技術(shù)、基因工程、通信工程,也轉(zhuǎn)變了傳統(tǒng)的生活方式,如:電子商務(wù)。這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會(huì)的發(fā)展,也提高了工作和生活效率。
為了構(gòu)建能夠適應(yīng)越來(lái)越快發(fā)展的軟件產(chǎn)品,就必須認(rèn)識(shí)的以下幾個(gè)問題:
(1)軟件已深入到我們生活的各個(gè)方面,人們對(duì)軟件提出了越來(lái)越多的功能需求。
(2)隨著軟件功能的越來(lái)越強(qiáng)大,過去可以由一個(gè)或幾個(gè)人來(lái)構(gòu)建的計(jì)算機(jī)軟件,現(xiàn)在需要一個(gè)龐大的團(tuán)隊(duì)來(lái)實(shí)現(xiàn)。
(3)個(gè)人和企業(yè)越來(lái)越依賴計(jì)算機(jī)軟件,計(jì)算機(jī)軟件的質(zhì)量可靠性提上了越來(lái)越重要的地位。
綜上所述,對(duì)軟件提出了越來(lái)越高的要求,如何使軟件更多更好的滿足人們的需求,如何能使軟件團(tuán)隊(duì)及時(shí)高效的交付軟件,如何能產(chǎn)生更高質(zhì)量更高可靠性的軟件,如何能花更低的成本來(lái)對(duì)軟件進(jìn)行后期維護(hù)。這些都需要對(duì)軟件進(jìn)行工程化。
當(dāng)開發(fā)產(chǎn)品或構(gòu)建系統(tǒng)時(shí),軟件遵循一系列可預(yù)測(cè)的步驟,軟件開發(fā)過程中將所遵循的步驟就稱為軟件過程。軟件過程定義了一個(gè)框架,該框架包括構(gòu)建軟件時(shí)所執(zhí)行的一系列活動(dòng)、動(dòng)作和任務(wù)的集合。這個(gè)任務(wù)集明確了將要完成的任務(wù)各個(gè)階段狀態(tài)、軟件流程、軟件開發(fā)階段性成果和驗(yàn)收要求。軟件過程提高了軟件工程活動(dòng)的穩(wěn)定性、可控性和組織性,如果沒有過程約束,軟件活動(dòng)將變得不可控。具體來(lái)講,采用哪種軟件過程取決于軟件的特點(diǎn)。
增量過程模型在需要為用戶迅速提供一套功能有限的軟件產(chǎn)品,然后在后續(xù)版本中在進(jìn)行細(xì)化和擴(kuò)展功能提供了模型。在項(xiàng)目既定的期限內(nèi)要交付產(chǎn)品,增量過程模型特別有用。在第一個(gè)增量中軟件產(chǎn)品往往是核心產(chǎn)品,滿足基本需求,一些附加特性在后續(xù)的產(chǎn)品進(jìn)行增量提交。
演化過程模型是迭代的過程模型,在軟件開發(fā)過程中需求不斷的變化,這種模型是專門應(yīng)對(duì)不斷變化的軟件產(chǎn)品。里面包括原型開發(fā)模型和螺旋模型。螺旋模型結(jié)合了原型的迭代性和瀑布模型的系統(tǒng)性。具有快速開發(fā)越來(lái)越完善版本的潛力。
軟件是由人組成的團(tuán)隊(duì)來(lái)開發(fā)的,與軟件項(xiàng)目相關(guān)的各類人員通過充分的交流和有效的合作,才能成功地開發(fā)出得到用戶滿意的軟件。由軟件項(xiàng)目相關(guān)人員和用戶共同組建成得團(tuán)隊(duì)稱之為敏捷開發(fā)團(tuán)隊(duì),敏捷開發(fā)團(tuán)隊(duì)強(qiáng)調(diào)與客戶的協(xié)作,通過與客戶的交流和緊密合作來(lái)發(fā)現(xiàn)用戶的需求。敏捷軟件開發(fā)強(qiáng)調(diào)不斷地快速地向用戶提交可運(yùn)行的軟件(不一定是完整的軟件),以得到用戶的認(rèn)可。敏捷過程提倡可持續(xù)的開發(fā),項(xiàng)目發(fā)起者、開發(fā)者和用戶應(yīng)能長(zhǎng)期保持恒定的速度,強(qiáng)調(diào)人的因素,需有責(zé)任感和積極向上的開發(fā)人員和用戶容易溝通并能參與。
軟件方法為軟件開發(fā)提供了如何做的技術(shù),就是把現(xiàn)實(shí)世界的需求反映成軟件的模型化過程。由于軟件系統(tǒng)的大規(guī)?;蛷?fù)雜化,需求變更頻繁,使得模型化過程越來(lái)越困難。目前解決這種困難的有效方法是:結(jié)構(gòu)化方法、面向?qū)ο蠓椒?、形式化方法?/p>
結(jié)構(gòu)化方法也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。采用分階段計(jì)劃和控制,以及順序?qū)嵤┑牟襟E,和各種結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)技術(shù)的軟件開發(fā)方式,它的特點(diǎn)是將軟件生命周期的全過程依次劃分為若干個(gè)階段,采用結(jié)構(gòu)化技術(shù)來(lái)完成每個(gè)階段的任務(wù)。強(qiáng)調(diào)自頂向下順序地完成軟件開發(fā)的各階段任務(wù),結(jié)構(gòu)化方法要么面向行為,要么面向數(shù)據(jù),缺乏使兩者有機(jī)結(jié)合的機(jī)制。
面向?qū)ο蠓椒ê?jiǎn)稱OO方法,是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動(dòng)的系統(tǒng)方法。所謂面向?qū)ο缶褪腔趯?duì)象概念,以對(duì)象為中心,以類和繼承為構(gòu)造機(jī)制,來(lái)認(rèn)識(shí)、理解、刻畫客觀世界和設(shè)計(jì)、構(gòu)建相應(yīng)的軟件系統(tǒng)。面向?qū)ο蟮幕窘Y(jié)構(gòu)可用6個(gè)術(shù)語(yǔ)來(lái)描述,即對(duì)象、類、屬性、消息、操作、關(guān)系。系統(tǒng)的結(jié)構(gòu)中心是對(duì)象,每個(gè)對(duì)象中有屬性和操作,屬性和操作封裝在一個(gè)盒子里,對(duì)象之間通過傳送消息來(lái)協(xié)調(diào)工作。每個(gè)對(duì)象又進(jìn)一步抽象為類,類是對(duì)象實(shí)體的模板,對(duì)象之間的相互地位用關(guān)系表示。
軟件工具是指能支持軟件生存周期中某一階段(如系統(tǒng)定義、需求分析、設(shè)計(jì)、編碼、測(cè)試或維護(hù)等)的需要而使用的軟件工具。早期的軟件工具主要用來(lái)輔助程序員編程,如編輯程序、編譯程序、排錯(cuò)程序等。在提出了軟件工程的概念以后,出現(xiàn)了一批軟件工具來(lái)輔助軟件工程實(shí)施,這些軟件工具涉及到軟件開發(fā)、維護(hù)、管理過程中的各項(xiàng)活動(dòng),并輔助這些活動(dòng)高質(zhì)量地進(jìn)行。如今,軟件工具重視用戶界面的設(shè)計(jì),不斷地采用新理論和新技術(shù),正由單個(gè)工具向多個(gè)工具集成的方向發(fā)展,且注重工具間的平滑過渡和互操作性。
軟件工具的種類繁多,很難有一種統(tǒng)一的分類方法,通常從不同的觀點(diǎn)來(lái)進(jìn)行分類。支持軟件開發(fā)過程的工具:主要有需求分析工具、設(shè)計(jì)工具(通常還可以分為概要設(shè)計(jì)工具和詳細(xì)設(shè)計(jì)工具)、編碼工具、排錯(cuò)工具、測(cè)試工具等。
軟件工程首先是一種指導(dǎo)軟件管理和實(shí)施的先進(jìn)思想。其次,是針對(duì)軟件特點(diǎn)而建立的科學(xué)管理體系。最后,是一門學(xué)科,研究適合軟件的過程、方法和工具。它幫助我們建立有效的、平穩(wěn)的并能持續(xù)改進(jìn)的軟件過程,預(yù)防缺陷、降低成本,最終多快好省地提供優(yōu)質(zhì)的軟件產(chǎn)品或服務(wù),為組織贏得利潤(rùn)、獲得競(jìng)爭(zhēng)力。
[1]鄧人杰,馬素霞等譯.軟件工程實(shí)踐者的研究方法[M],機(jī)械工業(yè)出版社.2014.
[2]朱少民.軟件工程導(dǎo)論[M].清華大學(xué)出版社.2009.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2015年1期