软件工程导论学第十三章_软件项目管理

合集下载

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

软件工程导论张海藩课后习题答案(完整版)
作业及解答
作业一 基本概念(第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版习题十三参考答案

软件工程导论第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

软件工程导论概要.优秀精选PPT

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

软件工程第13章 软件项目管理

软件工程第13章 软件项目管理
通常在项目的目标确定和软件基本功能确定之后,就应 该着手项目计划的制定工作。项目估算是制订计划项目开展初期阶段的重要工作,其主要目 标是得到项目计划,或者说计划(plan)是策划 (planning)的结果。
13.2 项目估算
• 项目策划中需要开展的活动
13.2 项目估算
成本计算
一个软件组织在完成多个项目以后积累了一些数据,进行 成本分析后便可得到自己的生产率数值和人工价格。 ➢ 生产率是平均每个人月完成的源程序行数,可记为 KLOC/人月或FP/人月。 ➢ 人工价则为每人月的价值。 有了这两个数值,如果在估出项目规模以后就可以很容易 得到项目的工作量和成本,即
当然,在项目的开始只是对代码行的估计值。另一表示 方法是功能点,记为FP,它是根据软件需求中的功能估算 的。
13.2 项目估算
(2)工作量。项目的工作量按项目将要投入的人工来考 虑,以一个人工作一个月为单位,记为“人月”。 (3)成本。软件项目的成本通常只考虑投入的人工成本, 如某项目投入的总人工费用为12万元。
工作量=规模/生产率 成本=工作量×人工价
项目估算的功能点方法
• 功能点方法(function point)简称FP方法,该 方法克服了项目开始时无法得知源程序行数的实 际困难,从软件产品的功能度(functionality) 出发估算出软件产品的规模。
项目估算的功能点方法
1.功能度
功能点方法是以项目的需求规格说明中已经得到确认的软 件功能为依据,着重分析要开发系统的功能度,并且认为, 软件的大小与软件的功能度相关,而与软件功能如何描述无 关,也与功能需求如何设计和实现无关。
(2)时限要求。项目应在合同规定的期限内完成。 (3)项目开销限制在预算之内。

软件工程导论(共65张PPT)可编辑全文

软件工程导论(共65张PPT)可编辑全文
–期刊管理系统之借阅子系统
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙

2023软件工程导论期末考试题库及参考答案

2023软件工程导论期末考试题库及参考答案

2023软件工程导论期末考试题库及参考答案一、选择题(每题2分,共20分)1. 以下哪个不是软件工程的三个基本目标?A. 可维护性B. 可用性C. 可靠性D. 高效性参考答案:D2. 软件生命周期中,以下哪个阶段是软件开发过程的核心阶段?A. 需求分析B. 设计C. 编码D. 测试参考答案:C3. 以下哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程参考答案:A4. 在软件工程中,以下哪个方法用于估算软件项目的成本和进度?A. COCOMOB. WBSC. SDLCD. CASE参考答案:A5. 以下哪个是软件工程中的一个重要原则?A. 分而治之B. 一次性编写C. 重用D. 模块化参考答案:D6. 以下哪个不是软件工程的基本活动?A. 软件规格B. 软件开发C. 软件验证D. 软件测试参考答案:C7. 以下哪个是软件工程中用于提高软件质量的技术?A. 设计模式B. 重构C. 代码审查D. 单元测试参考答案:C8. 以下哪个不是软件工程的五大基本过程?A. 软件规格B. 软件开发C. 软件维护D. 软件项目管理参考答案:D9. 以下哪个是软件工程中的一个重要概念,用于描述软件系统中的各个组件之间的关系?A. 耦合B. 内聚C. 模块化D. 重用参考答案:A10. 以下哪个是软件工程中的一个重要原则,用于指导软件开发过程?A. 迭代B. 增量C.螺旋D. 模型驱动参考答案:A二、填空题(每题2分,共20分)11. 软件工程的三要素是:方法、工具和______。

参考答案:过程12. 软件生命周期包括:需求分析、设计、编码、______和软件维护。

参考答案:测试13. 软件工程中的面向对象方法包括:封装、继承和______。

参考答案:多态14. 软件工程中的 CASE 工具主要用于支持______。

参考答案:软件设计和开发15. 软件工程中的敏捷开发方法强调______、可维护性和可扩展性。

软件工程-第13章

软件工程-第13章
软件工程导论(第6版)
第13章 软件项目管理
1
第13章 软件项目管理(44号)
在经历了若干个大型软件工程项目的失败之后,人 们才逐渐认识到软件项目管理的重要性和特殊性。
所谓管理就是通过计划、组织和控制等一系列活动, 合理地配置和使用各种资源,以达到既定目标的过程。
软件项目管理先于任何技术活动之前开始,并且贯 穿于软件的整个生命周期之中。
在原始的COCOMO模型中,仅粗略地考虑了前两个分级因 素对指数b之值的影响。工作量方程中模型系数a的典型值为 3.0,在实际工作中应该根据历史经验数据确定一个适合本组 织当前开发的项目类型的数值。
第13章 软件项目管理
13.2.3 COCOMO2模型
20
主要内容
13.1 13.2 13.3 13.4 13.5 13.6 13.7
• 然后,用下式计算未调整的功能点数UFP: UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
其中,ai(1≤i≤5)是信息域特 性系数,其值由相应特性
的复杂级别决定,如右表。
第13章 软件项目管理
13.1.2 功能点技术
(2)计算技术复杂性因子TCF
7
这一步骤度量14种技术因素对软件规模的影响程度
13.2 工作量估算
18
COCOMO2使用的5个分级因素如下所述:
(1) 项目先例性。指出对于开发组织来说该项目的新奇程度。 诸如开发类似系统的经验,需要创新体系结构和算法,以及需 要并行开发硬件和软件等因素的影响,都体现在这个分级因素 中。 (2) 开发灵活性。反映出为了实现预先确定的外部接口需求 及为了及早开发出产品而需要增加的工作量。 (3) 风险排除度。反映了重大风险已被消除的比例。在多数 情况下,这个比例和指定了重要模块接口(即选定了体系结构) 的比例密切相关。

软件项目管理ProjectPPT课件

软件项目管理ProjectPPT课件

自动化测试工具
自动化测试工具的定义
自动化测试工具是一种用于自动化测试的软件工具,它能够模拟手工测试用例的执行,提高测试效率和准确性。
常见的自动化测试工具
Selenium、Appium、Junit等是最为常见的自动化测试工具,它们提供了测试脚本编写、测试用例执行、测试报告 生成等功能,方便测试人员进行自动化测试。
常见的项目管理软件
Trello、Asana、Jira等是最为常见的项目管理软件,它们提供了任务管理、看板管理、甘 特图等功能,方便项目经理进行项目进度和资源的监控。
项目管理软件的应用
在软件项目中,团队成员可以通过项目管理软件来分配任务、跟踪进度、管理资源等操作 ,确保项目能够按时交付并满足质量要求。
成本增加。
04
05
缺乏有效的沟通机制,导致 项目团队对需求理解存在偏
差,影响项目质量。
案例三:高效的项目团队建设
总结词:高效的项目团队 是软件项目成功的关键因 素。
选拔具备专业技能和良好 沟通能力的团队成员,提 高团队整体素质。
详细描述
建立明确的职责分工和协 作机制,确保团队成ቤተ መጻሕፍቲ ባይዱ能 够高效协作。
THANKS FOR WATCHING
特点
软件项目具有明确的目标、时间限制 、资源限制、技术要求和多学科交叉 的特点,需要跨部门、跨领域的团队 协作。
软件项目管理的重要性
提高项目成功率
有效的项目管理能够降低项目风险,提高项 目成功率,避免资源浪费。
提升软件质量
通过项目管理,可以确保软件产品符合质量 要求,提高软件质量。
降低开发成本
合理的项目计划和资源分配可以降低开发成 本,提高项目经济效益。
看板等方式来管理项目进度,确保项目能够快速响应需求变化。

软件项目管理课件(完整版)

软件项目管理课件(完整版)
(1)职责; (2)当前系统需要; (3)目标; (4)系统将来的需要。
第三章 项目范围管理
• 软件需求收集遵循的步骤
(1)客户和开发组织确定各自单一联系点,授予 做决定的权利,并代表各自的组织利益行事;
(2)双方举行会议和面谈,讨论各种需求; (3)软件开发组织分析需求的一致性和完整性; (4)开发组织以需求规格说明文档的形式得出讨
• 活动工期估计
工期是开展活动的实际时间加上占用时间。例 如,尽管可能只花一周或5天就能完成一项实际的 工作,但估计的工期可能是两周,目的是根据外 部信息留出一些额外的时间进行调整。
人工量是指完成一项任务所需的工作天数和工作 小时。工期是指时间估计,而不是人工量估计。
第五章 项目时间管理
• 常用的工期估算方法
精度多少
粗数量级
项目生命周期前期, 提供选择决策的成本
经常是项目完成前
估计
得3~5年
-50%~100%
预算估计/概算 早期,1~2年 把钱分配到预算计划 -10%~25%
确定性
项目后期,少于1 为采购提供详细内容, -5%~10%

估计实际费用
第四章 软件项目成本管理
• 估算方法
(1)代码行方法 ; (2)功能点方法; (3)类比估算法; (4)自下而上估算; (5)专家估算法; (6)参数估算法。
第二章 项目集成管理
• 指导和管理项目执行
指导与管理项目执行过程要求项目经理和项目团 队采取多种行动执行项目管理计划,完成项目范 围说明书中明确的工作 。
指导与管理项目执行过程最直接会受到项目应用 领域的影响。
可交付成果是为完成项目管理计划中列入并做了 时间安排的项目工作而进行的过程的成果。

软件工程第13章 软件项目管理(简化)

软件工程第13章 软件项目管理(简化)
的估计值: 的估计值: L=
a + 4m + b 6
(13.1)
用代码行技术估算软件规模时, 用代码行技术估算软件规模时,当程序较小时常用的单位是代码行数 LOC),当程序较大时常用的单位是千行代码数(KLOC)。 ),当程序较大时常用的单位是千行代码数 (LOC),当程序较大时常用的单位是千行代码数(KLOC)。
下式计算技术因素对软件规模的综合影响程度DI: 下式计算技术因素对软件规模的综合影响程度DI: DI
DI= ∑ F i
i=1
14
影响度
单击此处编辑母版标题样 式
技术因素 F1 数 据 通 信 F2 分 布 计 算 F3 性 能 标 准 F4 F5 F6 F7 F8 F9 F10 F11 无影响0 无影响0 微影响1 微影响1 轻影响2 轻影响2 中影响3 中影响3 大影响4 大影响4 重影响5 重影响5 5 4 4
单击此处编辑母版标题样 具体估算方法:为了增强估计准确性, 具体估算方法:为了增强估计准确性,可请多名有经验的软件工程师分 别做出估计。每个人都估计程序的最小规模(a) 最大规模(b) (a)、 (b)和最可能 别做出估计。每个人都估计程序的最小规模(a)、最大规模(b)和最可能 式 (m),分别算出这3种规模的平均值之后,再用下式计算程序规模 的规模(m) 的规模(m),分别算出这3种规模的平均值之后,
单击此处编辑母版标题样 式
应用举例:假设有一单位的职工工资管理系统, 应用举例:假设有一单位的职工工资管理系统,通过需求分析得到的 DFD如下图所示 求出其功能点数。 如下图所示, DFD如下图所示,求出其功能点数。
解:1)由上图可知:用户输入数为4,即密码、打印工资、工资录入和 由上图可知:用户输入数为4 即密码、打印工资、 错误按键;用户输出数为3 即查询信息、工资报表和出错信息; 错误按键;用户输出数为3,即查询信息、工资报表和出错信息;用 户查询数为1 即工资查询;文件数为1 职工工资表;外部接口为2 户查询数为1,即工资查询;文件数为1,职工工资表;外部接口为2, 即人事查询、职工信息。假设各信息特性的复杂性均取简单级, 即人事查询、职工信息。假设各信息特性的复杂性均取简单级,则未 调整功能点数为: 调整功能点数为: UFP=3X4+4X3+3X1+7X1+5X2=44 2)再取技术因素分布表如下,可求得技术因素综合影响程度: 再取技术因素分布表如下,可求得技术因素综合影响程度: DI=5+4+0+1+1+3+2+0+1+1+3+2+2+3=28 求得技术复杂因子: 求得技术复杂因子:TCF=0.65+0.01XDI=0.93 3)最后求得:FP=UFPXTCF=44X0.93=40.92 最后求得: 60行源代码 结论:假若1个功能点需要60行源代码,则工资管理系统需要40.92X60= 结论:假若1个功能点需要60行源代码,则工资管理系统需要40.92X60= 2455.2LOC。类似地,功能点文档页数、成本数、错误数等也可估算。 2455.2LOC。类似地,功能点文档页数、成本数、错误数等也可估算。

软件项目管理(三级项目)理论课程教学大纲

软件项目管理(三级项目)理论课程教学大纲

软件项目管理(三级项目)课程教学大纲英文名称:Software Project Management 课程编码:04119230学时:48/8 学分:3课程性质:专业限选课课程类别:理论课先修课程:软件工程导论、软件工程A开课学期:第6学期适用专业:软件工程一、课程教学目标通过本课程的理论教学、项目和实验训练,使学生具备下列能力:1、掌握软件工程领域软件项目管理所需的专业知识,包括项目范围、进度、成本、风险、资源、变更等方面的管理和控制。

(支持标准毕业要求1-3)2、培养学生的人文社会科学素养、社会责任感,能够在软件工程实践中理解并遵守软件工程职业道德和规范,履行相应责任;(支持标准毕业要求8-3)3、培养学生的团队精神及协作能力,能够在软件工程、多学科背景下的团队中承担个体、团队成员以及负责人的角色;(支持标准毕业要求9-1、9-2)4、能够能够通过口头或书面方式表达自己的想法,与业界同行及社会公众进行有效沟通和交流;(支持标准毕业要求10-1)5、能够使用主流的项目管理工具,如Project等工具对软件复杂软件开发过程中的进度、资源、成本等问题进行管理;(支持标准毕业要求11-1)6、能够将软件项目管理的原理和经济决策的方法用于大规模软件全生命周期过程中;(支持标准毕业要求11-2、11-3)二、课程教学目标与毕业要求的对应关系三、课程的基本内容3.1 理论教学1、项目管理及IT项目管理概述(支撑教学目标1)了解项目及项目管理的基本概念、价值及特点;理解项目管理、IT项目管理、软件项目管理之间的相互关系,理解软件项目管理的基本概念及特点。

[本章主要内容]:(1)项目与项目管理的价值。

(2)项目与项目管理概念与和特点。

(3)项目管理组织与项目管理知识体系。

(4)IT项目特征、IT项目管理特点。

(5)软件项目与软件项目管理概念与特点。

2、项目管理的环境和过程(支撑教学目标1、2、6)教学目标:了解项目管理的环境,理解系统观念和系统方法在项目管理中的应用;了解项目阶段和项目生命周期的概念,理解项目管理过程。

软件工程导论张海潘(第六版)第1-13章总结

软件工程导论张海潘(第六版)第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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十三章软件项目管理一、软件工程管理软件工程,完成软件的开发和维护,必须有严格、持续的管理方法。

软件工程管理主要涵盖:软件质量管理、软件配置管理、软件项目管理、软件安全管理、人员管理与培训等多个方面。

二、软件项目管理概述1、项目与项目管理项目是一次性的多任务工作,它具有确定的开始日期、结束日期、工作范围、经费预算、质量标准,以及特定的功能、性能和接口要求。

这一定义非常科学,它适用于所有行业,同样也是适用于软件行业。

项目管理是为了实现项目目标,运用相关的知识、技能、方法、工具,对项目的计划、进度、质量、成本、资源进行管理和控制的活动。

同样,这一定义也非常科学,适用于所有行业的,当然也适用于软件行业。

关于项目管理的目的,国际项目管理大师詹姆斯.刘易斯说到:项目管理不仅是为了节约金钱,而且是为了节省时间,缩短产品的开发周期。

2、软件项目管理软件项目管理的特点(1) 软件产品在其生产的全过程中的不可见性(2) 用户需求难以把握,会随着项目的进展而变更(3) 单件生产(生产地一次性)(4) 是智力密集型项目,受人力资源影响很大软件项目管理的主要职能软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。

(1) 制定计划----规定待完成的任务、要求、资源、人力和进度(2) 建立组织----为实施计划、保证任务的完成,建立分工明确的责任机构(3) 配备人员----任用各个层次的技术人员和管理人员(4) 指导----鼓励和动员软件人员完成所分配的任务软件项目管理的主要内容(1) 人员的管理与组织(2) 软件度量(3) 软件项目计划(4) 风险管理(5) 软件质量保证(6) 软件过程能力评估(7) 软件配置管理以下是软件项目管理的主要工作:三、软件规模估算1、代码行技术----是以整个软件的代码行数作为软件规模的估算值估算方法(1) 了解软件细节(软件的功能、性能、限制、接口和可靠性等),将其细化分解成较详细的任务单元;(2) 由多名有经验的软件工程师,每人分别对各单元的代码行数做出估计(参照类似软件的相近功能模块),估计该程序模块的最小规模(设为a)、最大规模(设为b)和最可能的规模(设为m);(3) 求出a 、b 、m 的平均值,再用下式计算单元规模的估计值:64b m a ++ (4) 把软件的每个功能模块的规模估计值累加,就是整个软件的规模估计值;(5) 当程序规模较小时常用的单位是代码行数(LOC),当程序规模较大时常用的单位是千行代码数(KLOC)。

优、缺点(1) 简单、比较准确、客观(在有以往类似成果经验值的基础上);(2) 不太合理、不能适用于非过程语言,用不同语言完成同一项目估算值将不一样。

2、功能点技术----依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。

这种方法用功能点(FP)为单位度量软件规模信息域特性: P8~10估算方法:(1) 根据产品的每个信息域特性值(即Inp 、Out 、Inq 、Maf 和Inf)和软件产品所在的领域(软件类型),将其分类为简单级、平均级或复杂级,并根据等级为每个特性分配一个功能点数。

点数的值没有硬性规定,例如,一个简单级的输入项分配3个功能点,一个平均级的输入项分配4个功能点,而一个复杂级的输入项分配6个功能点;(2) 计算未调整的功能点数UFP:UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,a i(1≤i≤5)是信息域特性系数,其值由相应特性的复杂级别决定。

(3) 计算软件技术复杂因子P12~13(4) 计算功能点数:FP=UFP×TCF,此即软件的复杂度优缺、点:(1) 与所用的编程语言无关;(2) 在判断信息域特性复杂级别和技术因素的影响程度时,存在着相当大的主观因素。

(各因素的影响值均为主观估计给出)四、工作量估算----是软件规模的函数,是从另一个角度反应的软件规模,是基于经验模型(换算函数)的1、静态单变量模型----是以软件规模为变量的一元函数。

典型的估算公式有:P15~17对Walston_Felix模型的进一步说明:(1) 详细计算公式:E=5.2×(KLOC)0.91D=4.1×(KLOC)0.36=13.47*EDOC=49*(KLOC)1.01S=0.54*E0.6(2) 说明:其中,E表示工作量,以人月(PM)计算;D表示项目持续时间,以月计算;DOC表示文档数量,以页计算;S表示人员需求,以人计算。

2、动态多变量模型----是以软件规模和开发时间为变量的二元函数。

估算公式:P18~203、COCOMO2模型COCOMO2模型P22以后体系结构模型为例介绍估算方法:(1) 模型公式:P23(2) 模型系数a的典型值为3.0(3) 确定模型指数b P26~29(4) 使用模型公式,计算工作量4、三个不同层次中的工作量估算第一层估算时,只须使用公式E= a ×KLOC b,不需要考虑成本因素,而且对于组织形、半独立形和嵌入形的这三种项目类型,模型指数和模型系数是固定的。

第二、三层估算时,使用上述完整的估算方法,但考虑的成本因素的数量不同。

五、项目开发时间估算通常,工作量估算模型也同时提供了估算开发时间T的方程,它是项目工作量的函数。

P34六、成本/效益分析根据以上估算结果,就可以进行软件成本/效益估算。

简单的成本估算,可以用KLOC数直接乘每千行代码的价格得到;一般的成本估算是用工作总量与人员平均收入相乘得到。

效益分析可依据成果投入使用后可能带来的利润,使用可行性研究中介绍的成本/效益分析方法进行分析。

七、做进度计划1、概述做进度计划的主要工作是:定义一个适用于当前软件项目的软件工作集合,包括(1)一组软件工程工作任务、(2)里程碑、(3)可交付的产品。

软件工作任务包括一些关键性的(在关键路径上)工作和一些非关键性的工作。

项目管理者的目标是定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。

为达到上述目标,管理者必须制定一个足够详细的进度表(进度描述),以便监督项目进度并控制整个项目。

软件项目的进度安排把工作量(工作时间)分配给任务集合中的每个软件工程任务,并规定完成各项任务的起止日期,从而将估算出的项目工作量分布在计划好的项目持续期内。

进度计划将随着时间的流逝而不断演化。

在项目计划的早期,首先制定一个宏观的进度安排表,标识出主要的软件工程活动和这些活动影响到的产品功能。

随着项目的进展,把宏观进度表中的每个条目都精化成一个详细进度表,从而标识出完成一个活动所必须实现的一组特定任务,并安排好了实现这些任务的进度。

进度计划的主要工作是:2、确定项目组的最佳规模(人数)项目的人均生产效率和项目组人数P的关系:Lr=L-l(P-1)r P38对于一个规模为P的项目组,从上式导出项目组的总生产率为:Ltot=P(L-l(P-1)r)因此,存在一个最佳的项目组规模P opt,这个规模的项目组,其总生产率最高。

实例:P40注意:Brooks规律----向一个已经延期的项目增加人力,只会使得它更加延期。

3、工作量分配在前面,通过成本估算方法获得了完成某项软件开发任务所需全部工作量的估计值。

有一种称为“40-20-40规则”的工作量分配建议方案,常用于软件项目的工作量分配。

它指出:在整个软件开发过程中,编码的工作量约占20%,编码前的工作量占40%,编码后的工作量也占40%。

显然,这一分配方案是不强调编码工作的。

现在,对于大型软件项目而言,编码工作的工作量所占分额还在进一步缩小。

一般地,在计划阶段所需工作量不超过项目总工作量的2%~3%,除非是具有高风险的巨资项目。

需求分析可能占用项目工作量的l0%~25%,用于分析或原型开发的工作量与项目规模和复杂度成正比增长。

通常有20%~25%的工作量用于软件设计,用于设计评审和迭代修改的时间也必须计算在内。

由于设计时投入了相当的工作量,使编码工作变得相对简单些,用15%~20%的作量就可以完成。

测试和随后的调试工作约占30%~40%的工作量,且测试的工作量取决于软件的质量特性要求。

4、描述开发过程(用图形工具描述进度)甘特图(Gantt)----是一种简单的制定进度计划的工具,其横坐标表示日历时间、纵坐标上列出作业名称。

实例:P41~45旧木板房刷漆工程的Gantt图Gantt图的缺点:P46工程网络图----描绘任务分解情况以及每项作业的开始时间和结束时间(开始时间和持续时间),此外,它还显式地描绘各个作业彼此间的依赖关系。

图13.2旧木板房刷漆工程的工程网络在工程网络图中,用圆圈表示一个事件,圆圈内的数字表示事件的编号;实线箭头表示一个作业(任务),箭头上要标明作业的名称和估计需要的时间;虚线箭头表示任务在时间上的依赖关系。

注意,事件仅仅是可以明确定义的时间点,它表示这个时间点上有任务开始或结束。

事件并不消耗时间和资源。

作业表示一个任务的持续,通常既消耗资源又需要持续一定时间。

虚线箭头表示虚拟作业,它既不消耗时间,也不消耗资源。

甘特图简单直观,工程网络图能直接显示地描述各作业间的关系,二者各有优势,应结合使用。

*5、估算工程进度----在工程网络图的基础上步骤:计算每个事件的最早时刻:P53~54,标在事件圆圈的右上角;计算每个事件的最迟时刻:P55~56,标在事件圆圈的右下角;确定工程的关键路径,在项目实施过程中密切注视:P57计算机动时间,标在代表该项作业的箭头下面的括弧里P58利用机动时间安排出既节省资源又不影响最终竣工时间的进度表。

6 、实例:安排一个简单的软件开发项目的进度:(1) 建立初步的工程网络图(2) 计算每个事件的最早发生时刻(EET)和最迟发生时刻(LET),并在工程网络图中标明。

(3) 确定并标出关键路径。

(4) 计算非关键作业的机动时间,并在工程网络图中标出。

(5) 在时间和资源的约束下,利用机动时间安排进度。

在安排进度时,必须先保证关键作业得到满足,然后,利用机动时间安排非关键作业。

即先无条件地安排关键作业,再在约束条件下利用机动时间安排非关键作业。

假定有如下约束:“分析”需8人,“测试计划”需4人,“概要设计”需5人,“详细设计”需8人,“编码”需l0人,“测试方案设计”需2人,“产品测试”需3人,“文档整理”需3人,且要求安排进度时同一时刻的人数不超过l0人。

满足上述约束的一种进度安排方案如下表:八、人员组织1、软件开发单位的基本组织模式:2、对于小组内部成员的组织一般有三种形式:民主制程序员小组:P67~71主程序员小组:(1) 小组结构:P75(2) 小组成员分工:P76~77(3) 特点:通信信道少、效率高;主程序员、后备程序员和秘书人才难觅。

相关文档
最新文档