軟體工程學習總結和體會
軟體工程學習總結和體會
西安交通大學20xx級研究生課程專題作業
軟 件 工 程 心 得
專 業:
班 級:
學 號:
姓 名:
電 話:
二xxx年十月
體 會
一、 軟體生命週期各階段任務目的和主要方法
在分階段總結之前,首先要明確以下三個問題:
1、什麼是軟體生存週期?
軟體生存週期是指從軟體定義、開發、使用、維護到淘汰的全過程。 主要包括:
(1)問題定義;
(2)可行性研究;
(3)需求分析;
(4)概要設計;
(5)詳細設計;
(6)編碼;
(7)測試;
(8)軟體維護 。
2、軟體生存週期為什麼劃分成階段?
(1) 任何一個階段的具體任務不僅獨立,而且簡單,便於不同人員分工協作,從而降低整個軟體開發工作的困難程度。
(2) 可以降低每個階段任務的複雜程度,簡化不同階段的聯絡,有利於工程的組織管理,也便於採用良好的技術方法。
(3) 使軟體開發的全過程以一種有條不紊的方式進行,保證軟體的質量,特別是提高了軟體的可維護性。
3、應該怎樣來劃分階段?
(1)每一個階段的任務儘可能獨立;
(2)同一階段內的任務性質儘可能相同;
(3)每一個階段任務的開始和結束有嚴格的標準。
下面分別對各階段進行討論:
1、問題定義
目的是將使用者提出的要求具體化、定量化,任務是確定研製系統的範圍,明確研製的邊界。
方法步驟:
(1)透過調查研究,瞭解系統要求;
(2)需求方與開發方討論確定系統的功能、效能、可靠性、安全保密性等方面的要求,以及費用、進度等方面的要求。
2、可行性研究
可行性研究說明該軟體開發專案的實現在技術上、經濟上和社會條件上的可行性,評述為合理地達到開發目的可能選擇的各種方案,目標是用最小的代價在儘可能短的時間內確定問題是否能夠解決。
可行性研究的方法是首先需要進一步分析和澄清問題定義;然後分析員匯出系統的邏輯模型;最後對未來的行動方針提出建議。
在匯出邏輯模型的過程中,具體要根據以下四個方面分析可行性:
(1)經濟可行性:進行成本效益分析,評估專案的開發成本,估算開發成本是否會超過專案預期的全部利潤.分析系統開發對其它產品或利潤的影響。
(2)技術可行性:根據客戶提出的系統功能,效能及實現系統的各項約束條件,從技術的.角度研究實現系統的可行性。
(3)法律可行性:研究在系統開發過程中可能涉及的各種合同,侵權,責任以及各種於法律相牴觸的問題。
(4)開發方案的選擇性:提出並評價實現系統的各種看法方案.從中選出一種用於軟體專案開發。
3、需求分析
需求分析是為了有效解決使用者的需要而進行的一項工程活動,要考慮的問題是功能需求、資料需求、效能需求和介面需求,開發者承擔分析任務,核心是使用者。
軟體專案的失敗大半源於需求分析沒有做好,軟體開發人員首先應該明確使用者的意圖和要求,正確獲取使用者的需求,然後形成一個軟體需求規格說明,它是軟體開發的重要基礎。
需求分析的方法:
(1)需求獲取:獲取客戶需求,客戶泛指某個人或機構部門等,一般方法是調查,包括訪談座談、問卷、跟班和收集資料,需求規約可表達使用者的軟體價值。
(2)需求分析與規格說明:建立需求模型,它是使用者需求的圖解,一些常用的模型有:業務樹圖、用例圖、活動圖。分別用於結構化需求建模、系統業務舉例和反映系統工作流程。
(3)需求驗證:要驗證的主要內容有:有效性驗證、一致性驗證、完整性驗證、現實性驗證和可檢驗性驗證。
需求建模的方法:
(1)關聯模型
(2)面向物件模型
(3)原型方法
4、系統設計
此階段主要根據需求分析的結果,對整個軟體系統進行設計,如系統框架設計,資料庫設計等,一般分為概要設計和詳細設計,好的軟體設計將為軟體程式編寫打下良好的基礎。
概要設計是對需求規格說明書中提供的軟體系統邏輯模型進行進一步的分解,從而建立軟體系統的總體結構和各個子系統間及各個模組間的關係,定義各子系統介面介面和各模組的功能描述,並根據設計結果產生概
要設計文件。 概要設計在早期有模組化方法、功能分解方法;在
60年代後期提出了面向資料流和麵向資料結構的設計方法;近年來又提出面向物件的設計方法等。
詳細設計過程根據概要設計形成的結果對各個模組的內部實現進行規劃設計,並根據設計結果產生詳細設計文件。 詳細設計主要方法是透過採用結構化和麵向物件的方法從檢視、控制、模型三層模型上細化概要設計的各個模組,並完成虛擬碼為編碼階段做準備。
5、編碼和測試
編碼是將軟體設計的結果轉換成計算機可執行的程式程式碼。 主要方法是依據詳細設計文件實現設計中的演算法、功能、介面、資料結構,採用結構化和麵向物件化的方法編寫程式碼。
編碼過程中要制定統一,符合標準的編寫規範,以保證程式的可讀性,易維護性,提高程式的執行效率。
軟體設計完成後要經過嚴密的測試,以發現軟體在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。
測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃並嚴格按照測試計劃進行測試,以減少測試的隨
意性。
6、軟體維護
軟體維護是軟體生命週期中持續時間最長的階段。在軟體開發完成並投入使用後,由於多方面的原因,軟體不能繼續適應使用者的要求。要延續軟體的使用壽命,就必須對軟體進行維護。
軟體的維護包括糾錯性維護和改進性維護兩個方面。
二、 課程主要收穫
《軟體工程》課程強調概念和知識的理解和掌握,側重軟體專案的分析、設計、實現和維護的基本技能。比較注意“點”和“面”的結合,是一門理論性和實踐性都較強的學科。作為一名已經在IT領域工作十年之後又重返校園的大齡學生,雖然已經不是第一次學習這門課程了,去年也剛在單位取得了資訊系統專案管理高階工程師資格,從另一個側面對軟體開發過程有了更深層次的理解。不過溫故而知新,這次仍然選修這門課,我還是得到了一些新的啟示。最大的收穫就是在我看來,軟體工程與其說是一門課程,不如說是一門思想,是一個如何去分析和處理問題的過程,應該說其範疇已經遠遠不止侷限於該門課程,它已經成為了一個綜合的能夠解決問題的思想集合。
此外,透過對軟體開發過程的重學習,並結合之前在軟體開發管理工作中的經驗,我對自己在軟體開發主要階段管理工作中的不足有了更進一步的認識,總結了相應的管理要點,具體闡述如下:
1、 概要設計
主要任務:系統應該怎樣做,或概括地說,系統應該如何實現 。 本階段特點:將使用者的具體要求轉為抽象的計算機軟體設計 。 管理要點:
透過分析對比,從多種可能的實現方案和軟體結構中選出最佳方案及最合理的,即:
1 設想供選擇的方案→推薦最佳方案→選取合理的方案
2 功能分解→ 軟體設計結構 → 資料庫設計
3 確定測試要求並確定測試計劃
作為專案管理者必須從概要設計開始就應該從全域性角度開始把握整個系統的進展,並必須從此階段開始,時刻從全域性觀的問題來發現問題,解決問題。
2、詳細設計
主要任務:系統應該怎樣具體地做,或概括地說,系統應該如何具體地去實現所有的要求 。
本階段特點:將抽象的計算機軟體設計轉為形象的,具體的,面向使用者的計算機介面設計 。
管理要點:
本階段尚未涉及具體編寫程式,而是要設計出程式的“藍圖”,所以詳細設計的結果基本上決定了最終的程式程式碼的質量。
1 邏輯是否正確
2 效能是否滿足要求
3 是否容易閱讀和理解