软件过程改进

一、术语(29道)每题4分

  1. 软件生存周期
    软件生存周期(software life cycle)又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。
    SDLC的六个阶段:1. 定义及规划2.需求分析3. 软件设计4.程序编码5.软件测试6.运行维护

  2. 项目
    项目是指一系列独特的、复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间、预算、资源限定内,依据规范完成。项目是为创造独特的产品、服务或成果而进行的临时性工作。
    项目参数包括项目范围、质量、成本、时间、资源。

  3. 里程碑
    在制定项目进度计划时,在进度时间表上设立一些重要的时间检查点,这样一来,就可以在项目执行过程中利用这些重要的时间检查点来对项目的进程进行检查和控制。这些重要的时间检查点被称作项目的里程碑(Milestone)。

  4. 软件度量
    软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。

  5. 功能点分析
    功能点分析方法是最重要也是最有效的软件测量规模方法,它可以在项目早期就对软件项目进行测量,并在开发过程中不断地更新数据,从而实现一种持续一致的管理。从应用方面看,全球已经有成千上万个项目采用了功能点分析方法。从研究方面来看,功能点分析方法也已成为很多其他新型测量方法的基础。
    功能点分析是项目工作量估算的一种常用方法,可用7个步骤概括:1.确定功能点计算的类型;2.确定计算范围和应用程序边界;3.确定所有数据功能及其复杂性;4.确定所有事务功能及其复杂性;5.得出未调整功能点计数;6得出基于系统基本特征的值调整因子;7.计算已调整功能点计数。

  6. 工作分解结构(WBS)
    WBS是项目管理重要的专业术语之一。WBS的基本定义 :以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。无论在项目管理实践中,还是在PMP,IPMP考试中,工作分解结构(WBS)都是最重要的内容之一。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。WBS同时也是控制项目变更的重要基础。

  7. 软件质量
    软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特征相一致的程度。 影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。

  8. RMMM 计划(Risk Mitigation, Monitoring and Management Plan)
    软件项目风险管理是软件项目管理的重要内容。在进行软件项目风险管理时,要辩识风险,评估它们出现的概率及产生的影响,然后建立一个规划来管理风险。风险管理的主要目标是预防风险。
    软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。如果对项目进行风险管理,就可以最大限度的减少风险的发生。

  9. COCOMO 模型
    结构性成本模型。它是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。

  10. 项目计划评审技术
    计划评审技术就是工程项目当作一种系统,用网络图或者表格或者矩阵来表示各项具体工作的先后顺序和相互关系,以时间为中心,找出从开工到完工所需要时间的最长路线,并围绕关键路线对系统进行统筹规划,合理安排以及对各项工作的完成进度进行严密的控制,以达到用最少的时间和资源消耗来完成系统预定目标的一种计划与控制方法。

  11. 软件质量模型
    一个软件的质量往往涉及到许多不同的质量属性,不同类型的软件所关注的质量属性也不尽相同。因此, 为了更好地理解、预测和评价软件和信息系统的质量, 人们建立了各种质量模型, 在软件生命周期的不同阶段对软件质量进行评测。常用的通用软件质量模型主要包括层次模型和关系模型, 它们在当前的软件开发中起到了一定的积极作用。

  12. 基于时间的缺陷到达模式
    产品的缺陷密度、或者测试阶段的缺陷率是一个概括性指标,缺陷到达模式可以提供更多的过程信息,有时即使得到的整体缺陷率是一样的,但其质量差异可能较大,原因就是缺陷到达的模式不一样。越多的缺陷到达越早,则测试过程质量就越好。无论是从测试进展的观点,还是从用户重新发现(customer rediscoveries)的观点来看,缺陷的过程跟踪是非常重要的,开发周期里大量的严重缺陷将有可能阻止测试的进展,也必然直接影响软件产品的质量和性能。定性的分析比较容易,测试团队越成熟,峰值到达得越早,有时可以在第一周末或第二周就达到峰值。这个峰值的数值取决于代码质量、测试用例的设计质量和测试执行的策略、水平等,多数情况下,可以根据基线(或历史数据)推得。从一个峰值达到一个低而稳定的水平,需要长得多的时间,至少是达到峰值所用的时间的4-5倍。这个时间取决于峰值、缺陷移除效率等等。
    在测试阶段初期,缺陷率增长很快。在达到峰值后,就随时间以较慢的速率下降,降低到最低点——零点。

  13. 软件过程
    软件过程为一个为建造高质量软件所需完成的任务的框架,即形成软件产品的一系列步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。
    (课件)
    人们在开发和维护软件机器相关产品时所涉及的各种活动、方法、实践和改革等。其中软件相关产品包括软件项目计划、设计文档、程序代码、测试用例和用户手册等。

  14. 软件基本过程
    软件获取、供应、开发、运行和维护的过程,包括需求分析、软件设计、编码等过程。

  15. 软件支持过程
    包括文档编制过程、配置管理过程、质量保证过程、验证和确认过程(测试过程)、评审过程等。

  16. 软件组织过程
    对软件主要过程和支持过程的组织保证过程,包括管理过程、基础设施过程、改进过程和培训过程。

  17. 过程框架
    通过在软件过程环境中定义软件过程架构、软件过程改进规划图、软件过程评估、软件过程改进计划四项框架活动来建立适用于目标软件项目的基本概念结构。

  18. 软件能力成熟度模型
    软件能力成熟度模型是一种对软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述形成的标准。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。

  19. 统一过程
    统一过程主要分五个阶段:开启阶段(inception),细化阶段(elaboration),构建阶段(construction),移交阶段(transition),生产(production)。Rational Unified Process 是 Rational 公司开发和维护的过程产品。Rational Unified Process 是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

  20. 过程模式
    一系列用来面向对象软件的通用技术、行为或各种任务、过程模式的一个重要特性在于,它只描述了一个软件开发人员应该做什么,而没有确切地说明应该做哪些细节。当过程模式能够被有组织的应用在一起时,它们就可以被用来为软件开发改进机构生成软件过程。因为过程模式并没有指定如何完成一个给定的工作,它们能够成为可复用的积木。软件开发人员可以据此来定制一个满足软件开发机构的特定需求的软件过程。

  21. 个体软件过程
    PSP个人软件过程 (Personal Software Process,PSP) 是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。

  22. 团队软件过程 TSP
    团队软件过程是为开发软件产品的开发团队提供指导,TSP的早期实践侧重于帮助开发团队改善其质量和生产率,以使其更好的满足成本及进度的目标。TSP被设计为满足2~20人规模的开发团队,大型的多团队过程的TSP被设计为大约最多为150人左右的规模。
    团队软件过程(TSP)加上PSP帮助高绩效的工程师在一个团队中工作,来开发有质量保证的软件产品,生产安全的软件产品,改进组织中的过程管理。通过TSP,一个组织能够建立起自我管理的团队来计划追踪他们的工作、建立目标,并拥有自己的过程和计划。这些团队可以是纯粹的软件开发团队,也可以是集成产品的团队,规模可以从3到20个工程师不等。TSP团队在广泛领域里可能运用XP, RUP或其它方法。TSP使具备PSP的工程人员组成的团队能够学习并取得成功。如果你的组织运用TSP,它会帮助您的组织建立一套成熟规范的工程实践,确保安全可靠的软件。

  23. 过程规范
    过程规范就是对输入/输出和活动所构成的过程进行明文规定或约定俗成的标准。软件过程规范是软件开发组织行动的准则与指南,可以依据上述各类过程的特点而建立相应的规范,如软件基本过程规范、软件支持过程规范和软件组织过程规范。

  24. 过程模型
    所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。
    常见的模型包括瀑布模型、螺旋模型、增量模型、迭代模型、V模型等。

  25. 配置管理
    配置管理(Configuration Management,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。

  26. 配置项
    配置项指纳入配置管理范畴的所有项目。凡是纳入配置管理范畴的工作成果都是配置项(CI);一个纯软件的CIs通常也称为软件配置(CSCIs)。配置项主要有两大类:属于产品组成部分的工作成果;项目管理和机构支撑过程产生的文档。
    每个配置项的主要属性有:名称、标识符文件状态、版本、作者、日期等。

  27. 基线
    基线是项目储存库中每个工件版本在特定时期的一个“快照”。它提供一个正式标准,随后的工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。

  28. 预防性维护
    预防性维护是软件产品交付后进行的修改,以在软件产品中的潜在错误成为实际错误前,检测和更正它们。

  29. 适应性维护
    计算机领域的各个方面发展变化十分迅速,经常会出现新的系统或新的版本,外部设备及其他系统原件经常在改变,而应用软件的使用时间,往往比原先的系统环境使用时间更为长久,因此,常需对软件加以改造,使之适应于新的环境。为使软件产品在新的环境下仍能使用而进行的维护,称为适应性维护。

二、简答题(15道) 每题10分

  1. 试给出在 SEI 的 CMMI 模型中采用过程评估和改进方法的两个优点和两个缺点。

  2. 考虑你所在机构中所用的软件过程类型。使用 SEI 模型找出了多少个关键过程域?根据该模型,你所在机构的过程成熟度等级如何划定?

  3. 若过程改进中包括度量人在过程中的工作,并对过程进行彻底的变更,这样的项目是否是不人道的?对过程改进会发生哪些抵触行为?

  4. 给出 SEI 的 CMMI 不能适用的两个领域,并说明理由。

  5. 如何将现有的软件开发向敏捷开发方法转换?期间会遇到哪些困难,如何解决?

  6. 分析比较 CMMI、ISO15504 和 6sigma 之间的共同点和区别。

  7. 软件过程为什么必须进行改进?
    (软工课件)
    凡是活动,都存在过程;凡是过程,都存在改进;凡是改进,都没有终点。软件过程改进的必要性主要表现在以下几点:
    经过一段时间后,过程的性能区域降低;
    客户有越来愈高的需求;
    组织的过程是逐步成熟的;
    组织的目标可能是变化的;
    组织的环境是不断变化的;
    竞争对手在改进。

  8. 软件工程中引入软件过程的作用和意义是什么?
    (软工复习题)
    软件过程是软件生存期中的一系列相关软件工程活动的集合。每个软件过程是由一组工作任务、项目里程碑、软件工程产品和交付物、质量保证点等组成。
    软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程的优劣决定了软件质量的高低,好的过程是高效高质量的前提。

  9. 软件过程改进中如何管理变革?
    (课件)
    伙伴策略:依赖于个人之间的关系;利用研讨会、午餐会和活动来宣布和讨论需要改变的事情以及如何改变。
    政策策略:试图通过影响官方和非官方的领导人,使强大的组织结构发生变革‘寻找和说服那些最受尊敬、有众多支持者的人。
    经济策略:相信金钱具有最好的说服力;基于假设-人们的原动力的经济刺激。
    对抗策略:基于假设-如果能够唤起并调动起人们对当前问题的不满和愤怒,他们会愿意改变;更多地依赖于策略家的说服力,是人们感到现存的问题,但不提倡暴力。
    学术策略:假设如果你提供给人们足够的信息和正确的事实,他们会接受变革;通常产生雇主、专家和咨询的委员会的研究报告。
    工程策略:假设工作性质发生变化,许多人员不得不改变;对组织结构方面问题的强调,导致对环境很敏感。
    军事策略:依赖于严酷的武力或无知;时常被军队、警察、学生政治压力集团、政党所用重点是学习在斗争中使用武器;需要力量和敏捷,遵守纪律将受到奖励。

  10. 软件过程改进的框架的构成是什么?每个构成部分的作用是什么?
    (课件)
    1) 软件过程改进规划图
    作用:划分出过程改进中不同的阶段,并指出在每个阶段应具备什么样的特点和属性。
    2) 软件过程评估
    作用:对一个组织的软件过程进行评估与检查。通过评估可以帮助组织对当前的软件过程环境与基础有一个正确的认识。扮演了一个改进活动计划的催化剂的角色。
    3) 软件过程改进计划
    作用:根据评估所发现的问题,有针对性的制定过程改进方案。

  11. 描述在软件设计过程中的主要活动以及这些活动的输出。使用一个实体-­‐关系图(E-­‐R 图),说明在这些活动输出之间可能存在的关系。

  12. 论述度量在软件过程改进中作用。

  13. 什么叫集成化过程改进?它的意义是什么?

  14. 制定软件过程改进计划的流程是什么?解释其中的主要活动的作用和目的?

  15. 简述 CMMI-­‐DEV V1.3 中每一成熟度等级所包含的过程域。

(课件)
成熟度等级2(7个):需求管理、项目计划、项目监督和控制、供应合同管理、度量和分析、过程和产品质量管理、配置管理
成熟度等级3(11个):需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定义、组织级培训、集成化项目管理、风险管理、决策分析和解决方案
成熟度等级4(2个):组织级过程性能、项目定量管理
成熟度等级5(2个):组织级改革和实施、因果分析和解决方案

三、论述题(7道)每题20分

  1. 在什么情况下产品质量可能决定于开发团队的质量?举例说明什么类型的软件产品特别依赖于个人的天赋和能力。

  2. ISO 9001:2008 标准中的 PDCA 循环,又叫戴明环,是美国质量管理专家休哈特博士首先提出的,由戴明采纳、宣传,获得普及,从而也被称为 “戴明环” 。它是全面质量管理所应遵循的科学程序。论述它在评估软件项目质量管理中的作用和意义。

  3. 结合 CMMI 的实施,论述软件过程改进过程中主要阶段的作用。

  4. 复用的关键障碍之一是使软件工程师考虑利用现有的构件,而不是重新开发新构件,请建议 3 到 4 种软件组织可以用来激励软件工程师进行复用的方式。为了支持复用,应该采用什么技术?

  5. 论企业软件过程改进的实施。请围绕 “企业软件过程改进的实施” 论题,依次从以下四个方面进行论述:
    (1)叙述软件过程改进实施的主要活动。
    (2)概要叙述你参与实施的企业软件过程改进项目以及你所担任的主要工作。
    (3)论述该企业实施软件过程改进项目中如何根据企业的实际情况采用模型标准以及实施的主要方法和步骤。
    (4)具体阐述该企业在实施软件过程改进的活动中所发现并解决的主要问题和效果。

  6. 在当今 “3C” 的环境下,持续的改进是企业生存发展的永恒主题,其运用的工具不是单一的。某企业拟针对“某项服务顾客投诉率高”进行改进,在不同的阶段可采用哪些工具。

  7. 根据下图,分析说明 CMMI-­‐DEV V1.3 中,五个工程类过程域之间的互动关系。

  8. 如何将现有的软件开发向敏捷开发方法转换?期间会遇到哪些困难,如何解决?

  9. 总结本企业的基本过程模型。

  10. 本单位是否需要引入新的软件开发方法?分析原因并给出措施。

  11. 软件生存期与软件项目的生命期有什么区别?

  12. 你所在单位或项目组进行了哪些度量活动?你认为有需要改进的地方吗?

  13. 当前企业的业务都是在全球化、快速变化的环境中运营,传统的软件开发过程无法适应由此产生的快速软件需求。20 世纪 90 年代后期,一些软件开发人员在 “Agile Alliance 2001” 中系统地阐述了敏捷开发的原则,试图强调灵活性在快速且有效地生产软件中所发挥的作用。目前众多的软件生产企事业已经在实际的软件开发过程中接纳并实践了敏捷开发方法中的基本原则。
    问题 1:敏捷开发有许多典型方法,包括极限编程(eXtreme Programming)、Scrum、Crystal、DSDM 等。请问这些方法共同的基本原则是什么?
    问题 2:敏捷开发的支持者往往夸大该方法的优点,但是在实践中,敏捷方法的基本原则有时确实很难实施。请用 200 字以内的文字说明敏捷方法中哪些原则在实践中难以实施。
    问题 3:敏捷开发方法中最有名的极限编程。请说明极限中的结对编程(Pair Programming)的概念。
    问题 4:敏捷开发方法在具体实践过程中,往往需要开发环境或工具支持,一般称为快速应用开发技术和可视化开发技术。请用 150 字以以内的文字说明快速应用开发技术所包含的工具有哪些,并简要说明可视化开发技术的基本概念和技术原理。

发布了45 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhanglinlove/article/details/103438452