软件工程导论(第13章)
软件工程导论张海藩课后习题答案(完整版)

作业一 基本概念(第1-2章) 作业二 需求分析(第3章) 作业三 系统设计(第5章) 作业四 详细设计(第6章) 作业五 系统实现(第7章) 作业六 系统维护(第8章) 作业七 面向对象方法学引论(第9章) 作业八 面向对象分析(第10章) 作业九 面向对象设计(第11章) 作业十 面向对象实现(第12章) 作业十一 软件项目管理(第13章)
M40e0 8.2(0 8 191 99 5)60 7,357,677(字 9) 408e09.8
如果字长为32位,则这个存储器的价格是:
P0.00 33 20.71291 99 5 77 4 35777,16 27(7 美9 元)
如果一条指令为一个字长,则为使存储器装满程序共需 73,577,679条指令。
E2 病人
F2生理信号
E3 时钟
F3日前、时间
F5安全范围 D2患者安全范围
P2 分析信号
危及病人信息
P3 产生警告信息
F2生理信号
F4警告信息
P1 接收信号
F2生理信号
E1 护士
P4 定时取样 生理信号
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
F6日志 F1要求报告
P6 产生病情报告
2-4目前住院病人主要由护士护理,这样做不仅需要大量护 士,而且由于不能随时观察危重病人的病情变化,还会延 误抢救时机。某医院打算开发一个以计算机为中心的患者 监护系统,请分层次地画出描述本系统功能的数据流图。
医院对患者监护系统的基本要求是随时接收每个病人的生 理信号(脉搏、体温、血压、心电图等),定时记录病人情 况以形成患者日志,当某个病人的生理信号超出医生规定 的安全范围时向值班护士发出警告信息,此外,护士在需 要时还可以要求系统印出某个指定病人的病情报告。
软件工程导论第5版习题十三参考答案

3、下面叙述对一个计算机辅助设计(CAD)软件的需求:该CAD软件接受由工程师提供的二维或三维几何图形数据。
工程师通过用户界面与CAD系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。
几何图形数据及其他支持信息都保存在一个CAD数据库中。
开发必要的分析、设计模块,以产生所需要的设计结果,这些输出将显示在各种不向的图形设备上。
应该适当地设计软件,以便与外部设备交互并控制它们。
所用的外部设备包括鼠标、数字化扫描仪和激光打印机。
要求:(1)进一步精化上述要求,把CAD软件的功能分解成若干个子功能;(2)用代码行技术估算每个子功能的规模;(3)用功能点技术估算每个子功能的规模;(4)从历史数据得知,开发这类系统的平均生产率是620LOC/PM,如果软件工程师的平均月工资是8000元,请估算开发本系统的工作量和成本;(5)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系统的工作量和成本。
答:(1)习题中仅对需求做了粗略描述,每项需求都应该进一步扩展,以提供细节需求和定量约束。
例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征”的具体含义,以及对“CAD数据库”的规模和复杂度的具体需求。
经过对需求的进一步精化,分解出软件的下述7个主要的子功能:·用户界面及控制机制;·二维几何图形分析;·三维几何图形分析;·数据库管理;·计算机图形显示机制;·外部设备控制;·设计分析模块。
(2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3个值:乐观值(即最小规模),悲观值(即最大规模)和可能值(即最可能规模)。
然后用式(10.1)所示的加权平均法计算每个子功能的规模,结果示于表l0.4。
(3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。
表l0.5给出了对5个信息域特性的估计值。
软件工程导论概要.优秀精选PPT

。这时软件危机出
这个阶段要回答的关键问题是:“对上一阶段所确定的问题有行得通的解决办法吗?” 系统分析员需要进行一次大大压缩和简化了的
现,随之而来人们开始研究消除危机的途径,从而形成一 系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。
这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
通常把在软件生命周期全过程中使用的一整套技术方法 的集合称为方法学(Methodology),也称为范型 (Paradigm)。
软件工程方法学的3要素:方法、工具和过程
一. 传统方法学
也称为生命周期方法学或结构化范型。从时间角度
1)对软件开发成本和进度的估计常常很不准确; 2)用户对完成的软件系统不满意的现象经常发生; 3)软件产品的质量往往靠不住; 4)软件常常是不可维护的; 5)软件通常没有适当的文档资料; 6)软件成本在计算机系统总成本中所占的比例逐年上升; 7)软件开发生产率提高的速度跟不上计算机应用的发展
趋势。
1)软件本身特点造成;
极限编程的整体开发过程:
如何开发门软件新,以的满足学对软科件日—益增—长的软需求件工程学。
软件危机:计算机软件的开发和维护过程中所遇 到的一系列严重问题。(正常、不正常运行软件都 具有这种问题)
软件危机的实质: 如何开发软件,以满足对软件日益增长的需求 如何维护数量不软件工程学:主要应用工程的方法和技术 研究软件开发与维护的方法、工具和管理的一 门交叉学科。
2)程序设计方法学:主要应用数学的方法研 究程序的性质以及程序设计的理论和方法的学 科。
1.2 软件工程
软件工程的介绍 1968年NATO会议:软件工程就是为了经济地获 得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。
软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
《软件工程导论》考试重点

第一章1.软件危机的概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
2.产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.软件配置的主要包括程序、文文件和数据等成分。
配置管理工具:commit,分支,合并。
4.软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。
(ppt上定义)、、、、、//6.通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型//7.软件工程方法学包含三个要素:方法、工具和过程。
//8.目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学//9.传统方法学也称为生命周期方法学或结构化范型//10.面向对象方法学的四个要点://1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件//2.把所有对象都划分成类//3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
//4.对象彼此间仅能通过发送消息互相联系。
11.软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要)12.最基本的测试是集成测试和验收测试。
13.瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。
软件工程导论13软件项目管理

应用系统组成模型:这个模型主要用于估算构建原型的工作量, 应用系统组成模型 : 这个模型主要用于估算构建原型的工作量 , 模型名字暗示在构建原型时大量使用已有的构件。 模型名字暗示在构建原型时大量使用已有的构件。 早期设计模型:这个模型适用于体系结构设计阶段。 早期设计模型:这个模型适用于体系结构设计阶段。 后体系结构模型: 后体系结构模型 : 这个模型适用于完成体系结构设计之后的软 件开发阶段。 件开发阶段。
WHPU
8-2
经理管什么? 经理管什么?
计划 计划
预 算 预 算 进度 标准
组 织 组 织
WHPU
8-3
内容
13.1 估算软件规模 13.2 开发工作量估算 13.3 进度计划 13.4 人员组织 13.5 质量保证 13.6 软件配置管理 13.7 能力成熟度模型
WHPU
8-4
13.1 估算软件规模
④
⑤
E是以人月或人年为单位的工作量, 是以人月或人年为单位的工作量, 是以人月或人年为单位的工作量 t是以月或年为单位的项目持续时间; 是以月或年为单位的项目持续时间; 是以月或年为单位的项目持续时间 B是特殊技术因子 它随着对测试、质量保证、 B是特殊技术因子,它随着对测试、质量保证、文档及管理技术的需求的增加而缓 是特殊技术因子, 慢增加,对于较小的程序(KLOC=5-15),B=0.16,对于超过 的程序, 慢增加 , 对于较小的程序 = , = , 对于超过70 KLOC的程序, 的程序 B=0.39; ; P是生产率参数,它反映了下述因素对工作量的影响: 是生产率参数, 是生产率参数 它反映了下述因素对工作量的影响: – 总体过程成熟度及管理水平 – 使用良好的软件工程实践的程度 – 使用的程序设计语言的级别 – 软件环境的状态 – 软件项目组的技术及经验 – 应用系统的复杂程度 开发实时嵌入式软件时, 的典型值为 的典型值为2 开发实时嵌入式软件时,P的典型值为 000;开发电信系统和系统软件时,P=10 ;开发电信系统和系统软件时, 000;对于商业应用系统来说.P=28 000。可以从历史数据导出适用于当前项目的生 ;对于商业应用系统来说. 。
张海藩《软件工程导论》(第6版)配套题库【课后习题(1-13章)】【圣才出品】

圣才电子书
更有效的技术和方法;
十万种考研考证电子书、题库视频学习平台
④应该开发和使用更好的软件工具。
4.简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 答:(1)结构化范型 ①要点 结构化范型属于传统方法学。传统的软件开发方法大部分采用瀑布模型。这种模型要求 每一阶段都以前一阶段形成的文档为基础完成工作。每一阶段将要完成时,都要求开发人员 进行验证或确认。 ②优点 把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不 同人员分工协作,从而降低了整个软件开发过程的困难程度。 ③缺点 当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化时,开发出的软件 往往不成功;而且维护起来仍然很困难。 (2)面向对象范型 ①要点 a.软件中的任何元素都是对象,复杂的软件对象由简单的软件对象组合而成。 b.所有对象划分成各种对象类,每个对象都定义了一组数据和一组方法。 c.按照子类和父类的关系,把若干个对象类组成一个层次结构的系统。 d.对象彼此之间仅能通过传递消息互相联系。 ②优点
(2)假设在 1985 年一名程序员每天可开发出 10 条指令,程序员的平均工资是每月 4000 美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
(3)假设在 1995 年存储器字长为 32 位,一名程序员每天可开发出 30 条指令,程序 员的月平均工资为 6000 美元,重复(1)、(2)题。
存储器的价格按下面公式描述的趋势逐年 下降:
如果计算机字长为 16 位 , 则 存 储 器 价 格 下 降 的 趋 势 为 :
在上列公式中 y 代表年份,M 是存储容量(字数),P1 和 P2 代表价格。基于上述假设可以比较计算机硬件和 软件成本的变化趋势。要求计算:
软件工程导论教学大纲-章程

《软件工程导论》教学大纲安徽大学计算机科学与技术学院2017 年 3 月《软件工程导论》教学大纲课程编号:ZJ36047课程名称:软件工程导论英文名称:Introduction to Software Engineering 学分/学时:2/34 课程性质:学科平台课程适用专业:软件工程先修课程:计算机导论开课单位:计算机科学与技术学院一、课程的教学目标与任务《软件工程导论》课程是软件工程专业高等教育的专业基础课程和学科平台课程,是“科研训练计划”教育课程。
《软件工程导论》以科学技术方法论为逻辑起点,结合部分管理方面的基本理论,讲授软件工程与方法论的联系,从而提高软件的质量和生产率。
本课程以软件工程专业本科二年级学生为讲授对象,是集理论性与应用性为一体的学科。
设置本课程的目的是:使学习者在全面了解软件工程发展历史、基本理论的基础上,系统掌握软件开发过程中的现代方法和管理手段,具备用工程化方法设计和构建规范软件的思想,从而为后续软件工程开发方法的系列课程奠定理论基础。
学习本课程的要求是:学习者应深刻认识软件危机产生的原因,纠正对软件开发的错误认识,掌握软件工程科学方法论的基本概念和基本原理,初步具备作为专业人员组织软件开发和设计工作的能力。
为检验掌握软件开发应遵循的原则和编写文档的基本方法的程度,最后的考核是通过考试进行,同时以加深对课程内容的理解。
二、课程具体内容及基本要求第一章软件工程的范畴 ( 2学时)基本内容包括:第一节历史方面一、定义软件(1)介绍软件的形式化定义。
结合经典教科书中关于软件的定义,介绍软件中所包含的三个要素:①指令的集合;②数据结构;③软件描述信息。
(2)阐述非形式化定义中软件具有的特性。
对比其他人工产品的特性,总结软件所具有的三个特性。
二、软件工程的发展历程和应用领域第二节经济方面结合例子阐述经济学原则在软件生产方面的重要性。
第三节维护性方面介绍软件生命周期模型和步骤,阐述维护工作在生命周期模型中的重要性和具体分类。
软件工程课后习题答案2-12章

D3生理信息 定时的生理信号
F2生理信号 P1 接收信号 F2生理信号 定时的 生理信号
F6日志 E3 时钟 F3日前、时间 P4 定时取样 生理信号 F6日志 E1 护士 F1要求报告 P6 产生病情报告 D1患者日志
范
信
理
生
患者生理信 号获取
生理信号
定
时
生
理
生
号
理
信
信
围
号
号
患者监护系 统
危 日志 机信息
安排航班
预 定 信 息
机票 信息
交款
打印取票单 据
打印及发放 机票
有
航班
通 效 知
设置航班
录入预定信 息
录入取票凭 证
核对取票凭 证
P2 分析信号 E2 病人 F2生理信号
危及病人信息 F2生理信号 D2患者安全范围 P7制定安 全范围 P5 更新日志
P3 产生警告信息 F4警告信息 E1 护士
F5安全范围
监护处理
志 日 定时生理信号
号 生理信
监护信息输 出
息
生
理
制定生理信 号安全范围
接收信号
定时取样 生理信号
时间
分析信号
更新日志
报警
危机信
信
号
范
围
信息 危机
生
信 理 生 时 定 号 信 理
日 志
取得时间
号
病情报告
• P104:4 • 美国某大学有200名教师,校方与教师工会刚刚签订一项协议。 按照协议,所有年工资超过$26000(含$26000 )的教师工 资将保持不变,年工资少于$26000的教师将增加工资,所增 加工资数额按下述方法计算:给每位教师所赡养的人(包括 教师本人)每年补助$100,此外,教师有一年工龄每年再多 补助¥50,但是,增加后的年工资总额不能多于$26000。 • 教师工资档案存储在行政办公室的磁带上,档案中有目前的 年工资、赡养的人数、雇佣日期等信息。需要写一个程序计 算并印出每名教师的原工资和调整后的新工资。 • 要求:(1)画出此系统的数据流图;(2)写出需求说明; • (3)设计上述的工资调整程序(要求用HIPO图描绘设计结果), 设计时分别采用两种算法,并比较两种算法的优缺点: – (a)搜索工资档案数据,找出年工资少于$26000的人, 计算新工资,校核是否超过$26000,存储新工资,印出新 旧工资对照表; – (b)把工资档案数据按工资从最低到最高的次序排序,当 工资数额超过$26000时即停止排序,计算新工资,校核是 否超过限额,存储新工资,印出结果。 • (4)你所画出的数据流图适应用那种算法?
软件工程课后习题答案2-12章

书状态为S2&终端 输入“H=”加书名 管理员设置状 态 管理员删除 管理员添加
预约
书出库(删除) 书入库
图4.4.2
(三)图书馆终端用户模式的有穷状态机描述 • 状态机J:{读者查询状态,查询结果} • 输入集K:{终端输入用户查询命令,书的各种 状态(S1,S2,S3)} • 转换函数T:如图4.4.3所示 • 初始态S:{读者查询状态} • 终态集F:{查询结果}
取票通知 账单 机票 账单
P3.1 核对取票凭证 顾客 取票通知 P3.2 交款 机票 P3.3 打印机票
机票预定系 统
信 息 通 知 单 机 票
账
单
信息
机票
通
预定信息处 理
信息
知
账
通
单
有
单
取票凭证处 理
通知 账单 单
账单
信 息 定 预 航班信
息
机票预定子 系统
单 知
机票发放子 系统
效 通 知
机
票
取款单
P3.1输入取款 信息
取款信息 E1储 户 密码 P3.2 密码校验
P4 计算利息
利息 利息 P5 打印利息 清单
密码正确信息
E2业 务员
利率
P6设置利 率
利率
不能是两个分开的子系统,是相同的前台单个处理
银行储蓄系 统
存 款 单 款
率 利
利 存单 息清单
密 码
业务单据录 入
利 率
存款单
取
单
储蓄业务处理
(一)图书状态的有穷状态机描述 • 状态机J:{书在图书馆S1,书被借出S2, 书被预约S3} • 输入集K:{书上条形码,借阅卡条形码, 终端输入各种命令} • 转换函数T:如图4.4.1所示 • 初始态S:{书在图书馆S1,书被借出S2} • 终态集F:{书被借出S2,书被预约S3}
张海藩《软件工程导论》(第6版)配套题库【章节题库(1-13章)】【圣才出品】

第三部分章节题库第1章软件工程学概述一、选择题1.与计算机科学的理论研究不同,软件工程是一门()学科。
A.理论性B.工程性C.原理性D.心理性【答案】B【解析】软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。
2.软件危机的主要原因有()。
①软件本身的特点②用户使用不当③硬件可靠性差④对软件的错误认识⑤缺乏好的开发方法和手段A.③④B.①②④C.①⑤D.①③【答案】C【解析】软件危机的主要原因是软件本身的特点和缺乏好的开发方法和手段。
用户使用不当,硬件可靠性差,对软件的错误认识属于软件危机的表现。
3.软件工程与计算机科学性质不同,软件工程着重于()。
A.原理探讨B.理论研究C.建造软件系统D.原理的理论【答案】C【解析】计算机科学中的研究成果均可用于软件工程,但计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。
4.软件工程方法学的研究内容包含软件开发技术和软件工程管理两个方面,其期望达到的最终目标是()。
A.软件开发工程化B.消除软件危机C.实现软件可重用D.程序设计自动化【答案】A【解析】软件工程方法学是根据不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料都做出规定,从而使软件的开发能够进入规范化和工程化的阶段,以克服早期的手工方式生产中的随意性和非规范性做法。
5.软件生存周期模型有多种,下列选项中,()不是软件生存周期模型。
A.螺旋模型B.增量模型C.功能模型D.瀑布模型【答案】C【解析】主要的软件生存周期模型有瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。
6.软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、()、维护等活动。
A.应用B.测试C.检测D.以上答案都不正确【答案】B【解析】软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。
通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同阶段去完成。
软件工程导论

第一章1.什么是软件危机?产生软件危机的原因?消除软件危机的途径?1)软件危机是指在计算机的开发和维护中所遇到的一系列严重问题。
2)原因,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
3)途径:1)将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。
2)、研究和推广成功的软件开发技术和方法。
3)、开发和使用好的软件工具。
1.软件工程是:①把系统的规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
2.软件工程的基本原理1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现代程序设计技术5)结果应能清楚的审查6)开发小组的人员应该少而精7)承认不断改进软件工程实践的必要性3.软件工程方法学包含三个要素,方法、工具和过程。
4.软件生命周期的八个阶段1)问题定义2)可行性研究3)需求分析4)总体设计5)详细设计6)编码和单元测试7)综合测试8)软件维护5.什么是软件过程?几种模型的优缺点及适用项目?软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的步骤。
软件开发模型有瀑布型、渐增型和变换型。
瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。
它的特点:(1)各个阶段的顺序性和依赖性;(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。
渐增型开发方法及特点:(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。
如此反复,直至软件人员和用户对所设计完成的软件系统满意为止。
(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。
(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。
软件工程教学大纲(正式版)

《软件工程导论》课程教学大纲一、课程基本信息课程编号:英文名称名:Software Engineering总学时:54学时学分:3课程类别:专业必修课适用专业:全校本(专)计算机科学与技术先修课程:数据结构,大学数学,离散数学,计算机算法设计。
二、课程性质与目的、要求《软件工程》是计算机专业的一门工程性基础课程,在软件工程学科人才培养体系中占有重要的地位。
软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,而软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学。
《软件工程》已成为高等学校计算机软件教学体系中的一门核心课程,本课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML 语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践”软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。
通过本课程的学习,要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。
本课程注重培养学生理论应用于实践的能力,课堂上教师向学生讲述软件工程中的相关原理和概念,并通过课程设计,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。
本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。
三、教学内容及学时分配本课程的教学内容共分十三章。
第1章软件工程学概述(2课时)学习目的与要求:通过本章的学习,了解和掌握软件工程的基本概念(如软件和软件工程的定义、等),软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期,几种主要的软件开发模型等。
软件工程导论

软件(ruǎn jiàn)危机:是指在计算机软件的开发和维护过程中所遇到的一些(yīxi ē)列严重问题。
典型(diǎnxíng)表现:1)对软件的成本(chéngběn)和进度估计不准确2)用户(yònghù)对“已完成的”软件系统不满意经常出现3)软件产品质量靠不住4)软件不可维护5)没有适当的文档资料6)软件成本所占比例逐年上升7)软件产品供不应求产生的原因:一方面与软件本身的特点有关,另一封面也和软件开发与维护的方法不正确有关。
解决方法:为了解决软件危机,既有技术措施(方法和工具),有有必要的组织管理措施。
软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
利用软件工程来解决软件危机。
第二题:软件工程:是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件生命周期:软件定义、软件开发和运行维护 3个阶段构成。
每个阶段的任务:1)软件定义时期的任务:问题定义、可行性研究和需求分析。
2)开发时期的任务:总体设计、详细设计、编码和单元测试、综合测试。
3)维护时期的任务:主要任务是使软件持久的满足用户的需要。
具体地说是使用过程中发现错误能得以改正;环境变化时修改以适应新环境;有新需求时及时改进满足用户需求。
第三(dì sān)题需求分析(fēnxī)的目的:为了开发出真正满足用户需求的软件产品,需要(xūyào)对用户做需求分析,能够深入理解需求。
注意事项:1、访谈前需要准备好具体问题,例如询问(xúnwèn)公司的商品种类。
2、正式(zhèngshì)访谈时需要提出具体的问题3、非正式时准备开放性的问题,以鼓励被访问人员说错自己的想法。
软件工程导论张海藩编著考试范围及各章重点

软件工程考试整顿第一章1、CASE(Computer Aided Software Environment)2、软件危机旳概念P1-2:指在软件开发和维护过程中所碰到旳一系列严重问题。
(怎样开发软件,以满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件)3、产生软件危机旳原因P3:首先与软件自身有旳特点有关,另首先也和软件开发与维护旳措施不对旳有关。
4、消除软件危机旳途径P5:既要有技术措施(措施和工具),又要有必要旳组织管理措施5、软件工程支撑环境P5:假如把各个阶段使用旳软件工具有机地集合成一种集体,支持软件开发旳全过程。
6、软件工程旳定义P5:是指导计算机软件开发和维护旳一门工程学科。
详细旳定义:①把系统旳、规范旳、可度量旳途径应用于软件开发、运行和维护过程,也就是把工程应用与软件;②研究①中提到旳途径。
7、软件工程措施学P9-10:包括三个要素:措施、工具和过程。
最广泛旳措施学包括老式措施学和面向对象措施学。
老式措施学:也称为生命周期措施学或构造化范型。
重要是把软件生命周期旳全过程一次划分为若干个阶段,然后次序地完毕每个阶段旳任务。
面向对象措施学:4个要点(对象、类、继承、封装性)8、软件生命周期3个时期P13:软件定义、软件开发、软件维护软件定义阶段:确定开发过程旳总任务;工程旳可行性;实现工程目旳应采用旳方略;系统必须完毕旳功能;估计资源和成本。
软件开发阶段:总体设计,详细设计(前两个阶段又称系统设计),编码和单元测试,综合测试(后两个阶段又称系统实现)。
9、三个模型旳优缺陷:瀑布模型(带反馈环)P15长处:①可强迫开发人员采用规范旳措施;②严格规定了每个阶段必须提交旳文档;③规定每个阶段交出旳所有产品都必须通过质量保证小组旳仔细验证。
缺陷:由于是一种文档驱动旳模型,最终开发出旳软件产品也许并不是顾客真正需要旳。
迅速原型模型(不带反馈环)P17可以通过迅速构建起一种在计算机上运行旳原型系统,让顾客试用原型并搜集顾客反馈意见旳措施,获取顾客旳真实需求。
软件工程导论(第13章)

为了克服代码行技术的缺点,人们又提出 了功能点技术。
4
13.1.2 功能点技术 功能点技术依据对软件信息域特性和软件复杂性的评估结果, 估算软件规模。这种方法用功能点(FP)为单位度量软件规模。 1. 信息域特性 功能点技术定义了信息域的5个特性: (1) 输入项数(Inp) : 用户向软件输入的项数,这些输入给软件提 供面向应用的数据。输入不同于查询,后者单独计数,不计入输入 项数中。 (2) 输出项数(Out) : 软件向用户输出的项数,它们向用户提供 面向应用的信息,例如,报表和出错信息等。报表内的数据项不单 独计数。 (3) 查询数(Inq) : 查询即是一次联机输入,它导致软件以联机 输出方式产生某种即时响应。 (4) 主文件数(Maf) : 逻辑主文件(即数据的一个逻辑组合,它 可能是大型数据库的一部分或是一个独立的文件)的数目。 (5) 外部接口数(Inf) : 机器可读的全部接口(例如,磁盘或磁带 上的数据文件)的数量,用这些接口把信息传送给另一个系统。 5
10
2. 面向FP的估算模型
(1) Albrecht & Gaffney模型 E=-13.39+0.0545FP (2) Maston,Barnett和Mellichamp模型 E=585.7+15.12FP 从上面列出的模型可以看出,对于相同的KLOC或FP值,用不 同模型估算将得出不同的结果。主要原因是,这些模型多数都是仅 根据若干应用领域中有限个项目的经验数据推导出来的,适用范围 有限。因此,必须根据当前项目的特点选择适用的估算模型,并且 根据需要适当地调整(例如,修改模型常数)估算模型。
一项延期全部延期?通过缩短关键路径上的各项活动的时间缩短整个项目的开发时间?对于不在关键路径上的各项活动可根据需要或调整其起止日期或延缓进度1341民主制程序员组特点成员之间关系平等根据每个人的能力和经验适当分配通过全体人员协商决定项目工作优点同等项目参与权可以激发大家的创造力利于攻克难关适用于小规模能力强有共同工作经历的团队缺点缺少权威人士在意见分歧的情况下很难解决134人员组织1342主程序员组主程序员程序员程序员程序员秘书后备程序员1343现代程序员组现代程序员组优缺点优点将主程序员的职责专一化缺点技术组长与行政组长的职责划分不清不能适应大规模的项目现代程序员组组织结构2能否达到集思广益的效果
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 面向FP的估算模型
(1) Albrecht & Gaffney模型 E=-13.39+0.0545FP (2) Maston,Barnett和Mellichamp模型 E=585.7+15.12FP 从上面列出的模型可以看出,对于相同的KLOC或FP值,用不 同模型估算将得出不同的结果。主要原因是,这些模型多数都是仅 根据若干应用领域中有限个项目的经验数据推导出来的,适用范围 有限。因此,必须根据当前项目的特点选择适用的估算模型,并且 根据需要适当地调整(例如,修改模型常数)估算模型。
FP=UFP×TCF
功能点数与所用的编程语言无关,看起来功
能点技术比代码行技术更合理一些。但是,在判
断信息域特性复杂级别和技术因素的影响程度时 ,存在着相当大的主观因素。
8
13.2 工作量估算 软件估算模型使用由经验导出的公式来预测软件 开发工作量,工作量是软件规模(KLOC或FP)的函数 ,工作量的单位通常是人月(pm)。 支持大多数估算模型的经验数据,都是从有限个
项目的样本集中总结出来的,因此,没有一个估算模
型可以适用于所有类型的软件和开发环境。
9
13.2.1 静态单变量模型
这类模型的总体结构形式如下: E=A+B×(ev)C 其中,A、B和C是由经验数据导出的常数,E是以人月为单位的 工作量,ev是估算变量(KLOC或FP)。下面给出几个典型的静
态单变量模型。
贯穿于软件的整个生命周期之中。
软件项目管理 ---- 从一组项目计划活动开始,其基础
是工作量估算和完成期限估算。
2
13.1
估算软件规模
13.1.1 代码行技术 • 代码行技术是比较简单的定量估算软件规模的方法。 • 为了使得对程序规模的估计值更接近实际值,可以由多 名有经验的软件工程师分别做出估计。每个人都估计程序 的最小规模(a)、最大规模(b)和最可能的规模(m),分别算 出这3种规模的平均值,再用下式计算程序规模的估计值 L=
11
13.2.2 动态多变量模型
动态多变量模型也称为软件方程 式,它是根据从4000多个当代软件项 目中收集的生产率数据推导出来的。 该模型把工作量看作是软件规模和开 发时间这两个变量的函数。动态多变 量估算模型的形式如下: E=(LOC×B0.333/P)3×(1/t)4 (13.2) 其中, E是以人月或人年为单位的工作量; t是以月或年为单位的项目持续时间; B是特殊技术因子,它随着对测试、质 量保证、文档及管理技术的需求的增 加而缓慢增加,对于较小的程序( KLOC=5~15),B=0.16,对于超过70 KLOC的程序,B=0.39;
13.3.1 估算开发时间
Brooks规律:向一个已经延期的项目增加人力,只会使得它更加 延期。 随着开发小组规模的扩大,个人生产率将下降,以至开发时间 与从事开发工作的人数并不成反比关系。出现这种现象主要有 下述两个原因: 1. 当小组变得更大时,每个人需要用更多的时间与组内其他 成员讨论问题、协调工作,因此增加了通信开销。 2. 如果在开发过程中增加小组人员,则最初一段时间内项目 组总生产率不仅不会提高反而会下降。这是因为新成员在 开始时不仅不是生产力,而且在他们学习期间还需要花费 小组其他成员的时间。
16
项目组规模与项目组总生产率的关系 当几个人共同承担软件开发项目中的某一任务时,人与人之间 必须通过交流来解决各自承担任务之间的接口问题,即所谓通 信问题。通信需花费时间和代价,会引起软件错误增加,降低 软件生产率。 • 若两个人之间需要通信,则称在这两个人之间存在一条通信路 径。如果一个软件开发小组有 n 个人,每两人之间都需要通信, 则总的通信路径有 n(n-1)/2 (条)。
级别决定,如表13.1(见书307页)所示。
6
(2) 计算技术复杂性因子TCF
这一步骤度量14种技术因素对软件规模的影响程度。这些因
素包括高处理率、性能标准(例如,响应时间)、联机更新等, 在表13.2(见书307页)中列出了全部技术因素,并用Fi(1≤i≤14)
代表这些因素。根据软件的特点,为每个因素分配一个从0(不存
13.3
•
进度计划
项目管理者的目标是定义全部项目任务,识别出关键任务,
跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。 为达到上述目标,管理者必须制定一个足够详细的进度表,以 便监督项目进度并控制整个项目。 • 软件项目的进度安排是通过把工作量分配给特定的软件工程 任务并规定完成各项任务的起止日期,从而将估算出的项目工 作量分布于计划好的项目持续期内。 • 进度计划将随着时间的流逝而不断演化。在项目计划的早期, 首先制定一个宏观的进度安排表,标识出主要的软件工程活动 和这些活动影响到的产品功能。随着项目的进展,把宏观进度 表中的每个条目都精化成一个详细进度表,从而标识出完成一 个活动所必须实现的一组特定任务,并安排好了实现这些任务 的进度。 15
a 4m b 6
3
单位是代码行数(LOC),或是千行代码数(KLOC)
代码行技术的主要优点:代码是所有软件 开发项目都有的“产品”,而且很容易计 算代码行数。 代码行技术的缺点: 源程序仅是软件配 臵的一个成分,用它的规模代表整个软件 的规模似乎不太合理;用不同语言实现同 一个软件所需要的代码行数并不相同;这 种方法不适用于非过程语言。
第13章
软件项目管理
大型软件工程项目的失败 ---- 才使人们逐渐认识到软
件项目管理的重要性和特殊性。
失败的原因 ---- 不是软发工程师无能,而主要是管理
不善。
所谓管理 ---- 就是通过计划、组织和控制等一系列活
动,合理地配臵和使用各种资源,以达到既定目标的
过程。
软件项目管理 ---- 先于任何技术活动之前开始,并且
13
下面以后体系结构模型为例,介绍COCOMO2模型。该模型把软件开 发工作量表示成代码行数(KLOC)的非线性函数: E= a KLOC b f i
i 1 17
(13.3)
其中: E 是开发工作量(以人月为单位), A 是模型系数, KLOC 是估计的源代码行数(以千行为单位), B 是模型指数, fi(i=1~17) 是成本因素。 每个成本因素都根据它的重要程度和对工作量影响大小被赋予 一定数值(称为工作量系数)。这些成本因素对任何一个项目的开 发工作量都有影响,即使不使用COCOMO2模型估算工作量,也应该 重视这些因素。Boehm把成本因素划分成产品因素、平台因素、人 员因素和项目因素等4类。 表13.3(见书310页)列出了COCOMO2模型使用的成本因素及与 14 之相联系的工作量系数。
P是生产率参数,它反映了下述因素对 工作量的影响: 总体过程成熟度及管理水平; 使用良好的软件工程实践的程度; 使用的程序设计语言的级别; 软件环境的状态; 软件项目组的技术及经验; 应用系统的复杂程度。 开发实时嵌入式软件时,P的典型值为 2000;开发电信系统和系统软件时, P=10000;对于商业应用系统来说, P=28000。可以从历史数据导出适用于 当前项目的生产率参数值。 从(13.2)式可以看出,开发同一 个软件(即LOC固定)的时候,如果把 项目持续时间延长一些,则可降低完成 项目所需的工作量。
发工作量估算模型,这3个层次的 模型在估算工作量时,对软件细节 考虑的详尽程度逐级增加。这些模 型既可以用于不同类型的项目,也 可以用于同一个项目的不同开发阶 段。这3个层次的估算模型分别是 (1) 应用系统组成模型。这个模 型主要用于估算构建原型的工作量 ,模型名字暗示在构建原型时大量 使用已有的构件。 (2) 早期设计模型。这个模型适 用于体系结构设计阶段。 (3) 后体系结构模型。这个模型 适用于完成体系结构设计之后的软 件开发阶段。
2. 估算功能点的步骤
(1) 计算未调整的功能点数UFP
首先,把产品信息域的每个级或复杂级,并根据其等级为每个 特性分配一个功能点数(例如,一个简单级的输入项分配3个 功能点,一个平均级的输入项分配4个功能点,而一个复杂级 的输入项分配6个功能点)。 然后,用下式计算未调整的功能点数UFP: UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf 其中,ai(1≤i≤5)是信息域特性系数,其值由相应特性的复杂
在或对软件规模无影响)到5(有很大影响)的值。然后,用下式 计算技术因素对软件规模的综合影响程度DI: DI=
F
i 1
14
i
技术复杂性因子TCF由下式计算: TCF=0.65+0.01×DI
因为DI的值在0~70之间,所以TCF的值在0.65~1.35之间。
7
(3) 计算功能点数FP 用下式计算功能点数FP:
为了克服代码行技术的缺点,人们又提出 了功能点技术。
4
13.1.2 功能点技术 功能点技术依据对软件信息域特性和软件复杂性的评估结果, 估算软件规模。这种方法用功能点(FP)为单位度量软件规模。 1. 信息域特性 功能点技术定义了信息域的5个特性: (1) 输入项数(Inp) : 用户向软件输入的项数,这些输入给软件提 供面向应用的数据。输入不同于查询,后者单独计数,不计入输入 项数中。 (2) 输出项数(Out) : 软件向用户输出的项数,它们向用户提供 面向应用的信息,例如,报表和出错信息等。报表内的数据项不单 独计数。 (3) 查询数(Inq) : 查询即是一次联机输入,它导致软件以联机 输出方式产生某种即时响应。 (4) 主文件数(Maf) : 逻辑主文件(即数据的一个逻辑组合,它 可能是大型数据库的一部分或是一个独立的文件)的数目。 (5) 外部接口数(Inf) : 机器可读的全部接口(例如,磁盘或磁带 上的数据文件)的数量,用这些接口把信息传送给另一个系统。 5
18
任务的确定与并行性
• 当参加同一软件工程项目的人数不止一人的时候,开发 工作就会出现并行情形。 • 软件开发进程中设臵许多里程碑。里程碑为管理人员提 供了指示项目进度的可靠依据。 • 软件工程项目的并行性提出了一系列的进度要求。 • 因为并行任务是同时发生的,所以进度计划表必须决定 任务之间的从属关系,确定各个任务的先后次序和衔接, 确定各个任务完成的持续时间。 • 项目负责人应注意构成关键路径的任务,即若要保证整 个项目能按进度要求完成,就必须保证这些任务要按进 度要求完成。