針對(duì)軟件開發(fā)惨寿,無(wú)論是瀑布模型還是敏捷模型,還是任何開發(fā)模式羽戒,永遠(yuǎn)都是軟件工程所說(shuō)的步驟,即在開發(fā)計(jì)劃的指引下虎韵,按照需求易稠、設(shè)計(jì)、開發(fā)包蓝、測(cè)試四個(gè)環(huán)節(jié)驶社,完成應(yīng)用系統(tǒng)的交付。只是各個(gè)環(huán)節(jié)所用的技術(shù)不同测萎、框架不同亡电、以及粒度不同。
1硅瞧、需求獲取份乒、需求分析和需求管理
需求獲取是問(wèn)客戶想要什么?需求的分析是知道客戶的需求是什么,并且解決做什么或辖,最后形成需求規(guī)格說(shuō)明書瘾英,需求的管理就是保證需求到被實(shí)現(xiàn)的過(guò)程的完整性,變更是規(guī)范的颂暇,保證項(xiàng)目范圍不偏離缺谴。
例如在傳統(tǒng)的軟件開發(fā)過(guò)程中,實(shí)際的軟件項(xiàng)目需求規(guī)格說(shuō)明書的編寫過(guò)程中耳鸯,是存在兩種需求規(guī)格說(shuō)明書的湿蛔,一種是用戶需求說(shuō)明書,一種是軟件需求規(guī)格說(shuō)明書县爬,軟件需求規(guī)格說(shuō)明書是基于用戶需求說(shuō)明書編寫的阳啥,其格式取決于所采用的開發(fā)和管理方式,例如按流程開發(fā)的方式捌省、面對(duì)對(duì)象的開發(fā)方式和敏捷項(xiàng)目所采用的需求規(guī)格說(shuō)明書是不同的苫纤。在需求規(guī)格書說(shuō)明書的編寫中,是和業(yè)務(wù)需求分析緊密結(jié)合在一起的纲缓,最簡(jiǎn)單的包括需求的分類卷拘,滿足業(yè)務(wù)域或業(yè)務(wù)類別,還有一些業(yè)務(wù)改進(jìn)和過(guò)程改進(jìn)的內(nèi)容祝高,還有一些內(nèi)容是行為分析的內(nèi)容栗弟。雖然需求不是設(shè)計(jì),但需求多多少少還有一些系統(tǒng)最終實(shí)現(xiàn)后的影子工闺,為此有一些功能性需求的編寫過(guò)程中已經(jīng)對(duì)功能結(jié)構(gòu)進(jìn)行了初步的組織乍赫。需求不一定一定要用用例圖來(lái)描述,采用靈活清晰的規(guī)格化的文檔描述來(lái)編寫具體的需求陆蟆,但避免過(guò)于復(fù)雜雷厂,例如出現(xiàn)很多分支。如果在需求規(guī)格說(shuō)明書中放入系統(tǒng)原型叠殷,則是對(duì)系統(tǒng)界面的實(shí)現(xiàn)進(jìn)行約束改鲫。
在敏捷的軟件開發(fā)過(guò)程中,需求就是經(jīng)過(guò)分析后的用戶故事林束。無(wú)論哪一種方式像棘,需求都是要經(jīng)過(guò)評(píng)審、需要確認(rèn)的壶冒。
2缕题、設(shè)計(jì)
在開展軟件設(shè)計(jì)前,最重要的事情是是應(yīng)用系統(tǒng)是基于什么平臺(tái)進(jìn)行設(shè)計(jì)和開發(fā)胖腾,或者利用什么框架進(jìn)行開發(fā)烟零,甚至是利用過(guò)去的那一個(gè)項(xiàng)目框架進(jìn)行開發(fā)瘪松,這直接影響后續(xù)的工作,選擇不同類型的開發(fā)框架瓶摆,工作量凉逛,人員投入是完全不同的。在當(dāng)前技術(shù)環(huán)境下群井,幾乎很少的軟件會(huì)從零開發(fā)状飞,都是利用已有的框架進(jìn)行的。
在傳統(tǒng)的軟件開發(fā)過(guò)程中书斜,是根據(jù)需求規(guī)格說(shuō)明書的要求诬辈,利用概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)三種設(shè)計(jì)來(lái)完成軟件應(yīng)用的設(shè)計(jì)的荐吉,概要設(shè)計(jì)關(guān)注流程和功能焙糟,詳細(xì)設(shè)計(jì)關(guān)注于類的代碼的實(shí)現(xiàn),數(shù)據(jù)庫(kù)設(shè)計(jì)關(guān)注于數(shù)據(jù)庫(kù)和表样屠。將設(shè)計(jì)任務(wù)分配下去穿撮,不同的人完成不同的模塊的設(shè)計(jì)方案,方案由流程圖痪欲、類圖等組成悦穿。利用敏捷開發(fā)方法,則省去很多步驟业踢,不再形成規(guī)模巨大的文檔栗柒,而是圍繞著用戶故事進(jìn)行設(shè)計(jì)、開發(fā)和測(cè)試的知举,目標(biāo)是快速交付成果瞬沦。無(wú)論什么形式的設(shè)計(jì),也都需要通過(guò)不停的優(yōu)化和評(píng)審雇锡,最后形成正確有效的開發(fā)方案逛钻。
3、開發(fā)代碼
開發(fā)代碼是一個(gè)非常具體的工作锰提,通過(guò)一個(gè)個(gè)鍵盤上的字母完成整個(gè)系統(tǒng)的交付曙痘,就和作家爬格子完成長(zhǎng)篇小說(shuō)一樣。每個(gè)人的開發(fā)效率不同欲账,能力不同屡江,根據(jù)自己的能力做好估算芭概,否則不能完成任務(wù)赛不。開發(fā)代碼前,也是需要有一些設(shè)計(jì)的罢洲,因?yàn)榫唧w的代碼實(shí)現(xiàn)和設(shè)計(jì)還是存在差異的踢故。存在無(wú)數(shù)開發(fā)技巧和方法文黎,例如開發(fā)的時(shí)候注意使用已有的類庫(kù)進(jìn)行代碼重用,少用全局變量等等殿较,總之耸峭,代碼要清晰,增加注釋淋纲。作為程序員劳闹,注釋就是一切文檔。
開發(fā)代碼時(shí)洽瞬,要利用配置管理系統(tǒng)進(jìn)行版本控制本涕,此外,不懂就問(wèn)伙窃、互聯(lián)網(wǎng)搜索是加快開發(fā)速度的關(guān)鍵菩颖。此外,代碼也是需要進(jìn)行評(píng)審的为障,通過(guò)評(píng)審還能夠優(yōu)化代碼晦闰。
4、測(cè)試
測(cè)試的目的是發(fā)現(xiàn)軟件的缺陷鳍怨,保證交付的應(yīng)用系統(tǒng)滿足需求呻右,測(cè)試是非常關(guān)鍵的,甚至測(cè)試的時(shí)間比開發(fā)的時(shí)間還要長(zhǎng)京景,并且越是在開發(fā)末期發(fā)現(xiàn)的缺陷窿冯,修復(fù)缺陷所付出的成本是越多的。敏捷開發(fā)是測(cè)試驅(qū)動(dòng)的确徙,開發(fā)時(shí)就是包括測(cè)試工作的醒串,這樣才能迅速交付能用的系統(tǒng)。相比之下鄙皇,傳統(tǒng)模式就復(fù)雜得多芜赌,首先編寫測(cè)試用例,然后開始單元測(cè)試伴逸、功能測(cè)試缠沈、集成測(cè)試、驗(yàn)收測(cè)試等错蝴,按部就班洲愤,發(fā)現(xiàn)測(cè)試問(wèn)題再周期性去完善開發(fā),周期比較長(zhǎng)顷锰,某環(huán)節(jié)問(wèn)題較多的情況下柬赐,容易讓項(xiàng)目延期。測(cè)試還包括接口測(cè)試官紫、性能測(cè)試肛宋、壓力測(cè)試州藕、界面測(cè)試、安全測(cè)試酝陈、安裝測(cè)試等床玻,這些都是根據(jù)不同的項(xiàng)目類型進(jìn)行選擇,如果合同中提到或者需求中提到沉帮,就需要去完成這個(gè)測(cè)試锈死。
測(cè)試需要工具,自動(dòng)化工具讓測(cè)試事半功倍穆壕,測(cè)試出的缺陷馅精,需要跟紀(jì)錄、審查粱檀、跟蹤洲敢、修改、驗(yàn)證茄蚯、關(guān)閉压彭、整理、分析渗常、匯總等很多狀態(tài)管理壮不,無(wú)論過(guò)程有多么復(fù)雜,測(cè)試工作都需要去完成皱碘,畢竟询一,交付一個(gè)少缺陷的高質(zhì)量的軟件是每一個(gè)IT人的夢(mèng)想。