软件工程理论与实践 (吕云翔)第十四章 软件维护与软件工程管理课后习题与解析
第十四章 软件维护与软件工程管理
1.判断题
(1)代码行技术是比较简单的定量估算软件规模的方法。(√)
(2)功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。(√)
(3)常用的制订进度计划的工具主要有Word和Excel两种。(×)
解析:制订进度计划常用的工具不仅限于Word和Excel,还包括专门的项目管理工具和甘特图软件等
(4)民主制程序员组的一个重要特点是,小组成员完全平等,享有充分民主,通过协商做出技术决策(√)
(5)主程序员组的两个关键特性是专业化和层次性。(√)
(6)现代程序员组中,技术组长既负责技术工作,又负责非技术事务。(×)
解析:现代程序员组中,技术组长通常负责技术工作,而非技术事务通常由项目经理或其他管理人员负责。
(7)风险有两个显著特点,二个是不确定性,另一个是损失。(√)
(8)回避风险是指,风险倘若发生,就接受后果。(×)
解析:回避风险是指采取措施来避免风险的发生,而不是接受风险后果。
(9)软件质量保证的措施主要有,基于非执行的测试(也称为复审)、基于执行的测试和程序正确性证明。(√)
(10)总体上说,软件工程文档可以分为用户文档、开发文档和管理文档3类。(√)
(11)文档是影响软件可维护性的决定因素。(√)
(12)适应性维护是在软件使用过程中,用户会对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之在功能和性能上得到完善和增强的活动。(√)
(13)进行软件维护活动时,直接修改程序,无须修改文档。(×)
进行软件维护活动时,除了修改程序外,也需要相应地修改相关的文档,以保持一致性和可维护性。
(14)软件生命周期的最后一个阶段是书写软件文档。(×)
解析:软件生命周期的最后一个阶段通常是维护阶段,其中包括维护文档、更新文档等活动。
(15)CMM是指导软件开发的一种面向对象的新技术。(×)
解析:CMM 代表“Capability Maturity Model”(能力成熟度模型),它是一个用于评估和指导软件开发过程的框架。CMM 并不是一种面向对象的新技术,而是一种管理和评估软件开发过程成熟度的方法。它有不同的级别,每个级别表示组织的软件过程能力的不同成熟度水平。 CMM 有五个级别,从初始级别(Level 1)到优化级别(Level 5)。每个级别都定义了一组特定的过程目标和实践。
2.选择题
(1)软件工程针对维护工作的主要目标是提高软件的可维护性,降低(B)。
A.维护的效率
B.维护的工作量
C.文档
D.维护的代价
解析:软件工程在维护工作中的主要目标是提高软件的可维护性,降低维护的工作量
(2)(B)的作用是为有效、定量地进行管理,把握软件工程过程的实际情况和它所产生的产品质量。
A.估算
B.度量
C.风险分析
D.进度安排
解析:度量的作用是为了有效、定量地进行管理,以了解软件工程过程的实际情况和产品质量。
(3)LOC和FP是两种不同的估算技术,但两者有许多共同的特征,只是LOC和FP技术对于分解所需要的(A)不同。
B.分解要求
C.使用方法
D.改进过程
A.详细程度
解析:LOC(Lines of Code,代码行数)和FP(Function Points,功能点)是两种不同的估算技术,它们在分解软件所需的详细程度上有所不同。
(4)项目团队原来有6个成员,现在又增加了6个成员,这样沟通渠道增加了多少?(A)
A.4.4倍
B.2倍
C.6倍
D.6条
解析:原来有6个成员时,沟通渠道数为6(6-1)/2 = 15。现在增加了6个成员,总共有12个成员。新的沟通渠道数为12(12-1)/2 = 66。
所以,新的沟通渠道数相对于原来增加了66-15=51条。
51/15 *100%=3.4倍
但是每这个选项。
(5)下列哪项不是风险管理的过程?(D)。
A.风险规划
B.风险识别
C.风险评估
D.风险收集
解析:风险管理的过程包括风险规划、风险识别和风险评估,但不包括风险收集
(6)按照软件配置管理的原始指导思想,受控制的对象应是(C)
A.软件过程
B.软件项目
C.软件配置项
D.软件元素
解析:按照软件配置管理的原始指导思想,受控制的对象是软件配置项。
(7)下面(D)不是人们常用的评价软件质量的4个因素之一。
A.可理解性
B.可靠性
C.可维护性
D.易用性
解析:人们常用的评价软件质量的四个因素是可理解性、可靠性、可维护性和可用性
(8)使用软件时提出增加新功能,就必须进行(C)维护。
A.预防性
B.适应性
C.完善性
D.纠错性
解析:当用户提出增加新功能时,需要进行完善性维护来满足新需求。
(9)软件维护的副作用是指(C)。
A.运行时误操作
B.隐含的错误
C.因修改软件而造成的错误
D.开发时的错误
解析:因修改软件而造成的错误。软件维护的副作用指的是在修改软件过程中可能引入新的错误。
(10)软件文档是软件工程实施的重要成分,它不仅是软件开发各阶段的重要依据,而且
也影响软件的(B)。
A.可用性
B.可维护性
C.可扩展性
D.可移植性
解析:软件文档不仅是软件开发阶段的重要依据,还影响软件的可维护性。
(11)影响软件可维护性的主要因素不包括(C)。
A.可修改性
B.可测试性
C.可用性
D.可理解性
解析:影响软件可维护性的主要因素包括可修改性、可测试性、可理解性,但不包括可用性。
(12)CMM表示(A)。
A.软件过程成熟度模型
B.软件配置管理
C.软件质量认证
D.软件重用
解析:CMM代表软件过程成熟度模型,用于评估和指导软件开发过程的成熟度。
3.简答题
(1)请简述软件项目管理和软件工程的区别和关系。
软件项目管理和软件工程的区别和关系:
- 软件项目管理是指对软件项目进行规划、组织、协调和控制的过程,以达到项目目标。它关注项目的进度、成本、质量和风险等方面的管理。
- 软件工程是一门学科,涉及开发、维护和管理软件的原理、方法和工具。它关注软件生命周期的各个阶段,包括需求分析、设计、编码、测试和维护等。
软件项目管理和软件工程的关系在于:
- 软件项目管理是软件工程的一部分,它负责管理软件项目的执行过程,确保项目按计划进行。
- 软件工程提供了开发软件所需的方法和工具,为软件项目管理提供支持和指导,帮助实现项目的目标。
(2)请简述软件估算的意义。
- 为项目决策提供依据:估算结果可以帮助决策者评估项目可行性和资源需求,做出是否启动项目的决策。
- 为项目计划提供依据:估算结果可以帮助制定合理的项目计划,合理安排资源和时间,提高项目执行的可控性。
- 为项目交付提供依据:估算结果可以帮助与客户或利益相关者达成共识,明确项目目标和交付期限。
(3)怎样进行代码行LOC度量?怎样进行功能点FP度量?
- 代码行LOC度量:代码行数(Lines of Code)是一种度量软件规模的方法。通过统计源代码中的有效行数(排除空行和注释),可以估算出软件的规模大小。LOC度量可以通过代码编辑器或专门的工具进行统计。
- 功能点FP度量:功能点(Function Points)是一种度量软件功能规模的方法。它基于用户可见的功能需求,将软件系统划分为独立的功能模块,通过对这些模块的评估和加权计算,得出软件的功能点数。FP度量可以通过专门的工具或手工计算进行估算。
(4)请简述制订进度计划的两种方式。
- 基于任务的进度计划(Task-based Scheduling):该方式根据项目的任务和工作包来制定进度计划。对于每个任务,确定其开始时间、结束时间、持续时间和依赖关系,并进行任务分配和资源安排。通过对任务的逐一安排,形成全面的进度计划。
- 基于里程碑的进度计划(Milestone-based Scheduling):该方式以项目的关键里程碑为基础来制定进度计划。将项目划分为若干个关键阶段或阶段性目标,并确定每个里程碑的完成时间。通过控制和追踪里程碑的完成情况,来管理整个项目的进度。
(5)目前项目开发时常用的小组组织方法有哪些?
- 瀑布模型:将开发过程划分为一系列线性阶段,每个阶段依次进行,各个阶段之间有明确的交付物和阶段评审。适用于需求明确、变化较少的项目。
- 敏捷开发:采用迭代、增量的方式开发软件,将需求分解为用户故事或任务,每个迭代周期内完成一部分功能,并经常与客户进行交互和反馈。适用于需求变化频繁、灵活性要求高的项目。
- 增量式开发:将项目划分为多个独立的模块或子系统,每个模块独立开发和测试,然后逐步集成形成完整的系统。适用于大型项目或多个团队合作开发的项目。
(6)请简述主程序员组的优缺点。
优点:
- 经验丰富:主程序员拥有丰富的开发经验和技术能力,能够提供指导和支持,确保项目的技术实现达到高质量标准。
- 统一风格:主程序员能够统一团队的编码风格和规范,提高代码的可读性和可维护性。
- 技术传承:通过与其他成员的合作和指导,主程序员能够传授技术知识和经验,提升整个团队的能力水平。
缺点:
- 依赖性高:团队成员高度依赖主程序员的指导和支持,缺乏独立解决问题的能力。
- 单点风险:如果主程序员离开或无法参与项目,可能会对项目进展和质量造成影响。
- 沟通成本:主程序员需要花费较多的时间和精力与其他成员进行沟通和协调,可能增加项目管理的复杂性。
(7)民主制和主程员制各存在什么问题?
- 民主制问题:在民主制下,团队成员的意见可能分散,决策过程较为缓慢,难以达成一致。可能出现决策权不明确、权责不对等等问题。
- 主程员制问题:主程员制下,团队成员的能动性较低,缺乏主动性和创造性。可能出现对主程序员过度依赖、缺乏团队合作等问题。
(8)如何进行软件项目的风险分析?
- 风险识别:识别项目中可能出现的风险,包括技术风险、进度风险、需求风险等。可以通过头脑风暴、经验总结、文档分析等方法识别风险。
- 风险评估:对已识别的风险进行评估,确定其概率和影响程度。可以使用定性和定量方法进行风险评估,如概率-影响图、风险矩阵等。
- 风险优先级排序:根据风险的概率和影响程度,对风险进行排序,确定优先处理的风险。
- 风险应对策略:制定相应的风险应对策略,包括风险避免、风险转移、风险缓解和风险接受等。针对不同的风险,采取相应的措施进行应对。
(9)请简述软件质量的定义。
软件质量的定义:软件质量是指软件产品或系统在满足特定需求的同时,具备良好的性能、可靠性、可维护性、安全性等特征的程度。
(10)针对软件质量保证问题,最有效的办法是什么?
针对软件质量保证问题,最有效的办法是进行全面的软件测试。通过测试可以发现和修复软件中的缺陷和错误,确保软件在交付前具备高质量和稳定性。软件测试包括单元测试、集成测试、系统测试、验收测试等多个阶段,覆盖不同层次和不同方面的功能和性能。
(11)软件配置管理的目的是什么?
软件配置管理的目的是确保软件系统的可控性和可追溯性。它通过对软件配置项的标识、控制、记录和审计,管理软件系统的变更和版本,以满足软件开发和维护的需求。软件配置管理可以帮助保证软件开发过程的可控性,确保软件的正确性和稳定性。
(12)请简述软件配置管理的工作内容。
软件配置管理的工作内容包括:
- 配置标识:对软件中的配置项进行唯一标识,确保每个配置项都能被准确地识别和管理。
- 配置控制:管理软件配置项的变更,包括变更的提出、评审、批准和实施,确保变更的正确性和一致性。
- 配置记录:记录软件配置项的状态和历史信息,包括版本号、变更记录、发布信息等,以便追溯和回溯。
- 配置审计:对软件配置项进行审查和验证,确保软件的配置符合规定的标准和要求。
- 配置管理工具:使用专门的配置管理工具来支持配置管理的各项工作,提高效率和准确性。
(13)为什么要进行软件维护?软件维护的作用有哪些?
软件维护是指对已经交付使用的软件进行修改、改进和优化的过程。软件维护的目的是确保软件系统的稳定性、可靠性和可用性,满足用户的需求和期望。软件维护的作用包括:
- 缺陷修复:修复软件中的错误和缺陷,提高软件的质量和可靠性。
- 功能增强:根据用户需求和市场变化,增加、改进和扩展软件的功能,提升用户体验和竞争力。
- 适应环境变化:随着硬件、操作系统和外部接口的变化,对软件进行适应性修改,确保软件在新环境下的正常运行。
- 数据迁移:对数据库结构和数据进行调整和迁移,以满足新的需求或提高性能。
(14)软件维护的副作用表现在哪4个方面?
可读性下降、引入新缺陷、成本增加、兼容性问题
(15)请简述软件文档的意义。
- 知识传递和共享:软件文档记录了软件系统的设计、实现和使用等方面的知识,可以帮助团队成员之间进行知识传递和共享。
- 开发指导和规范:软件文档提供了对软件系统的整体结构、组件功能和接口等的描述,可以作为开发人员的指导和规范,帮助他们更好地进行开发工作。
- 系统理解和维护:软件文档可以帮助开发人员和维护人员理解软件系统的各个部分和功能,从而更好地进行系统的维护和修改工作。
- 用户培训和支持:软件文档可以作为用户使用软件的参考手册,提供使用说明、操作指南和故障排除等信息,帮助用户学习和使用软件。
- 质量保证和审计:软件文档可以作为软件质量保证和审计的依据,对软件系统进行评估和审查,确保软件的正确性和可靠性。
(16)假设你所在的信息系统开发公司指定你为项目负责人。你的任务是开发一个应用系统,该系统类似于你的小组以前做过的那些系统,不过这个规模更大而且更复杂一些。需求已经由客户写成了完整的文档。你将选用哪种小组结构?为什么?你准备采用哪(些)种软件过程模型?为什么?
在面对这个更大且更复杂的项目时,我会选择采用瀑布模型的小组结构。瀑布模型适用于规模较大、需求相对稳定的项目,有明确的阶段划分和交付节点,便于控制和管理。小组结构可以将开发人员划分为不同的职能组,如需求分析组、设计组、编码组和测试组,每个组专注于自己的任务,并按照瀑布模型的阶段顺序进行工作。
对于软件过程模型的选择,我会采用增量模型和迭代模型的结合。增量模型将整个项目划分为多个增量,每个增量都是一个可交付的、具有完整功能的子系统。迭代模型则将每个增量划分为多个迭代,每个迭代都包括需求分析、设计、编码和测试等阶段。这种结合可以在保证整体进度的同时,允许在每个迭代中进行反馈和调整,减少风险和提高开发效率。
综上所述,我会选择瀑布模型的小组结构,并采用增量模型和迭代模型的结合作为软件过程模型。这样可以在保证项目控制和管理的同时,灵活应对需求和变更,并逐步交付具备完整功能的子系统。
致词:
软件工程十四章课后习题已经全部更新完成,谢谢大家!如有问题,可在评论区指出!