(一)課程描述
軟件工程是研究和指導軟件開發(fā)和維護的工程類學科,它以計算機科學理論及其他相關學科的理論為指導,采用工程化的概念、原理、規(guī)范、 技術和方法進行軟件工程項目的開發(fā)和維護, 把經(jīng)過實踐證明正確的管理措施和 當前能夠得到最好的技術方法結合起來,以較少的代價獲取高質量的軟件產(chǎn)品。 通過幾十年的努力,軟件工程已逐步發(fā)展成為一門成熟的專業(yè)學科。
軟件工程作為計算機相關專業(yè)的一門專業(yè)主干課,重點要求學生學習與軟件開發(fā)和維護有關 的四個方面的主要內(nèi)容——過程與模型、 方法與技術、 工具與環(huán)境、 標準與規(guī)范。 進而通過課程實踐培養(yǎng)學生運用軟件工程基本原理解決實際問題, 并從事復雜軟 件項目開發(fā)和維護的實踐應用能力與創(chuàng)新能力, 努力成為當今信息社會和知識經(jīng)濟時代所需要的高素質計算機專業(yè)人才。
通過本課程的學習,使學生初步建立工程化意識,學會用工程化思想(包括技術、方法與環(huán)境)開發(fā)各種軟件,以軟件的生命周期作為主線,掌握軟件工程的基本理論,進一步系統(tǒng)化、工程化,為今后實際工程中能夠進行系統(tǒng)分析與設計奠定良好的基礎。
(二)課程目標
畢業(yè)要求 | 具體指標點 | 課程教學目標 |
掌握軟件工程概念知識 | 軟件工程概念和基礎知識 | 熟練掌握軟件與軟件工程基本概念和基本知識 |
掌握生存周期與軟件開發(fā)模式 | 生存周期與軟件開發(fā)模式 | 要求熟練掌握生存周期與軟件開發(fā)模式 |
掌握兩種編程思想 | 結構化程序設計、面向對象 | 使學生掌握結構化程序設計、面向對象編程思想 |
掌握軟件流程 | 軟件的評審、測試與維護,項目計劃與項目管理方法 | 使學生掌握有關軟件的評審、測試與維護,項目計劃與項目管理方法 |
掌握軟件工程方法 | 軟件工程的方法、項目的分析、設計、實現(xiàn)和維護 | 使學生能用軟件工程的方法參與軟件項目的分析、設計、實現(xiàn)和維護 |
(一)第1章 軟件工程學概述
主要知識點:
1.1 軟件危機
1.2 軟件工程
1.3 軟件生命周期
1.4 軟件過程
教學要求:通過本章的學習,使學生了解軟件的特點,軟件生產(chǎn)發(fā)展的三個階段,各階段的特點,軟件危機的產(chǎn)生及其表現(xiàn)形式;初步了解軟件的生存周期模型;掌握軟件工程的定義及特點,軟件生存期各階段的特點和內(nèi)容;牢固掌握軟件危機產(chǎn)生的原因;掌握軟件生命周期中各階段的基本任務。
重點:軟件危機的產(chǎn)生、表現(xiàn)、原因;軟件工程的定義。
難點:軟件生命周期。
采用的教學方法:課堂講授
講授學時:3學時
(二)第2章 可行性研究
2.1 可行性研究的任務
2.2 可行性研究的過程
2.3 系統(tǒng)流程圖
2.4 數(shù)據(jù)流圖
2.5 數(shù)據(jù)字典
2.6 成本/效益分析
教學要求:掌握可行性研究的必要性,掌握可行性研究的任務及可行性研究的具體步驟;了解系統(tǒng)流程圖的作用及符號表示,掌握數(shù)據(jù)流圖的畫法及數(shù)據(jù)字典的編寫。
重點:可行性研究的任務及步驟,數(shù)據(jù)流圖的畫法及數(shù)據(jù)字典的編寫。
難點:數(shù)據(jù)流圖的畫法。
采用的教學方法:課堂講授
講授學時:3學時
(三)第3章 需求分析
3.1 需求分析的任務
3.2 與用戶溝通獲取需求的方法
3.3 分析建模與規(guī)格說明
3.4 實體-聯(lián)系圖
3.5 數(shù)據(jù)規(guī)范化
3.6 狀態(tài)轉換圖
3.7其他圖形工具
3.8驗證軟件需求
教學要求:掌握需求分析的任務和步驟、結構化分析方法及原型化分析方法,熟練掌握數(shù)據(jù)流圖的細化及ER圖以及規(guī)范化方法(如范式),IPO圖的畫法;掌握常用圖形工具的使用方法。了解需求分析文檔建立和復審的方式。
重點:需要分析過程。
難點:各種圖形工具的應用。
采用的教學方法:課堂講授
講授學時:6學時
(四)第5章 總體設計
5.1 設計過程
5.2 設計原理
5.3 啟發(fā)規(guī)則
5.4 數(shù)描繪軟件結構的圖形工具
5.5 面向數(shù)據(jù)流的設計方法
教學要求:了解總體設計的過程;掌握軟件總體設計的基本任務,軟件設計的基本原理。理解模塊化,抽象,信息隱蔽,模塊獨立性等概念,明確度量模塊獨立性的校準---耦合性及內(nèi)聚性。熟練掌握結構化設計方法(要求能劃分數(shù)據(jù)流的類型,將其能換成軟件結構圖,并能根據(jù)優(yōu)化準則將其優(yōu)化。)
重點:將交換流程的數(shù)據(jù)流圖,轉換為軟件結構。
難點:將一個復雜型數(shù)據(jù)流圖轉換為軟件結構圖并優(yōu)化。
采用的教學方法:課堂講授
講授學時:6學時
(五)第6章 詳細設計
6.1 結構程序設計
6.2 人機界面設計
6.3 過程設計的工具
6.4 面向數(shù)據(jù)結構的設計方法
6.5 程序復雜程度的定量度量
教學要求:能熟練的使用詳細設計描述工具來設計模塊中的算法及程序的邏輯結構。常用的算法過程的描述工具;算法的復雜性評價問題。使學生明確詳細設計階段的主要任務,掌握算法復雜性的度量方法。
采用的教學方法:課堂講授
講授學時:6學時
(六)第7章 實現(xiàn)
7.1 編碼
7.2 軟件測試基礎
7.3 單元測試
7.4 集成測試
7.5 確認測試
7.6 白盒測試技術
7.7黑盒測試技術
7.8調(diào)試
7.9軟件可靠性
教學要求:掌握軟件測試的概念與主要任務,軟件的排錯技術和軟件可靠性的評測方法。軟件測試的目標、原則以及測試方案的建立和測試過程。測試實例的構造方法及測試步驟。深刻理解白盒,黑盒測試技術。深刻理解測試過程中單元測試,集成測試,驗收測試的任務及使用的方法。
重點:白盒與黑盒測試方法;單元測試,集成測試的方法;
難點:測試用例的設計。
采用的教學方法:課堂講授
講授學時:6學時
(七)第8章 維護
8.1 軟件維護的定義
8.2 軟件維護的特點
8.3 軟件維護的過程
8.4 軟件的可維護性
8.5 預防性維護
8.6 軟件再工程過程
教學要求:掌握軟件維護的類型、軟件的可維護性以及軟件的維護方法;軟件維護的目標與任務,軟件維護的特殊性以及軟件維護的管理流程。理解軟件維護的內(nèi)容,維護任務的實施,深刻理解如何提高軟件的維護性。
重點:軟件維護的內(nèi)容、特點、方法、技術、文檔
難點:軟件維護任務的實施
采用的教學方法:課堂講授
講授學時:3學時
(八)第9章 面向對象方法學引論
9.1 面向對象方法學概述
9.2 面向對象的概念
9.3 面向對象建模
9.4 對象模型
9.5 動態(tài)模型
9.6 功能模型
9.7 3種模型之間的關系
教學要求:掌握面向對象的概念,包括對象和類、對象的屬性和操作,以及對象之間的關系;面向對象程序設計的特性,如封裝、繼承和多態(tài)性;面向對象的建模,包括對象模型、動態(tài)模型和功能模型的概念。
重點:面向對象、類、類的層次結構、方法和消息的實質以及對象之間的關系
難點:面向對象程序設計的特性;面向對象建模的概念
采用的教學方法:課堂講授
講授學時:3學時
(九)第10章 面向對象分析
10.1 面向對象分析的基本過程
10.2 需求陳述
10.3 建立對象模型
10.4 建立動態(tài)模型
10.5 建立功能模型
10.6 定義服務
教學要求:了解面向對象分析的基本過程;掌握對象模型、動態(tài)模型、功能模型的元素、結構和構造方法;掌握繪制對象圖、畫狀態(tài)圖、畫數(shù)據(jù)流程圖;掌握確定對象類、確定關聯(lián)、確定屬性,識別繼承。
重點:面向對象分析的基本過程。
難點:畫對象圖、畫狀態(tài)圖、畫數(shù)據(jù)流程圖。
采用的教學方法:課堂講授
講授學時:3學時
(十)第11章 面向對象設計
11.1 面向對象設計的準則
11.2 啟發(fā)規(guī)則
11.3 軟件重用
11.4 系統(tǒng)分解
11.5 設計問題域子系統(tǒng)
11.6 設計人機交互子系統(tǒng)
11.7設計任務管理子系統(tǒng)
11.8設計數(shù)據(jù)庫管理子系統(tǒng)
11.9設計類中的服務
11.10設計關聯(lián)
11.11設計優(yōu)化
教學要求:掌握面向對象設計的準則;掌握面向對象設計所用啟發(fā)性規(guī)則、軟件重用、系統(tǒng)分解等方法;了解設計問題域、人機交互、管理等子系統(tǒng);了解設計優(yōu)化。
重點:面向對象設計所用啟發(fā)性規(guī)則、軟件重用、系統(tǒng)分解
難點:設計優(yōu)化。
采用的教學方法:課堂講授
講授學時:6學時
(十一)第12章 面向對象實現(xiàn)
12.1 程序設計語言
12.2 程序設計風格
12.3 測試策略
12.4 設計測試用例
教學要求:了解面向對象程序設計語言;程序設計風格;面向對象測試。
重點:程序設計風格,面向對象測試
難點:設計測試用例
采用的教學方法:課堂講授
講授學時:3學時
(十二)第13章 軟件項目管理
13.1估算軟件規(guī)模
13.2 工作量估算
13.3 進度計劃
13.4 人員組織
13.5質量保證
13.6軟件配置管理
教學要求:了解軟件開發(fā)成本結算、軟件項目進度安排、軟件項目計劃內(nèi)容及軟件質量的定義、質量保證的基本概念。
重點:軟件開發(fā)成本結算、軟件項目進度安排、軟件項目計劃內(nèi)容
難點:軟件質量的定義、質量保證
采用的教學方法:課堂講授
講授學時:6學時
1、 熟練掌握軟件項目開發(fā)的過程
2、 能夠完整的撰寫軟件項目生命周期中的各個文檔
3、 掌握項目管理的相關知識。
(一)出勤
學生應積極參與課堂教學并完成相關的作業(yè)、課堂測驗。
(二)閱讀資料
學生應認真進行課前預習,閱讀教材和指定參考書及重要的參考文獻。
(三)課堂展示
根據(jù)時間及課堂班人數(shù),在可能的情況下安排小組實驗課程討論與效果演示。
(四)課外實踐
本課程是理論與實驗結合的課程,實驗課程單獨開設,理論課也穿插相關技術的應用案例展示。
(五)小考與期末考
無小考和期末考,但具有隨堂測驗和課程設計。
(六)課程論文
課程設計報告
(七)學術誠信
按中山大學南方學院相關規(guī)定執(zhí)行。
(八)剽竊的定義以及相應的懲罰
剽竊是嚴重違反學校規(guī)章制度的行為。一經(jīng)發(fā)現(xiàn),將上報相關部門,并受到包括開除學籍在內(nèi)的嚴厲處罰。
(一)教科書-必讀
《軟件工程導論》(第六版),張海藩編著,清華大學出版社,2013
(二)教科書-強烈推薦
《軟件工程導論》(第六版)學習輔導,張海藩、牟永敏編著,清華大學出版社,2013
(三)文章-必讀
(四)文章-強烈推薦
(五) 其他參考資料
[1] 《軟件工程》(原書第9版),Ian Sommerville,機械工程出版社,2011.5
[2] 《軟件需求》(第3版), Karl Wiegers等,清華大學出版社,2016.2
[3] 《UML用戶指南》(第2版·修訂版),Grady Booch等,人民郵電出版社,2013.1
(一)教學活動
1、個人預習
2、課堂講授
3、課堂問答
4、習題講解
5、隨堂測驗
6、課后作業(yè)
7、課程設計
8、課下互動
(二)對預期學習成果的考察
預期學習成果 | 教學活動 | 學習成果考察內(nèi)容:作業(yè)/課程實驗 |
第1章 軟件工程學概述 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P33頁第7題 |
第2章 可行性研究 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P53頁第2、3、5題(3選1) 、第4題、所選課程設計題目的可行性研究報告 |
第3章 需求分析 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P73頁第4、5、6題、所選課程設計題目的需求分析報告 |
第5章 總體設計 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P114頁第3題(1)或(2)或(3)、第4或5題、所選課程設計題目的總體設計報告 |
第6章 詳細設計 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P141第3、4、5、6、7、8題、所選課程設計題目的詳細設計報告 |
第7章 實現(xiàn) | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P183頁第1到10題、所選課程設計題目的編碼和測試用例報告 |
第8章 維護 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P201頁的第2、3題 |
第9章 面向對象方法學引論 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P230頁的第9、10題 |
第10章 面向對象分析 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P256的第1、2、3題3選1,第4題 |
第11章 面向對象設計 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P288頁第5、6、7題3選1,第8題 |
第12章 面向對象實現(xiàn) | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P304頁第4、5、6、7題 |
第13章 軟件項目管理 | 1,2,3,4,5,6,7,8 | 隨堂測驗(見學習系統(tǒng)) 作業(yè):P335頁第1、2題2選1,第5、6題2選1 |
(一)評分體系
1、出勤率: 10%
2、課堂參與: 20%
3、課后作業(yè): 10%
4、隨堂測驗: 10%
5、課程期末設計(或考試): 50%
(二)課程的教學目標與評估方式的對應關系
編號 | 課程教學目標 | 評估方式 |
1 | 目標1:掌握軟件工程的知識,能夠利用軟件工程的基礎知識進行軟件項目開發(fā)和項目管理,完成課程設計題目,以解決實際問題。 | 隨堂提問、隨堂測驗、課后作業(yè)、課程設計。 |
2 | 目標2:能夠對具體問題進行分析,找到解決該問題所用的方法。 | 隨堂提問、隨堂測驗、課后作業(yè)、課程設計。 |
3 | 目標3:能夠綜合運用所學軟件工程基本知識,完成所選項目的軟件項目開發(fā)過程;設計能夠解決實際問題的小型軟件系統(tǒng);將整個項目的開發(fā)過程中的的各種文檔形成一份完整的項目開發(fā)文檔。 | 隨堂提問、隨堂測驗、課后作業(yè)、課程設計。 |
(三)評分標準及要求
課堂參與度 (10%+20%) |
1)全勤10% 2)課堂提問:積極參與課堂提問20% |
作業(yè)、隨堂測驗 (10%+10%) |
1)課后作業(yè)(10%) 2)隨堂測驗(10%) |
課程設計 (50%) |
1)項目演示(10%): 2)課程設計項目效果(源碼等)(20%) 3)課程設計報告(20%) |
周次 | 課程要點 | 理論學時 | 實驗學時 | 習題學時 |
1 | 第1章 軟件工程學概述 | 3 | 0 | 0 |
2 | 第2章 可行性研究 | 3 | 0 | 0 |
3 | 第3章需求分析(3.1~3.4) | 3 | 0 | 0 |
4 | 第3章需求分析(3.5~3.8) | 3 | 0 | 0 |
5 | 第5章總體設計(5.1~5.3) | 3 | 0 | 0 |
6 | 第5章總體設計(5.4~5.5) | 3 | 0 | 0 |
7 | 第6章詳細設計(6.1~6.3) | 3 | 0 | 0 |
8 | 第6章詳細設計(6.4~6.5) | 3 | 0 | 0 |
9 | 第7章實現(xiàn)(7.1~7.4) | 3 | 0 | 0 |
10 | 第7章實現(xiàn)(7.5~7.9) | 3 | 0 | 0 |
11 | 第8章維護 | 3 | 0 | 0 |
12 | 第9章面向對象方法學引論 | 3 | 0 | 0 |
13 | 第10章面向對象分析 | 3 | 0 | 0 |
14 | 第11章面向對象設計(11.1~11.5) | 3 | 0 | 0 |
15 | 第11章面向對象設計(11.6~11.11) | 3 | 0 | 0 |
16 | 第12章面向對象實現(xiàn) | 3 | 0 | 0 |
17 | 第13章軟件項目管理 | 3 | 0 | 0 |
18 | 第13章軟件項目管理 | 3 | 0 | 0 |
19 | 復習或考試 | |||
20 | 總課時 | 54 | 0 | 0 |
注:此表一式三份,于開學兩周內(nèi)填好,一份送教務與科研部,一份開課單位留存,一份自留。