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