软件开发过程大观——软件开发过程改进为什么能帮助软件质量提升?
軟件開發過程大觀——軟件開發過程改進為什么能幫助軟件質量提升?
?
軟件發展的二個典型趨勢
1、軟件規模日益擴大。類似摩爾定律,功能類似的軟件系統的規模大約每18個月翻一番,每5年,功能類似的軟件系統的規模擴大為原來系統的10倍。
2、軟件在整個系統中的比重日益增加。20世紀60年代,F-4戰機中,由軟件來完成的功能約占整體功能的8%,21世紀,F-22戰機中,由軟件來支持的功能則達到了整體功能的80%
以上趨勢使得軟件軟件質量問題越來越突出。
軟件規模日益擴大,使得軟件越來越難做;軟件比重的日益增加,使得軟件質量問題的影響越來越廣泛和嚴重。
軟件開發項目經常陷入包括軟件質量不佳、項目進度延期、成本超支、客戶不滿……等等的“焦油坑”。
在傳統行業,質量管理和企業管理方面的經驗和理論表明,產品的質量取決于過程的質量。
用工程化的思想來管理軟件開發,借鑒傳統行業在質量管理方面的經驗,可以在一定程度上緩解上述問題。
軟件工程,是研究以一種高效的方式提供高質量軟件產品的工程學科。
?
軟件開發過程的發展歷史
20世紀50年代,沒有成熟的程序設計語言,軟件開發需要直接面對硬件環境。
20世紀60年代,軟件作坊(Softwarecrafting)誕生。
軟件開發的特殊性被發現:
1、軟件可以復制。不需要昂貴的生產線就可以復制軟件。
2、軟件比硬件容易修改。由此形成了“Codeand fix”的開發方法。
但軟件隨意的修改,也帶來了嚴重的隱患:軟件的演化更加隨意,跟蹤困難,最終形成了類似意大利式面條的局面(“一團糟”)。
此期間也形成了倡導自由精神的黑客文化和牛仔風格的牛仔式程序員(他們采用急速而草率的方式,可以連續通宵達旦的連續工作多天,在截至日期前完成存在很多缺陷的代碼)。
?
20世紀70年代,形式化方法與瀑布過程。
程序編碼應該更加精心的組織,在設計之前,需要經過更加仔細的需求工程。
形式化方法,在可伸縮性和易用性方面存在很多困難。
?
20世紀80年代,生產率和可伸縮性。
在過程標準方面的投入,可以減少軟件開發過程的返工,顯著提高軟件生產率。
美國國防部DoD與CMU聯合成立了? SEI來制定過程標準。
?
20世紀90年代,并發過程和順序過程。
關注產品上線時間,導致并發過程的興起,并行工程的風險帶來風險驅動的螺旋模型。
1991年,SEI發布CMM1.0; 1993年,SEI發布CMM1.1。
CMM針對組織級的軟件過程標準粒度較粗,還需要考慮更小的組織單位,即個人軟件過程(PSP)和小組軟件過程(TSP)。
SEI在CMM基礎上,進一步提煉組織級軟件過程改進的一般性理論框架,發布了IDEAL模型。IDEAL模型就像是傳統行業質量管理的PDCA模型在軟件行業的推廣,是一種比較通用的理論框架。
?
2000年,敏捷方法,基于價值的方法
敏捷方法,如自適應軟件開發、Crystal方法、動態系統開發、XP、FDD、Scrum等
基于價值的方法,低風險高動態變化的,適用于輕量級的敏捷開發方法,高風險低變更(固定)的,適用于規范化的計劃驅動的方法。
2000年,SEI發布了CMMI1.0,2010年,發布了CMMI1.3.
?
2010年,DevOps的出現,方法、工具、技術上引發了一些新的變化。
精益方法(lean Development)是支撐DevOps的理論基礎。
DevOps的開發工具集和整體解決方案的出現。
虛擬化的平臺技術如云計算、容器,微服務架構,自動化技術
?
PSP(Personal Software Process)
一種個人級用于控制、管理和改進工程師個人工作方式的持續改進過程。
包括數據記錄表格、過程操作指南、規程
PSP過程度量包括:
1、度量時間
2、度量缺陷
3、度量規模
過程質量的度量指標包括:
1、Yield,度量每個階段在消除缺陷方面的效率。
(1)Phase Yield,表示某個階段缺陷消除的效率。
(2)Process Yield,表示在第一次編譯前消除缺陷的效率。
2、A/FR,Appraisal toFailure Ratio,質檢失效比。A/FR=質檢成本/失效成本。
A/FR用于指導工程師合理安排評審和測試時間。A/FR越高,質量越高,也意味著過多的評審。
3、PQI,Process QualityIndex,過程質量指標。用于度量PSP過程的整體質量。
4、Review Rate,評審的速度。用戶指導工程師開展有效評審的指標。
統計表明,代碼評審速度小于200代碼行(LOC)/小時,文檔評審速度小于4頁(Page)/小時,就可以保證工程師有效的發現足夠多的缺陷。
?
TSP(Team Software Process)
一種小組級用于控制、管理和改進小組工作方式的持續改進過程。
?
過程改進參考模型和標準
1、CMM
過程控制和過程管理的方法。可用于軟件過程改進、過程評估、軟件能力評價。
18個關鍵過程域。
2、CMMI
整合了三個模型。
25個關鍵過程域。
3、SPICE(Software ProcessImprovement and Capability Determination),軟件過程改進和能力鑒定標準。軟件過程評估國際標準。
4、ISO/IEC 15504,軟件過程評估標準,是SPICE的演化。
5、ISO/IEC 12207,軟件生命周期過程標準。
6、ISO 9000
?
2017-12-14
--------------------------------------
總結
以上是生活随笔為你收集整理的软件开发过程大观——软件开发过程改进为什么能帮助软件质量提升?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顾盼华发鸿蒙怦然而梦是什么意思,最美的承
- 下一篇: 为知所见即所得MarkDown插件