標籤:
第一章 概述
軟體是電腦程式、規程以及電腦系統可能需要的相關文檔和資料。
軟體一般分為通用和定製軟體。
軟體的特性:
1、軟體是複雜的;
2、軟體是不可見的;
3、軟體是不斷變化的;
4、大多數軟體是定製的,而不是通過已有的構件組裝的。
軟體工程師為了經濟的獲得能夠在實際機器上高效啟動並執行可靠軟體而建立和使用的一系列好的工程化原則。
軟體危機
1、軟體開發的成本和進度難以進行準確估計,延遲交付甚至取消項目的現象屢見不鮮;
2、軟體存在著錯誤多、效能低、不可靠、不安全等品質問題;
3、軟體成本在電腦系統的整個成本中所佔的成本越來越大;
4、軟體維護及其困難,而且很難適應不斷變化的使用者需求和使用環境。
第二章 軟體過程
任務思維和過程思維
軟體過程的定義:
軟體過程是軟體工程人員為了獲得軟體產品而在軟體工具的支援下實施的一系列軟體工程活動。
軟體過程的基本活動
1、問題的提出;
2、軟體需求規格說明;
3、軟體設計;
4、軟體實現;
5、軟體確認;
6、軟體確認。
軟體過程模型
1、瀑布模型;
2、快速原型模型;
3、增量模型;
4、螺旋模型;
5、形式化方法模型;
6、基於組件的開發模型。
第三章 軟體專案管理
軟體專案管理概述:
1、軟體項目的特徵;
2、軟體管理的“4P”;
3、軟體專案管理活動:
a、項目啟動;
b、專案規劃;
c、項目實施;
d、項目收尾。
人員組織與管理
1、軟體項目組織;
2、軟體團隊建設。
項目溝通管理
1、項目溝通複雜性;
2、項目溝通方式;
3、項目溝通活動。
軟體專案規劃
1、軟體規模估算;
2、軟體成本估算;
3、軟體專案計劃。
軟體風險管理
1、風險意識;
2、風險分析;
3、風險規劃;
4、風險監控。
軟體組態管理
1、基本概念;
2、組態管理活動;
第四章 需求工程
軟體需求
1、業務需求;
2、使用者需求;
3、功能需求和非功能需求;
4、系統需求
需求工程過程
1、需求萃取;
2、需求分析;
3、需求規格說明;
4、需求驗證;
5、需求管理;
需求萃取技術
1、面談;
2、需求專題討論會;
3、觀察使用者工作流程;
4、原型化方法;
5、基於用例的方法。
案例
1、確定參與者;
2、確定情境;
3、確定用例;
4、編寫用例描述;
第五章 軟體工程中的形式化方法
形式化方法基本概念:
1、形式規約;
2、形式證明與驗證;
3、程式求精;
時態邏輯
1、一階線性時態邏輯;
2、計算樹邏輯;
模型檢測
Z語言
1、概述
2、Z語言表示
3、Z語言執行個體
Petri 網
第六章 物件導向基礎
物件導向技術手機軟體工程領域的重要技術,這種技術比較自然地類比了人類認識世界的方法,成為當前電腦軟體工程學中的主流方法,物件導向技術不僅僅是一種程式設計方法,更是一種對客觀世界的抽象思維。
物件導向技術的基本思想是從現實世界中客觀存在的事物出發,儘可能地運用人類的自然思維方式來構造軟體系統。它更加強調運用人類在日常的思維中經常採用的思想方法與原則,例如抽象、分類、繼承、彙總、封裝等,是開發人員以現實世界中的事物為中心來思考和認識問題,並以人們易於理解的方式表達出來。
第七章 物件導向分析
在需求萃取階段,開發人員關注於理解使用者以及他們的使用要求。而在需求分析階段,開發人員關注於理解系統需要構建的內容,其核心是產生一個準確的、完整的、一致的和客驗證的系統模型,稱為分析模型。
物件導向的分析模型由三個獨立的模型組成:
1、功能模型:有用例和對象圖組成;
2、分析物件模型:有類圖和對象圖表示;
3、動態模型:由狀態圖和順序圖表示。
第八章, 面對對象設計
通常,設計活動劃分成系統設計和詳細設計等兩個主要階段,其中系統設計是選擇合適的解決方案策略。而設計的原則有:模組化;耦合度和內聚性;複用性。
對於大型複雜系統來說,軟體體繫結構設計顯得尤為重要,它的好壞往往會成為一個系統設計成敗的關鍵。集中典型的軟體體繫結構有:倉庫體繫結構;分層體繫結構;MVC體繫結構;客戶機/伺服器體繫結構;管道和過濾器體繫結構。
在系統設計中,要識別設計項目,資料存放區策略,部署子系統,系統設計評審。兒詳細設計包括方法建模,屬性建模,狀態建模和關係建模等。集中常用的設計模式有Abstract Facatoty模式;Adaptor模式;Bridge模式;Facade模式。
使用者頁面設計對於一個系統的成功是至關重要的。一個設計的很差的使用者介面可能導致使用者很容易產生錯誤,甚至使用者拒絕使用該系統。
第九章,軟體實現
程式設計語言一直在不斷地演化和演變,其發展經曆了從機器語言到進階語言的過程
如今,人們不再過度的強調編碼的技巧性,而是將代碼可讀性作為影響軟體品質的一個重要因素。一些通用的編碼規範有:檔案命名和組織,代碼的版式,(適當的空行;程式碼及行內空格;分行、對齊、和縮排;命名規則;聲明;注釋)
編程風格在很大程度上影響著程式的可讀性、可測試性和可維護性,甚至會影響到程式的執行效率。有程式注釋問題,變數命名問題,異常處理問題,效能問題,
為了獲得高品質的代碼,有必要參照代碼檢查清單進行代碼走查。
第十章 軟體測試
軟體危機曾經是軟體界甚至整個電腦界最熱門的話題。為瞭解決這個問題,軟體從業人員,專家和學者做出了大量的努力。現在的人們已經逐漸認識到所謂的軟體危機實際是一種狀態,那就是軟體中的錯誤,正是這些錯誤導致了軟體在開發成本,進度和品質上的失控。
如今資訊技術的飛速發展,是軟體產品應用到社會的各個領域,軟體產品的品質自然成為人們共同關注的問題。軟體測試是軟體品質保證的移向關鍵活動,它是通過對需求規格說明,軟體設計說明和程式碼等進行複審,以保證在軟體產品交付前,儘可能發現軟體中潛伏的問題,大量的統計表明,軟體測試工作量往往占軟體開發量的40%以上,在極端的情況下,甚至可能高達軟體工程其他步驟成本的綜合的3~5倍。目前,隨著軟體規模的不斷擴大,複雜程度的不斷提高,特別是面對對象技術和工具的應用,軟體測試的難度也在進一步提高。
第十一章,軟體演化
軟體在更改過程的驗貨特性。具體如下:軟體維護是一個必然的過程;軟體的不斷修改會導致軟體的退化;軟體系統的驗貨特性實在早期的開發階段建立起來的;軟體開發的效率與投入的資源無關;在軟體系統中添加新的功能不可避免的會產城新的缺陷。
根據軟體維護的不同圓心,可以分為三種類型:改正性維護,適應性維護,完善性維護。
軟體維護的特點:軟體維護收開發過程影響大;軟體維護困難多;軟體維護成本高。
軟體維護工作包括建立維護組織、報告、與評估維護申請、實施維護流程等步驟。
軟體再工程主要包括:對象選擇、反向工程、文檔重構、代碼重構、資料重構和正向工程等活動。
軟體工程—理論、方法與實踐