第一篇:軟件工程 基礎實踐教程 讀書總結
軟件工程 基礎實踐教程吳潔明 著
第一章 軟件工程概述
1.2軟件工程發展簡史
20世紀70年代,第一代軟件工程,即傳統軟件工程。80年代,第二代即對象工程。90年代第三代即構件工程。
1.3軟件工程的定義和目標
軟件工程是將系統化的、規范的、可度量的方法應用于軟件的開發運行和維護過程,也就是將工程化應用于軟件開發和管理之中。
軟件工程研究的主要目標是軟件開發技術和軟件開發管理兩個方面。
目標:(1)合理預算開發成本,付出較低的開發費用;(2)實現預期的軟件功能,達到較好的軟件性能,滿足用戶的需求。(3)提高所開發軟件的可維護性,降低維護費用。(4)提高軟件開發生產率,及時交付使用。
1.4 軟件工程的7條基本原理
1.用分階段的生命周期計劃嚴格管理。2.進行階段證實是。3.實行嚴格的產品控制。4.采用現代程序設計技術。5.結果應能清楚地審查。6.開發小組的人員應該少而精。7.承認不斷改進軟件工程實踐的必要性。
1.5 軟件生命周期模型
可行性研究、需求分析、設計、實現、測試和集成、維護
瀑布模型、快速原型化模型、演化模型、螺旋模型、構件組裝模型
1.6軟件工程過程
第一級 初始級、第二級 可重復級、第三級 定義級、第四級 管理級、第五級 優化級
1.7 軟件開發方法簡述
1.Parnas方法有兩個閃光點:信息隱藏技術;錯誤預防技術。
信息隱藏技術:在概要設計時列出可能會發生變化的因素,并在模塊劃分時將這些因素放到個別模塊的內部。
錯誤預防:在每個可能產生的錯誤之前增加一些判斷,防止軟件出現不可預料的結果。
2.Yourdon方法3.面向數據結構的軟件開發方法4 問題分析方法PAM5.面向對象的軟件開發方法6.可視化開發方法
1.8 軟件工程相關的技術規范、標準和最新文獻的信息源
CMM規范、ISO9000-
3、ISO/IEC12207標準、PSP規范、TSP規范、軟件配置管理系列標準、JAVA規范、C++規范、Unicode標準、其他資料
第二章可行性研究
2.2可行性研究的步驟
1.復查系統的規模和目標2.研究目前正在使用的系統3.導出新系統的高層邏輯模型4.進一步定義問題5.導出和評價供選擇的解法6.推薦行動方針7.草擬開發計劃8.書寫文檔提交審查
2.3 可行性分析的要素經濟、技術、社會環境、人
2.4 成本/效益分析
2.4.1 程序規模估算
第一種方法:根據以前做過的類似項目規模與新項目規模的比例關系,對照以前項目的工作量求出新項目的工作量。
第二種方法:基于功能點的估算方法,該方法中確定了5個信息域特性:輸入項數,輸出項數,查詢數,主文件數和外部接口數。
2.4.2 工作量估算
1.IBM模型 2..Putnam模型3.COCOMO||模型
2.4.3 成本/效益分析方法
1.傾向的時間價值 2.投資回收期 3.純收入 4.投資回收率
第三章需求工程
3.1 需求工程的概念
需求工程由需求開發和需求管理組成。需求開發是指需求的獲取、分析、規格說明和驗證。需求管理是在軟件開發過程中對需求開發結果的控制、跟蹤和管理。
3.1.1 需求分類分為4個層次:業務需求、用戶需求、功能需求和非功能需求。業務需求是反映組織機構或客戶對軟件高層次的目標要求。
用戶需求是用戶使用該軟件要完成的任務。
功能需求定義了軟件開發人員必須實現的軟件功能。
非功能需求是對功能需求的補充。
3.1.2 需求工程的主要活動
需求開發的活動:獲得需求;分析需求;編寫需求規格說明書;審查需求。
需求管理的活動:需求變更控制;需求版本控制;需求跟蹤;需求狀態跟蹤控制。
3.1.3 高質量需求的特征
需求開發階段的主要產品是軟件需求規格說明書,在評審過程中應特別關注下面幾點: 完整性,正確性,可行性,必要性,劃分優先性,無二義性
3.1.4 影響需求質量的因素
1.用戶需求不斷增加 2.模棱兩可的需求 3.用戶不配合 4.過于精簡的需求說明 5.忽略了用戶的分類 6.不準確計劃 7.不必要的特性
3.3 需求獲取方法
調研計劃包括:調研的部門,調研前的培訓內容,調研的時間和地點,設計調研訪談表,調研結果分析,調研報告的格式和內容。
1.發現問題及時與開發人員溝通。2.用戶必須堅持需求審查。
3.3.1 必須向用戶交代的兩個重要問題
第一,軟件開發與其他產品的開發過程一樣是分階段的,每個階段都有階段產品。第二,分階段審查產品時產品的合格標準是什么?
需要提交的階段產品及其主要內容和提交時間:軟件范圍和目標說明書;軟件調研報告;軟件開發計劃書;軟件需求分析規格說明書;軟件設計規格說明書;軟件模塊開發卷宗;軟件測試計劃書;軟件測試報告;軟件用戶手冊;軟件開發月報。
3.4 定義軟件的質量屬性
有效性:指在預定的時間內系統正常運行時間的比例。
高效性:系統效率用來衡量處理器優化、磁盤和內在空間利用率、通信帶寬利用率等系統資源的使用情況。
靈活性/可修改性:靈活性反映在軟件中添加新功能時所需要的工作量。
安全性:保證系統不被非法訪問,防止數據丟失、防止病毒入侵、防止私人數據進入系統。互操作性:表明產品與其他系統交換信息和使用服務的難易程度。
可靠性:可靠性指標是軟件在給定時間間隔內按照規格說明書的規定正常運行的概率。健壯性:指當軟件遇到非法輸入數據或相關的運行環境出現異常軟件仍能正確運行的程度。易用性:可指對用戶某項操作的時間要求,也可指用戶學習操作軟件所用的時間要求,或者是對軟件操作形式的要求。
可維護性:它描述糾正一個缺陷或進行一個變更的簡易程度。
可移植性:度量把軟件從一種環境移到另一種環境中所花費的工作量。
可重用性:表明一個軟件組件可用于其他軟件的程度。
可測試性:指測試軟件時缺陷的簡易程度。
可理解性:指人們通過閱讀程序源代碼和相關文檔了解程序功能、結構和運行方式的容易程度。
3.5 需求優先級
3.7 需求管理
目的:保障需求規格說明書與軟件產品的一致性;控制需求變更對項目開發的影響;使需求活動與計劃保持一致。
第四章 結構化分析
4.1 結構化分析的主要工具
結構化分析方法研究的核心是數據的組成、數據流向和對數據的加工處理。
4.1.3 數據字典主要用來描述數據流程圖中的數據流、數據存儲、處理過程和外部實體。數據流是數據結構中的數據在系統內的傳播路徑。
數據元素是數據處理中最小的、不可分割的單位,它直接反映事物的某個屬性。
4.1.6 實體關系圖它給出了一組基本的構件:數據對象、屬性、關系和各種類型指示符,主要目的是表示數據對象及其關系。
4.2 結構化分析方法的實現步驟
兩條基本原則:必須要理解問題的數據域和功能域;按自頂向下、逐層分解的方式對問題進行分解和細化。
步驟;1.信息分析 2.回溯 3.補充 4.確定非功能需求 5.復查 6.畫出軟件的功能結構圖 7.修正開發計劃 8.編寫需求文檔。
4.3 結構化分析規格說明書
第5章 結構化軟件設計
5.1 軟件設計的過程
典型總體設計過程:1.設想供選擇的方案對每種合理的方案都應該備下列四份資料:系統流程圖,組成系統的元素清單,成本/效益分析,實現這個方案的進度計劃。2.推薦最佳方案 3.功能分解 4.設計軟件結構 5.數據設計 6.制定測試計劃 7.書寫文檔 8.設計審查和復審
9.評審詳細設計
5.2 軟件設計原則和影響設計的因素
原則:1.多樣化設計 2.設計可回溯到需求 3.充分利用已有的模塊 4.設計應該表現出一致性和規范性 5.設計的易修改性 6.容錯性設計 7.設計的粒度要適當 8.在設計時就要開始評估軟件的質量 9.設計評審
5.3 軟件設計的概念
5.3.1 模塊
一般把用一個名字就可調用的一段程序稱為“模塊”。模塊具有如下三個屬性:功能、邏輯、狀態
5.3.2 模塊化
模塊化就是把整個系統劃分成若干個模塊,每個模塊完成一個子功能,將多個模塊組織起來實現整個系統的功能。
5.3.3 模塊獨立性
反映模塊獨立性的有兩個標準:內聚和耦合1.耦合:指模塊間相互關聯的程度
耦合分為7類:內容耦合、公共耦合、外部耦合、控制耦合、數據結構耦合、數據耦合、非
直接耦合、2.內聚:指一個模塊內部各元素之間的緊密程度
巧合內聚、邏輯內聚、時間內聚、過程內聚、通信內聚、信息內聚、功能內聚。
5.5 結構化設計方法
具體流程:1.首先分析流程圖的類型 2.將數據流程圖映射為結構圖 3.用“因子分解”方法定義軟件的層次結構。4.優化設計結構
5.5.1 數據流和類型:交換流、事務流
5.5.2 變換分析變換分析方法由以下四步組成:重畫數據流程圖;區分邏輯輸入、邏輯輸出和中心變換部分;進行第一級分解,設計上層模塊;進行第二級分解,設計中、下層模塊。
5.7 優化軟件設計
規則1:模塊功能完善化 規則2:設計功能單一和結果可預測的模塊 規則3:消除重復功能規則4:模塊的作秀范圍應在控制范圍之內 規則5:模塊的大小要適中 規則6:盡可能減少高扇入的結構 規則7.將模塊中相對變化較大的部分剝離出去
5.8 設計復查
復查過程分為三部:首先,采用概要設計復查的方法來檢查在概念上的設計;然后,在關鍵設計審查中,應向其他開發者描述關鍵技術上的設計細節;最后,進行程序設計的復查,程序設計的復查羽毛球詳細設計階段。
5.9 數據設計
5.9.1 數據設計的原則:1.用于軟件的系統化方法也適用于數據,在導出、評審定義軟件需求和軟件體系結構時,必須定義和評審其中用到的數據流、數據對象、數據結構。2.確定所有的數據結構以及在每種數據結構上實施的操作。3.應該建立一個數據字典,用它來定義數據和軟件的設計。4.底層數據設計的決策應該推遲到設計過程的后期進行,在數據設計中也可以使用自頂向下、逐步細化的方法。5.數據設計要遵從信息隱藏原則,只有那些相關的模塊才能訪問相應的數據結構,數據結構的邏輯表示與物理表示要分開。6.應當創建一個存放數據結構和相關操作的庫 7.軟件設計和程序設計語言應當支持抽象數據類型的定義和實現,否則,對于一些復雜數據結構的設計和實現可能是非常困難的。
5.9.2 數據結構設計
5.11 詳細設計
5.11.1 結構化設計
包括順序、條件和重復三種結構。順序結構實現了任何算法定義中的核心處理,條件結構允許根據邏輯情況選擇處理方式,重復結構提供了循環。
核心內容:1.程序模塊只有一個入口和一個出口 2.程序中只包含順序、條件和循環三種控制結構 3.詳細設計階段采用自頂向下逐步求精的方法,可以把一個模塊的功能愛步分解細化為一個系列具體的處理步驟。
第6章 軟件測試
6.1 軟件測試的概念
6.1.1 測試定義
從廣義上講,是指軟件產品生存周期內所有的檢查、評審和確認活動。從狹義上講,軟件測試是為了發現錯誤而執行程序的過程。
軟件測試的原則:1.應該把測試貫穿在整個開發過程之中 2.每個測試用例都應該包括測試輸入數據和這組數據輸入作用下的預期輸出結果。3.要對每個測試結果進行全面檢查,不要漏掉已經出現的錯誤跡象。5.在設計測試用例時,應該包括有效的、期望的輸入情況,也要包括無效的和不期望的輸入情況。6.軟件中遺留的錯誤數量與已經發現的錯誤數量成正比。
7.回歸測試的關聯性要特別引起注意,修改一個錯誤而想起更多我錯誤的現象并不少見 8.測試程序時不公要檢查程序是否做了它應該做的事情,還要檢查它是否做了不該做的事情。
9.嚴格執行測試計劃。10.做好測試記錄,為統計和維護提供基礎數據。
第二篇:軟件工程實踐個人總結
軟件工程實踐個人總結
學號:
在這個學期的軟件工程實踐課中,我們小組所選的題目為XXX公司全國銷售管理系統。按照這個題目及相關需求,我們小組對選題進行了需求分析、模塊設計、系統設計、數據庫設計、用戶界面設計等,并積極完成相應的開發編碼工作,后又對開發的系統進行了相應功能的測試工作。
對項目的理解
我們項目小組制作的的是XXX全國銷售管理系統,該公司考慮進行集約化經營模式,進軍電子商務領域,將全國市場資源進行整合形成有自身特色的經營體系,提升企業核心競爭能力,為此需要運用電子商務的力量對全國經銷商資源進行整合,對線上和線下進行雙重營銷。
經過對該項目的相關分析,我們小組明確了要具體實現的功能模塊。我們所開發的系統共有兩大模塊,一塊為XXX公司面向普通用戶的在線商城銷售系統;另一塊為XXX公司用戶進行對內的自我管理的管理系統。兩個大模塊下具體細分包括網上商城、客戶管理、市場及銷售管理、內部辦公系統、倉庫管理、財務管理、權限與安全7個子模塊 在線商城中,要實現商品信息的展示、瀏覽,用戶將添加商品到購物車,下單購買等功能。管理系統中,要實現的功能包括:公司的內部人員及人員對應的權限的管理、公司產品庫存的管理、公司財務的管理、公司推出的一些市場營銷活動(比如:促銷、廣告等)的管理等。
自己在項目中負責的部分
在小組完成該項目的工程中,組內進行了明確的分工,包括項目初期的分析、文檔撰寫及項目后期的開發測試過程。在小組中,我負責的部分為:項目初期的數據庫分析、數據庫設計文檔的撰寫和后期的測試工作。在數據庫設計及相應文檔撰寫方面,我獨立完成了數據庫的初期設計和數據庫設計文檔的撰寫,數據庫文檔總頁數為11頁。我所撰寫的數據庫設計文檔被組內其他人和其他文檔整合到一起,后來,實際的開發人員在此基礎上進行了一部分的修改。在后期的開發過程中,我負責的部分為系統測試。具體負責的部分為:網上商城、庫存管理、系統權限與安全這三個模塊的測試工作。網上商城部分,主要功能包括商品信息的瀏覽、購物車功能及下訂單三大部分。在編寫的測試用例中,包括:
1.商品信息展示測試:分別以游客及網上商城注冊用戶身份瀏覽商城,在商品類目中選擇相應的商品信息,查看商品信息的顯示是否存在問題。隨機打開商品信息條目,查看商品的詳細描述信息,查看商品詳細信息頁面是否能正常顯示。
2.購物車相關功能測試:購物車需要以注冊用戶身份登錄才能正常使用,游客無法正常使用購物車功能。購物車相關功能包括商品添加到購物車、購物車中瀏覽已添加的商品、將已添加的商品從購物車中刪除、選擇購物車中的商品提交訂單。每個購物車的相關功能都編寫了相應的測試用例。結果發現在網上商城的初期版本中,購物車無法正常刪除已添加的商品信息,已作為bug提交給相應的開發人員。在后續的版本中,該bug已經被修復。
3.由于訂單功能設計支付等相關部分,開發人員未完全實現訂單的相應功能。所以訂單部分無法進行詳細的測試。
庫存管理部分,主要功能包括商品庫存信息查看、出入庫單的查看、出入庫詳情的查看、商品出入庫及出入庫單的審批。編寫的測試用例中,包括:
1.商品庫存信息的查看:以超級管理員或庫存管理員的身份登錄后臺的管理系統,在庫存中查看商品的庫存詳細信息。2.出入庫單的查看:查看出入庫單是否正確。
3.商品出入庫的測試:新建商品的出入庫單,提交知否能否在出入庫單中查看到且出入庫單的商品信息、數量、出入庫單的狀態是否正確。
4.出入庫單的審批測試:在出入庫單的審批界面中,允許某些出入庫單的審批,不允許另一些出入庫單的審批,然后在出入庫單查看界面,查看審批的訂單的狀態是否發生改變。系統角色權限及安全部分,主要的功能包括:新建角色、刪除角色、角色權限的管理。測試用例包括:
1.以超級管理員用戶登錄后臺管理系統,建立新的角色并賦予相應的權限。
2.以超級管理員身份登錄,并刪除某些已經存在的角色,看系統是否會產生某些級聯的錯誤。
3.角色權限的管理:為已存在的角色添加或刪除某些權限。經過測試,在我測試的模塊中,只發現商品購物車無法正常刪除已添加的商品,其他的功能都能正常使用。
經驗總結
本次的實踐讓我學到了一些我之前不了解的東西。這次的軟件工程實踐,分工十分明確,有分工的職責也很細,我分到的崗位是軟件測試。在此之前,對于軟件測試,我只是聽說過,卻并沒有真實地接觸過。對于組長指派給我的編寫測試用例,我完全不知道要怎么寫,也不知道從何下手。后來,同樣是負責測試用例的組里其他成員給我發了一份測試用例的文檔,我以此為參照,結合自己負責的部分,才漸漸對于測試用例有了一個大致的認識。按照自己對于軟件測試的理解,加上同學的測試用例示例,結合同學的指導,我才大致完成了測試用例文檔的編寫,也順利的完成了對開發的銷售管理系統的測試。在這些測試用例的編寫中,由于我對軟件測試及測試用例的了解不深,難免存在一些問題,例如:不能很好的測試到系統中的一些功能,無法測試到一些會引發問題的情況等。另外,在這次的軟件工程實踐里,也跟著整組人完整地經歷了一遍軟件開發的流程。之前的一些課程雖然也有涉及,但總的來說沒有這么完整,時間跨度上也沒有這么長。在這么課中,第一次接觸到了軟件開發小組中用到的周報,也學到了其他一些書本上沒有的東西。
第三篇:軟件工程基礎
一、選擇題
【例1】對軟件的特點,下面描述正確的是_______。
A)軟件是一種物理實體
B)軟件在運行使用期間不存在老化問題
C)軟件開發、運行對計算機沒有依賴性,不受計算機系統的限制
D)軟件的生產有一個明顯的制作過程
【例2】以下哪項是軟件生命周期的主要活動階段?_______
A)需求分析B)軟件開發
C)軟件確認D)軟件演進
【例3】從技術觀點看,軟件設計包括_______。
A)結構設計、數據設計、接口設計、程序設計
B)結構設計、數據設計、接口設計、過程設計
C)結構設計、數據設計、文檔設計、過程設計
D)結構設計、數據設計、文檔設計、程序設計
【例4】以下哪個是軟件測試的目的?_______
A)證明程序沒有錯誤B)演示程序的正確性
C)發現程序中的錯誤D)改正程序中的錯誤
【例5】以下哪個測試要對接口測試?_______。
A)單元測試B)集成測試
C)驗收測試D)系統測試
【例6】程序調試的主要任務是_______。
A)檢查錯誤B)改正錯誤
C)發現錯誤D)以上都不是
【例7】以下哪些不是程序調試的基本步驟?_______
A)分析錯誤原因B)錯誤定位
C)修改設計代碼以排除錯誤D)回歸測試,防止引入新錯誤
【例8】在修改錯誤時應遵循的原則有_______。
A)注意修改錯誤本身而不僅僅是錯誤的征兆和表現
B)修改錯誤的是源代碼而不是目標代碼
C)遵循在程序設計過程中的各種方法和原則
D)以上3個都是
二、填空題
【例1】軟件設計是軟件工程的重要階段,是一個把軟件需求轉換為_______的過程。
【例2】_______是指把一個待開發的軟件分解成若干小的簡單的部分。
【例3】數據流圖采用4種符號表示_______、數據源點和終點、數據流向和數據加工。
第四篇:大學計算機基礎實踐教程實踐心得
大學計算機基礎實踐教程實踐心得
通過一個假期的關于《大學計算機基礎實踐教程》的學習,我深刻地認識到了學習好計算機的必要性。我們處在一個信息技術高度發達的社會,學好計算機已經成為21世紀的新青年的必修課。如果想在這個社會立足,計算機就已經成為你的必備技能之一。在這本書里,我學到了計算機的基礎知識,比如指法以及中英文輸入,windows XP窗口的基本操作,文件和文件夾的管理,畫圖軟件的使用,網頁瀏覽,信息檢索,電子郵件的接受與發送,Word2003的基本編輯操作,文檔的排版設計、修飾、視圖、樣式和模板,制作表格,圖文混排等等一系列文檔基本操作,表格的各種操作和幻燈片的制作等基礎操作。
還有一些提高的部分,例如系統操作使自己對自己的計算機更加了解,使自己的計算機變得更加適合自己,包括更換壁紙,分辨率,清除碎片提高電腦的速度,還有文字處理,電子表格,PowerPoint的高級應用,網頁制作,Flash的制作,數據庫,程序設計等計算機高級應用。
以及更高層次的計算機應用。包括系統維護,系統安全策略設置與計算機病毒清除,信息檢索與文獻資料管理,計算機網絡與服務的構建,聲音的錄制、處理,刻錄軟件Nero Burning Rom,計算機常見故障的排除以及軟件的安裝。通過這些高層次的操作,我對計算機操作的更加得心應手,在關鍵時刻會起到事半功倍的作用。
網絡簡單地說就是一個將人們所需要的資源通過一定的協議實行共享的媒介。就拿大家經常使用的瀏覽器來說吧,當你需要了解時下流行什么發型或者是服裝,就可以通過搜索引擎足不出戶了解這些東西。這個例子僅是網絡應用的冰山一角,要想懂得更多的網絡使用方法學習是必不可少的,當然實踐也是相當重要的。
作為信息爆炸的21世紀,網絡已經深入到了社會的各個階層。無論是在最神秘的國家情報機構還是普通的人民大眾,網絡已經顯得舉足輕重,無可替代的工具。小到人們經常使用的手機,大到軍隊作戰航天飛機的發射都離不開網絡。比如說,去年五月一日美國海豹突擊隊擊斃“基地”頭目——本·拉登,就是一個很好的例子,美國中情局截獲了一則信息顯示本·拉登的藏身地。還有大家用的銀行卡都是聯通了全球的銀行網絡,才使得存取如此簡單。
那么下來談談網絡在大學生中間的應用。大家都比較熟悉的QQ,MSN等一系列交友平臺,通過這些平臺大家可以遠距離通信,發電子郵件,討論問題,交友,分享圖片等等。還有一些bbs論壇,他將一些擁有共同愛好的并且愿意和社區的其他人分享自己的獨到見解的一類人聚集起來,共同討論問題,解決問題。充分發揮大學生活躍的思想和創造力。瀏覽網頁、博客豐富大學生的課余時間,還能涉獵一些有用的社會知識,開闊視野。總之,網絡是時代的產物。了解并使用簡單的網絡知識不僅提高了自身的文化素質而且還能解決一些生活中的問題,也就是說網絡知識是當代大學生必不可少的素質。
第五篇:軟件工程讀書心得體會
軟件工程讀書心得體會
040730111 步入大四,課程變的少了,學期伊始,我很認真地上課、聽講;很快就過了1個月了,學校的就業中心開始忙碌起來,作為就業大軍中的一員,我開始忙碌我的工作,聽宣講會、筆試、面試,漸漸地上課不用心了,還曠過課,在這里請老師原諒,下面是我對于軟件工程各方面知識的理解,請老師指正:
(一)軟件度量方面
軟件度量是對軟件開發項目、過程及其產品進行數據定義、收集以及分析的持續性定量化過程,目的在于對此加以理解、預測、評估、控制和改善。沒有軟件度量,就不能從軟件開發的暗箱中跳將出來。通過軟件度量可以改進軟件開發過程,促進項目成功,開發高質量的軟件產品。在軟件開發中,軟件度量的根本目的是為了管理的需要,利用度量來改進軟件過程。對于管理層人員來說:沒有對軟件過程的可見度就無法管理;而沒有對見到的事物有適當的度量或適當的準則去判斷、評估和決策,也無法進行優秀的管理。所以軟件度量在軟件開發中起到不可或缺的作用。
項目度量是針對軟件開發項目的特定度量,目的在于度量項目規模、項目成本、項目進度、顧客滿意度等,輔助項目管理進行項目控制。軟件開發項目規模度量(size measurement)是估算軟件項目工作量、編制成本預算、策劃合理項目進度的基礎。規模度量是軟件項目失敗的重要原因之一。一個好的規模度量模型可以解決這一問題。有效的軟件規模度量是成功項目的核心要素:基于有效的軟件規模度量可以策劃合理的項目計劃,合理的項目計劃有助于有效地管理項目。規模度量的要點在于:由開發現場的項目成員進行估算;靈活運用實際開發作業數據;杜絕盲目迎合顧客需求的“交期逆推法”。軟件開發成本度量主要指軟件開發項目所需的財務性成本的估算。主要方法如下:
類比估算法。類比估算法是通過比較已完成的類似項目系統來估算成本,適合評估一些與歷史項目在應用領域、環境和復雜度方面相似的項目。其約束條件在于必須存在類似的具有可比性的軟件開發系統,估算結果的精確度依賴于歷史項目數據的完整性、準確度以及現行項目與歷史項目的近似程度。
細分估算法。細分估算法是將整個項目系統分解成若干個小系統,逐個估算成本,然后合計起來作為整個項目的估算成本。細分估算法通過逐漸細化的方式對每個小系統進行詳細的估算,可能獲得貼近實際的估算成本。其難點在于,難以把握各小系統整合為大系統的整合成本。
周期估算法。周期估算法是按軟件開發周期進行劃分,估算各個階段的成本,然后進行匯總合計。周期估算法基于軟件工程理論對軟件開發的各個階段進行估算,很適合瀑布型軟件開發方法,但是需要估算者對軟件工程各個階段的作業量和相互間的比例具有相當的了解。
(二)軟件項目管理
軟件項目管理的對象是軟件工程項目。它所涉及的范圍覆蓋了整個軟件工程過程。為使軟件項目開發獲得成功,關鍵問題是必須對軟件項目的工作范圍、可能風險、需要資源(人、硬件/軟件)、要實現的任務、經歷的里程碑、花費工作量(成本)、進度安排等做到心中有數。這種管理在技術工作開始之前就應開始,在軟件從概念到實現的過程中繼續進行,當軟件工程過程最后結束時才終止
軟件項目管理是為了使軟件項目能夠按照預定的成本、進度、質量順利完成,而對人員(People)、產品(Product)、過程(Process)和項目(Project)進行分析和管理的活動。
軟件項目管理的根本目的是為了讓軟件項目尤其是大型項目的整個軟件生命周期(從分析、設計、編碼到測試、維護全過程)都能在管理者的控制之下,以預定成本按期,按質的完成軟件交付用戶使用。而研究軟件項目管理為了從已有的成功或失敗的案例中總結出能夠指導今后開發的通用原則,方法,同時避免前人的失誤。
軟件項目管理的內容主要包括如下幾個方面:人員的組織與管理,軟件度量,軟件項目計劃,風險管理,軟件質量保證,軟件過程能力評估,軟件配置管理等。這幾個方面都是貫穿、交織于整個軟件開發過程中的,其中人員的組織與管理把注意力集中在項目組人員的構成、優化;軟件度量把關注用量化的方法評測軟件開發中的費用、生產率、進度和產品質量等要素是否符合期望值,包括過程度量和產品度量兩個方面;軟件項目計劃主要包括工作量、成本、開發時間的估計,并根據估計值制定和調整項目組的工作;風險管理預測未來可能出現的各種危害到軟件產品質量的潛在因素并由此采取措施進行預防;質量保證是保證產品和服務充分滿足消費者要求的質量而進行的有計劃,有組織的活動;軟件過程能力評估是對軟件開發能力的高低進行衡量;軟件配置管理針對開發過程中人員、工具的配置、使用提出管理策略。
(三)CMM CMM是是一種用于評價軟件承包能力并幫助其改善軟件質量的方法,側重于軟件開發過程的管理及工程能力的提高與評估。CMM分為五個等級:一級為初始級,二級為可重復級,三級為已定義級,四級為已管理級,五級為優化級。除了第1級外,其他每一級由幾個關鍵過程方面組成。每一個關鍵過程方面都由上述5種公共特性予以表征。CMM給每個關鍵過程了一些具體目標。按每個公共特性歸類的關鍵慣例是按該關鍵過程的具體目標選擇和確定的。如果恰當地處理了某個關鍵過程涉及的全部關鍵慣例,這個關鍵過程的各項目標就達到了,也就表明該關鍵過程實現了。這種成熟度分級的優點在于,這些級別明確而清楚地反映了過程改進活動的輕重緩急和先后順序。
(四)SPP SPP模型將項目管理、項目研發、機構支撐所包含的工作劃分為相對獨立的三類過程,各個過程域之間的關系直觀明了。這樣,機構領導、項目經理、開發人員、測試人員、質量保證人員、外包與采購管理人員等人根據SPP模型,很容易知道自己“應該在什么時候、按照什么規范做什么事情”。所以SPP模型有助于使機構內的各個職能單位有條不紊地開展工作。SPP模型的三類過程貫穿了產品的整個生命周期,19個最常見的過程域都合理地安排在產品生命周期中的某些階段。用戶可以根據自己產品的特征,適當地裁剪或擴充SPP的過程域,很容易制定出最適合于本產品的過程模型。
在讀了軟件工程以后,我覺得我前期不認真看書真的是錯誤的做法,經過這次對軟件工程的閱讀,我覺得受益匪淺,非常干些老師的教導,我覺得我對軟件工程的認識還遠遠不夠,在以后的日子里,我仍然需要努力學習,做到更深入的學習,提高解決問題的能力。