第一章 概述編程
軟件是計算機程序、規程以及計算機系統可能須要的相關文檔和數據。設計模式
軟件通常分爲通用和定製軟件。安全
軟件的特性:服務器
1、軟件是複雜的;模塊化
2、軟件是不可見的;工具
3、軟件是不斷變化的;性能
4、大多數軟件是定製的,而不是經過已有的構件組裝的。測試
軟件工程師爲了經濟的得到可以在實際機器上高效運行的可靠軟件而創建和使用的一系列好的工程化原則。編碼
軟件危機spa
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倍。目前,隨着軟件規模的不斷擴大,複雜程度的不斷提升,特別是面對對象技術和工具的應用,軟件測試的難度也在進一步提升。
第十一章,軟件演化
軟件在更改過程的驗貨特性。具體以下:軟件維護是一個必然的過程;軟件的不斷修改會致使軟件的退化;軟件系統的驗貨特性實在早期的開發階段創建起來的;軟件開發的效率與投入的資源無關;在軟件系統中添加新的功能不可避免的會產城新的缺陷。
根據軟件維護的不一樣圓心,能夠分爲三種類型:改正性維護,適應性維護,完善性維護。
軟件維護的特色:軟件維護收開發過程影響大;軟件維護困難多;軟件維護成本高。
軟件維護工做包括創建維護組織、報告、與評估維護申請、實施維護流程等步驟。
軟件再工程主要包括:對象選擇、反向工程、文檔重構、代碼重構、數據重構和正向工程等活動。