1、软件项目管理实用教程习题答案编者: 完成日期: 第一章 绪论1. 名词解释(1) 项目:项目是为完成某项独特的产品、服务或成果所做的临时性努力。(2) 项目群:项目群是为了实现某一战略目标而以协同方式管理的一组项目。(3) 子项目:子项目是项目的一个阶段或一个部分,可被相对独立地进行管理,也可外包给外部单位或组织内的其它职能单位。(4) 软件项目管理:软件项目管理是项目管理中的一个特殊领域,它是以软件项目为对象的系统管理方法,它运用相关的知识、技术和工具,对软件项目周期中的各阶段工作进行计划、组织、指导和控制,以实现项目目标。2. 问答题(1) 下列哪些活动不是项目?l 探索火星生命迹象。l
2、向部门经理进行月工作汇报。l 开发新版本的操作系统。l 每天的卫生保洁。l 组织一次校园歌唱比赛。l 一次集体婚礼。答:“向部门经理进行月工作汇报”和“每天的卫生保洁”不是项目。(2) 软件产品具有哪些特点?软件项目有哪些特点? 答:软件产品具有以下特点:l 复杂性:复杂性。软件实体可能比任何人类创造的其它实体都复杂。l 不一致性。软件工程中不存在像物理学、化学等传统学科中的那些通用原理,许多软件中的问题毫无规则可言。l 可变性。由于软件是纯粹的逻辑思维的产物,它可以很容易地被改变,可以无限地扩展。l 不可见性。软件是逻辑实体,不具有空间的形体特征,因此是不可见的和无法可视化的。软件项目具有以
3、下特点:知识密集型,技术含量高;涉及多个专业领域,多种技术综合应用;项目范围和目标具有较大灵活性;风险大,收益大;客户化程度高;强调过程管理的重要性。(3) 为什么说学习软件项目管理是非常重要的?答:学习软件项目管理的重要性体现在以下两个方面:(a) 对于软件项目的成功是至关重要的。软件项目涉及大量的人员和活动,有进度和资金限制,并会遇到各种变化、风险和矛盾,必须有良好的管理才能成功。(b) 对提高软件开发人员的专业素质是必不可少的。为了适应团队开发,软件专业人员必须具有团队协作能力,能够理解软件项目在进度、成本、质量、人员等方面的计划和相应的措施,从而更有效地工作并为所在企业创造价值。特别是
4、那些处于管理岗位上的人员, 更要有项目管理的知识和技能。(4) 你认为在一个软件项目中,为保证软件项目的成功,主要应注意哪些方面的管理? 答:在软件项目中,主要应进行以下方面的管理:(a) 项目时间管理。项目活动定义、排序、历时估算,进度计划的编制和进度控制。(b) 项目成本管理。项目成本的估算、预算和成本控制。(c) 项目质量管理。通过质量保证和质量控制手段,确保项目产品、服务或成果的质量满足用户要求。(d) 项目范围管理。项目范围规定了一个项目中有哪些工作,范围管理就是对项目的范围进行规划、定义、核实和控制。(e) 项目人力资源管理。保证最有效地使用人力资源,包括分配项目角色,项目团队的组
5、建、团队建设、绩效管理等。(f) 项目沟通管理。保证项目干系人之间顺畅而充分的信息交流,包括确定项目干系人的信息需求,信息发布,搜集与传播项目的绩效信息等。(g) 项目风险管理。对项目可能遇到的各种风险进行识别、分析、应对和监控。(h) 软件配置管理。软件项目的配置项种类繁多且处于不断的变更之中,为了使项目顺利进行并保证软件产品的质量,这些配置项的变更必须得到控制,保证它们的完整性、一致性和可追溯性。(i) 软件过程管理。软件产品的质量标准必须通过严格控制的软件过程来达到,而大型软件项目的过程是高度复杂和灵活的,因此必须关注软件过程的管理和持续改进。(5) 软件项目的生命周期通常可分为哪几个阶
6、段?各阶段需完成哪些任务?答:软件项目的生命周期通常可划分为以下四个阶段:(a) 项目启动阶段。在此阶段要发现项目机会,识别客户需求,在此基础上定义项目目标和初始范围;落实项目的初步财务和人力资源,选定项目经理并授权开始项目。(b) 项目规划阶段。在此阶段要为实现目标而制定行动方案,针对项目的范围、进度、成本、质量、风险、人力资源等方面进行规划,形成项目管理计划文件。(c) 项目执行阶段。在该阶段管理人员要指导项目组成员完成项目管理计划中所确定的工作,从而满足客户的需求,在该阶段的末尾通常需要对项目产品或服务进行验证。在这一阶段还要不断监控项目的执行过程,测量项目的实际进程和质量指标是否与计划
7、一致。(d) 项目收尾阶段。在该阶段要进行项目移交和总结工作,确认所有的项目可交付物都已移交给客户,所有的费用都已经清算。对项目承担者来说,要对项目过程进行总结,得到对本组织的改进有益的经验教训。(6) 软件项目管理为什么要坚持具体问题具体分析原则?答:软件项目管理的知识体系与数学、物理等学科不同,它不存在“公理系统”,其理论体系不是由公式和定律组成,而是由经验性的原则和方法组成,其解决问题的主要方式也不是套用定律进行推理,而是针对具体项目情况对原则和方法灵活运用。不存在任何情况下都适用的方法,因此要坚持具体问题具体分析。要做一个优秀的项目管理者,要具备一定的经验,要学好软件项目管理,不仅要从
8、书本上学习理论知识,还要善于积累实践经验。(7) 软件项目管理的系统方法具有哪些特征?答:系统方法是处理复杂问题的常用方法,软件项目管理的系统方法具有以下特征:l 对系统各组成部分之间的关系进行评价;l 将各组成部分集成和匹配到一个统一的整体中;l 将所有活动整合到一个有意义的系统化的动态过程中;l 寻找解决问题的最佳方案和策略。l 保证解决问题时的客观性。系统方法要求我们把项目看作一个动态系统,其中的人、过程和工具紧密配合,各种项目活动密切关联且相互制约。另外,系统方法强调客观性,即客观地看待事物,避免主观意识的偏差。这意味着在项目管理工作中要重视数据的收集和分析,以实证的方式评价工作成果。
9、第 2 章 软件项目立项和规划1. 问答题(1) 一般应从哪几个方面评价一个软件项目的可行性?答:一般来说,应该从以下两个方面分析项目的可行性。(a) 技术可行性使用现有的技术能实现项目目标吗?(b) 经济可行性这个项目的经济效益如何?在必要时还应该从用户环境、法律、社会等更广泛的方面研究项目的可行性。(2) 在软件项目中使用开源软件有哪些好处?应注意哪些方面的风险? 答:使用开源软件能为软件项目带来以下好处:(a) 节省成本、提高开发效率。在开源软件的基础上进行定制和二次开发,不需要“重新发明轮子”。(b) 开放和自由。开源软件通常符合开放标准,使用户不会被个别商业公司的专有标准束缚。由于用
10、户拥有源代码,可以进行定制、修改和扩展,比使用商业软件灵活和自由得多。(c) 公开透明。开源软件的代码是公开的,可保证安全性,适用于涉及国家或商业安全的领域。(d) 提供良好的学习平台。通过阅读源代码、文档、社区网站上的讨论等,可以理解开源软件的架构、设计,观察技术决定的决策过程等,对于开发人员技术水平的提高有很大促进作用。使用开源软件也存在着一定的风险,主要包括:(a) 质量风险。绝大多数开源软件许可证都有免责条款,这意味着如果软件出现质量问题,没有人为用户负责。(b) 开源软件不提供技术支持和服务承诺,这可能会给开源软件的使用和维护造成困难。(c) 法律风险。法律风险主要来自著作权、专利和
11、开源许可证。(3) 合同项目的投标书一般包含哪些方面的内容?对于软件项目来说,投标书的主要内容一般可以分为两大部分:商务标部分和技术标部分。商务标部分的主要内容有:(a) 投标函和法定代表人授权委托书。(b) 投标报价详细预算。(c) 投标方资质证明材料。技术标部分用于提供完整的技术方案,其主要内容有:(a) 系统需求分析。(b) 系统解决方案。主要包括系统的总体架构,各子系统的解决方案,软硬件平台, 关键技术等。(c) 项目进度安排。(d) 培训、售后服务和技术支持。(e) 项目实施风险分析。分析项目可能遇到的风险,风险的影响以及应对措施。(f) 项目验收工作计划。项目验收可能包括用户参与的
12、验收测试、系统试运行、项目交接工作等,对这些工作进行规划。(4) 项目合同通常包含哪些方面的内容?答:合同是客户和供应商之间具有法律效力的“契约”,明确规定了双方的责任和权利。合同的具体条款由当事人双方自行约定,但一般来说,软件项目合同应包含以下各项内容。l 权利与义务。l 供应的商品与服务。l 技术成果的归属。l 项目的质量要求。l 项目的各种期限。l 保密约定。l 验收标准和方法。l 价格和付款方式。l 违约处理方法。l 解决争议的方法。l 客户承诺。(5) 通用产品项目在产品构思阶段应主要考虑哪些问题?答:产品构思的目的是在宏观上搞清楚“开发什么”、“怎样开发”、“怎样获取利润” 等重要
13、问题。产品构思的主要内容包括:l 待开发产品的主要功能;l 待开发产品的技术方案;l Make-or-Buy 分析;l 开发计划;l 市场营销计划。(6) 通用产品项目的立项审批过程一般包含哪些步骤?答:首先,由立项申请者编写一份立项建议书,递交给有决策权的机构进行审批。由机构领导组织一个立项评审委员会来执行立项审批过程,该过程一般要经历以下步骤:第一步:评审准备。立项评审委员会主席确定评审会议的时间、地点和参加会议的人员名单(包括评审委员会成员、立项建议小组、记录员、旁听者等),并通知所有人员。主席将立项建议书及相关材料发给所有评委,各评委必须在举行评审会议之前阅读完毕,并及时与立项建议小组
14、交流。第二步:举行评审会议。会议开始时,主席宣布本次评审会议的议程、重点、原则、时间限制等。然后由立项建议小组陈述立项建议书的主要内容,之后进行答辩,评审委员会提出疑问,立项建议小组解答。双方应对有争议的内容达成一致意见。记录员记录答辩过程的重要内容,包括问题、结论、建议等。第三步:评估。立项建议小组退席。每个评审委员会成员认真评估该项目,给出同意或不同意立项的结论和意见建议。第四步:评审会议决议。评审委员会根据少数服从多数的原则,给出评审结论。主席撰写立项评审报告并递交给有决策权的机构领导。第五步:机构领导终审。机构领导可在立项评审报告中签署最终审批结论和意见。(7) 项目计划通常要对项目的
15、哪些方面进行规划?答:项目计划一般要对以下方面进行规划:(a) 项目目标与范围。(b) 项目的过程模型与技术方法。(c) 人力资源计划。(d) 软硬件资源计划。(e) 财务计划。(f) 进度计划。(8) 线性、迭代型、敏捷型过程模型分别具有什么特征?分别适用于什么类型的项目? 答:线性模型也就是我们通常所说的瀑布模型及其变体,它要求在项目初期就明确需求和解决方案,制定明确的开发计划,然后严格按计划执行。项目阶段间具有顺序性和依赖性, 上一阶段的输出结果是下一阶段的输入,逐步进行阶段性变换,最后得到用户认可的软件产品。每个阶段的工作通常与其前驱阶段和后继阶段有很大的差别,项目团队的组成和所需技能
16、也因项目阶段而异。由于这些特点,线性模型不适合需求频繁变换的项目。在迭代型过程模型中,每个项目阶段(称为迭代)执行一系列重复性的开发活动(分析、设计、编码、测试等),每次迭代结束时,将完成一个或一组可交付成果,用户和其他项目干系人应对这些可交付成果进行评估和反馈。项目团队应综合考虑反馈意见,在后续迭代中改进可交付成果,或创建新的可交付成果。项目团队会制定一个高层的迭代计划来指导整体实施,但一次只针对一个迭代期制定详细的范围描述。迭代型过程模型适合以下情况: 项目需求会不断变化;项目的规模大、复杂性高,需要通过增量交付来得到反馈意见和经验教训,以减小项目的风险。敏捷型(有时也称适应型或变更驱动型
17、)过程模型也包含迭代的概念,但不同之处在于,迭代很快,通常 2-4 周迭代一次,而且每次迭代所需的时间和资源是大致固定的。此外, 敏捷型过程模型强调用户的持续性参与,用户代表通过持续参与项目,在可交付成果的创建过程中提供反馈,确保产品能够反映他们的当前需求。敏捷型过程模型适用于以下情况:项目需求快速变化,能够以有利于用户的方式把项目可交付成果分解为一系列增量改进。2. 单选题(1) 以下有关开源软件的陈述,哪个是错误的?( )(A) 开源软件的代码是公开的,有利于保证安全性。(B) 开源软件是免费的,使用开源软件有利于降低成本。(C) 开源软件是良好的学习平台。(D) 开源软件通常不受著作权保
18、护。答案:D(2) 招标者只向一些经过筛选合格的供应商发出投标邀请,这种招标方式是( )。(A)公开的招标(B)非公开的招标(C)受限制的招标(D)已商定的招标过程答案:C(3) 在一个软件项目签署合同或通过立项评审后,负责筹备和启动项目的角色是( )。(A)软件架构师(B)项目经理(C)企业领导(D)用户代表答案:B(4) 以下哪个不是敏捷型过程模型的特征?( )(A) 迭代很快,通常 2-4 周完成一个迭代。(B) 强调用户的持续参与。(C) 要求在项目初期就获得完整而明确的用户需求。(D) 每次迭代所需的时间和资源是大致固定的。答案:C3. 名词解释(1) 净利润:项目的净利润是在项目的
19、整个生命周期中总成本和总收益之差。(2) 投资回报率:投资回报率也称作会计回报率,它提供了一种方法来比较净收益率与投资额,从而能够用来衡量投资效益的大小。有一些用于计算投资回报率的公式,但最简单而常见的形式是:投资回报率 = (平均年利润/总投资) 100%(3) 软件外包:软件外包就是企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成。(4) Make-or-Buy 分析:Make-or-Buy 分析是指确定产品中的哪些部分应当自行研发,哪些部分需要采购或外包开发。第 3 章 软件项目范围管理1. 问答题(1) 范围管理在项目中的作用是什么
20、?答:项目范围对项目的影响是决定性的,它确定了软件项目工作内容的多少。有效的范围管理可以保证项目只做必须做的事情,避免范围蔓延和做无用功,同时也避免不清晰的需求所导致的严重的系统缺陷。在项目前期做好范围的定义工作将对整个软件项目带来巨大的帮助,反之若范围定义不清晰,则可能造成项目进度拖延、成本超支、产品质量下降等严重后果。对于软件项目来说,由于不确定性较大,故在项目中后期的范围变更控制工作也很多, 范围控制的好坏对顺利实现项目目标也有较大的影响。(2) 软件项目的需求一般包括哪些类别? 答:软件项目的需求一般包括以下类别:(a) 界面需求:描述软件系统的外部特性,即系统如何从外部得到数据输入,
21、如何向外部输出数据。(b) 功能需求:列出软件系统必须完成的所有功能。(c) 性能需求:响应时间、吞吐量、处理时间、存储空间等方面的限定。(d) 质量需求:对安全性、保密性、可靠性、可维护性、可移植性、易用性等方面的要求。(e) 资源使用需求:对硬件、支持软件、数据通信接口等方面的要求。(f) 软件成本消耗与开发进度需求:即对时间和经济方面的要求。(g) 异常处理要求:在运行过程中出现异常情况(如临时性或永久性的资源故障,不合法或超出范围的输入数据、非法操作等)时应采取的行动以及希望显示的信息。(3) 获取需求的常用方法有哪些?答:获取需求的常用方法包括以下几种:(a) 访谈。访谈是通过与干系
22、人直接交谈来获取信息。(b) 讨论会。讨论会把主要项目干系人召集在一起,通过集中讨论来定义项目需求。(c) 观察用户工作流程。直接观察用户在其实际环境中怎样执行工作是一种行之有效的获取需求方法。(d)问卷调查。即设计一系列书面问题,向众多受访者收集信息。(e) 快速原型法。在软件开发的早期快速建立目标软件系统的原型,并据此征求用户对需求的反馈。(4) 软件需求规格说明书一般包括哪些内容?答:软件需求规格说明书一般包括下面三部分内容:(a) 功能特征描述。即软件系统向使用者提供什么样的功能。(b) 系统接口描述。即描述软件系统与其他软硬件系统之间的接口。(c) 质量特征描述。主要的质量特征包括性
23、能、可靠性、可移植性、机密性、可维护性等。(5) 项目范围说明书一般包括哪些内容? 答:项目范围说明书一般包括以下内容:(a) 产品范围描述。即项目所创造的产品的特性。(b) 验收标准。可交付成果通过验收前必须满足的一切条件。(c) 可交付成果。在某一过程、阶段或项目完成时,必须产出的可核实的产品和成果。(d) 项目的除外责任。通常需要识别出什么是被排除在项目之外的。明确说明哪些内容不属于项目范围,有助于管理项目干系人的期望。(e) 制约因素。需要列举并描述与项目范围有关且会影响项目执行的各种内外部制约或限制条件。(f) 假设条件。在制定计划时,一些未经验证就被视为正确、真实或确定的因素。由于
24、假设条件未经验证,因此构成项目的风险。对假设条件还应描述如果条件不成立,可能造成的潜在影响。(6) 创建 WBS 时所用的类比法具有什么特点?适用于什么情况?答:类比法就是参考类似的已经完成的项目的 WBS 和项目经验,根据当前项目特点做必要的调整,从而得到当前项目的 WBS。这种方法容易把握,而且可以在 WBS 分解中融入上一项目的经验和教训,从而得到结构更为良好的 WBS,有利于项目质量的改进。但类比法也有一定的局限性,需要有较完整的历史数据的支持,在缺乏历史数据的时候很难完成整 个项目的分解工作或分解的质量较低。这时就需要采用其他的分解方法作为辅助。一般来说, 如果软件组织经常性的在某一
25、行业或某一产品中重复多个项目,则项目过程的重合度比较高,很容易参考历史数据,类比法的使用效果较好。(7) 创建 WBS 时所用的自底向上归纳法具有什么特点?适用于什么情况?答:自底向上归纳是一个通过对细粒度工作的逐层归纳以得到整个项目 WBS 的方法。在采用这种方法时,通常会召集相关人员通过头脑风暴的方式完成。参加分解工作的人员根 据自己的理解识别项目中的工作,尽可能详细地列出完成项目所涉及的各项具体的工作任务, 然后对各项工作任务进行分类整合,归并到一个或者若干个更大的活动中,并构成 WBS 的 上一级内容。这种方法更适合不熟悉的项目,对于那些没有历史数据或不能找到有丰富经验 的专家的项目更
26、适合。通过自底向上归纳团队中不同成员的想法,更容易发挥团队的力量。但这种方法的缺点也是明显的,即分解过程的投入太大,会花费较多的时间和成本,因此这 种方法很少独立使用。2. 判断题(正确的打“”,错误的打“”)(1) 快速原型法使得用户可以体验最终产品,而不是仅限于讨论抽象的需求描述。( )(2) 在软件项目中,产品范围就是项目范围。()(3) 在创建 WBS 时,如果没有项目历史数据,且找不到经验丰富的专家时,适合用类比法。()(4) 在创建 WBS 时,项目工作分解得越细越好。()(5) 范围控制要通过变更控制系统和配置管理系统来完成?()3. 名词解释(1) WBS:工作分解结构(Wor
27、k Breakdown Structure, WBS)是对项目团队为实现项目目标、创建可交付成果而需实施的全部工作范围的层级分解,是对所有项目活动的结构化组织。(2) 范围蔓延:未经控制的产品或项目范围的扩大(未对时间、成本和资源做相应调整) 被称为范围蔓延。第 4 章 软件项目进度管理1. 问答题(1) 软件项目活动之间有哪几种逻辑关系?请结合具体的例子说明。答:活动之间的逻辑关系一般有下列几种:l 结束开始(Finish-Start),是指一个活动结束后,另一个活动才能开始。这是类最普遍也是最常用的活动关系类型。例如,插好网线后才可连接网络。l 开始开始(Start-Start),是指一个
28、活动开始后,另一个活动才能开始。这种关系类型常表示某种并行而且具有定依赖关系的活动。例如,在软件项目中,软件质量保证活动开始后,才能进行缺陷的计数。l 结束结束(Finish-Finish),一个活动结束后,另一个活动才能结束。例如,只有完成文档的编写,才能完成文档的编辑排版。l 开始-结束(Start-Finish),一个活动开始后,另一个活动才能结束。例如,只有第二位保安人员开始值班,第一位保安人员才能结束值班。(2) 什么是项目活动的最早和最迟开始时间、最早和最迟结束时间?什么是项目活动的总浮动时间和自由浮动时间?答:最早开始时间(Early Start,ES),指一个活动最早可以开始的
29、时间。最迟开始时间(Late Start),在不影响项目完工时间的情况下,一项活动最晚必须开始执行的时间。最早结束时间(Early Finish, EF),指一个活动最早可以完成的时间。最迟结束时间(Late Finish, LF),指在不影响项目工期的情况下,该活动最晚必须完成的时间。总浮动时间(Total Float, TF),是一个活动在不影响项目最早完成时间的情况下可以延迟的时间量。自由浮动(Free Float,FF)是一个活动在不影响其所有后置活动的最早开始时间的情况下,可以延迟的时间量。(3) 关键链法在哪些方面对关键路径法进行了改进?答:关键链法建立在关键路径法基础之上,它对关
30、键路径法主要做了以下几方面的改进。(1) 关键路径法是在不考虑任何资源限制的情况下,在给定活动持续时间和逻辑关系的条件下,分析项目的关键路径,而关键链法考虑了资源限制对项目活动逻辑关系及关键路径的影响。(2) 关键链法引入了缓冲和缓冲管理来应对项目的不确定性。(3) 关键链法考虑了人的心理行为因素和工作习惯,因为人是项目实施的主体,是项目最关键的资源。(4) 在制定项目进度计划的过程中,资源优化的目的是什么?答:资源优化就是根据资源供需情况,来调整进度计划。考虑到项目资源的有限性,在制定项目进度计划的过程中,项目管理人员需要对有限的资源进行优化,否则可能会造成高成本的项目活动实施和项目延迟,或
31、造成资源的过度使用或闲置。为了在资源需求和资源供给之间取得平衡,有时需要根据资源制约对活动的开始时间和结束时间进行调整。如果共享资源或关键资源只在特定时间可用,数量有限,或被过度分配,就需要进行资源优化。也可以为使资源使用量在整个项目期间保持均衡水平而进行资源优化。2. 选择题(1) 对某个项目活动的持续时间进行三点估算,得到其最乐观时间为 8 天,最悲观时间为24 天,最可能时间为 10 天,则该活动的持续时间期望值是(B)。(A)10 天(B)12 天(C)14 天(D)16 天(2) 快速跟进是指(A)(A) 采用并行执行任务,加速项目进度(B) 用一个任务取代另外的任务(C) 如有可能
32、,减少任务数量(D) 减轻项目风险(3) 赶工一个项目时,你应该关注(C)(A) 尽可能多的活动(B) 非关键活动(C) 加速执行关键路径上的活动(D) 通过成本最低化加速执行活动3. 分析题(1) 根据下表的活动历时和活动关系画出前导图和箭线图,指出关键活动及关键路径。活动活动历时前序活动A7B3C6AD3AE3D FF2BG3CH2G EC:6G:3A:7H:2D:3开始E:3B:3F:2答:前导图如下图所示:2C4AG18H9DBE3F6箭线图如下图所示:关键路径是网络图中最长的路径,因此该项目的关键路径是 A-C-G-H,其中的 A、C、G和 H 是关键活动。ESEFESEFESEFD
33、uration=6Task BDuration=7Task CDuration=5Task DES0EFLSLFLSLFESLSLFEFDuration=4Duration=3Task ATask GLFLFLSLSESEFESEFDuration=8Task EDuration=8Task FLSLFLSLF(2) 作为项目经理,你需要给一个软件项目做进度计划,经过任务分解后得到任务 A,B, C,D,E,F,G,下图是这个项目的 PDM 网络图。通过历时估计已经估算出每个任务的工期,现已标识在 PDM 网络图上。假设项目的最早开工日期是第天,请计算每个任务的最早开始时间,最迟开始时间,最早
34、结束时间,最迟结束时间,同时确定关键路径,并计算项目的工期和活动 F 的总浮动时间。答:采用正推法和逆推法计算出各任务的时间参数如下表所示:任务ESEFLSLFA0404B410612C12191219D19241924E412412F12201624G24272427关键路径是:A-E-C-D-G。项目的工期就是关键路径的长度,即 27 天。任务 F 的总浮动时间 TF=LS-ES =LF-EF =4 天。第 5 章 软件项目成本管理1. 问答题(1) 什么是软件项目的规模、工作量和成本?它们一般用什么度量单位来度量?答:软件项目规模一般是指所开发软件的规模大小,通常可以简单地用软件的代码行
35、数来表示,也可通过软件功能的多少来衡量。软件项目工作量是指为了提供软件的功能而必须完成的软件工程任务量,其度量单位为人月、人天、人年等,即人在单位时间内完成的任务量。软件项目成本是指完成软件项目所付出的代价,即待开发软件项目所需要的资金,通常用货币单位(如美元、人民币等)衡量。(2) 软件项目的成本一般由哪些部分构成?答:软件项目的成本构成主要包括以下几种:(a) 设备、软硬件购置成本。(b) 人工成本(软件开发、系统集成费用):人工费用,主要是指开发人员、操作人员、管理人员的工资福利费等。(c) 维护成本: 在项目交付使用之后,给客户提供后续服务所必需的开支。(d) 培训费:项目完毕后对使用
36、方进行具体操作的培训所花的费用。(e) 业务费、差旅费。(f) 管理及服务费:这部分费用是指项目应分摊的公司管理层、财务及办公等服务人员的费用。(g) 其它费用: 除上述所列费用外,软件项目的成本中可能还会包含一些其它费用,包括:基本建设费用,如新建、扩建机房、购置计算机机台、机柜等的费用;材料费,如打印纸、磁盘等购置费;水、电、气费;资料、固定资产折旧费及咨询费等等。(3) 使用代码行和功能点度量软件规模各有什么优缺点?答:用代码行的数目来表示软件项目的规模简单易行、自然、直观。但是其缺点也非常明显:在软件项目初期需求不稳定、设计不成熟、实现不确定的情况下很难较为精确地估算出最终软件系统的代
37、码行数;软件项目代码行的数目通常依赖于程序设计语言的功能和表达能力,采用不同的开发语言,代码行数可能不一样。用功能点来表示软件项目规模的好处是:软件系统的功能与实现该软件系统的语言和技术无关,而且在软件开发的早期阶段(如需求分析)就可通过对用户需求的理解获得软件系统的功能点数目,因而该方法可以较好地克服基于代码行的软件项目规模表示方法的不足。功能点方法的缺点主要体现在:功能点计算主要靠经验公式,主观因素比较多;该方法没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统;此外计算功能点所需的数据不好采集。(4) 项目成本估算的依据是什么?答:成本估算的依据(输入)包括工作分解结构、资源需求、资
38、源单价、进度计划、历史信息等内容。根据工作分解结构(WBS),可将整体成本分解到各工作包中,使成本的估算能够分项进行,各个工作包的成本估算能够做到尽量的准确合理。资源需求(Demand of Resource, DR)是进行成本估算的基础,用来说明所需资源的类型和数量以及分配情况。资源单价(Price of Resource, PR)与该种资源的需求量相乘即可得到该资源的成本。如果某项资源的单价不清楚,则必须首先对资源单价进行估价。进度计划中的活动持续时间会影响项目成本估计。历史信息是保证项目成本估算顺利进行的重要参考,包括过去项目的规模、进度、成本数据等。通常历史信息的来源主要有项目文档、商
39、业成本估算数据库、项目成员的经验知识等三个方面。(5) 简述项目成本的类比估算方法及其特点。答:类比估算就是通过把当前项目与以往一个或多个项目比较来进行成本估算。该方法运用类似项目的成本资料进行新项目的成本估算,并根据新项目与类似项目之间的差异对估算进行调整。实用该方法需要对以往项目的特性了解得足够清楚,以便确定它们和新项目之间的匹配程度。类比估算法成本较低,耗时较少。在项目详细信息不足时,例如在项目的初期阶段,经常使用类比估算法来估算成本数据。(6) 简述项目成本的自底向上估算方法及其特点。答:自底向上估算方法首先对单个工作包或活动的成本进行最具体、细致的估算,然后把这些细节性成本向上汇总到
40、更高的层次。自底向上估算的准确性和其本身所需的成本,通常取决于单个活动或工作包的规模和复杂程度。这种估算方法的优点在于,因为每项工作的执行者负责对该项工作进行成本估算,比起高层管理人员来讲,这些直接参与项目建设的人员更清楚项目涉及活动所需要的资源量,估算的专业性和准确性都较高。但缺点是通常花费时间长,工作代价高。(7) 什么是成本预算?它与成本估算有什么关系?答:成本预算是一项制定项目成本控制标准的项目管理工作。它是将批准的项目总成本估算按照进度分配到项目各项具体工作中,进而确定成本基准。成本基准是按时间段分配的预算,用于与实际成本支出结果进行比较,从而对成本实施情况进行监控。所以成本预算又称
41、为之制定成本计划。成本估算和成本预算既有区别又有联系。成本估算的目的是估计项目的总成本和误差范围,而成本预算是将项目的总成本分配到各项工作上。成本估算的输出结果是成本预算的基础与依据,而成本预算则是将项目成本估算进行分摊。2. 单选题(1) 以下哪一项不是项目成本类比估算方法的特点?(B )(A) 通过把当前项目与以往一个或多个项目比较来进行成本估算。(B) 利用历史数据之间的统计关系,通过建立数学模型来进行成本估算。(C) 该方法成本较低,耗时较少。(D) 该方法适合在项目详细信息不足时(例如项目初期)使用。(2) 在基本 COCOMO 模型中,用一个以(A )为自变量的函数来计算软件开发工
42、作量。(A)千代码行数(B)功能点数(C)对象数(D)页面数(3) 在(C )模型中,采用了“阶段敏感工作权数”对成本估算进行调整。(A)基本 COCOMO(B)中间 COCOMO(C)详细 COCOMO(D)嵌入式 COCOMO3. 计算题项目原来预计 2012 年 10 月 10 日完成 10 万元的工作,但是到该日期时只完成了其中8.5 万元的工作,而为了完成这些工作实际花费了 9 万元。请用挣值分析法计算在 2012 年10 月 10 日项目的成本偏差、进度偏差、成本效能指数和进度效能指数各是多少? 答:根据题意,可得到 2012 年 10 月 10 日的下列基本值:BCWS = 10
43、 万元,BCWP = 8.5 万元,ACWP = 9 万元。则成本偏差 CV = BCWP ACWP = 8.5 万元 -9 万元 = -0.5 万元进度偏差 SV = BCWP BCWS= 8.5 万元 10 万元 = -1.5 万元成本效能指数 CPI = BCWP/ACWP = 8.5 万元/9 万元 = 0.94进度效能指数 SPI = BCWP/BCWS = 8.5 万元/10 万元 = 0.85第 6 章 软件项目质量管理1. 问答题(1) 什么是软件质量、质量属性、质量要素?答:软件质量就是软件与用户需求相一致的程度。具体地说,软件质量是软件符合明确叙述的功能和性能需求、以及所有
44、专业开发的软件都应具有的隐含特征的程度。软件质量是软件的一个综合特征,不能靠单一的指标来衡量,它是许多质量属性的综合体现。软件的质量属性有很多,常见的有正确性、健壮性、可靠性、性能、易用性、安全性、可扩展性、兼容性、可移植性等。在软件项目中,对于软件的各种质量属性并不是放在同等重要的位置上,项目组织应该把关注点放在那些用户最关心的,对软件整体质量影响最大的质量属性上,这些质量属性称为“质量要素”。(2) 全面软件质量管理包括哪些部分?各部分的作用是什么?答:全面软件质量管理包括制定质量管理计划、技术评审、软件测试、过程检查、缺陷跟踪和软件过程改进。各部分的作用是:通过制定质量管理计划来规划软件
45、项目中的各种质量管理活动,通过技术评审和软件测试发现软件缺陷,通过过程检查保证软件过程和产品符合既定的规范,通过缺陷跟踪保证发现的缺陷和问题被正确记录、跟踪和处理。软件过程改进的目的是提高软件组织的技术水平和规范化水平,从而为保证软件质量提供基础。(3) 什么是缺陷跟踪?请简述一个典型的缺陷跟踪流程。答:缺陷跟踪是指从缺陷被发现开始到被改正为止的整个跟踪流程。以下是一个典型的缺陷跟踪流程。一个缺陷被报告后,其状态被设置为“打开(Open)”,它被分配给一个开发人员进行修复,此时缺陷状态设置为“已分配(Assigned)”,然后开发人员开始修复缺陷,修复完毕后,将缺陷状态设置为“已解决(Reso
46、lved)”,此时测试人员可以开始回归测试,如果回归测试通过,确认缺陷已被修复,则将缺陷处理状态设置为“已验证(Verified)”,否则退回给开发人员重新进行修复。一个缺陷结束了其生命周期后,可将其关闭,其处理状态变为“已关闭(Closed)”。已被关闭的缺陷如果在某些情况下被发现仍有问题,可以将其重新打开,使其处理状态变为“重新打开(Reopened)”,以便再分配给开发人员进行修复。(4) 请解释软件过程和软件过程改进的含义。答:软件过程(Software Process)是指开发和维护软件产品的活动、技术、实践的集合。软件过程描述了为了开发和维护用户所需的软件,什么人(who)、在什么时侯(when)、做什么事(what)以及怎样做(how)。软件开发的过程观认为,软件是由一组软件过程生产的,因此软件质量和生产率在很大程度上是由软件过程的质量和有效性决定的,而软件过程可以被定义、控制