第一章 概述
軟體是電腦程式、規程以及計算機系統可能需要的相關文件和資料。
軟體一般分為通用和定製軟體。
軟體的特性:
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倍。目前,隨著軟體規模的不斷擴大,複雜程度的不斷提高,特別是面對物件技術和工具的應用,軟體測試的難度也在進一步提高。
第十一章,軟體演化
軟體在更改過程的驗貨特性。具體如下:軟體維護是乙個必然的過程;軟體的不斷修改會導致軟體的退化;軟體系統的驗貨特性實在早期的開發階段建立起來的;軟體開發的效率與投入的資源無關;在軟體系統中新增新的功能不可避免的會產城新的缺陷。
根據軟體維護的不同圓心,可以分為三種型別:改正性維護,適應性維護,完善性維護。
軟體維護的特點:軟體維護收開發過程影響大;軟體維護困難多;軟體維護成本高。
軟體維護工作包括建立維護組織、報告、與評估維護申請、實施維護流程等步驟。
軟體再工程主要包括:物件選擇、反向工程、文件重構、**重構、資料重構和正向工程等活動。
軟體工程理論方法與實踐
第一章 概述 軟體是人類思維的傑作,並成為人類現代生活的催化劑。今天軟體遍布整個世界,在生物工程 現代通訊 宇宙探索 商務處理 工業控制等方面發揮出巨大的威力,並推動了商業 科學和工程領域的跨越式發展,對整個社會的經濟和文化產生了深遠的影響。軟體工程師為了解決開發成本效益和軟體質量的問題而產生的。軟...
軟體工程 理論 方法與實踐 之 軟體演化
軟體工程 理論 方法與實踐 之 軟體演化 一旦軟體進去使用期,一些暴露出來的軟體問題需要進一步修正和改善,同時新的需求會不斷出現,原有的需求也會隨著業務的變化而發生變化。因此,軟體系統在交付之後仍然在不斷地演化,即進去軟體的執行維護階段,以保證軟體長期處於可用狀態,並能夠適應實際業務的不斷變化。軟體...
軟體工程 理論 方法與實踐 之 軟體測試
軟體工程 理論 方法與實踐 之 軟體測試 軟體危機曾經是軟體界甚至整個計算機界最熱門的話題。為了解決這場危機,軟體從業人員 專家和學者做出了大量的努力。現在人們已經逐步認識到所謂的軟體危機實際上僅是一種狀況,你就是軟體中有錯誤,這是這些錯誤導致了軟體開發在成本 進度和質量上的失控。有錯是軟體的屬性,...