陳明娟
湖北工業大學,湖北武漢 430068
打開電腦,各種軟件的更新提示窗口不斷閃爍,刺激著每一個軟件開發人員的神經。這就要求開發員不斷地更新自己的知識庫。要做好軟件開發的事情,是一個長時間的過程,要不斷積累學習工作經驗,在實踐中成長。知識面要寬,還要能夠不斷補充自己的知識和完善知識結構,更難得的是要有耐心,上帝只垂青刻苦的人。
開發前還要做好準備工作。一般軟件項目在開發前都有系統任務書,系統的目標、任務、結構、功能、規模、進度要求及人員計劃、經費等都要包括在內的,這只是基本要求。針對具體情況,軟件開發人員和需求分析人員還要聯合對軟件項目的細節進行具體分析,必要時還要進行實地調研,然后共同商討寫出系統的需求分析,包括各方面實現的可行性、必要性和分析原系統(工作環境)現狀,描述待開發系統的功能需求,使用范圍,業務流程,用戶界面,輸出要求,故障處理以及對使用環境的要求,包括網絡環境,硬件環境,軟件環境,與其他系統的關系,安全與保密。提供用戶和開發人員之間溝通的基礎,提供項目設計的基本信息。給出結論和意見。
件開發過程可以包括以下幾個階段:
軟件設計可分為概要設計階段和詳細設計階段。事實上,軟件設計的主要任務是軟件模塊分解,模塊,以及模塊的設計。概要設計是結構設計,其主要目標是讓軟件的模塊結構用軟件結構圖表示。詳細設計的主要任務是設計模塊的程序流程,數據結構與算法,次要任務是設計一個數據庫。
軟件編碼是指軟件設計成一個計算機可以接受的程序。在當前軟件開發中除特殊場合,已很少使用在第二十世紀80年代的高級語言,取代它的是面向對象的開發語言。面向對象的編程語言和開發環境完美融合,大大提高了發展的速度。
以較小的代價發現盡可能多的錯誤是軟件測試的目的。要實現這個目標,設計一套出色的測試用例(測試用例是由測試數據和預期的輸出結果組成)是關鍵所在。而用例設計的關鍵則是以較少的用例覆蓋盡可能多的內部程序邏輯結果。
維護就是根據軟件運行的情況,對軟件進行適當修改,以適應新的要求,并糾正在運行過程中發現的錯誤操作完成軟件問題報告,軟件修改報告。在這段時間里,研制階段所遇到的各種問題都幾乎得到解決,而且還解決了一些維修工作本身特有的問題,可以使它擴展功能,提高性能,從而帶來明顯的經濟效益。不幸的是,軟件維護工作的關注程度往往遠不如對軟件開發工作的。
典型的開發模型有:1)瀑布模型(waterfall model);2)邊做邊改模型(Build-and-Fix Model);3)增量模型(Incremental Model);4)螺旋模型(spiral model);5)噴泉模型(fountain model,(面向對象的生存期模型, OO模型));6)智能模型(intelligent model)
1970年Winston Royce提出了著名的“瀑布模型”,將軟件生命周期劃分,規定了它們自上而下、相互銜接的固定次序,如同高山流水,逐級下落,它一直是80年代早期唯一被廣泛采用的軟件開發模型。但是,這種被人們習慣了的線性思維卻不再適合現在的開發模式,幾乎被拋棄。
在這種模型中,沒有套路也沒有經過設計,軟件隨著客戶的需要一次又一次地不斷被修改。“邊做邊改”模型開發了很多的軟件產品。但它對編寫幾百行的小程序來說還不錯,但對任何規模的開發來說都是無法實現的。
與蓋房子相同,軟件也是一磚一瓦建造起來的。在增量模型中,第一個增量往往是實現基本需求的核心產品,先給他用戶使用之后再根據需求形成下一個增量計劃。再經過集成和測試,多種相互作用的模塊所形成的提供特定功能的代碼片段構成每一個構件。它也有弊端,比如每一個模塊軟件必需具備開放式的體系結構,但是由于它的自由度比較高也容易使軟件過程的控制失去整體性。
1988年,Barry Boehm正式發表了軟件系統開發的“螺旋模型”,它將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特別適合于大型復雜的系統。它沿著螺線進行若干次迭代 :1) 制定計劃 ;2) 風險分析 ;3) 實施工程 ;4) 客戶評估。螺旋模型由風險驅動,強調可選方案和約束條件從而支持軟件的重用,有助于將軟件質量作為特殊目標融入產品開發之中。但是,螺旋模型適用范圍比較小,對開發人員素質要求很高。
噴泉模型與傳統的結構化生存期比較,具有更多的增量和迭代性質,生存期的各個階段可以相互重疊和多次反復,而且在項目的整個生存期中還可以嵌入子生存期。就像水噴上去又可以落下來,可以落在中間,也可以落在最底部。
智能模型擁有一組工具(如數據查詢、報表生成、數據處理、屏幕定義、代碼生成、高層圖形功能及電子表格等),每個工具都能使開發人員在高層次上定義軟件的某些特性,并把開發人員定義的這些軟件自動地生成為源代碼。但這種方法需要四代語言(4GL)的支持。
自己的開發思路要懂得堅持,別人的思想要懂得理解與吸收,和而不同。不論是開發能力上的還是開發經驗上要向你周圍的人謙虛學習,學會總結,站在巨人的肩膀上才能看得遠。
[1]Geoffery James.編程之道[M].郭海,等譯.北京:清華大學出版社,1999.
[2]張海潘著.軟件工程導論[M].3版.北京:清華大學出版社,1998.
[3]鄭人杰,殷人昆,陶永雷著.實用軟件工程[M].北京:清華大學出版社,1997.
[4]周之英.現代軟件工程基本方法篇[M].北京:科技出版社,2000.
[5]郝克剛.軟件設計研究[M].西安:西北大學出版社,1992.[6]陳明編著.實用軟件工程基礎[M].北京:清華大學出版社,2002.
[7]張友生等編著.軟件體系結構[M].北京:清華大學出版社,2006.