軟件工程筆記:軟件過程綜述

軟件過程綜述

— 筆記整理自 北京理工大學 計算機學院

混沌的開發過程


備註:圖片託管於github,請確保網絡的可訪問性

  • 開發過程像是個黑盒,沒有可視性,無從得知開發人員是否按照標準的開發過程進行軟件開發活動
  • 無法保證軟件產品質量的穩定

過程思維

  • 過程思維 vs 任務思維
  • 過程思維注重
    • 過程思維的意識
    • 總體目標
    • 各部分工作的協調性和一致性
  • 面向任務的思維注重
    • 傳統思維模式
    • 注重任務和作業
    • 注重人員和組織結構
    • 忽略了當各個局部之間矛盾出現衝突的時候,再去着手解決,導致低效和內耗發生
  • 軟件質量保證與過程思維相關
  • 軟件質量控制與任務思維相關

CMM之父談軟件過程

  • Watts Humphrey (1927~2010)
  • 過程質量決定產品質量
  • 過程應該可控制,可度量和可改進
  • 軟件過程是工具、方法和實踐
  • 軟件過程管理的目標是生產出好產品
  • 成本估算和開發期承諾應該是合理的
  • 有效的軟件管理應考慮多種因素
    • 任務
    • 方法
    • 工具
    • 參與工作的人員技能
    • 積極性
  • 有效的軟件過程必須是可預測的

什麼是過程

  • 過程就是人們使用相應的方法、規程、技術、工具等將原始材料(輸入)轉化成用戶需要的產品
    • 基本過程類(獲取過程、供應過程、開發過程、運作過程、維護過程、管理過程)
    • 支持過程類(文檔過程、配置管理過程、質量保證過程、驗證過程、確定過程、聯合評審過程、審計過程、問題解決過程)
    • 組織過程類(基礎設施過程、改進過程、培訓過程)

備註:圖片託管於github,請確保網絡的可訪問性

過程要素

  • 輸入(業務需求)和輸出(用戶滿意的產品)
  • 活動及進一步分解的任務
    • 活動完成了從輸入到輸出的增值過程
  • 資源:人員、設備及相關的耗費
    • 爲了完成任務需要的資源
  • 測量與驗證
    • 保證開發過程按照規範的要求來進行
    • 測量可以是從活動或者是工作成果中獲取相關的質量特性並和預期值作比較
    • 滿足預期值則合格,不滿足則不合格
  • 過程目標: 增值
    • 最大限度的控制成本,提高質量取得最大的增值效果
  • 核心問題
    • 做什麼
    • 誰來做
    • 怎麼做

備註:圖片託管於github,請確保網絡的可訪問性

過程之間的關係


備註:圖片託管於github,請確保網絡的可訪問性

  • 軟件開發過程可以分爲基本過程,實施過程,組織過程
  • 不同的人員從不同角度關注各自的子過程
  • 獲取者和供應者以合同的觀點來關注獲取過程和供應過程
  • 開發運維人員從開發觀點關注開發過程和維護過程,同時可以以支持的觀點來關注支持過程和組織過程
  • 而支持過程、組織過程則關係着整個軟件生產過程,爲其他過程提供服務和支持
  • 過程思維要求我們有全局的觀念,不僅考慮自身關注的和各個過程的協調性和一致性,從而獲得整體的成功

過程成熟度與過程能力

  • 所有軟件開發企業都有自己獨特的軟件開發過程
  • 如何衡量一個軟件過程的優劣?
  • 過程成熟度:特定軟件過程得到清晰的定義、管理、測量、控制的有效程度
  • 軟件過程能力是指軟件開發過程能夠達到的能力,包括可達到的質量、效率、工期、成本等
  • 成熟度意味着能力的增長潛力
  • 成熟軟件組織的能力是已知的
  • 成熟的過程需要規範化

成熟與不成熟的過程

  • 角色與職責:明確與否
    • 不成熟:沒有明確角色和職責,常會發現重疊,不清楚的所屬關係和責任
    • 成熟:有明確的規定和職責,項目之間關係沒有重疊,有明確目標和測量方法能夠持續改進過程
  • 處理變更的方式:做事依據
    • 不成熟:每個人按自己的想法做事,無秩序的混亂現象隨處可見
    • 成熟:大家遵守一個規劃好的,相互之間分享取得的經驗
  • 對發生問題的反應:救火還是防火
    • 不成熟:每個人都想當英雄
    • 成熟:專業的規則和熟練的知識對問題進行分析和處理
  • 可信性:估算是否有效
    • 不成熟:經常延遲交付產品,超出預算
    • 成熟:估算較爲準確,項目可以得到有效的控制管理,目標一般都能達到
  • 對人員的獎勵:救火者or防火者
    • 不成熟:獎勵救火員(頭痛醫頭,腳痛醫腳,沒有本質解決問題的人)
    • 成熟:獎勵的是防火者(生產效率高,質量高的團隊)
  • 預見性:進度和預算
    • 不成熟:質量往往不可把握,依賴個人,不能根據以往的經驗來確定
    • 成熟:項目進展和產品質量都可預見,進度和預算可根據以往經驗來確定,符合實際情況

過程制度化

  • 規範化過程滲入組織日常生活中,過程的要求已變成全體員工自覺的行動,得到大家認同和堅持遵循的原則,過程便成爲制度化
  • 做到這些並不容易,要靠過程文化和過程基礎設施的支持
  • 過程從規範化到制度化
  • 過程文化對制度化的支持
    • 過程文化:人們的習慣,思維受到過程思維和過程管理原則的影響,人們對規範化的過程是完全認同的
  • 過程基礎設施對制度化的支持
    • 基礎設施:支持軟件過程的基礎框架和結構基礎,包括組織和管理的崗位職責,支持定義的過程,開展過程的活動,獲取分析過程反饋,不斷進行過程改進所必須的工具和平臺
    • 組織和管理基礎設施:建立,監控,推進過程活動的崗位和職責,支持過程的崗位和職責又有面向全局和局部的工程組
      • 全局:公司級上工作,歸屬軟件工程過程組
      • 局部:項目級上工作或某個特定的關鍵過程域上工作
    • 技術基礎設施
  • 全職與兼職
    • 全職:比如:軟件工程過程組
    • 兼職:比如軟件過程改進組

備註:圖片託管於github,請確保網絡的可訪問性

過程特性

  • 過程應當被定義 —— 文檔化
    • 仔細思考總結,提出不確定因素
  • 過程應當被人們掌握 —— 相關人員必須通過學習掌握過程
    • 不被理解和掌握的過程是沒有實際意義的
    • 掌握一個複雜的過程是不易的,需要對過程自身的認識和培訓,還要掌握相關的技能
    • 需要對相關人員進行充足的培訓才能掌握
  • 過程必需被實施 —— 通過實踐見成效,發現新問題,不斷改進
  • 過程應當可監控 —— 過程的可視性
    • 如果過程不可視,不可控就是一個混沌的過程
    • 無法消除恐懼感,無法對過程進行度量和改進
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章