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