色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何戰(zhàn)勝軟件開發(fā)的復雜性?

傅智翔2年前16瀏覽0評論

這是一個非常大的計算機軟件工程學課題,全面展開都可以寫好幾本書,這里我就力求用最精煉的方式將其中的要點講清楚

一、歷史

1、軟件作坊時代(20世紀60年代)

這一時期軟件規(guī)模一般都很小,人們寫軟件就是直接寫代碼(數千~數萬行代碼),畢竟規(guī)模有限、幾乎都能記住

2、軟件工程危機(20世紀70年代)

硬件飛速發(fā)展,隨著軟件規(guī)模及復雜度的激增,程序規(guī)模一旦到了幾十萬行、上百萬行時候,人們就開始駕馭不住了——系統(tǒng)沒有一個可讓團隊成員清晰參考的整體架構,不同人之間很難溝通協作;就算是自己寫的代碼,一年半載之后,你不認識它、它不認識你!

3、軟件過程時代(20世紀80年代)

軟件開發(fā)引入了成熟的生產制造管理方法,以過程控制為中心、分階段來控制軟件的開發(fā)(如:瀑布模型),“過程控制”一定程度上緩解了軟件危機。

4、重型過程時代(20世紀90年代)

軟件項目的失敗,促使人們不斷地向“過程控制”增加約束及限制,軟件的開發(fā)過程變得越來越厚重(如:CMMI模型),人們會為“過程控制”寫大量的文檔及規(guī)范,軟件開發(fā)周期被不斷地加長,最終導致做出來的產品并不能迅速滿足市場客戶的需求(大量開發(fā)出來的功能甚至成為用戶不需要的功能)

5、敏捷開發(fā)時代(2000~2009)

隨著信息時代的到來,市場需求變化越來越快,交付周期成為企業(yè)核心競爭力,更能適應快速變化的敏捷軟件開發(fā)方法(如:scrum、XP等)被普遍認可;輕量級、快速地進行版本迭代,是敏捷開發(fā)的核心,相應地也產生了多種多樣的敏捷實踐方法,如:產品backlog、迭代會議、測試驅動開發(fā)、結對編程等等;敏捷開發(fā),也讓一些團隊一度陷入過理解誤區(qū),如:認為搞敏捷開發(fā)就意味著不再寫文檔、做計劃、不再做架構設計、甚至不用再做測試等等

二、當下(2010~現在)

通過借鑒軟件行業(yè)歷史經驗、同時結合我們(核子力量科技)自己產品項目實踐過程,我們認為無論CMMI、還是敏捷開發(fā),都只是一種軟件項目過程控制方法,其本質并沒有絕對的好壞優(yōu)劣、對于具體的項目也只有適合與不適合的問題。一些市場需求變化慢、規(guī)模大的產品(如:電信運營商核心通信設備)仍然可以采用CMMI模型控制項目,一些面向終端用戶、市場需求變化快、中小型產品(如:APP)就比較適合采用敏捷開發(fā)模型控制項目。為了應對軟件開發(fā)的復雜性,我們借鑒CMMI及敏捷開發(fā)模型優(yōu)點、同時結合自己項目的實踐經驗,梳理出一套行之有效的軟件過程控制方法——我們產品的開發(fā)都是按需求的優(yōu)先級、分多個迭代版本進行,現將每個迭代版本的要點分享如下:

1、系統(tǒng)分析

該階段主要是闡述清楚項目到底要“做什么”,可以從各種用戶的角度進行使用場景(Story)分析;可以用UML需求文檔圖、用例圖、活動圖等進行分析建模,最終以文檔的方式進行存儲

2、架構設計

該階段主要是根據系統(tǒng)分析闡述清楚項目總體上到底要“怎么做”,劃分成哪些子系統(tǒng)(如:IOS端、Android端、Web端、應用服務器、數據庫服務器等),每個子系統(tǒng)大致又會有哪些主要的模塊;然后就是根據總體設計進行用戶體驗設計、數據庫設計、業(yè)務交互設計、通信協議設計等;可以用原型設計工具(如:Axure)、數據庫概念模型圖、UML協作圖等進行設計建模,最終以文檔的方式進行存儲

3、模塊設計

該階段主要是根據架構設計闡述清楚各個子系統(tǒng)中的每個模塊具體實現上“怎么做”,這里可以用多種設計模式對模塊中的類(及其接口)進行設計;可以用UML類圖、時序圖、狀態(tài)圖等對類(及其接口)進行設計建模,最終以文檔的方式進行存儲

4、開發(fā)實現

該階段主要就是根據模塊設計進行具體的代碼實現(有的模塊設計工具可以直接生成類的框架代碼)。該階段開發(fā)人員不僅要完成功能代碼的實現、而且還要對自己的功能代碼進行單元測試及模塊集成測試,這里主要借鑒敏捷開發(fā)模式——將測試前移到開發(fā)階段,不再設立獨立的單元測試、集成測試階段——因為只有開發(fā)人員才知道自己實現代碼的每一個細節(jié)、其他人很難做到全覆蓋測試。當前的主流開發(fā)語言幾乎都提供了相應的測試工具包支持該階段的測試。

5、系統(tǒng)測試

該階段主要是測試人員根據系統(tǒng)分析及原型設計,對系統(tǒng)的UI、性能進行測試,確保與前期分析與設計一致、而且運行起來穩(wěn)定可靠

6、版本發(fā)布

每個迭代版本最好有發(fā)布說明書,方便后繼人員進行維護及部署;如果是首次發(fā)布,需要提前規(guī)劃好將在哪些應用市場發(fā)布,并申請好相應賬戶,準備好相關的發(fā)布材料(如:著作權、授權書等);如果非首次發(fā)布,做好各版本的管理即可