一、术语解释(本题有5小题,每小题2分,共10分)
1. 里程碑(milestone)
答-
在制定项目进度计划时,在进度时间表上设立一些重要的时间检查点,这样一来,就可以在项目执行过程中利用这些重要的时间检查点来对项目的进程进行检查和控制。这些重要的时间检查点被称作项目的里程碑(Milestone)。
2. 工作分解结构(WBS)
答-
WBS是项目管理重要的专业术语之一。WBS的基本定义 :以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。无论在项目管理实践中,还是在PMP,IPMP考试中,工作分解结构(WBS)都是最重要的内容之一。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。WBS同时也是控制项目变更的重要基础。
3. 过程模型(process model)
答-
所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。
常见的模型包括瀑布模型、螺旋模型、增量模型、迭代模型、V模型等。
4. 过程成熟度(process maturity)
答-
指对具体软件过程进行定义、管理、度量和控制的有效程度。随着软件组织的软件过程成熟度的提高,组织通过方针、标准和组织机构将其软件过程规范化。成熟度意味着能力上的增长潜力,并且表明一个组织软件过程的丰富性和在遍及组织的项目中运用它时的一致性。在成熟组织中,通常通过文档和培训使全组织有关人员对软件过程都能很好的了解,并且使该过程得到其用户不断的监控和改进。一个成熟软件组织的能力是已知的。软件过程成熟度意味着,由于运用组织的软件过程使过程纪律性一致增强,从而其软件过程所导致的生产率和质量能随时间的推移得到改进。
随着软件组织的软件过程成熟度的提高,组织通过方针、标准和组织机构将其软件过程规范化。规范化需要建立一种支持经营方法、实践和规程的基础设施及社团文化,使得在最初定义方法、实践和规程的人员离去后,它们仍能继续下去。
5. 过程域(PA,Process Area)
答-
是指互相关联的若干软件实践活动和有关基础设施的集合。每个软件能力成熟等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟都等级的目标起到保护作用,这些过程构成过程域。
二、简答题(本题有5小题,每小题6分,共30分)
1. 软件工程中引入软件过程的作用和意义是什么?
答-
软件过程是软件生存期中的一系列相关软件工程活动的集合。每个软件过程是由一组工作任务、项目里程碑、软件工程产品和交付物、质量保证点等组成。
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程的优劣决定了软件质量的高低,好的过程是高效高质量的前提。
2. 软件过程改进框架的构成是什么?每个构成部分的作用是什么?
答-
软件过程改进的框架包括软件过程基础设施、过程改进路线图、软件过程评估方法和软件过程改进计划。
每部分作用是:
(1)软件过程基础设施
它包含组织管理基础设施和技术基础设施,可为软件过程改进的活动提供必要的条件和支持。
(2)过程改进路线图
它应提供表明有效软件过程特征的模型,以及逐步达到有效软件过程的途径,软件组织依靠路线图的指引可以朝着有效软件过程前进。事实上,CMM(软件能力成熟度模型)和SPICE提供的成熟度等级都属于这种路线图。当然,软件组织从自身的实际情况出发对这些模型所作的裁剪版本,只要是适用的也应看成是过程改进路线图。
(3)软件过程评估方法
它是评估软件组织现行和现用的软件过程、做法和基础设施的方法和技术。评估通常要对照过程改进路线图,评估的结果要能表明,从提高过程有效性方面看哪些是强项,哪些是弱项。改进措施应能导致过程成熟度沿着改进路线图提高过程成熟度。过程评估方法可以是公开适用的标准方法,例如SEI评估方法即基于CMM估价的内部过程改进CBA—IPI(CMMfbased appraisal for internal process improvement)或BOOTSTARAP方法,也是按SPICE规定的准则进行内部评估。
(4)软件过程改进计划
评估后把发现的问题转化为软件过程改进的行动计划。这包括为改进过程基础设施以及提高其有效性必须采取的措施,过程改进应能使改进的过程规范化并提高过程的有效性。
3. 什么叫集成化过程改进?它的意义是什么?
答-
在软件过程的各种现代版本中,为适应各组织的学科,创建了不同的过程改进模型,开发了多种语言。这种多样性对于沟通问题产生不利影响。而集成化过程改进就是用来改变这种情况;通过提供一种单一的语言,使多种学科能够共享过程改进活动并关注一个统一的过程改进目标。
意义:1) 成本效益被理解,过程改进所获得的成本节省非常可观。相对于采用多个模型,一个连续改进的组织如果采用了公共模型,就可以减少以下费用:采用模型和评估方法所需的培训费用;在相同组织或人员执行各种评估需要的费用;在数据仓库中维护冗余数据的过程资产;维护或采用多种模型的专业知识。
2) 重点明确,集成化过程改进计划可以弄清楚各种活动的目的和商业目标。通过大范围的各种过程改进活动的集成,更容易把实践人员和主管的队伍团结在过程改进的目标下。有改进重点,能统一和加强思想,高效的安排和使用匮乏的资源,并为跨越不同学科的过程改进提供一种共同语言。特别是一个其有公共术语和公共评估方法的单一模型提供这类重点。
3) 过程集成,过程集成和精益组织。集成过程改进的一个不太明显的收益是它对组织产生的“集成”影响。当过程的定义跨越了组织和学科的边界时,通常会产生新的理解和相互学习,从而使关键工作统筹化,并消除了冗余的不必要的活动。“烟囱式”的过程改进通常假定组织的接口是有效的。在跨部门进行改进过程时,该组织可另外得到过程重构的效果。这种简化持精益概念,即努力消除产品中的浪费,为客户提供
4)灵活性,集成所带来的最后一个效益是适应和利用业务式工程环境变化的能力。
4. 启动软件过程改进的步骤是什么?每步的主要工作是什么?
答-
软件过程改进的步骤及每步的主要工作是-
(1)过程分析
考察和理解现有的过程,在一些情况下需要对过程的某些环节进行度量和定量分析,利用取得的数据来表明过程的状况。同时,这些数据可以用来与过程改进后的状况进行对比。
(2)确定改进
利用过程分析的结果,找出原有过程中质量、进度和成本的瓶颈。针对发现的问题,制定过程改进方案,提出需要采用什么规程、方法和工具的建议。
(3)过程变更
实施过程变更,把新的规程、方法和工具安置于合适的过程环节上,并且与其他的软件过程活动集成起来。
(4)培训
没有培训的过程变更在大多数场合注定要失败。有的单位在培训工作不够充分的情况下,强制推行过程变更,这样做不会收到好的效果。
(5)调整过程变更
在初步实施过程变更后,不可能立即收到圆满的效果,在过程修改后还可能会出现一些小的问题,这就需要进行适当的调整。此外,同时引入太多的变更是不切实际的。
5. 简述CMMI-DEV V1.3中有关工程的五个过程域(PA)的目的,这五个PA 是PI、 RD、 TS、 VAL、 VER。
答-
(1)产品集成PI的目的在于将产品组件装配成产品,确定产品作为一个整体正确的运行(即具有所有要求的功能与质量属性),并交付产品。
(2)需求开发RD的目的在于挖掘、分析并建立客户需求、产品需求与产品过程需求。
(3)技术解决方案(TS)的目的在于选择、设计并实现对需求的解决方案。解决方案、设计与实现包括单独的或以适当形式组合的产品、产品组件或与产品相关的生命周期过程。
(4)确认(VAL)的目的在于证明产品或产品组件被置于预期环境中时满足其预期用途。
(5)验证(VER)的目的在于确保选定的工作产品结果满足其规定的需求。
二、 论述题(本题有2小题,每小题15分,共30分)
1. 论述计划驱动开发方法与敏捷开发的方法优缺点。
答-
计划驱动开发起源于系统工程和质量规范,建立系统工程的原则,协调大量需要精确协同工作的组件。通过从需求到已完成的代码等一系列代表用来推动软件开发的过程,计划驱动开发非常精确低依赖于明确的步骤。计划驱动开发的关键是过程的定义和管理,和过程改进联系在一起,强势在于标准化所带来的可比较性和可重复性。过程需要进行定义、标准化需要逐步改进以提供控制。管理其操作所需的数据。
优点:适应大型产品和团队;适应应对高安全性的产品;项目初期需要高素质人员和专家,项目平稳进行期间,对人员的素质要求降低;清晰的政策和规程定义了人们的角色,使人们感到舒适,有权利。靠秩序繁荣。
缺点:详细设计和庞大的预先设计非常适用于高度稳定的环境,对于高度动态的环境导致返工。
敏捷开发的方法有Scrum、XP极限编程、ASD自适应软件开发、FDD特征驱动软件开发、Pair programming、pragmatic programming
优点:适应小型产品和团队;整个过程都需要高素质人员和专家参与;更高的自由度,使人们感到舒适,有权利。靠混沌繁荣。
缺点:没有经过安全关键性产品的考验;简单的设计和缺乏文档有潜在问题;简单设计和持续重构非常适用于高度动态的环境,但对于高度稳定的环境会导致潜在的返工。
2. 结合CMMI的实施,论述软件过程改进过程中主要阶段的作用。
答-
(1) 远景阶段:该阶段中设置与前进的方向,拼出了前进的道路。它考虑到了未来的发展和在技术、经济、政策、市场和商业方面的变化。
(2) 策略阶段:策略描绘出达到的远景的途径和达到远景目标必须经过的实践步骤。
(3) 调动阶段:团结一致的调动当前的人力和资源,设计并实现相应的行动计划。
(4) 推动阶段:保持推动力,监控策略的成就,强化同盟关系。
(5) 实现阶段: 实现已制定的策略,否则过程改进会成为一种幻想。软件过程改进本身也是一个改变的过程,也应该经历上面提到的类似阶段。
三、应用题(本题30分)
当前企业的业务都是在全球化、快速变化的环境中运营,传统的软件开发过程无法适应由此产生的快速软件需求。20世纪90年代后期,一些软件开发人员在“Agile Alliance 2001”中系统地阐述了敏捷开发的原则,试图强调灵活性在快速且有效地生产软件中所发挥的作用。目前众多的软件生产企事业已经在实际的软件开发过程中接纳并实践了敏捷开发方法中的基本原则。
问题1:敏捷开发有许多典型方法,包括极限编程(XP, eXtreme Programming)、Scrum、Crystal、DSDM等。请问这些方法共同的基本原则是什么?
答-
敏捷开发的基本原则是-
① 主张简单
② 拥抱变化
③ 可持续性
④ 递增的变化
⑤ 令stakeholder利益最大化
⑥ 有目的建模
⑦ 各种模型
⑧ 高质量的工作
⑨ 快速反馈
⑩ 轻装前进
问题2:敏捷开发的支持者往往夸大该方法的优点,但是在实践中,敏捷方法的基本原则有时确实很难实施。请用200字以内的文字说明敏捷方法中哪些原则在实践中难以实施。
答-
① 客户的参与度往往依赖于客户参与的意愿和客户自身的代表性
② 团队成员的性格可能不适合激烈的投入;可能无法做到与其他成员之间的良好沟通
③ 对系统中的变更做出优先的排序可能是极端困难的
④ 维护系统的简洁性往往需要额外的工作,但迫于移交时间表的压力,可能没有时间进行系统的简化过程
问题3:敏捷开发方法中最有名的是XP。请说明XP中的结对编程(Pair Programming)的概念。
答-
结对编程是极限编程的十二个实践之一,是指两位程序员肩并肩地坐在同一台电脑前合作完成一个设计,同一个算法,以及同一段代码,并且两人的角色可以随时呼唤。XP以为结对编程能提高软件开发效率,很多国外的软件企业都热衷于结对编程。结对程序员之间的交流非常充分,你甚至可以听也不用言语进行交流。只要简单的描述和手势就可以。这种模式已证明非常成功。
问题4:敏捷开发方法在具体实践过程中,往往需要开发环境或工具支持,一般称为快速应用开发技术和可视化开发技术。请用150字以内的文字说明快速应用开发技术所包含的工具有哪些,并简要说明可视化开发技术的基本概念和技术原理。
答-
快读应用开发中所包含的工作如下-
① 数据库编程语言
② 与办公应用的链接
③ 界面生成器
④ 报告生成器
可视化开发是一种通过集成细粒度可复用软件组件来构造软件的快速应用开发方法。主要思想是利用图形工具和可重复部件来交互地编制程序。可视化开发一般基于事件驱动的原理。