软件工程导论第五版张海藩第13章
软件工程导论课件(全)张海藩
类别
参加人数
研制期限
产品规模(源代码行数)
微型 小型 中型 大型 甚大型 极大型
1 1 2-5 5-20 100-1000 2000-5000
1-4周 1-6周 1-2年 2-3年 4-5年 5-10年
约500行 约2000行 5000-50000行 5万-10万行 100万行 1000万行
2016/9/9
2016/9/9
原型模型(Prototype Model)
原型:是指模拟某种产品的原始模型
快速分析 和设计 加工 原型 原型 客户 评价原型 建造 原型
1、原型系统仅包括未来系统的 主要功能,以及系统的重要 接口。 2、为了尽快向用户提供原型, 开发原型系统时应尽量使用 能缩短开发周期的语言和工 具。
技术可行性分析方法--- 数学模型和优化技术、 概率和统计、排队论、控制论等方法。
2016/9/9
1、系统概述 2、可行性分析
可行性 论证报告
3、拟订具 (系流程图与系统结构图)
1、系统流程图: 是用来描述系统物理模型的一种传统工具。
C
ACD 的层次结构
2016/9/9
作 业
请画出学生成绩管理系统的 ACD 图
2016/9/9
第3 章 软件需求分析
软件需求分析是软件开发早期的一个重要阶段。它 在问题定义和可行性研究阶段之后进行。需求分析的基 本任务是软件人员和用户一起完全弄清用户对系统的确 切要求。这是关系到软件开发成败的关键步骤,也是整 个系统开发的基础。 软件需求分析阶段要求用 需求规格说明书(SRS) 来表达用户对系统的要求。规格说明书可用文字方式表 示,也可用图形表示。 本章将介绍需求分析的任务、步骤、需求分析方法 (面向数据流图分析方法、面向对象的分析方法)。
软件工程导论课件全张海藩
1.3 软件生存周期 (SW life cycle)
把软件从产生、发展到成熟、直至衰亡为止
11/8/2019
萍
哈 尔 滨 工 业 大 学
韩 静
软件生存周期模型(瀑布模型 Waterfall Model)
计划 时期
开发 时期
问题定义
特点:
上一阶段的变换结果
可性行研究
是下一阶段的变换的
输入,相邻两个阶段
文档符号
人工操作
多文档符号
11/8/2019
萍
哈 尔 滨 工 业 大 学
韩 静
流程符号
含义
显示器或终端机
流程符号
含义
控制流符号
磁盘机或数据库
流程开始与结束
11/8/2019
萍
哈 尔 滨 工 业 大 学
韩 静
举例
库存清单系统流程图
事务 库存清单程序
定货信息
零件库
报告生成程序 定货报告 结束
11/8/2019
11/8/2019
萍
哈 尔 滨 工 业 大 学
韩 静
举例:关于开发CAD系统的软件开发成本及效益分析
成本-效益(万元)
60
盈亏平衡点
40 该系统成本 20
该系统节省经费
0 12 3 4 5 年
投资回收期
---------成本及效益分析图
11/8/2019
萍
哈 尔 滨 工 业 大 学
韩 静
2、技术可行性: 对系统的性能、可靠性、可维护性以及生产率
11/8/2019
萍
哈 尔 滨 工 业 大 学
韩 静
各章学时安排
章 学时 章 学时 章 学时 章 学时
《软件工程导论》张海潘_第五版_清华_课后答案PPT课件
护士 护士
社会、政策允许的可行性
2-2 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系
统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息
an.c 利息
2.3
打印利息
值
d清a单 ai
w. 某航空公司拟开发一个机票预定系统。旅行社把预订机票的旅客信息(姓名、性别…等)输入进该系统,系统 ww 为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印 网 出机票给旅客。
源
旅客
取票通知 账单/票款
网 检验信 源息
检验信 息过程
重试信息
资
SC 图
件 用户执行模块 课
案
答 读用户命令
命令处理
题
习
案系统设置
现用/非现用
密码处理
答 控制器
系统
控制器
爱
读系统 数据
建立配 置文件
读 密码
用文件 比较密码
密码输出 控制器
机票预订系统(参见习题 2 第 3 题)
显示信息 与状态
产生 无效信息
6
更新日志
日志
日志
7 产生病情 要求
报告
课件 事样务
数据 数据
案
D1 患者日志
答
6.数据定义 1、顺序 + 2、选择〔 | 〕3、重复
题 – 定货系统 P39 习 – 习题 2 第 5 题 P44 案 2-1 应该从哪些方面研究目标系统的可行性?
西华师范大学 软件工程导论 第五版 张海藩 期末复习资料
软件生命周期软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤软件生命周期:同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。
软件生命周期组成:①软件定义②软件开发③运行维护软件生命周期阶段:1.问题定义本阶段需要明确回答:“要解决的问题是什么?”。
统分析员应该提出问题的性质、目标和规模的书面报告。
通过对实际用户和使用部门的调查、研究,以及讨论、交流,得出一份双方都满意的文档2.可行性研究本阶段需要回答的是:“上一阶段确定的问题有无可行的解决方案,是否值得解决?”。
更进一步明确项目的规模和目标,从技术可行性、经济可行性、操作可行性、法律可行性、社会可行性等方面进行研究,确定是否开发本项目。
3.需求分析本阶段确定为解决该问题,目标系统必须应具备哪些功能。
系统分析员在本阶段必须与用户密切配合,充分交流,得到经用户确认的系统逻辑模型,用数据流图、数据字典等描述系统的逻辑模型。
需求分析阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,必须准确、完整的体现用户的需求。
4.总体设计本阶段确定目标系统的主要功能如何完成。
采用流程图或其他工具描述出每种可能的系统,推荐出一个最佳的方案,并制定出实现该系统的详细计划。
本阶段的另一个主要任务是设计软件的结构,确定软件应由哪些模块构成,以及模块之间的关系。
还应考虑系统的开发和应用环境,如计算机系统的配置,计算机网络等。
5.详细设计详细设计阶段的任务就是把问题的求解具体化,设计出程序的详细规格说明。
通常用HIPO图(层次图/输入/处理/输出)或PDL语言(过程设计语言)描述详细设计的结果。
6.编码和单元测试本阶段的任务是编写软件程序。
程序员应根据目标系统的要求,选取适合的程序设计语言,把详细设计的结果编制成程序,并对每一个模块进行单元测试。
软件工程导论答案-张海潘(第五版)
第一章1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-2 什么是软件工程?是指导计算机软件开发和维护的一门工程学科。
1-3 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):1.传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2.面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-4 软件生命周期划分成哪些阶段●软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。
1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析2.开发时期:总体设计、详细设计、编码和单元测试、综合测试。
3.维护时期:主要任务是使软件持久地满足用户的需要。
1-5 什么是软件过程?它与软件工程方法学有何关系?●软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤●软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-6 传统“瀑布模型”的主要缺陷是什么?试说明改进的方法。
传统的瀑布模型过于理想化了。
增加“反馈环”第二章●可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
●可行性研究的任务:1.进一步分析和澄清问题;2.导出系统的逻辑模型;3.从逻辑模型出发,提出若干种系统实现方案4.研究每种实现方案的可行性:●技术上的可行性——使用现有的技术能实现这个系统吗?●经济上的可行性——这个系统的经济效益能超过它的开发成本吗?(投资与效益)●操作可行性——系统的操作方式在这个用户组织内行得通吗?●社会、政策允许的可行性5.为每个可行的解决方案制定一个粗略的实现进度6.对以后的行动方针提出建议方法:1.系统流程图2.数据流图:(DFD)符号3.数据字典:数据流图与数据字典共同构成系统的逻辑模型。
软件工程导论-张海藩-第五版课后习题答案
多态
多态是指同一个操作作用于不 同的对象,可以产生不同的结 果。
UML建模语言简介
UML是一种用于对软件密集系统进行可视化建模 的统一建模语言。
UML通过统一的符号和工具,为软件开发人员提 供了一种通用的建模语言。
UML可以描述软件系统的静态结构和动态行为, 包括类图、时序图、用例图等。
面向对象分析、设计和实现过程
列表。
与用户确认需求列表,确保对用户需求有准确的理解。
03
需求规格说明书编写
01
编写详细的需求规格说明书,包括功能需求、性能需求、接 口需求等。
02
使用清晰、准确的语言描述需求,避免歧义和模糊性。
03
提供必要的图表、示例和数据,以便更好地理解和实现需求 。
需求变更管理
建立需求变更管理流 程,确保所有变更都 经过评估和批准。
及时通知相关干系人, 协商并处理变更请求, 确保项目顺利进行。
对变更进行影响分析, 评估变更对项目进度、 成本和质量的影响。
03 系统设计
总体设计原则与方法
模块化
将系统划分为若干个相对独立的模块, 每个模块具有特定的功能,模块之间 通过接口进行通信。
高内聚、低耦合
模块内部的功能应该高度相关,而模 块之间的依赖关系应该尽量减少。
要点二
软件评估技术
软件评估技术包括代码审查、走查、桌面检查等。代码审 查是一种正式的评估技术,由一组开发人员对源代码进行 详细检查以发现错误;走查是一种轻量级的评估技术,由 开发人员自行检查代码并记录下潜在的问题;桌面检查则 是一种非正式的评估技术,由评估人员通过查看文档和演 示来评价软件产品的质量。
THANKS FOR WATCHING
感谢您的观看
软件工程导论_张海藩_第五版课后习题答案
F3日前、时间
定时的生理信号 F6日志
P5 更新日志
D1患者日志 F6日志 P6 产生病情报告
10
E1 护士
13:07:42
F1要求报告
重庆工学院计算机科学与工程学院 李梁(liliang@)
P2 分析信号 E2 病人 F2生理信号 F2生理信号 F5安全范围
危及病人信息 D2患者安全范围
17
E1 储户
F1存款单 F7密码
P1 记录存款信息 F5存款信息 D1存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F7密码 F2取款单
F5存款信息 P3 核算密码
F4利息 F4利息 F6取款信息 P6 设置利率 P4 计算利息 F8储蓄利率
P5 打印利息清单 F8储蓄利率
5
作业及解答(第1-2章)
122629 6000 735,776,790(美元) 1-6 什么是软件过程?它与软件工程方法学有何关系? 软件过程是为了开发出高质量的软件产品所需完成的一系 列任务的框架,它规定了完成各项任务的工作步骤。 软件过程定义了运用技术方法的顺序、应该交付的文档资 料、为保证软件质量和协调软件变化必须采取的管理措施 ,以及标志完成了相应开发活动的里程碑。 软件过程是软件工程方法学的3个重要组成部分之一。
13:07:42
P6 产生病情报告 重庆工学院计算机科学与工程学院 李梁(liliang@)
12
作业及解答(第3章)
2-5 北京某高校可用的电话号码有以下几类:校内电话号 码由4位数字组成,第1位数字不是0;校外电话又分为本 市电话和外地电话两类,拨校外电话需先拨0,若是本市 电话则再接着拨8位数字(第1位不是0),若是外地电话则 拨3位区码再拨8位电话号码(第1位不是0)。 请用定义数据字典的方法,定义上述的电话号码。
软件工程导论第五版张海藩第13章
对于相同的KLOC或FP值,用不同模型估算将得出 不同的结果。
主要原因是,这些模型多数都是仅根据若干应用领 域中有限个项目的经验数据推导出来的,适用范围 有限。
因此,必须根据当前项目的特点选择适用的估算模 型,并且根据需要适当地调整(例如,修改模型常 数)估算模型。
13.2.2 动态多变量模型
动态多变量模型是根据从4000多个当代软件项目中 收集的生产率数据推导出来的。
P是生产率参数 (2000-30000)
P生产率参数,反映了下述因素对工作量的影响: 总体过程成熟度及管理水平; 使用良好的软件工程实践的程度; 使用的程序设计语言的级别; 软件环境; 软件项目组的技术及经验; 应用系统的复杂程度。 开发实时嵌入式软件时:P~=2000;电信系统和系统 软件时:P=10000;商业应用系统:P=28000。 如果把项目持续时间延长一些,则可降低完成项目 所需的工作量。
E是开发工作量(以人月为单位), T是开发时间(以月为单位)。
为了缩短开发时间应该增加开发工作的人数。 随着开发小组规模扩大,个人生产率将下降, 开发时间与开发工作的人数非简单反比关系的两个 原因: 当小组变大时,通信开销增加了。 新成员要额外花费小组其他成员的时间。
被称为Brooks规律的下述现象: 向一个已经延期 的项目增加人力,可能(只)会使得它更加延期。
项目组规模与项目组总生产率的关系。 P名项目组员之间的通信路径数: MIN= P-1, MAX= P(P-1)/2 通信路径数大约为Pα,其中1<α<2。
一个组员不与任何人通信时个人生产率为L,
每条通信路径导致生产率减少l,
组员个人平均生产率为: Lr=L-l(P-1)r
(13.5)
其中,r是对通信路径数的度量,0<r≤1
软件工程导论(第五版)_(张海藩_著)_清华大学出版社_课后习题答案
来; (3) 它强调使用生存周期方法学和结构分析和结构技术; (4) 经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术
的单位面积及房租等信息。房产科可以要求系统打印住房情况的统计表,或更改某 类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和 加工说明。
参考第四章 4.5 应用举例教案之二分析。
第四章 总体设计 习题答案
1. 系统设计包括哪两个阶段? 系统设计包括总体设计与详细设计两个阶段。
(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 (3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认 识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完 善系统。多数研究性质的试验软件,一般采用此方法。 变换型开发方法及特点: (1)从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的 程序系统。 (2)该方法必须有严格的数学理论和形式化技术的支持。
算出的房租写到房租文件中。 (2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号
的信息写到空房文件中。 (3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件
中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。 (4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号
图:
4.什么是结构化分析?它的结构化体现在哪里? 结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,
软件工程导论(第五版)课后习题答案
《软件工程导论》课后习题答案第一章软件工程概论1-11.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.软件危机有那些典型表现?(1) 对软件开发成本和进度的估计常常很不准确。
(2) 用户对“已完成的”软件系统不满意的现象经常发生。
(3) 软件产品的质量往往靠不住。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
4.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
《软件工程导论》张海潘第五版 清华 课后答案
时间内聚 3 分
逻辑内聚 1 分 偶然内聚 0 分
z 面向数据流的设计方法 P95
– 变换流 z 数字仪表板系统 P96
旋转信号
读入
确定
旋转 信号
信号数/秒
加速/ 减速
(SPS)
收集 并求 平均
△SPS △SPS
箭头指示
产生 加速/减 速显示
下箭头
idaa 燃料流量 a 传感器信号
ww. 读入 网w 并核实
统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息
并印出利息清单给储户。请画出此系统的数据流图。
第2页
第3页
爱答案习题答案课件资源网
1.1
记录存款 信息
存款信息
1.2
打印存单
z 经济上的可行性 ——这个系统的经济效益能超过它的开发成本吗? (投资与效益)
z 操作可行性 ——系统的操作方式在这个用户组织内行得通吗?
z 社会、政策允许的可行性
5.为每个可行的解决方案制定一个粗略的实现进度
6.对以后的行动方针提出建议
方法:1.系统流程图
2.数据流图:(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
出机票给旅客。
网
旅客
取票通知 账单/票款
源 2.1
2.2
资 交款
机票
打印机 票
课件 信息
订票信
答案息
交款信 息
题 习 案
D1 订票信息
旅客信 息
航班信 息
机票 取票通知
旅客
答
账单
爱 旅行社
旅客 1.11 旅客 信息 录处息入信理 信息
软件工程导论张海潘(第六版)第1-13章总结
15
第二章 可行性研究
1、可行性研究的目的:
就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
必须记住,可行性研究的目的不是解决问题,而是确定问题是否 值得去解决。
从下述3个方面研究每种解法的可行性:
1)技术可行性 2)经济可行性 3)操作可行性 其他方面:运行可行性、法律可行性
第四步:对系统主要功能进一步细化
细化的数据流图
26
7、数据字典:
数据的信息的集合,也就是对数据流图中包含的所有元素的
定义的集合。
可行性研究阶段,数据流图与数据字典共同构成系统的逻辑 模型。没有数据字典,数据流图就不严格,然而没有数据流 图,数据字典也难于发挥作用。
数据字典应该由对下列4类元素的定义组成:数据流、数据流 分量(数据元素)、数据存储和处理。
就是把程序划分成独立命名且可独立访问的模块,每个模块完 成一个子功能,把这些模块集成起来够成一个整体,可以完成指 定的功能满足用户的需求。
每个程序都相应地有一个最适当的模块数目M,使得系统的开 发成本最小。
5、模块化的作用
模块化可以使软件结构清晰,不仅容易设计也容易阅读和理解; 模块化使软件容易测试和调试,因而有助于提高软件的可靠性; 模块化能够提高软件的可修改性; 模块化也有助于软件开发工程的组织管理。
5
软件生命周期
1. 问 题定义
2. 可 行性研
究
3. 需 求分析
4. 总 体设计
5. 详 细设计
6. 编 码和单 元测试
7. 综 合测试
8. 软 件维护
6
各阶段具体任务:
1.问题定义:必须回答的关键问题是:“要解决的问题是什么?”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 面向KLOC的估算模型 (1) Walston_Felix模型 E=5.2×(KLOC)0.91 (2) Bailey_Basili模型 E=5.5+0.73×(KLOC)1.16 (3) Boehm简单模型 E=3.2×(KLOC)1.05 (4) Doty模型(在KLOC>9时适用) E=5.288×(KLOC)1.047
13.3.1 估算开发时间
工期 >=工作量/人力 正常情况下, 估算开发时间的模型方程: (1) Walston_Felix模型: T=2.5E0.35 (2) 原始的COCOMO模型: T=2.5E0.38 (3) COCOMO2模型: T=3.0E0.33+0.2×(b-1.01) (4) Putnam模型: T=2.4E1/3 E是开发工作量(以人月为单位), T是开发时间(以月为单位)。
COCOMO2采用了更加精细得多的b分级模型,这 个模型使用5个分级因素Wi(1≤i≤5): 划分成从甚低 (Wi=5)到特高 5 (Wi=0)的6个级别 b= 1.01 1.01 Wi (13.4)
b的取值范围为1.01~1.26。 5个分级因素如下所述: (1) 项目先例性: 该项目的新奇程度。 (2) 开发灵活性: 约束多少。 (3) 风险排除度: 重大风险已被消除的比例。 (4) 项目组凝聚力: 开发人员相互协作度。 (5) 过程成熟度: 按照能力成熟度模型(见13.7节)
13.1.2 功能点技术
依据软件信息域特性和软件复杂性,用功能点 (FP)为单位度量软件规模。 1. 信息域特性 功能点技术定义了信息域的5个特性: 输入项数 (Inp)、输出项数(Out)、查询数(Inq)、主文件数 (Maf)和外部接口数(Inf)。 (1) 输入项数: 用户向软件输入的项数,这些 输入给软件提供面向应用的数据。
对于相同的KLOC或FP值,用不同模型估算将得出 不同的结果。 主要原因是,这些模型多数都是仅根据若干应用领 域中有限个项目的经验数据推导出来的,适用范围 有限。 因此,必须根据当前项目的特点选择适用的估算模 型,并且根据需要适当地调整(例如,修改模型常 数)估算模型。
13.2.2 动态多变量模型
由多名有经验的软件工程师分别做出估计。 每个人都估计程序的最小规模(a)、最大规模(b)和 最可能的规模(m),分别算出这3种规模的平均值, 再用下式计算程序规模的估计值: L= a 4m b (13.1)
6
单位是代码行数(LOC) 或千行代码数(KLOC)
代码行技术的优点: 代码是所有软件开发项目都有 的“产品”,且容易计算行数。 代码行技术的缺点是: 源程序仅是软件配置的一 个成分。 为了克服代码行技术的缺点,人们提出了功能点技 术。
项目网络图
什么是项目网络图?
项目网络图是项目的所有活动以及它们之间逻辑关系或排 序的图形显示。
项目网络图是活动排序的输出,它有以下作用:
(1)能表示项目活动,并表示活动之间的依赖关系。 (2)表明项目活动将以什么顺序继续。 (3)在进行工期估计时,表明项目将需要多长时间。 (4)当改变某项活动工期时,表明项目工期将如何变化。
13.2 工作量估算
软件估算模型由经验导出的公式来预测软件开发工 作量,工作量是软件规模(KLOC或FP)的函数, 工作量的单位通常是人月(pm)。 估算模型的经验数据,是从有限个项目的样本集中 总结出来的,因此,没有一个估算模型可以适用于 所有类型的软件和开发环境。
13.2.1 静态单变量模型
甘特图
甘特图与网络图的比较
甘特图
在进度报告中很有效 在作管理陈述时易于读懂和使用。 作为计划编制工具不是太强。 没有表示活动间的逻辑关系。 网络图
表明活动和事件间的相互关系。 识别关键路径,项目历程和活动排序。 表明工作流程。 帮助编制计划和组织工作。
关键路径法
查找关键路径实例: • 使用箭线图来确定关键路径。 • 使用前导图来确定关键路径。
下图是用PROJECT制作的甲项目的最简单的一个甘特图
早期的甘特图的最大缺点是通常不反映依赖关系, 但是如果在Project上建立了依赖关系,这种依赖关系会自动 显示在甘特图上。
甘特图
使用项目管理软件可以创建更为复杂的甘特图
甘特图
跟踪甘特图可以用来评价项目的进展
注意: 任务用两种水平横线表示。下部表示计划历史(基准计划历史); 上部表示实际历史。 由于跟踪甘特图是建立在实际开始与完成日期的基础之上,将计划 与实际的项目进度信息进行比较,所以,项目经理可以用它来监控 单个任务和整体项目的进展情况。
规模为P的项目组的总生产率为 Ltot=P(L-l(P-1)r) (13.6)
对于给定的L,l和r的值,总生产率Ltot是P的函数。 存在一个最佳的项目组规模Popt,其总生产率最高。 Boehm根据经验指出,软件项目的开发时间最多可 以减少到正常开发时间的75%。
制定进度计划
任务(活动)之间的依赖关系类型
项目组规模与项目组总生产率的关系。 P名项目组员之间的通信路径数: MIN= P-1, MAX= P(P-1)/2 通信路径数大约为Pα,其中1<α<2。 一个组员不与任何人通信时个人生产率为L, 每条通信路径导致生产率减少l, 组员个人平均生产率为: Lr=L-l(P-1)r (13.5) 其中,r是对通信路径数的度量,0<r≤1
(2) 输出项数: 软件向用户输出的项数,它们 向用户提供面向应用的信息,例如,报表和出错信 息等。报表内的数据项不单独计数。 (3) 查询数: 查询即是一次联机输入,它导致 软件产生某种即时响应(输出)。 (4) 主文件数: 逻辑主文件(即数据的一个逻 辑组合,它可能是大型数据库的一部分或是一个独 立的文件)的数目。 (5) 外部接口数: 机器可读的全部接口(例如, 磁盘或磁带上的数据文件)的数量,用这些接口把 信息传送给另一个系统。
i 1
13.3 进度计划
目的: 保证项目按时完成 影响工期的因素: 工作量, 资源(人力,设备), 项目特点 方法: 把项目分解成许多小任务以利于估计, 执行, 监控 难点: 根据项目, 合理分配任务, 优化使用资源, 留有余地 工具: 经验模型, GANTT图, 工程网络
项目管理者必须定义全部项目任务,识别出关键任务, 跟踪关键任务的进展状况。 制定一个详细的进度表,监督项目进度并控制整个项目。
为了缩短开发时间应该增加开发工作的人数。 随着开发小组规模扩大,个人生产率将下降, 开发时间与开发工作的人数非简单反比关系的两个 原因: 当小组变大时,通信开销增加了。 新成员要额外花费小组其他成员的时间。
被称为Brooks规律的下述现象: 向一个已经延期 的项目增加人力,可能(只)会使得它更加延期。
2. 估算功能点的步骤 用下述3个步骤,可估算出一个软件的功能点数 (即软件规模)。 FP=UFP×TCF
(1) 计算未调整的功能点数UFP 每个特性(即Inp、Out、Inq、Maf和Inf)都分类为 简单级、平均级或复杂级 UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf 其中,ai(1≤i≤5)是特性系数,其值由相应特性的复 杂级别决定,如表13.1
这类模型的总体结构形式如下: E=A+B×(ev)C 其中,A、B和C是由经验数据导出的常数,E是以 人月为单位的工作量,ev是估算变量(KLOC或 FP)。下面给出几个典型的静态单变量模型。 1.面向FP的估算模型 (1) Albrecht & Gaffney模型 E=-13.39+0.0545FP (2) Maston,Barnett和Mellichamp模型 E=585.7+15.12FP
单击此处编辑母版标题样式
• 单击此处编辑母版副标题样式
(2) 计算技术复杂性因子TCF 14种技术因素Fi(1≤i≤14)对软件规模的影响程度。 每个因素分配一个从0(无影响)到5(有很大影响) DI= F 值在0~70之间 技术复杂性因子TCF由下式计算:
14 i 1 i
TCF=0.65+0.01×DI (3) 计算功能点数FP FP=UFP×TCF 功能点数与所用的编程语言无关。在判断信息域特 性复杂级别和技术因素的影响程度时,存在着相当 大的主观因素。
甲项目的箭线图(ADM)或 双代号网络图(AOA)示例
采用PDM绘制的甲项目的网络图示例
活动历时估计
活动历时估计是根据任务分解中定义的项目活动
和项目活动清单来估计完成这些项目所需要的工期。 工期包括一项活动所消耗的实际工作时间 加上间歇时间。
制定进度计划
甘特图
甘特图,通过日历形式列出项目活动及其相 应的开始和结束日期,它为反映项目进度信 息提供了一种标准形式。
P生产率参数,反映了下述因素对工作量的影响: 总体过程成熟度及管理水平; 使用良好的软件工程实践的程度; 使用的程序设计语言的级别; 软件环境; 软件项目组的技术及经验; 应用系统的复杂程度。 开发实时嵌入式软件时:P~=2000;电信系统和系统 软件时:P=10000;商业应用系统:P=28000。 如果把项目持续时间延长一些,则可降低完成项目 所需的工作量。
13.2.3 COCOMO2模型
构造性成本模型: COCOMO(COnstructive COst Model) 。1981年Boehm在《软件工程经济学》中 首次提出了COCOMO模型。1997年Boehm等人提 出的COCOMO2,修订了COCOMO。 3个层次的软件开发工作量估算模型: (1) 应用系统组成模型用于估算构建原型的工作量。 (2) 早期设计模型适用于体系结构设计阶段。 (3)后体系结构模型适用于完成体系结构设计之后 的软件开发阶段。