第一篇:軟件工程教學大綱
《軟件工程》教學大綱
課程名稱:軟件工程
英文名稱:Software Engineering 學時數及學分:54學時 3學分 教材名稱及作者、出版社:《軟件工程導論》齊治昌、譚慶平、寧洪,高等教育出版社。大綱主筆人:郭
一、課程的目的、要求和任務
“軟件工程”是計算機科學軟件專業的一門重要專業骨干課程,它的主要目地和任務是: 1. 系統地介紹軟件工程的基本原理、概念、技術和方法,簡介軟件工程的最新技術及其研究發展方向;2. 通過本課程的學習,使學生了解、掌握軟件生存周期階段的工程任務、具體過程、技術過程、技術方法和各種工具;3. 通過本課程的學習,使學生了解軟件工程管理的重要性及基本的管理技術;4. 能將上述知識用于該課程的課程設計實習中,實現一個具體題目的全部軟件開發過程。
二、大綱基本內容及學時分配 1.概論(4學時)
1)軟件危機
2)軟件工程概論
3)技術審查和管理復審
說明:要求學生掌握本節內容;2)、3)是本節重點。2.可行性研究(4學時)
1)可行性研究的任務及步驟 2)系統流程圖與數據流圖 3)數據字典
4)成本效益分析
說明:要求學生掌握本節內容;1)、2)、4)是本節重點。3.需求分析(8學時)
1)需求分析的任務及分析過程 2)驗證分析的圖型工具
3)驗證軟件需求 4)原型法
說明:要求學生掌握本節內容;1)、2)、3)是本節重點。4.總體設計(8學時)
1)總體設計的任務及過程 * 2)軟件設計的重要概念及規則 3)軟件設計的圖形工具 * 4)面向數據流的設計方法 * 說明:要求學生掌握本節內容;1)、3)、4)是本節重點。5.詳細設計(8學時)1)結構化程序設計
2)詳細設計的工具 3)Jackson 設計方法 4)Warnier 設計方法
5)程序復雜度的定量度量方法
說明:要求學生掌握本節內容;1)、2)、5)是本節重點。6.編碼(4學時)
1)程序設計語言的分類及選擇 2)程序設計的風格及方法 3)程序設計自動化及工具
說明:要求學生掌握本節內容;2)是本節重點。7.測試(8學時)
1)軟件測試的目標及測試的步驟
2)黑盒測試、白盒測試及測試方案的設計 3)單元測試、集成測試、驗收測試 4)調試及軟件可靠性的估算
5)自動測試工具
說明:要求學生掌握本節內容;1)、2)、4)是本節重點。8.維護(4學時)
1)軟件維護的定義及特點 * 2)維護的進行過程和可維護性
說明:要求學生掌握本節內容;1)是本節重點。9.軟件工程的管理技術(6學時)
1)成本估算
2)進度計劃及人員組織
3)軟件的質量保證
4)項目計劃的制定及管理
5)軟件工程的管理工具
說明:要求學生掌握本節內容;1)、3)、4)是本節重點。10.面向對象方法學引論(6學時)
1)基本概念及面向對象建模 2)對象模型 3)動態模型 4)功能模型
說明:本節內容選講;1)是本節重點。11.面向對象分析(4學時)
1)面向對象分析的基本過程及需求陳述 2)建立對象模型、動態模型、功能模型 3)定義服務
說明:本節內容選講;1)、2)是本節重點。12.面向對象設計(6學時)
1)面向對象設計的準則、啟發規則及軟件重用 2)系統分解
3)問題域、人-機交互、任務管理、數據管理等子系統的設計 4)設計類中的服務、關聯及設計優化 說明:本節內容選講;1)、3)是本節重點。13. 面向對象的實現(4學時)
1)程序設計語言的選擇 2)程序設計風格
3)面向對象測試
說明:本節內容選講。
三、與其它課程的關系
1.先行課程: 程序設計語言、數據結構、操作系統、編譯原理、數據庫等。
2.后續課程:高級程序設計語言概論、軟件工具與環境、信息管理系統(MIS)、計算機輔助教育等。
四、考核方式
1.期末閉卷考試 占總成績的50–60% 2.課程設計 占總成績的30% 3.平時成績(作業、上機和課堂考勤等)占總成績的 10-20%
五、參考書目
《軟件工程導論》齊治昌、譚慶平、寧洪,高等教育出版社。《軟件工程概論》,孫振飛 應振澍 編著,湖南科學技術出版社。
第二篇:《軟件工程》教學大綱
《軟件工程》教學大綱
《軟件工程》教學大綱 課程編號及名稱:040112軟件工程 2 教學目的與要求:
軟件工程是計算機科學與技術專業開設的一門專業必修課,是指導計算機軟件開發與維護、培養學生計算機軟件開發與應用綜合能力的一門綜合性課程。學生通過本課程的學習與課程實踐,應能了解軟件項目開發和維護的一般過程,掌握軟件開發的基本原理和技術,掌握現代化的軟件開發方法和步驟,為今后從事軟件開發打下堅實基礎。3學時學分:
總學時48學時,總學分3。其中授課40學時,實驗8學時。4 先修課程的要求:
數據結構、C語言程序設計、面向對象的程序設計、數據庫系統原理 教材與教學參考書目:
[1]
選用教材:《軟件工程(第二版)》齊治昌,高等教育出版社 [2] 《軟件工程導論》(第四版)張海藩編著,清華大學出版社 [3] 《實用軟件工程》(第二版)鄭人杰編著,清華大學出版社 [4] 《軟件工程技術概論》朱三元 等編著,科學出版社 [5] 《現代軟件工程》(上、中、下)周之英 編著,科學出版社 [6] 《面向對象的系統分析》 邵維忠 楊芙清 著,清華大學出版社 [7] 《軟件測試》(美)Ron Patton 著,周予濱 等譯,機械工業出版社 [8] 《System Analysis and Design Methods, fifth Edition》,Jeffrey L.等著,高等教育出版社
[9] 《能力成熟度模型(CMM):軟件過程改進指南》,SEI編著,劉孟仁 等譯,電子工業出版社
[10] 《軟件測試自動化技術與實例詳解》,Mark Fewster & Dorothy Graham 著,舒智勇等譯,電子工業出版社
[11] 《軟件工程》第二版 王立福等編著,北京大學出版社 [12] 《UML參考手冊》Ivar Jacobson,James Rumbaugh,Grady Booch著,姚淑蘭、唐發根譯,機械工業出版社 [13] 劉超編,《可視化面向對象建模技術--標準建模語言UML》,北航出版,1999年7月第一版 6 課程主要內容:
軟件危機與軟件工程;軟件、軟件工程過程與典型的軟件工程過程模型;與瀑布模型、演化模型等相對應的軟件開發方法;面向對象的開發方法等。
(一)緒論(2學時)
軟件危機與軟件工程概念;軟件工程過程及其典型開發模型;軟件開發應遵循的基本原則;軟件質量評價與軟件度量等
(二)可行性分析與需求分析(6學時)
可行性研究的任務、種類與方法;軟件需求及需求分析的任務、意義;需求獲取技術;結構化分析技術
(三)系統設計(6學時)
系統設計的階段與任務;模塊獨立、內聚與耦合概念;結構化設計方法;Jackson方法;詳細設計工具
(四)系統編碼(2學時)
軟件實現;開發工具選擇的原則;軟件編程的風格與規范
(五)系統測試(4學時)
《軟件工程》教學大綱
軟件測試的概念、任務與原則;軟件測試的階段及過程管理;軟件測試方法及方案設計;軟件調試;軟件測試自動化;軟件可靠性研究
(六)系統運行及維護(2學時)
系統交付使用的方式及相關工作;軟件維護的種類與相關概念;軟件維護的實施過程與責任分工;提高軟件可維護性的技術
(七)原型開發方法(6學時)
傳統開發方法的問題;原型概念;原型開發方法及其支撐條件
(八)面向對象的軟件工程開發方法(8學時)
面向對象方法概述及其優勢;面向對象的分析方法;面向對象的設計方法;統一建模語言UML; 軟件復用
(九)軟件項目管理與質量保證(4學時)
軟件項目管理概述;軟件項目規劃與估算;軟件項目風險管理;軟件項目的組織與進度計劃;軟件配置管理概述、配置管理的內容與工具;軟件質量保證與軟件過程能力成熟度模型CMM 教學內容重點:軟件工程過程與典型的軟件工程過程模型;軟件開發應遵循的基本原則;結構化分析與設計技術;原型開發方法;面向對象的分析與設計方法
教學內容難點:結構化分析與設計技術;面向對象的分析與設計方法 7 實驗教學安排:
在結構化分析方法、結構化設計方法與Jackson方法、原型開發方法、面向對象的軟件工程開發方法教學過程中安排3-4次實驗活動,要求學生認真完成。8 課程考核方式:
由于本課具有實踐性強的特點,建議采用大作業平時成績與結課考試相結合的方法綜合評定學生成績。本課特點及教學中應注意的問題:
本課特點:
1、實踐性強;
2、表面理解顯得較易,切實掌握非常困難。針對以上特點,教學過程中應極為重視實踐環節的指導與檢查,要求學生認真完成實踐活動,以求學得扎實、深刻。
第三篇:軟件工程課程設計教學大綱
專業實踐教學大綱
《軟件工程課程設計》教學大綱
英文名稱
課程代碼:
學分:1 分
執筆人:金霜 審定人:
一、前言
《軟件工程課程設計》是一個綜合的設計性實驗,是在學習完核心課程《軟件工程》后,對《軟件工程》所學內容的一次綜合運用;旨在使學生進一步掌握軟件工程的方法和技術,樹立團隊合作精神,培養學生的自主學習能力和創造性的工程設計能力,提高綜合分析和解決問題的能力。
二、教學大綱
1、目的要求
《軟件工程》是一門理論性和實踐性非常強的課程,學生僅僅通過課堂獲取知識是遠遠不夠的,必須加強實踐教學,利用具有實際工程背景的軟件設計題目,和軟件工程設計工具(rose、viso),培養學生對軟件系統的需求分析、系統分析、軟件測試能力。初步掌握系統分析、系統設計、系統測試的方法,讓學生掌握軟件工程設計工具(rose、viso)使用方法。
2、主要內容
(1)項目可行研究
☆ 成立項目小組,六人一組,其中4名開發人員,2名測試人員,并選定項目組長一名。
☆ 項目組長召集小組成員選擇設計項目
項目可由老師指定,也可以學生自選后報老師審核。
☆ 項目組長召集成員進行項目可行性研究,確定項目的大小、范圍和復雜程度等。☆ 確定任務進度、分工和完成項目設計的工具。
☆ 按照《軟件工程課程設計報告》的格式要求,完成報告中的《項目可行性研究》部分。(2)需求分析
☆ 根據項目的大小、范圍和復雜程度等情況,由全體組員共同完成項目的需求分析,包括項目功能、項目運行環境、項目開發環境、項目角色等。
☆ 使用軟件工程設計工具繪制項目總功能圖、總用例圖,并進行文字闡述。☆ 按照《軟件工程課程設計報告》的格式要求,完成報告中的《需求分析》部分。(3)系統概要設計
☆ 項目組長根據需求分析,進行任務分工,由開發人員進行系統概要設計
☆ 開發人員根據自己所分的模塊任務,對模塊的功能和參與者進行詳細闡述,使用軟件工程設計工具,繪制模塊用例圖
☆ 按照《軟件工程課程設計報告》的格式要求,完成報告中的《系統概要設計》部分。
(4)系統詳細設計
☆ 開發人員根據自己所分的模塊的概要設計,進行詳細設計
☆ 開發人員對自己所分模塊的實現流程進行闡述,并使用軟件工程設計工具,繪制類圖、活動圖(或者是狀態圖,二選一)。
☆ 組長繪制項目的ER圖。
☆ 按照《軟件工程課程設計報告》的格式要求,完成報告中的《系統詳細設計》部分。
(5)系統測試計劃
☆ 根據系統需求分析,由測試人員共同完成測試計劃編寫。
☆ 按照《軟件工程課程設計報告》的格式要求,完成報告中的《測試計劃》部分。(6)系統功能測試用例設計
☆ 組長根據測試需求分析,對測試人員進行任務分工。☆ 測試人員根據任務分工,繪制自己所分模塊的實現順序圖。☆ 測試人員根據自己所繪制的順序圖,進行系統功能測試用例設計
☆ 按照《軟件工程課程設計報告》的格式要求,完成報告中的《系統功能測試用例設計》部分。
(7)答辯(根據進度可選)
☆ 將各部分文檔進行整合,完成《軟件工程課程設計報告》
☆ 制作PPT,答辯時間5分鐘,提問3~5分鐘。(8)課時安排參考 ☆ 項目可行研究、需求分析4學時
☆ 系統概要設計、系統詳細設計(系統測試需求分析、系統功能測試用例設計)8學時 ☆ 答辯4學時
三、成績考核與評定
成績考核由以下幾部分組成:
(1)平時考勤占10%。
(2)設計表現占20%。組員的設計表現成績由組長提供;組長的設計表現成績由老師根據小組整體完成情況給于。
(3)答辯表現占20%,若沒有答辯環節,以考勤分代替。(4)文檔完成情況占50%。
成績評定實行優、良、中、及格、不及格五個等級。
四、重點說明執行本大綱應注意的問題
1、嚴格審核學生所選項目,提倡項目的新穎性和實用性。
2、嚴格審核學生的需求分析和任務分工,確保每個學生有足夠的工作量。
3、嚴格考勤,遲到15分鐘之內算遲到,遲到2次算曠課1次;遲到15分鐘以上算曠課。曠課2次,成績即為不及格
4、允許學生上網查資料,但嚴格控制學生不得上網進行玩游戲、看電影等與課程設計無關的活動。
5、答辯主要圍繞項目設計的合理性和可實現性提3-5個問題,根據學生回答情況,確定答辯分數。
6、審核文檔,允許學生有所借鑒,但不得完全抄襲,一旦發現,以0分計。
附:教學參考書目(添加教材信息)
1、《軟件工程》(第4版)人民郵電出版社
張海藩
2、《軟件工程概論》 清華大學出版社
鄭人杰、殷人昆
3、《軟件工程課程設計大綱》由老師提供
4、《軟件工程課程設計報告》由老師提供
5、《UML系統建模與分析設計課程設計》 機械工業出版社 刁成嘉、刁奕
6、《Rose工具使用方法參考》由老師提供
第四篇:《軟件工程課程設計》教學大綱
《軟件工程課程設計》教學大綱
英文名稱: Software Engineering Course Design
學分:3 適用專業:
參考學時:
3周
實驗學時: 3周 070472 課程編碼:
上機學時:
計算機科學與技術(專升本)
大綱執筆人:
一、課程目標
系(教研室)主任: 李震
《軟件工程課程設計》是實踐性教學環節之一,是《軟件工程》課程的輔助教學課程。通過課程設計,使學生掌握軟件工程的基本概念,結合實際的操作和設計,鞏固課堂教學內容,使學生掌握軟件開發的基本過程,將理論與實際相結合,應用現有的CASE工具和軟件開發文檔規范,完成一個基于數據庫的應用系統(DBAS)的設計與實現,把理論課與實驗課所學內容進行綜合,并在此基礎上強化學生的實踐意識、提高學生的綜合運用能力和創新能力。
通過本課程學習,使學生掌握軟件開發的基本概念、軟件開發技術和流程;獨立完成所有程序、文檔的編寫和調試工作;開發一套基于C/S或B/S結構的基于數據庫的應用系統。形成數據庫設計開發的基本能力;提高綜合運用理論知識解決實際問題的能力。
二、基本要求
1、課程設計要求學生按項目分組進行,每個項目組由10人左右組成,可根據分組情況分別擔任項目經理、技術經理、軟件工程師、測試工程師、配置管理員、數據庫管理員等角色。
2、在規定的時間內完成1個小型項目的計劃、需求分析、設計、編碼、測試和交付的全過程,要求按照軟件企業的正規開發流程組織實施,并按照給定的文檔規范標準撰寫相關文檔。
3、每組完成一個項目,題目可為學生信息管理系統、圖書管理系統、在線考試系統、網上購物系統、超市管理系統等,也可自擬題目,但要經教師審核。
4、項目實訓集中在機房進行,每天考勤,學生每天填寫工作日志,每周進行周總結。
三、教學內容與學時分配建議
1、實訓內容
(1)選題并制定項目開發計劃
1天 由學生自愿或推薦選出項目經理,并成立項目小組,項目經理召集小組成員根據教師提供的題目進行選題,也可自由命題但要經教師審核通過。
針對所選項目討論開發計劃,明確項目的大小、范圍、復雜度等,進行任務分解與任務分配,確定任務進度,確定完成項目的環境和工具,由項目經理完成《項目開發計劃》。
(2)需求分析
2天
對系統的功能及性能需求進行分析,在項目組內答辯評審后,由任務承擔人完成《需求規格說明書》。
(例如采用面型對象的方法進行需求分析,用Rational Rose工具進行UML建模。測試負責人組織書寫測試用例。)
(4)概要設計
1天
在項目小組成員的配合下,任務承擔人完成項目的初步設計任務,進行答辯評審后完成《概要設計說明書》。
(5)詳細設計
3天
項目小組確定系統總體設計方案,建立軟件系統的體系結構,并進行總體設計的答辯式評審,然后項目小組成員分工進行詳細設計和界面設計,期間應建立數據庫、表等,任務承擔人完成《詳細設計說明書》。
(6)編碼及測試
7天
根據前期分析和設計工作進行代碼的編寫工作,要求給出詳細的注釋,包括:模塊名,模塊功能,中間過程的功能,變量說明等。
所有測試過程都要求采用綜合測試策略;先作靜態分析,再作動態測試。應事先制訂《測試計劃》,并要求保留所有測試用例,完成《測試分析報告》。
(7)項目交付、總結
1天
在全班范圍內教師組織項目評審,項目經理完成項目開發總結報告。
2、提交內容
項目組按照軟件工程文檔模板要求提交以下文檔的打印稿和電子稿:項目開發計劃、需求規格說明書、概要設計說明書、詳細設計說明書、編碼清單(部分或全部)、測試計劃、測試分析報告(部分任務)、項目開發中介報告。文檔中必須注明完成者(簽名)和完成日期。
每位同學要提交工作日志和周總結,需要項目經理簽字。
項目經理提供本項目組的任務分工,及本項目組的成員工作評定,小組成員簽字。
3、成績評定 本次實訓必須提交正式的針對特定項目的完整的設計文檔和報告書。軟件綜合實訓的成績評定實行優秀、良好、中等、及格和不及格五個等級。優秀者人數一般不得超過總人數的20%。
四、教材及主要參考資料
[1] 史濟民,顧春華,鄭紅.軟件工程-原理、方法與應用[M].北京:高等教育出版社,2009.3.[2] 薩師煊,王珊.數據庫系統概論[M].北京:高等教育出版社,2000.2.[3] 肖瑞奇.Dreamweaver CS5制作網頁[M].北京:人民郵電出版社,2010.7.[3] 吳晨,張亮,張靜.ASP.NET+SQL server 數據庫開發與實例[M].北京:清華大學出版社,2006.8.請根據項目情況,修改和補充其它參考資料。
第五篇:《軟件工程》理論教學大綱
《軟件工程》理論教學大綱
(2000年制訂,2004年修訂)
課程編號:210024 英 文 名:Software Engineering 課程類別:專業主干課
前 置 課:計算機導論、程序設計基礎、數據結構、面向對象程序設計、離散數學 后 置 課:畢業設計和畢業論文 學
分:3學分
課
時:48課時(其中理論教學32課時,實驗教學16課時)主講教師: 韓忠愿等
選定教材: 張海藩.軟件工程.北京:人民郵電出版社.2002年.課程概述:
本課程面向信息系統與信息管理專業的學生,介紹軟件系統性質、目標、環境的分析方法,目標系統邏輯聯系、功能聯系、控制聯系和狀態轉換過程的描述方法,軟件結構、測試方案的設計要求和分析方法,軟件工程學新進展,以及上述過程所用的規范化圖文數表模型。具體包括:軟件工程概念及其過程模型、結構化分析/設計/實現方法和工具,面向對象方法學及面向對象的概念、模型、分析方法、設計方法、實現方法,軟件項目管理及其定量度量方法、相關國際標準。最后介紹佩特網等形式化方法、統一建模語言、軟件常用技術和軟構件的分類與檢索。教學目的:
本課程的教學目的,應使學生掌握大型復雜軟件系統的開發方法、規則和工具。首先,應使其克服長期書寫小程序形成的“重編碼、輕分析設計;重編碼、輕技術資料建設和管理”的習慣;其次,要理解軟件工程原理/方法/規則的必要性和掌握其技術細節;第三,要了解軟件工程學的進展和前沿動態;第四,要通過軟件系統設計的練習,鞏固和應用所學知識。教學方法:
本課程的難點在于,學生不曾經過大型軟件開發的訓練,因此在講解中要適時插入大量軟件開發事例,要求教師具有一定的軟件開發經驗;本課程不安排具體編程環境和開發語言的學習,但必須以大型軟件開發實例說明問題,因此要求教師熟悉多種開發環境和開發語言;此外,軟件開發技術的滯后和軟件應用的廣泛性所形成的反差,要求教師了解并適時提出計算機輔助軟件工程(CASE)的問題。因此,作為教師,應把案例的收集和規律的提取作為重點;作為學生,重點是掌握基本思想和基本方法及其綜合應用。教學中以講授和討論為主,實驗內容則是在Power Designer、Project、IBM Rational Rose等CASE環境下實習理論教學中的建模、分析和管理過程。各章教學要求及教學要點
第一章 軟件工程概述
課時分配:2課時 教學要求:
本章對計算機軟件工程學進行簡短的概述。首先要通過回顧計算機系統軟硬件關系的發展簡史,說明開發軟件的一些錯誤方法和觀念是怎樣形成的。然后列舉這些錯誤方法帶來的嚴重弊病(軟件危機),澄清一些糊涂觀念。為了計算機系統的進一步發展,需要認真研究開發和維護軟件的科學技術。應總結計算機軟件技術發展的歷史經驗教訓,借鑒其他工程領域的管理技術。教學內容:
第一節
軟件工程
一、什么是軟件工程
概括地說,軟件工程是指導計算機軟件開發和維護的工程學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件并有效地維護它,這就是軟件工程。
二、軟件工程的基本原理
1.用分階段的生命周期計劃嚴格管理; 2.堅持進行階段評審; 3.實行嚴格的產品控制; 4.采用現代程序設計技術; 5.結果應能清楚地審查; 6.開發小組的人員應該少而精;
7.承認不斷改進軟件工程實踐的必要性。
第二節 軟件工程方法學
一、方法學(methodology)范型(paradigm)瀑布模型、噴泉模型、快速原型模型、增量模型、螺旋模型。
二、軟件工程方法學三要素:方法、工具和過程。
三、傳統方法學和面向對象方法學 思考題:
1.什么是軟件工程?怎么應用軟件工程消除軟件危機? 2.軟件工程化的觀點認為,軟件生命周期包含哪些階段?
3.簡要論述結構化范式和面向對象范式的要點,并比較這兩種范式的優缺點。
第二章 軟件過程
課時分配:2課時 教學要求:
本章需要明確:軟件過程是為了獲得高質量軟件產品所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。軟件過程必須科學、合理,才能開發出高質量的軟件產品。按照在軟件生命周期全過程中應完成任務的性質,在概念上可以把軟件生命周期劃分成問題定義、可行性研究、需求分析、概要設計、詳細設計、編碼和單元測試、綜合測試以及維護等八個階段。實際從事軟件開發工作時,軟件規模、種類、開發環境及使用的技術方法等因素,都影響階段的劃分。因此,一個科學、有效的軟件過程應該定義一組適合于所承擔的項目特點的任務集合。據此,本章講授五類典型的軟件生命周期模型及其特點。教學要點
第一節 軟件生命周期的基本任務
一、問題定義—“要解決的問題是什么?”
二、可行性研究—“上一個階段所確定的問題是否有行得通的解決辦法?”
三、需求分析—用規格說明(specification)定義“目標系統必須做什么?”
四、概要設計—“怎樣實現目標系統?”
五、詳細設計—“怎樣具體地實現這個系統?”
六、編碼和單元測試—寫出正確的容易理解、容易維護的程序模塊。
七、綜合測試—通過各種類型的測試及相應的調試,使軟件達到預定的要求。
八、軟件維護—通過各種必要的維護活動使系統持久地滿足用戶的需要(改正性維護、適應性維護、完善性維護、預防性維護)。
第二節 瀑布模型
一、階段間具有順序性和依賴性。
二、推遲實現的觀點。
三、質量保證的觀點。思考題:
1.什么是軟件過程?它與軟件工程方法學有什么關系?
2.假設你要開發一個軟件,它的功能是把某個數開平方,所得的結果應該精確到小數點后4位。一旦實現并測試完畢后,該產品將會被拋棄。你打算選用哪種軟件生命周期模型?
3.列出上一題所述軟件產品在開發過程中可能遇到的風險。
第三章 結構化分析
課時分配:3課時 教學要求:
本章講授用戶需求的發現、求精、建模、規格說明和復審的過程。本章還要說明模型的以下作用:1.模型能幫助分析員更好地理解軟件系統的信息、功能和行為,從而使得需求分析工作更容易完成,使需求分析的結果更系統化。2.模型是復審需求分析成果時的焦點,因此,也成為驗證規格說明的完整性、一致性和準確性的重要依據。3.模型是設計的基礎,為設計者提供軟件的實質性表示,通過設計工作將把這些表示轉化成軟件實現。在此基礎上,引導學生使用實體—關系圖來建立數據模型,掌握數據流圖的基本符號,并能正確地使用這些符號建立目標系統的功能模型。此外,簡要說明狀態轉換圖和數據字典。教學內容:
第一節
概述
一、需求分析的含義(發現、求精、建模、規格說明和復審的過程)。
二、模型—為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。
三、結構化分析通常建立數據模型、功能模型和行為模型等三種模型。
四、用分析模型表示軟件需求并寫出準確的軟件需求規格說明。
第二節 需求分析與需求工程
一、訪談—訪談(或稱為會談)。
最早開始運用的獲取用戶需求的技術,也是迄今為止仍然廣泛使用的主要的需求分析技術。
二、規格說明技術。
這種方法提倡用戶與開發者密切合作,共同標識問題,提出解決方案的要素,商討不同的方法并指定基本的需求。
三、軟件原型化方法。
構建原型的要點是,它應該實現用戶看得見的功能(例如屏幕顯示或打印報表),省略目標系統的“隱含”功能(例如修改文件)。
第三節 軟件需求規格說明
一、軟件需求規格說明簡略大綱。
引言、信息描述、功能描述、行為描述、確認標準、參考書目、附錄。
二、需求規格說明書各部分的撰寫要點。
第四節 實體—關系圖
數據模型包含三種相互關聯的信息:數據對象、描述數據對象的屬性及數據對象彼此間相互連接的關系。
第五節 數據流圖
一、數據流圖符號。正方形(或立方體)表示數據的源點或終點;圓角矩形(或圓形)代表變換數據的處理;開口矩形(或兩條平行橫線)代表數據存儲;箭頭表示數據流,即特定數據的流動方向。
二、例子。
三、圖元命名。
第六節 狀態轉換圖
一、狀況轉換圖的各種圖形結構要素。
二、換圖的應用實例。
第七節 數據字典
一、數據字典是為了描述在結構化分析過程中定義的對象的內容而使用的一種半形式化的工具。
二、數據字典是所有與系統相關的數據元素的有組織的列表。
三、數據字典是對系統中使用的所有數據元素的定義的集合。
四、數據字典的內容(名字、別名、使用地點與方式、內容描述、補充信息)。
五、數據字典中表示數據構成的符號。思考題:
1.銀行計算機儲蓄系統的工作過程大致如下:儲戶填寫存款單和取款單,由業務員鍵入系統。如果是存款,則系統記錄存款人姓名、住址(或電話號碼)、身份證號、存儲類型、存款日期、到期日起、利率及密碼等信息,并打印存款單給儲戶;如果是取款而且存款時留有密碼,則系統首先核對儲戶密碼,若密碼正確和存款時未留密碼,則計算利息并打印利息清單。
2.用數據流圖描繪本系統的功能,并用實體聯系圖描繪系統中的數據對象。
第四章 結構化設計
課時分配:6課時 教學要求:
本章應使學生學會用各種圖形描繪軟件結構。描述程序處理過程的工具,可分為圖形、表格和語言三類,這三類工具各有所長,教學中應該讓學生能夠根據需要選用適當的工具。教學內容:
第一節
結構化設計與結構化分析的關系
結構化分析的結果為結構化設計提供了最基本的輸入信息,結構化設計是結構化分析的繼續。
第二節 軟件設計的概念和原理
一、模塊化。模塊是由邊界元素限定的相鄰的程序元素(例如,數據說明,可執行的語句)的序列,而且有一個總體標識符來代表它。像Pascal或Ada這樣的塊結構語言中的Begin?end對,或者C,C++和Java語言中的{?}對,都是邊界元素的例子。因此,過程、函數、子程序和宏等,都可作為模塊。面向對象范型中的對象是模塊,對象內的方法也是模塊。模塊是構成程序的基本構件。
模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶的需求。
1.模塊可分解性; 2.模塊可組裝性; 3.模塊可理解性; 4.模塊連續性; 5.模塊保護性。
二、抽象。
三、逐步求精。
四、信息隱藏。
第三節 模塊獨立
一、耦合。
耦合是對一個軟件結構內不同模塊之間互連程度的度量,分為數據耦合,控制耦合,公共環境耦合,內容耦合。
二、內聚。
內聚標志一個模塊內各個元素彼此結合的緊密程度,它是信息隱蔽和局部化概念的自然擴展。分為功能內聚、順序內聚、通訊內聚、過程內聚、時間內聚、邏輯內聚、偶爾內聚。
第四節 啟發規則
一、改進軟件結構提高模塊獨立性。
二、模塊規模應該適中。
三、深度、寬度、扇出和扇入都應適當。
四、模塊的作用域應該在控制域之內。
五、力爭降低模塊接口的復雜程度。
六、設計單入口單出口的模塊。
七、模塊功能應該可以預測。
第五節 表示軟件結構的圖形工具
一、層次圖。
二、HIPO圖。
三、層次圖和HIPO圖的區別和所適用的情況。
第六節 面向數據流的設計方法
一、概念。
1.變換流—如果數據流圖中的輸入經過加工處理后才沿輸出通道變換成外部形式后離開軟件系統,這種數據流稱為變換流。
2.事務流—如果數據流圖中的輸入未經加工處理后就沿多個輸出通道離開軟件系統進入下一個分支,這種數據流稱為變換流。
二、變換分析。
復查基本系統模型、復查并精化數據流圖、確定數據流圖具有變換特性還是事務特性、確定輸入流和輸出流的邊界,從而孤立出變換中心、完成“第一級分解”、完成“第二級分解”、使用設計度量和啟發規則對第一次分割得到的軟件結構進一步精化。
三、事務分析。
事務分析的設計步驟和變換分析的設計步驟大部分相同或類似,主要差別僅在于由數據流圖到軟件結構的映射方法不同。
四、設計優化。
第七節 過程設計
一、經典的結構程序設計。
只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環這三種基本控制結構。
二、擴展的結構程序設計。
除了上述三種基本控制結構之外,還允許使用DO-CASE型多分支結構和DO-UNTIL型循環結構。
三、修正的結構程序設計。
在上述結構的基礎上,再加上允許使用LEAVE(或BREAK)的結構。
第八節 過程設計的工具
描述程序處理過程的工具稱為過程設計的工具,它們可以分為圖形、表格和語言三類。
一、程序流程圖。
二、盒圖(N-S圖)。
盒圖沒有箭頭,因此不允許隨意轉移控制。堅持使用盒圖作為詳細設計的工具,可以使程序員逐步養成用結構化的方式思考問題和解決問題的習慣。
三、PAD圖。
用二維樹形結構的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。
四、判定表。
當算法中包含多重嵌套的條件選擇時,判定表能夠清晰地表示復雜的條件組合與應做的動作之間的對應關系。
五、判定樹。
判定表雖然能清晰地表示復雜的條件組合與應做的動作之間的對應關系,但其含義卻不是一眼就能看出來的,初次接觸這種工具的人要理解它需要有一個簡短的學習過程。判定樹是判定表的變種,也能清晰地表示復雜的條件組合與應做的動作之間的對應關系。
六、過程設計語言(PDL)。思考題:
1.分析模型中的哪些信息為數據設計奠定了基礎?哪些信息為軟件體系結構設計奠定了基礎?那些信息為接口設計奠定了基礎?那些信息為過程設計奠定了基礎?
2.為每種類型的模塊偶合舉一個具體例子。3.對每種類型的模塊內聚舉一個具體例子。4.舉例說明信息隱藏和模塊獨立的關系。5.舉例說明藕合和可移植性的關系。
第五章 結構化實現
課時分配:3課時 教學要求:
學習本章后,為了設計出有效的測試方案,學生必須深入理解并應用指導軟件測試的基本準則,應該能夠應用各種測試方法設計軟件系統的測試方案,并根據測試結構進行錯誤定位、軟件調試和軟件可靠性估計等后續工作。教學內容:
第一節 軟件實現的基本問題
一、選擇程序設計語言。
二、編碼風格。
程序內部的文檔、數據說明、語句構造、輸入/輸出、效率。
第二節 軟件測試基礎
一、測試目標。
1.測試是為了發現程序中的錯誤而執行程序的過程;
2.好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案; 3.成功的測試是發現了至今為止尚未發現的錯誤的測試。
二、黑盒測試和白盒測試。
三、測試準則。
1.所有的測試都應該能追溯到用戶需求;
2.應該在測試開始之前的相當長時間,就制定出測試計劃; 3.測試發現的錯誤中的80%很可能是由程序中20%的模塊造成的; 4.測試應該從“小規模”開始,并逐步進行“大規模”測試; 5.窮舉測試是不可能的;
6.為了達到最佳的測試效果,應該由獨立的第三方來從事測試工作。
四、流圖。
第三節 邏輯覆蓋
一、語句覆蓋。
二、判定覆蓋。
三、條件覆蓋。
四、判定/條件覆蓋。
五、條件組合覆蓋。
第四節 控制結構測試
一、基本路徑測試。
1.根據過程設計結果畫出相應的流圖; 2.計算流圖的環形復雜度; 3.確定線性獨立路徑的基本集合;
4.設計可強制執行基本集合中每條路徑的測試用例。
二、條件測試。
三、數據流測試。
四、循環測試。1.簡單循環; 2.嵌套循環; 3.串接循環。
第五節 黑盒測試技術
一、等價劃分。
1.如果規定了輸入值的范圍,則可劃分出一個有效的等價類輸入值在此范圍內(兩個無效的等價類輸入值小于最小值或大于最大值)。2.如果規定了輸入數據的個數,則類似地也可以劃分出一個有效的等價類和兩個無效的等價類。
3.如果規定了輸入數據的一組值,則每個允許的輸入值是一個有效的等價類,此外還有一個無效的等價類(任一個不允許的輸入值)。
4.如果規定了輸入數據必須遵循的規則,則可以劃分出一個有效的等價類(符合規則)和若干個無效的等價類(從各種不同角度違反規則)。
5.如果規定了輸入數據為整型,則可以劃分出正整數、零和負整數等三個有效類。6.如果程序的處理對象是表格,則應該使用空表,以及含一項或多項的表。
二、邊界值分析。
三、錯誤推測。
第六節 測試策略
一、測試步驟。
二、單元測試。1.代碼審查; 2.軟件測試。
三、集成測試。1.自頂向下集成; 2.自底向上集成; 3.回歸測試;
4.不同集成測試策略的比較。
四、確認測試。
第七節 調試
一、調試過程。
二、調試途徑。1.蠻干法; 2.回溯法; 3.原因排除法。思考題:
航空公司向軟件公司訂購了一個規劃飛行路線的程序。假設你是另一軟件公司的軟件工程師。航空公司已雇用你在的公司對上述程序進行驗收測試。你的任務是,根據下述事實設計驗收測試的輸入數據,并解釋你選取這些數據的理由:領航員向程序輸入出發點和目的地,以及根據天氣和飛機型號而初步確定的飛行高度。程序讀入途中的風向風力等數據,并且制定出三套飛行計劃(高度、速度、方向及途中的五個位子校核點)。所制定的飛行計劃應做到燃油消耗和飛行時間都最少。
第六章 面向對象的概念與模型
課時分配:3課時 教學要求:
面向對象方法學比較自然地模擬了人類認識客觀世界的思維方式,本章教學應使學生了解面向對象方法的概念和規律和工具,能夠用面向對象的思想描述問題域,從而建立關于軟件系統的對象模型,當然,出于面向對象建模的需要,也要重溫過程建模和功能建模方法。教學內容:
第一節
概述
一、面相對象思想基本內涵:OO=Objects+ Classes+ Inheritance+ Communication with messages。
二、面向對象方法學的主要優點。
與人類習慣的思維方法一致、穩定性好、可重用性好、較易開發大型軟件產品、可維護性好。
三、面向對象方法的其他概念。
(類Class)、對象、消息(Message)、方法(Method)、屬性(Attribute)、封裝(Encapsulation)、繼承(Inheritance)、多態性(Polymorphism)、重載(Overloading)。
第二節 對象模型
一、表示類—&—對象的圖形符號。
二、表示結構的圖形符號。
三、對象模型之例。
第三節 動態模型
一、概念。
二、符號。
第四節 功能模型
一、表示方法。二、三種模型之間的關系。思考題:
1.試分析傳統的生命周期方法學的優缺點。2.什么是面向對象方法學?這種方法有什么優點? 3.什么是對象?它與傳統的數據有何關系?有何不同? 4.什么是模型?開發軟件為什么要建立模型? 5.什么是對象模型? 6.什么是動態模型? 7.什么是功能模型?
第七章 面向對象分析
課時分配:2課時 教學要求:
本章介紹面向對象思想和方法在具體軟件系統分析中的應用,包括一些具體的操作技術,如對象、屬性、聯系和行為的初選和求精等。本章講述的自動取款機系統和電梯系統這兩個實例,應該有助于讀者更深入、具體地理解面向對象分析的方法與過程。教學內容:
第一節 分析過程
一、概述。二、三個子模型與五個層次。
第二節 需求陳述
一、書寫要點。
二、例子。
第三節 建立對象模型
一、確定類—&—對象。1.找出候選的類—&—對象; 2.篩選出正確的類—&—對象。
二、確定關聯。1.初步確定關聯; 2.篩選; 3.進一步完善。
三、劃分主題。
四、確定屬性。1.分析; 2.選擇。
五、識別繼承關系。
六、反復修改。
第四節 其他過程
一、建立動態模型。
二、建立功能模型。
三、定義服務。
第五節 面向對象分析實例
思考題:
1.用面向對象方法分析研究一個儲蓄系統,試建立它的對象模型、動態模型和功能模型。2.用面向對象方法分析研究一個機票預定系統,試建立它的對象模型、動態模型和功能模型。
3.用面向對象方法分析研究一個患者監護系統,試建立它的對象模型、動態模型和功能模型。
第八章 面向對象設計
課時分配:2課時 教學要求:
本章在前面兩章關于面向對象思想及其基本應用的系統介紹的基礎上,考慮到面向對象分析與結構化分析在過程、要求和原則等方面的相似性,講授從略;同時考慮到具體實現技術的差異,著重介紹在面向對象方法中實現模塊化、信息隱蔽的若干技術。教學內容:
第一節 面相對象設計方法與過程
一、面向對象設計的準則。
二、啟發規則。
三、系統分解。
四、設計問題域子系統。
五、設計人-機交互子系統。
六、設計任務管理子系統。
七、設計數據管理子系統。
八、設計類中的服務。
九、設計關聯。
十、設計優化。
十一、面向對象分析與設計實例。
第九章 計劃
課時分配:4課時 教學要求:
軟件工程包括技術和管理兩方面的內容,是管理與技術緊密結合的產物。只有在科學而嚴格的管理之下,先進的技術方法和優秀的軟件工具才能真正發揮出它們的威力。因此,本章教學應使學生在認識軟件管理特點的基礎上,掌握主流的估算和評價指標,并能據此安排和優化軟件項目的進度。教學內容:
第一節 度量軟件規模
一、代碼行技術。
二、功能點技術。
功能點技術依據對軟件信息域特性和軟件復雜性的評估結果,估算軟件規模。1.信息域特性—輸入項數(Inp)、輸出項數(Out)、查詢數(Inq),主文件數(Maf)和外部接口數(Inf)。
2.計算未調整的功能點數UFP。3.計算技術復雜性因子TCF。
第二節 工作量估算
一、靜態單變量模型:E=A+B×(ev)C。
二、動態多變量模型:E=〔LOC×B0.333/P〕3×(1/t)4。
三、COCOMO模型。
第三節 進度計劃
一、基本原則。
二、Gantt圖。
三、工程網絡。
四、估算進度。
五、關鍵路徑。
六、機動時間。思考題:
分析研究一個倉庫管理信息系統,要求: 1.用代碼行技術估算本系統的規模; 2.用功能點技術估算本系統的規模; 3.用靜態單變量模型估算開發本系統所需的工作量; 4.假設由一個人開發本系統,請制定進度計劃; 5.假設由兩個人開發本系統,請制訂進度計劃。
第十章 軟件工程項目管理組織
課時分配:2課時 教學要求:
本章教學要具體介紹國外比較流行的民主制程序員組、主程序員組和現代程序員組的組織方式,討論不同組織方式的優缺點和適用范圍。然后再從更廣闊的角度進一步討論通用的軟件項目組的組織結構問題,主要講述風險管理、質量保證和配置管理等三類軟件工程控制活動。教學內容:
第一節 組織策略
一、民主制程序員組;
二、主程序員組;
三、現代程序員組;
四、軟件項目組。
第二節 控制策略
一、風險管理;
二、質量保證;
三、配置管理。
第十一章 國際標準
課時分配:3課時 教學要求:
本章簡要地介紹幾個與軟件項目管理有關的國際標準,供學生在實際工作中參考、借鑒。教學內容:
第一節 常用標準
一、IEEE1058.1軟件項目管理計劃標準。
二、ISO9000質量標準。
三、ISO/IEC12207軟件生命周期過程標準。
四、ISO/IECTR15504軟件過程評估標準。
五、能力成熟度模型。
附 錄:參考書目
1.齊治昌等.軟件工程[M].北京:高等教育出版社,北京.1997.2.王選.軟件設計方法[M].北京:清華大學出版社,1992.3.Pont M J.Software Engineering with C++ and CASE Tools[M].Addison-Wesle,1996.4.周之英.現代軟件工程[M].北京:科學出版社,1999.5.張海藩.軟件工程導論(第三版)[M].北京:清華大學出版社,1998.6.張海藩.牟永敏.面向對象程序設計實用教程[M].北京:清華大學出版社,2001.7.張海藩等.計算機第四代語言[M].北京:電子工業出版社,1996.8.蔣慧等.UML設計核心技術[M].北京:希望電子出版社,2001.9.柏路等譯.C++面向對象的程序開發技術[M].北京:電子工業出版社,1996.10.Roger S.Pressman.Software Engineering—A Practitioner’s Approach.Fourth Edition[M].McGraw-Hill,1997.11.Stephen R.Schach.Software Engineering with Java[M].McGraw-Hill,1999.執筆人:
韓忠愿
審定人:
程國達
2004年6月
2004年6月
2004年6月
院(系、部)負責人:韓忠愿