第一篇:《软件工程》教学大纲
《软件工程》教学大纲
《软件工程》教学大纲 课程编号及名称: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、表面理解显得较易,切实掌握非常困难。针对以上特点,教学过程中应极为重视实践环节的指导与检查,要求学生认真完成实践活动,以求学得扎实、深刻。
第二篇:软件工程教学大纲
《软件工程》教学大纲
课程名称:软件工程
英文名称: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%
五、参考书目
《软件工程导论》齐治昌、谭庆平、宁洪,高等教育出版社。《软件工程概论》,孙振飞 应振澍 编著,湖南科学技术出版社。
第三篇:软件工程课程设计教学大纲
专业实践教学大纲
《软件工程课程设计》教学大纲
英文名称
课程代码:
学分: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月
院(系、部)负责人:韩忠愿