軟體生命週期各階段
1. 軟體開發最初的工作應是問題定義,也就是確定要求解決的問題是什麼;
2. 然後要進行可行性研究,決定該問題是否存在乙個可行的解決辦法;
3. 接下來應該進行需求分析,也就是深入具體地了解使用者的要求,在所要開發的系統(不妨稱之為目標系統)必須做什麼這個問題上和使用者取得完全一致的看法;
4. 經過上述軟體定義時期的準備工作才能進入開發時期,而在開發時期首先需要對軟體進行設計(通常又分為概要設計和詳細設計兩個階段);
5. 然後才能進入編寫程式的階段;
6. 程式編寫完之後還必須經過大量的測試工作(需要的工作量通常佔軟體開發全部工作量的40%~50%)才能最終交付使用。
所以,編寫程式只是軟體開發過程中的乙個階段,而且在典型的軟體開發工程中,編寫程式所需的工作量只佔軟體開發全部工作量的10%~20%。
軟體包括程式、文件和資料等成分!
1. 程式是能夠完成預定功能和效能的可執行的指令序列;
2. 資料是使程式能夠適當地處理資訊的資料結構;
3. 文件是開發、使用和維護程式所需要的**資料。
程式只是完整的軟體產品的乙個組成部分,在上述軟體生命週期的每個階段都要得出最終產品的乙個或幾個組成部分(這些組成部分通常以文件資料的形式存在)。也就是說,乙個軟體產品必須由乙個完整的配置組成,軟體配置主要包括程式、文件和資料等成分。必須清除只重視程式而忽視軟體配置其餘成分的糊塗觀念。作好軟體定義時期的工作,是降低軟體成本提高軟體質量的關鍵。如果軟體開發人員在定義時期沒有正確全面地理解使用者需求,直到測試階段或軟體交付使用後才發現「已完成的」軟體不完全符合使用者的需要,這時再修改就為時已晚了。
輕視維護是乙個最大的錯誤!
通過上面的論述不難認識到,輕視維護是乙個最大的錯誤。許多軟體產品的使用壽命長達10年甚至20年,在這樣漫長的時期中不僅必須改正使用過程中發現的每乙個潛伏的錯誤,而且當環境變化時(例如硬體或系統軟體更新換代)還必須相應地修改軟體以適應新的環境,特別是必須經常改進或擴充原來的軟體以滿足使用者不斷變化的需要。所有這些改動都屬於維護工作,而且是在軟體已經完成之後進行的,因此維護是極端艱鉅複雜的工作,需要花費很大代價。統計資料表明,實際上用於軟體維護的費用佔軟體總費用的55%~70%。軟體工程學的乙個重要目標就是提高軟體的可維護性,減少軟體維護的代價。
軟體工程支撐環境
應該開發和使用更好的軟體工具。正如機械工具可以「放大」人類的體力一樣,軟體工具可以「放大」人類的智力。在軟體開發的每個階段都有許多繁瑣重複的工作需要做,在適當的軟體工具輔助下,開發人員可以把這類工作做得既快又好。如果把各個階段使用的軟體工具有機地集合成乙個整體,支援軟體開發的全過程,則稱為軟體工程支撐環境。
軟體工程意識
更重要的是,必須充分認識到軟體開發不是某種個體勞動的神秘技巧,而應該是一種組織良好、管理嚴密、各類人員協同配合、共同完成的工程專案。必須充分吸取和借鑑人類長期以來從事各種工程專案所積累的行之有效的原理、概念、技術和方法,特別要吸取幾十年來人類從事計算機硬體研究和開發的經驗教訓。
如何解決軟體危機
總之,為了解決軟體危機,既要有技術措施(方法和工具),又要有必要的組織管理措施。軟體工程正是從管理和技術兩方面研究如何更好地開發和維護計算機軟體的。
實戰經驗
需求及架構設計(在清楚整個系統的功能和效能等的前提下,也就是熟悉此類需求,或者之前有類似專案或產品經驗)
1. 商務、技術支援和使用者交流,得到原始需求
2. 開發人員根據原始需求,把現有各市場產品、社群開源軟體的各種特性(功能、效能、可靠性、穩定性、符合性、易用性、相容性、安全性、可維護性、可擴充套件性)做一下對比
3. 比較現有各市場產品、社群開源軟體的架構特性(實際使用的各種技術和特性等、是否同業界技術趨勢吻合、可擴充套件性、靈活性、相容性、實現的方便性、作業系統的支撐性)
4. 給出本需求的架構設計(包括自己認為可行和不可行的架構,自己的認知有限,所以才需要評審)及各架構的特性對比
5. 開發人員組織各部門(本部門主管、上以部門主管、產品主管、產品經理、產品負責人、測試經理、測試負責人、技術支援、商務)進行架構初審,整理領導和各部門同事的問題和建立,以會議紀要的方式 email 參見初審的所有人員,並在 email 中說明對應問題的責任人以及 deadline。
6. 進行調研後 email 所有人員,答覆所有問題,所有人反饋後,準備架構複審。(或者直接召開複審會議,據具體情況而定)
軟體工程生命週期
產品 pm 後端 rd 前端 fe 測試 qa 人員輸入 輸出評審參與人員 備註需求分析 產品客戶需求 需求規格說明書 prd prd出完後,進行需求評審 全員參與評審 ui設計 ui ue prdui ue圖 ui ue圖出完後,進行評審 全員參與評審 ui 側重檢視展示,主要體驗樣式和邊距 ue...
軟體工程 軟體的生命週期
1 需求分析 軟體設計 構建 編碼 單元測試 綜合測試 整合 系統測試 維護 1 需求分析 起始 軟體需要解決什麼問題,軟體為哪些人服務,軟體性質,軟體的邊界 可行性分析 獲取 業務需求 功能需求 使用者需求 用例 細化 詳細的使用者場景 協商 衝突 資源有限,使用者要求很高 各個利益相關者的要求衝...
軟體工程之軟體生命週期
軟體有乙個孕育 誕生 成長 成熟和衰亡的生成過程。這個過程即為軟體的生命週期 軟體生存期的六個步驟為 1.制定計畫 2.需求分析 3.設計 4.程式編碼 5.測試 6.執行與維護 確定要開發軟體系統的總目標 給出功能 效能 可靠性以及介面等方面的要求 完成該任務的可行性研究 估計可利用的資源 硬體 ...