標籤:
第一章、 概述 軟體是人類思維的傑作,並成為人類現代生活的催化劑。今天軟體遍布整個世界,在生物工程、現代通訊、宇宙探索、商務處理、工業控制等方面發揮出巨大的威力,並推動了商業、科學和工程領域的跨越式發展,對整個社會的經濟和文化產生了深遠的影響。軟體工程師為瞭解決開發成本效益和軟體品質的問題而產生的。軟體是電腦程式、規程以及運行電腦系統可能需要的相關文檔和資料。軟體分為通用軟體和定製軟體。軟體的特性分別是軟體是複雜的、軟體是不可見的、軟體是不斷變化的、大多數軟體是定製的而不是通過已有構件組裝而成的。軟體工程是將系統性的、正常化的、可定量的方法應用於軟體的開發、運行和維護,即將工程化應用到軟體上。軟體工程的三要素分別是方法、工具和過程。軟體開發的主要挑戰是遺留系統的問題、高可信軟體開發的要求和軟體開發方式的變化。軟體工程人員的職業道德建設:1、遵紀守法是軟體工程人員應具備的基本素質;2、服務客戶、造福社會是軟體工程人員必須牢固樹立的觀念;3、誠實信用是軟體工程人員職業道德的核心所在。
第二章、 軟體工程 軟體工程的目標是在規定的時間和預算內開發出高品質的軟體。軟體工程的基本活動是問題提出、軟體需求規格說明、軟體設計、軟體實現、軟體確認和軟體演化。軟體過程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、形式化方法模型、基於組件的開發模型。
第三章、 軟體專案管理 隨著電腦應用的飛速發展,軟體開發規模和開發隊伍日益龐大,軟體開發不再像過去那樣是由個別開發人員即可以解決的事情,因此,有必要將軟體專案管理引入軟體開發活動中,從而有效保證軟體項目能夠按照預定的成本、進度、品質要求順利完成。軟體項目的特徵有軟體產品的不可見度、項目的高度不確定性、軟體人員的高流動性。軟體專案管理集中於四個方面:人員、產品、過程、項目。軟體項目的組織有民主式組織圖、主程式員式組織圖、技術管理式組織圖。項目溝通活動:規劃項目溝通、建立基礎設施、實施階段性評審、每周組織小組會議。軟體規模估算:程式碼技術、功能點技術。軟體成本估算:專家判斷、類比估算、COCOMO模型。軟體工程風險識別:軟體規劃風險、商業影響風險、客戶相關風險、軟體過程風險、開發技術風險、開發環境風險、開發人員風險。
第四章、 需求工程 軟體需求是決定軟體開發是否成功的一個關鍵元素,一旦發生錯誤,將會給整個軟體開發工作帶來極大的損害,並給以後的軟體維護帶來極大的困難。軟體需求分為:業務需求、使用者需求、功能需求和非功能需求、系統需求。需求工程的過程:需求萃取、需求分析、需求規格說明、需求驗證、需求管理。需求萃取技術:面談、需求專題討論會、觀察使用者工作流程、原型化方法、基於用例的方法。
第五章、 軟體工程中的形式化方法 從廣義上講,形式化方法是指將離散數學的方法用於解決軟體工程領域的問題,主要包括建立精確的數學模型以及對模型的分析活動。狹義的講,形式化方法是運用形式化語言,進行形式化的規格描述、模型推理和驗證的方法。將形式化方法運用於軟體工程實踐的過程中主要是為了保證軟體的正確性。
第六章、 物件導向基礎 物件導向技術是軟體工程領域中的重要技術,這種技術比較自然的類比了人類認識客觀世界的方式,成為當前電腦軟體工程學中的主流方法。物件導向的基本概念有對象、類、封裝、繼承、訊息、關聯彙總、多態性。軟體建模的概念有系統、模型和視圖、軟體建模的重要性。UML的概念性模型有視圖、圖、模型元素、語義法則、公用機制、擴充機制。常用的UML圖有使用案例圖、類圖、順序圖、狀態圖。
第七章、 物件導向分析 物件導向的分析模型由功能模型、分析物件模型、動態模型組成。識別分析類包括識別邊界類、識別控制類、識別實體類。建立分析類圖:興義關係和屬性、應用分析模式。
第八章、 物件導向設計 物件導向設計階段將集中研究系統的軟體實現問題,包括體繫結構設計、詳細設計、使用者介面設計和資料庫設計等。設計的原則有模組化、耦合度和內聚性、複用性。軟體體繫結構:倉庫體繫結構、分層體繫結構、MVC體繫結構、客戶機/伺服器體繫結構、管道和過濾器體繫結構、案例:MiniLibrary系統體繫結構。系統設計:識別設計項目、資料存放區策略、部署子系統系統設計評審。詳細設計:方法建模、屬性建模、狀態建模、關係建模、詳細設計評審。應用設計模式:Abstract Factory模式、Adaptor模式、Bridge模式、Façade模式。使用者介面設計:使用者介面設計原則、Web介面的設計、使用者支援。
第九章、 軟體實現 軟體實現是軟體產品由概念到實體的一個關鍵過程,它將詳細設計的結果翻譯成用某種程式語言編寫的並且最終可以啟動並執行程式碼。軟體編碼規範:檔案命名與組織、帶碼的板式、命名規則、聲明、注釋。
第十章、 軟體測試 驗證與確認:軟體的錯誤、驗證與確認、V&V的活動。軟體的測試策略:單元測試(模組介面測試、局部資料結構測試、重要執行路徑測試、錯誤處理測試、邊界條件測試、單元測試方法)、整合測試(自頂向下整合、自底向上整合)、確認測試、系統測試、軟體調試(簡單的調試方法、歸納法調試演繹法調試、回溯發調試)。軟體測試方法:靜態測試與動態測試、黑箱測試與白盒測試
第十一章、 軟體演化 軟體維護的概念:軟體維護是指在軟體運行或維護階段對軟體產品所進行的修改,分別有改正性維護、適應性維護、完善性維護。軟體維護的特點:軟體維護手開發過程影響大、軟體維護困難多、軟體維護成本高。軟體再生工程:對象選擇、反向工程、文檔重構、代碼重構、資料重構。
軟體工程寒假作業