最新四川大學軟件工程課程期末官方復習知識點提綱


1. 課程概要

本課程概要如表1-1所示。

1-1 “現代軟件工程”課程概要

課程編號

304064030

學分

3

學時

48

開課學期

三年級秋季學期

課程名稱

中文名現代軟件工程

英文名Modern Software Engineering

課程定位

軟件工程是計算機科學與技術專業的一門重要的專業必修課。它是軟件設計與開發以及各種計算機應用系統開發的重要基礎。在計算機科學與技術等專業人才培養中,對提高學生的能力、素質和形成良好的知識結構都具有重要意義。通過該課程的學習,可以培養學生用工程化的方法高效地開發高質量軟件的初步能力,以及項目管理的初步能力,為以后從事計算機軟件的開發和研制打下良好的基礎。

課程簡介

軟件工程是計算機學科中一個新興的並且充滿活力的研究領域,軟件工程的重要性在於它對貫穿軟件的開發過程、運行以及維護的系統化研究。本課程主要內容包括軟件過程、方法和工具三個層次,分為兩個部分進行課堂講授:第一部分為軟件過程及過程模型,包括軟件工程的基本概念和原則,軟件過程的通用框架活動和保護性活動,常用的主要軟件過程模型和敏捷開發及其過程模型;第二部分為軟件建模、構造的方法,包括軟件需求分析和建模、軟件設計原則、體系結構設計、構件級設計、界面設計和測試策略與技術,軟件需求建模與軟件設計方法側重於面向對象技術和UML建模方法,涵蓋了WebApp和移動App的分析和設計方法。

 

教學要求

通過授課和實踐,使學生:

(1) 掌握軟件工程的概念和原則,理解軟件過程的通用框架活動(溝通、策划、建模、構造和部署),了解軟件過程的保護性活動(項目跟蹤與監控、風險管理、可復用管理、軟件配置管理等);

(2) 掌握瀑布模型、增量模型、演化模型等常用軟件過程模型及適用條件,理解敏捷開發的理念和常用的敏捷過程模型:XP(IXP)和scrim;

(3) 理解需求分析建模原則,掌握軟件功能、信息和行為的需求建模方法;理解軟件設計概念和基本原則,掌握軟件體系結構設計、構件級詳細設計和軟件界面的設計方法;了解WebApp和移動App的分析和設計方法。

(4) 理解軟件測試的概念,掌握軟件單元測試、集成測試、確認測試和系統測試等測試策略,掌握白盒測試和黑盒測試技術及其應用;

(5) 通過課程實踐,實際運用軟件工程的原則和方法,掌握軟件項目管理和團隊開發的工作方法。

教學特色

(1)教材與教案均為英語,授課以中文為主,英語為輔;

(2)課堂講授為主,結合課堂小組討論

(3)軟件工程原理、方法與案例相結合

課程類型

☑專業基礎課程☐專業核心課程

☐專業選修課程☐實踐訓練課程

教學方式(單選)

☑講述為主☐實驗/實踐為主      ☐專題討論為主

☐案例教學為主☐自學為主☐其他(為主)

授課語言(單選)

☐中文☑中文+英文(英文授課比例10%)

☐英文☐其他外語

考核方式

☑考試 ☐考查 ☐考試+考查

成績評定標准

期末成績40%+(期中成績30%+作業40%+平時表現30%)*60%

教材及主要參考資料

教材:

[1] (美)羅傑.S.普萊斯曼 軟件工程實踐者的研究方法(英文精編版 第8版) 機械工業出版社2016.1 或

[2] (美)羅傑.S.普萊斯曼 軟件工程實踐者的研究方法(英文 原書第8版) 機械工業出版社2016.11

[3]  (美) 羅傑.S.普萊斯曼 軟件工程實踐者的研究方法(原書第8版本科教學版)出版社:機械工業出版社2016.12

注:[1]、[3]為[2]的節選版。

主要參考資料:

[1] 伊恩·薩默維爾 軟件工程(原書第10版) 機械工業出版 2018.02

[2] 張海藩 軟件工程導論 第6版  清華大學出版社 2013.8

[3] D Jeya Mala,S Geetha,馬恬煜UML面向對象分析與設計清華大學出版社2018.5

[4] http://www.mhhe.com/engcs/compsci/pressman

[6]http://www.umlchina.com

[7]http://www.sei.cmu.edu

先修課程

本課程面向計算機學院大三學生,要求學生具備良好的溝通能力,掌握了基本的高級編程語言,如C、C++或Java等,此外要求學生已經完成以下課程的學習:1.操作系統;2.數據庫系統;3.計算機網絡

 

2. 課程教學內容

以下章節為教材[3]

第一章 The Nature of software

內容:介紹軟件定義、軟件的本質以及其變化

要求正確理解軟件的定義及軟件的本質

第二章 Software engineering

內容介紹軟件工程定義、軟件過程軟件過程:軟件過程是工作產品構建時所執行的一系列活動、動作和任務的集合。及過程框架活動1.溝通(Communication):目的是理解利益相關者的項目目標,並收集需求以定義軟件特性和功能。

2.策划(Planning):定義和描述了軟件工程工作,包括需要執行的技術任務、可能的風險、資源需求、工作產品和工作進度計划。

3.建模(Modeling):利用模型哎更好地理解軟件需求並完成符合這些需求的軟件設計。

4.構建(Construction):它包括編碼和測試以發現編碼中的錯誤。

5.部署(Deployment):軟件交付到用戶,用戶對其進行評測並給出反饋意見。

、軟件過程的保護性活動、軟件工程實踐的精髓和基本原則;

要求理解軟件工程學科的定義和軟件過程的含義,掌握溝通、策划、建模、構造和部署5個通用的框架活動,了解項目跟蹤和監控、風險管理、技術評審、配置管理等保護性活動及及其作用

第三章 Software process structure

內容通用的過程模型、框架活動及其任務、過程模式過程模式(process pattern):描述了軟件工程工作中遇到的過程相關的問題、明確了問題環境並給出了針對該問題的一種或幾種可證明的解決方式。

要求理解軟件過程、通用過程模型、動作和任務之間的關系

第四章 Process model

內容常用的過程模型:瀑布模型、增量模型、演化模型(原型模型和螺旋模型)、統一過程模型統一過程模型是一種“用例驅動、以體系結構為核心、迭代及增量”的軟件 過程框架,由 UML 方法和工具支持。它是一種增量模型和專用過程模型,過程模型的優缺點及其適用范圍

要求理解過程模型的作業,掌握瀑布模型、增量模型、演化模型等過程模型的特點和適用范圍,理解增量和迭代是現代軟件過程的特點。

第五章 Agile development

內容敏捷開發理念及宣言敏捷宣言(Agile development manifesto): 
個人和這些個人之間的交流勝過了開發過程和工具 
可運行的軟件勝過了寬泛的文檔 
客戶合作勝過了合同談判 
對變更的良好響應勝過了按部就班地遵循計划,主要的敏捷開發過程模型極限編程XP(IXP工業極限編程IXP是XP的一種有機進化。它由XP的最低限要求、以客戶為中心、測試驅動精神組成。IXP和XP的主要差別在於其管理具有更大的包容性,它擴大了用戶角色,升級了技術實踐。)、Scrum和其它敏捷過程

要求理解敏捷開發哲學和敏捷宣言,掌握XP和IXP過程模型,了解其它敏捷過程模型,理解敏捷過程模型與傳統軟件過程模型的區別

第六章 Human aspects of Software engineering (要求自學)

要求學生了軟件工程師的素質要求和開發團隊的構建

第七章 Understand requirements

內容:需求工程的目的;需求工程的7個不同任務及工作產品:起始、導出、細化、協商、規約、驗證和管理,

1.起始(Inception):在項目起始階段,要建立基本的理解,包括對問題、誰需要解決方案、所期望解決方案的性質、與項目利益相關者和開發人員之間達成初步交流合作的效果。

2.導出(Elicitation –gathering requirements):詢問客戶、用戶和其他人,系統或產品的目標是什么,想要實現什么,系統和產品如何滿足業務的要求,最終系統或產品如何利用於日常工作。

3.精化(Elaboration-requirement modeling):在起始和導出階段獲得的信息將在精化階段進行擴展和提煉該任務集中於開發一個精確的需求模型。

4.協商(Negotiation-win-win):使用迭代的方法給需求排序,評估每項需求對項目產生的成本和風險,表述內部沖突,刪除、組合和修改需求,以便參與各方均能達到一定的滿意度,實現雙贏。

5.規格說明(Specification-document,Model,prototype):一個規格說明可以是一份寫好的文檔、一套圖形化的模型、一個形式化的數學模型、一組使用場景、一個原型或上述各項的任意組合。

6.確認(Validation-Quality assess):在確認這一步對需求工程的工作產品進行質量評估。

7.需求管理(Management-Change):基於計算機的系統其需求會變更,並且變更的要求貫穿於系統的整個生存期。需求管理是用於幫助項目組在項目進展中標識、控制和跟蹤需求以及需求變更的一組活動。

如何創建需求工程基礎,需求的收集和創建需求分析模型

要求:理解需求工程的重要性、需求工程任務集及工作產品,理解軟件需求分析模型包括:功能、信息和行為,了解軟件項目的利益攸關者及其協作在理解軟件需求中的重要性。

第八章 Requirement Modelingscenario-based methods

內容:用例和參與者,用例圖UML**活動圖**在特定場景通過提供迭代流的圖形表示來補充用例。,用例場景規約,活動圖和泳道圖泳道圖**是活動圖的一種有用變化,可以讓建模人員表示用例所描述的活動流,同時指示哪個參與者或分析類是由活動矩形所描述的活動來負責。 ,用例建模案例講解

要求:理解參與者與用例的概念,掌握用例場景規約的模板及其應用,掌握活動圖(泳道圖)的基本元素

第九章 Requirement Modeling: Class-based  methods

內容:類的定義,分析類的識別識別分析類

外部實體(其他系統、設備、人員),產生或實驗基於計算機系統的信息。

事物(報告、顯示、字母、信號),問題信息域的一部分。

偶發事件或事件(所有權轉移或完成機器人的一組移動動作),在系統操作環境內發生。

角色(經理,工程師,銷售人員),由和系統交互的人員扮演

組織單元(部門,組,團隊),和某個應用系統相關

場地(制作車間或碼頭),建立問題的環境和系統的整體功能

結構(傳感器、交通工具、計算機),定義了對象的類或與對象相關的類。

,定義分析類的屬性和操作,CRC建模方法-職責-協作者建模(CRC) 
CRC模型實際上是表示類的標准索引卡片的集合。 
頂部寫類名,左側列出類的職責,右側部分列出了類的協作者。 ,類與類的關系:關聯(泛化和聚合)、依賴,包(Package)的概念及其作用

要求:理解類的概念類: 
Entity classes 實體類:一般代表保存在數據庫中和貫穿應用程序的事物。 
Boundary classes 邊界類:創建用戶可見的和在使用軟件時交互的接口 
Controller classes 控制類:管理“控制單元”,掌握類、屬性和操作屬性:描述了已經選擇包含在需求模型中的類 操作:定義了某個對象的行為。的標識方法,理解CRC建模方法,掌握類之間的關聯、泛化、聚合和依賴關系,了解Package及其作用

第十章 Requirement Modeling: Behavior, pattern and Web/mobile Apps

內容:行為模型:事件和狀態,狀態表示和狀態圖UML狀態圖就是一種行為模型,該圖為每個類呈現了主動狀態和導致這些主動狀態變化的事件,需求模式(requirement pattern)

要求:理解行為模型的作用和目的,掌握狀態圖及其元素,了解需求模式。

第十一章 Design concepts

內容:包括軟件設計過程、軟件質量指導和屬性;軟件設計概念:抽象、體系結構、模式、關注點分離、模塊化、信息隱藏、功能獨立、重構、面向對象設計概念、設計類、依賴倒置;

1.抽象(Abstraction):

過程抽象是指具有明確和有限的指令序列(描述動作)

數據抽象是描述數據對象的冠名數據集合(描述動作怎么做)

2.體系結構(Architecture):軟件的整體結構和這種結構為系統提供概念完整方式。構件表示主要的系統元素及其交互。

3.模式(Patterns):模式承載了已證實的解決方案的精髓。設計模式描述了在某個特定場景與可能影響模式應用和使用方法的“影響力”中解決某個特定的設計問題的設計結構。

4.關注點分離(Separation of concerns):它表明任何復雜問題如果被分解為可以獨立解決和優化的若干塊,該復雜問題能夠更容易的被處理。

5.模塊化(Modularity):模塊化是關注點分離最常見的表現。模塊化設計使得開發工作更易規划

6.信息隱蔽(Hiding):隱蔽意味着通過定義一系列獨立的模塊可以得到有效的模塊化,獨立模塊互相之間只交流實現軟件功能所必須的那些信息。隱蔽定義並加強了對模塊內過程細節的訪問約束和對模塊所使用的任何局部數據結構的訪問約束。

7.功能獨立(Functional independence):開發具有“專一”功能和低耦合性的模塊即可實現功能獨立。

8.求精(Refinement):通過連續精化過程細節層次來實現程序的開發,通過逐步分解功能的宏觀陳述直到形成程序設計語言的語句來進行層次開發。

抽象和精化是互補的概念。

9.方面(Aspects):一個方面作為一個獨立的模塊進行實施,而不是作為“分割的”或者和許多構件“糾纏的”軟件片段進行實施。設計體系結構應當支持定義一個方面,該方面即一個模塊,該模塊能夠使該關注點經過它橫切的所有其他關注點而得到實施。

10.重構(Refactoring):重構是使用這樣一種方式改變軟件系統的過程:不改變代碼的外部行為而是改進其內部結構。

11.面向對象的設計概念(OO design concepts):

面向對象概念(類、對象、繼承、消息和多態)

12.設計類(Design Class):提供設計細節,使程序得以實施。

 

軟件設計模型:數據設計、體系結構設計、接口設計、構件級設計和部署設計

要求:了解軟件設計模型的內容,

 

 

理解軟件設計的主要概念抽象、信息隱藏、關注點分離、模塊化、重構、功能獨立、面向對象設計概念等,了解模式

第十二章 Archectural Design

內容:軟件體系結構的概念軟件體系結構是指系統的一個或者多個結構,它包括軟件構件、構件的外部可見屬性以及它們之間的相互聯系 和重要性1.軟件體系結構的表示有助於對計算機系統開發感興趣的各方展開交流。

2.體系結構突出了早期的設計決策,這些決策對隨后所有的軟件工程工作有深遠影響,同時對系統作為一個可運行實體的最后成功有重要作用。

3.體系結構“構建了一個相對小的、易於理解的模型,該模型描述了系統如何構成以及其構件如何一起工作”

、體系結構的類型和風格1.以數據為中心的體系結構。 
2.數據流體系結構。 
3.調用和返回體系結構 
4.面向對象體系結構 
5.層次體系結構、體系結構的設計和評估,WebApp和移動App的設計

要求:了解體系結構的重要性,掌握常見體系結構的風格和體系結構設計方法,了解WebApp和移動App的設計

第十三章 Component-level Design

內容:構件概念1.構件是計算機軟件中的一個模塊化的構造塊。 
2.OMG定義構件:系統中模塊化的、可部署的和可替換的部件,該部件封裝了實現並暴露一組接口。、傳統觀點的構件Traditional View):一個構件就是程序的一個功能要素,程序由處理邏輯及實現處理邏輯所需的每部數據結構以及能夠保證構件被調用和實現數據傳遞的結構構成。和面向對象觀點Object-Oriented view):構件包括一組協作的類。 的構件異同、構件設計的基本原則(OCP、LSP、DIP、ISP

開閉原則(Open-Closed Principle ,OCP):模塊應該對外延具有開放性,對修改具有封閉性。

依賴倒置原則(Dependency Inversion Principle ,DIP):依賴於抽象,而非具體實現。

Liskov替換原則(Liskov Substitution Principle (LSP)):子類可以替換他們的基類。

接口分離原則(The Interface Segregation Principle (ISP)):多個客戶專用接口比一個通用接口好

等)、內聚內聚性(Cohesion):內聚性意味着構件或者類只封裝那些相互關聯密切,以及與構件或類自身有親密關系的屬性和操作。分為功能內聚,分層內聚,通信內聚 和耦合耦合性(Coupling): 耦合是類之間彼此聯系程度的一種定性度量。 
隨着類(構件)相互依賴越來越多,類之間的耦合程度亦會增加。;構件的詳細設計;WebApp/移動App的詳細設計

注:為什么要高內聚?  

 模塊之間的關系越緊密,出錯就越少!

 為什么要低耦合?  

 子程序間的關系越復雜,就會產生更多的意想不到的錯誤!會給以后的維護工作帶來很多麻煩!

  高內聚低耦合,是軟件工程中的概念,是判斷設計好壞的標准,主要是面向對象的設計,主要是看類的內聚性是否高,耦合度是否低。

要求:理解構件及不同觀點的區別,掌握構件設計的基本原則OCP、LSP、DIP、ISP)、內聚和耦合的概念;掌握構件的詳細設計;了解WebApp/移動App的詳細設計

第十四章 User Interface Design

內容:用戶界面的三個黃金原則;

1.用戶操縱控制

1)以不強迫用戶進入不必要的或不希望的動作的方式來定義交互模式

2)允許用戶交互被中斷和撤銷

3)當技能級別增長時可以使交互流線化並允許定制交互

4)使用用戶與內部技術細節隔離開來

5)設計應允許用戶與出現在屏幕上的對象直接交互

2.減少用戶的記憶負擔

1)減少對短期記憶的要求

2)建立有意義的缺省

3)定義直觀的快捷方式

4)以不斷進展的方式揭曉信息

3.保持界面一致

1)允許用戶當前任務放入有意義的環境中

2)在應用系統家族內保持一致性

3)如果過去的交互模型已經建立起了用戶期望,除非有迫不得已的理由,否則不要改變它。

用戶界面分析(用戶分析設計師能夠將用戶心理模型與設計模型聚合在一起的唯一辦法就是努力了解用戶,以及了解用戶是如何使用系統的、任務分析任務分析的目標就是將這些技術應用到用戶界面:用例,任務細化,對象細化,工作流分析,層次分析、顯示內容分析、工作環境分析)和用戶界面設計(用戶模型、心理模型、設計模型和實現模型

工程師建立用戶模型。軟件工程師創建設計模型。最終用戶在腦海中對界面產生映像,稱為用戶的心理模型或系統感覺。系統的實現者創建實現模型。

用戶模型:確定了系統最終用戶的輪廓。

設計模型:用戶界面的設計

心理模型:最終用戶在腦海里對系統產生的印象。 

實現模型:組合了計算機系統的外在表現,結合了所有用來描述系統語法和語言的支撐信息。):界面模式和界面評估

要求:理解軟件可用性可用性是指用戶在使用高科技產品所提供的功能和特性時,對使用的容易程度和有效程度的定量測量。和三個黃金原則,掌握用戶界面分析的內容和界面設計用戶界面的分析和設計過程是迭代的,用戶界面分析和設計過程開始於螺旋模型的內部,並且包括4個階段:(1)界面分析及建模。(2)界面設計。(3)界面構造。(4)界面確認。界面設計的目標是定義一組界面對象和動作,使得用戶能夠以滿足系統所定義的每個使用目標的方式完成所有定義對的任務。,了解用戶界面模式和用戶界面評估

 

第十七章 軟件測試策略

內容:軟件測試的概念測試:測試是在交付給最終用戶之前以特定意圖找出錯誤為目的來執行程序的過程。 和測試策略,從小到大

 

 

 

傳統應用軟件和面向對象應用軟件的測試策略,單元測試、集成測試、確認測試和系統測試

要求:理解軟件測試的概念,掌握傳統應用軟件和面向對象應用軟件在單元測試和集成測試上的差別,了解系統測試的類型

第十八章傳統應用的測試

內容:測試基礎,白盒測試:程序流圖、程序獨立路徑(環路復雜度)和測試用例設計和黑盒測試:等價划分和邊界值分析)

要求:理解測試基礎,掌握白盒測試和黑盒測試及其應用

第十八章面向對象應用的測試

內容:面向對象分析和設計模型的測試、面向對象環境下的單元測試、集成測測試和確認測試,面向對象測試方法,類及類間的測試方法

要求:理解面向對象環境的單元測試、集成測試與傳統應用的單元測試和集成測試的區別,掌握基於故障、基於場景的測試方法及應用;理解類及類的測試方法及應用。

 

 

 

3. 課程實驗

該課程的實驗為單獨課程:現代軟件工程課程設計

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM