第10章软件工程管理
《软件工程》第10章 软件维护

北京大学远程教育课程
Software Engineering_Chapter10-2
问题定义
计划 时期 可行性论证 及软件计划
需求分析
概要设计 开发 时期
详细设计Байду номын сангаас
编码
测试 运行时期 运行/维护
北京大学远程教育课程
Software Engineering_Chapter10-3
本章主要内容
• 10.1 软件维护的定义,目标与任务 • 10.2 软件维护的类型 • 10.3 软件的可维护性
北京大学远程教育课程
Software Engineering_Chapter10-13
10.2.1 改正性维护(续)
• 实践表明,软件测试和排错不可能完全暴露并改正一个大 型软件系统中的所有错误。 • 经过统计分析,在典型的市场销售的软件包中,还有缺陷 的代码行约占代码总行数的3%。正式投入使用的软件中 含有错误是不足为奇的,即使是已运行多年的软件。 • 改正性维护举例:
北京大学远程教育课程
Software Engineering_Chapter10-6
10.1.3 软件维护的任务
• 一个软件开发机构60%的精力用在维护现有的软件上。随 着产品的增加,这个比例还将不断提高。不仅当前的软件 版本要维护,仍在使用的旧版本和即将投入使用的新版本 也将需要维护。 • 在软件整个运行周期中,不仅要解决原有问题,还要解决 修改过程中产生的新问题。因此软件维护是一个无穷尽的 过程。
Software Engineering_Chapter10-18
10.2.4 预防性维护
• 维护人员不要单纯等待用户提出维护的请求,而应该选择 那些还能使用数年、目前虽能运行,但不久就须作重大修 改或加强的软件,进行预先的维护。预防性维护可以改善 软件的可维护性,减少今后对它们维护时所需要的工作量。
软件工程管理方法

软件工程管理方法软件工程管理方法是指在软件开发过程中,对项目进行有效管理和控制的一系列方法和技术。
它主要包括项目计划、需求管理、风险管理、进度管控、质量管理等方面。
本文将结合实际经验,对软件工程管理方法进行详细介绍。
首先,项目计划是软件工程管理中的关键环节。
一个好的项目计划可以有效规划资源,提前预知项目进展,及时调整任务优先级和安排工作量。
在项目计划中,需要包括需求分析、产品设计、编码和测试等阶段的时间和资源分配。
此外,还需要制定详细的里程碑和交付时间,以便跟踪项目的进展情况。
另外,需求管理也是软件工程管理中的重要内容。
需求管理包括需求获取、需求分析和需求确认等环节。
需求获取阶段,需要与项目干系人进行沟通,了解他们的需求和期望。
在需求分析阶段,需要将需求转化为详细的需求规格说明书,并进行评审和确认。
需求管理的目标是确保项目能够满足干系人的期望和需求。
风险管理是软件工程管理中的一个重要环节。
项目中可能会遇到各种风险,如技术风险、沟通风险、进度风险等。
在风险管理中,需要对可能出现的风险进行识别、评估和监控,并采取相应的措施进行应对。
这些措施可以包括风险规避、风险转移、风险缓解等。
风险管理的目标是降低项目失败的风险,确保项目能够按时、按质地完成。
进度管控是软件工程管理中的关键环节。
在项目执行过程中,需要不断跟踪项目进度,确保项目按计划进行。
进度管控包括制定和更新项目进度计划、监控和调整项目进度等。
在进度管控中,可以使用甘特图、里程碑图等工具,帮助团队成员理解项目的进展情况,及时进行协调和调整。
最后,质量管理是软件工程管理中的一项重要工作。
质量管理包括制定和执行质量计划、进行质量评审和测试、进行缺陷分析和改进等。
在质量管理中,需要建立良好的质量文化,培养团队成员的质量意识。
同时,需要使用适当的工具和方法,提高项目的质量水平。
综上所述,软件工程管理方法是软件开发过程中不可或缺的一环。
通过项目计划、需求管理、风险管理、进度管控和质量管理等方面的有效管理,可以帮助项目顺利进行,保证项目的高质量完成。
软件工程导论_第十章

2. OOA基本任务是:
运用面向对象的方法,对问题域和系统责任 进行分析和理解,找出描述问题域及系统责任所需的 对象,定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户功能需求的 OOA模型。
问题域:被开发系统的应用领域,记载现实世界中要
由这个系统进行处理的业务范围。现实世界中系统 所要解决问题的领域为“问题域”,如“银行业务” 属于“银行的问题域”。 系统责任:所开发的系统应该具备的职能。
• “小镇”是牙科诊所的地址属性,不是独 立的对象;“软件系统”和“系统”是 同义词,指的是将要开发的软件产品, 不是问题域中的对象;“就诊时间”、 “预约时间”和“约定时间”在本问题 陈述中的含义相同,指的都是预约的就 诊时间,实际上,预约的就诊时间既包 括日期又包括时间,但是,它们是预约 登记表包含的属性,不是问题域中的独 立的对象;“名字”和“姓名”是同义 词,应该作为病人和预约登记表的属性;
我们目标是尽可能全面的发现属性,宁可多费时, 也不要遗漏所需要的属性。
10.3.5 识别继承关系
继承关系的建立实质上是知识抽取过程,它应该 反映出一定深度的领域知识,因此必须有领域专家密 切配合才能完成。通常,许多归纳关系都是根据客观 世界现有的分类模式建立起来的,只要可能,就应该 使用现有的概念。
10.3 建立对象模型(类图)
1. 描述系统静态的对象模型(类图)是面向对象
的三个模型中的基本模型。 2. 它表述了系统中各个对象的类型及其间存在 的各种关系。在面向对象建模中,建立类图是最 基本的任务;建立类图也是最需要花费精力和时 间的技术活动。
3. 该模型主要关心系统中的:
①对象的结构; ②属性; ④关联; ⑤类的层次。 ③操作和方法;
软件工程各章名词解释

名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。
第11章 软件工程管理

项活动能够开始的最早时间。。
●最早结束时间(Earliest Finish time,EF)是指
某项活动能够完成的最早时间。
EF = ES + 该项活动的时间
●最早开始时间采取从前往后的计算方法,它
等于所有“紧前活动”的最早结束时间的最大
值
●在每个活动框的上方标出该项活动的最早起
止时间。
软件工程
20
软件工程
23
(4) PERT图的使用
①确保关键路径上的各项活动按时完成。 ②通过缩短关键路径上某项活动的时间,达 到缩短项目开发时间的目的。 ③对于不处在关键路径上的活动时间,可以 根据需要,或者调整其起止时间,或者延缓活 动的进度。
软件工程
24
2. Gantt 图 ( Gantt Chart, 甘特图 )
△
△
测试数据
△
△
图11.11 Gantt图示例
软件工程
26
● Gantt图的优点:简单易用,容易修改, 直观方便,能够描述各个任务的起止时 间以及各个任务之间的并行性。 ● Gantt图的缺点:不能显示各项活动之 间的依赖关系,难以确定整个项目的关 键所在。
软件工程
27
习题6:图11.12是某项目的PERT图
软件工程
16
3.人员组织 ●通常采用层次型组织结构:
软件经理→项目经理→开发小组 (1)民主开发小组
组长轮流担任;组内人人平等;一切问题集体决定。 (2)主程序员小组
一元化领导;主程序员分配工作;主程序员决定重大 问题。
主程序员(组长)
文档员
2~5名程序员 后援程序员(副组长)
图11.6 主程序员小组
SYSTEM DESIGN
软件工程 第4版 第11章 软件工程管理

本章内容
11.1 软件工程管理概述 11.2 软件开发成本估算 11.3 软件工程人员组织 11.4 软件配置管理 11.5 软件质量保证 11.6 软件开发风险管理 11.7 软件工程标准与软件工程文档
这种估算方法的优点是,由于各个任务单元的成本 可交给该任务的开发人员去估计,因此估计结果比较准 确。缺点在于,由于具体工作人员往往只注意到自己职 责范围内的工作,而对涉及全局的成本。
11.2.3 COCOMO2 模型
COCOMO2 模型分为如下3 个模型,在估算软件开发工作量时,对软件细节问题考虑的详 尽程度逐渐增加。
OPTION
软件开发人员一般分为项目负责人、系统分析员、高级程序员、程序员、初级程序员、资 料员和其他辅助人员。
项目负责人需要对项目的需求和团队人员有全面的了解
系统分析员需要有概括能力、分析能力和社交活动能力
程序员需要有熟练的编程能力等 资料员和其他辅助人员负责及时登记软件工程每个阶段的文档等资料
11.3 软件工程人员组织
11.1 软件工程管理概述
02 软件工程管理的重要性
OPTION
基于软件本身的复杂性,软件工 程将软件开发划分为若干个阶段,每 个阶段完成不同的任务、采取不同的 方法。
如果软件开发管理不善,造成的 后果会很严重。因此软件工程管理非 常重要。
11.1 软件工程管理概述
03 软件工程管理的内容
OPTION
02 组织机构
OPTION
软件开发团队不能只是一个简单的集合,要求具有良好的组织机构,要具有合理的人员分 工和有效的通信,共同高效率地完成任务。
按项目划分的模式
按职能划分的模式
矩阵型模式
11.3 软件工程人员组织
计算机软件工程管理与应用策略

计算机软件工程管理与应用策略计算机软件工程管理是指对软件项目进行规划、组织、协调和控制的过程,以确保项目能够按时、按质完成。
软件工程管理包括项目计划、需求分析、设计、编码、测试、上线等各个阶段的管理活动。
本文将介绍软件工程管理的基本原则和应用策略。
软件工程管理需要遵循以下几个基本原则:1. 目标明确:项目的目标必须明确,包括项目的范围、功能、成本、进度等方面的目标。
只有明确了目标,才能制定出有效的管理策略。
2. 组织协调:项目的组织和协调是软件工程管理的核心。
需要合理安排项目团队的人员和角色,明确工作分工和责任,建立有效的沟通和协作机制。
3. 风险管理:软件项目存在着各种风险,如技术风险、人员风险、进度风险等。
需要通过风险识别、评估和控制,采取相应的措施来降低风险。
4. 质量管理:软件工程管理的目标是按时、按质地完成项目。
质量管理是非常重要的。
需要建立质量标准和评估机制,对项目的各个阶段进行质量控制和评估。
5. 学习改进:软件工程管理是一个不断学习和改进的过程。
需要对项目进行评估和总结,找出问题和不足之处,并进行相应的改进措施。
在软件工程管理中,还有一些常用的应用策略,如下所述:1. 敏捷开发:敏捷开发是一种以人为中心的开发方法,强调交互和迭代开发,注重快速的反馈和响应能力。
它有助于提高项目的灵活性和适应性。
2. 过程改进:通过采用各种过程改进的方法和工具,可以提高软件开发的质量和效率。
如六西格玛、CMMI等过程改进模型。
3. 风险管理:风险管理是软件项目管理中的重要环节。
通过对项目进行风险识别、评估和控制,可以有效降低项目的风险。
4. 项目管理工具:使用适当的项目管理工具可以提高项目管理效率。
如甘特图、PERT/CPM网络等工具可以帮助管理人员合理安排资源和时间。
5. 团队建设:优秀的团队是成功的关键。
通过培养团队的合作精神和沟通能力,可以提高团队的效能和凝聚力。
计算机软件工程管理是一项复杂的任务,需要遵循一定的原则和应用策略。
软件工程的软件工程管理

针对前期风险管理经验提出建 议
为以后项目提供借鉴
结语
软件项目风险管理是软件工程管理中的重要环节,只有合理 识别、评估、应对和控制各种风险,才能确保项目的顺利进
行和成功交付。
●06 第6章 总结
软件工程管理的价值
提高开发效率
增加客户满意度
降低成本
通过有效的管理流 程和工具,提高团
队的工作效率
通过良好的管理, 确保项目按时交付, 并符合客户的需求,
复杂的技术问题
技术日新月异 技术人才稀缺 技术选型困难
人员管理问题
团队协作难度大 员工素质参差不齐 人员流动性大
资源调度问题
资源预算不足 资源分配不均 资源管理混乱
沟通和决策问题
信息传递不及时 意见不统一 决策效率低下
●02 第2章 软件项目规划
定义项目范围和目标
功能需求
明确产品需要实现的功能
非功能需求
理的挑战。
软件工程管理的价值
提高开发效率
增加客户满意度
降低成本
通过有效的管理流 程和工具,提高团
队的工作效率
通过良好的管理, 确保项目按时交付, 并符合客户的需求,
提升客户满意度
有效的管理可以优 化资源利用,降低 项目开发和维护的
成本
未来发展趋势
随着技术的不断发展,软件工程管理也在不断演进。未 来可能会出现更多智能化、自动化的管理工具,帮助团 队提高效率,降低成本,更好地满足客户需求。持续跟
行。
制定变更管理计划
变更影响分析
评估变更对项目目标的影响 确定变更的紧急程度
变更流程
变更评估
明确变更的提出和批准流程 指定变更的执行人员
评估变更的可行性和成本 确定变更的实施优先级
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10-1 项目的生命周期
10.1.1项目管理基础
2、项目管理
按照美国项目管理协会的定义,项目管理是在项目活动中运用一 系列的知识、技能、工具和技术去满足或超过相关利益者对项目 的要求与预想。这一概念指出了项目管理涉及的范畴和所要达到 的目标。
项目管理是一种管理活动,即一种有意识地按照项目的特点和规 律,对项目进行组织管理的活动。项目管理的目的是为了使项目 能够在指定的时间和资源的条件下,按照预定的成本、进度和质 量顺利完成。项目管理不仅涉及项目的启动、计划、实施直至结 束的全过程,而且在进度、成本、质量、人力、风险等各方面对 项目进行全方位的管理,从而帮助企业解决处理复杂问题,实现 更高的运作效率。
10.2.1 软件质量概述
2、影响软件质量的因素 影响软件质量的因素可以分为两种,一种是
可以直接度量的因素,如单位时间内千行代 码中所产生的错误数;另一种是只能间接度 量的因素,如可维护性、可移植性等。
具体来说,可以把影响软件质量的主要因素 分成以下几类:正确性、健壮性、效率、完 整性、可用性、风险、可理解性、可维修性、 适应性、可测试性、可移植性、可再用性、 互运行性等。
10.1.2 软件项目管理
1、软件项目管理的过程 1)、启动软件项目 2)、制定项目计划 3)、实施/控制项目 4)、结束软件项目
10.1.2 软件项目管理
2、软件项目管理的主要内容 1)、成本管理 2)、质量管理 3)、配置管理 4)、人员和进度管理
10.1.2 软件项目管理
第10章 软件工程管理
10.1 软件项目管理 10.2 软件质量管理 10.3 软件配置管理
10.1 软件项目管理
10.1.1项目管理基础 10.1.2 软件项目管理 10.1.3 软件项目计划与进度
10.1.1项目管理基础
1、项目的概念 1)、整体性。 2)、独特性。 3)、一次性。 4)、生命周期属性。 5)、不确定性。
(1)、代码行技术 (2)、功能点技术 (3)、基于过程的估算
3)、经验估算模型
(1)、回归估算模型 (2)、Putnam模型 (3)、COCOMO模型
10.1.3 软件项目计划与进度
3、进度安排
1)、甘特图
表10-2 甘特图
任务 时间
1月
2月
3月
4月
5月
6月
A
B
C
D
2)、网络图
10.1.3 软件项目计划与进度
பைடு நூலகம்
4、项目组织 1)、软件项目组 2)、程序员组 (1)、层次模式 (2)、主程序员组 (3)、民主小组
图10-2主程序员组
10.2 软件质量管理
10.2.1 软件质量概述 10.2.2 软件质量度量 10.2.3 软件质量保证 10.2.4 软件质量容错技术
10.2.1 软件质量概述
1、软件质量的定义 从实际应用来说,软件质量的定义为: 1)、与所确定的功能和性能需求的一致性。 2)、与所成文的开发标准的一致性。 3)、与所有专业开发的软件所期望的隐含特
性的一致性。
10.2.1 软件质量概述
上述软件质量的定义反映了如下三个方面的问题: 1)、软件需求是度量软件质量的基础。与需求不一致
10.1.2 软件项目管理
进行软件项目的管理,主要是为了按照预定的 时间及开发费用,成功地完成软件计划、开发 和维护任务。确切地说,软件项目管理是为了 使软件项目能够按照预定的成本、进度、质量 顺利完成,而对成本、人员、进度、质量、风 险等进行分析和管理的活动。
与其他项目相比,软件项目具有一些特殊性。
进行软件项目的管理,主要是为了按照预定的 时间及开发费用,成功地完成软件计划、开发 和维护任务。确切地说,软件项目管理是为了 使软件项目能够按照预定的成本、进度、质量 顺利完成,而对成本、人员、进度、质量、风 险等进行分析和管理的活动。
与其他项目相比,软件项目具有一些特殊性。
10.1.3 软件项目计划与进度
的软件肯定质量不高。 2)、在各种标准中定义了一些开发准则,用以指导软
件人员用工程化的方法来进行软件开发。如果不遵守 这些开发准则,软件的质量也无法得到保证。 3)、往往会有一些隐含的需求(例如,软件应具备良 好的可维护性)没有明确地提出来。如果软件只满足 那些精确定义了的需求,却没有满足这些隐含的需求, 软件的质量仍然是值得怀疑的。
1、软件项目计划的内容
1)、概述 2)、阶段计划 3)、组织计划 4)、测试计划 5)、变动控制计划 6)、文档计划 7)、培训计划 8)、复审和报告计划 9)、安装和运行计划 10)、配置计划 11)、索引
10.1.3 软件项目计划与进度
2、项目成本估算 1)、自顶向下估算 2)、自底向上估算
10.2.2 软件质量度量
2、ISO/IEC 9126软件质量模型
ISO/IEC三层模型来自McCall 等人的模型。在这个 标准中,三个层次中的第一层称为质量特性,第二 层称为质量子特性,第三层称为度量指标。该模型 的质量特性抽象为6个,其中每个质量特性又包括 了一些质量子特性,如表10-3所示。
10.1.1项目管理基础
1)、项目管理的六要素
项目管理的因素很多,但项目目标的实现通常受六个 因素的制约,分别为范围、时间成本、质量、组织及 客户满意度,称为项目管理的六要素。
2)、项目管理的特点
(1)、项目管理是一项复杂的工作。 (2)、项目管理具有创造性。 (3)、项目管理的组织具有特殊性。
10.2.2 软件质量度量
1、McCall软件质量模型
图10-3 McCall软件质量模型
10.2.2 软件质量度量
质量因素 正确性 可靠性 可用性 效率 完整性
可测试性 灵活性
可维护性 可移植性
复用性 互用性
表10-3 软件质量准则
软件质量准则
可追踪性、一致性、完备性 容错性、准确性、简单性、一致性 可操作性、易培训性 可操作性、执行效率 安全性、工具性、可审查性 简单性、模块性、工具性、自描述性 一致性、模块性、通用性、可扩充性、自描述性 一致性、简单性、工具性、简明性、模块性、自描述性 模块性、自描述性、通用性、硬件独立性、软件独立性 通用性、模块性、硬件独立性、软件独立性、自描述性 模块性、自描述性、通信通用性、数据通用性