登陆注册
8724600000006

第6章 软件工程概述(4)

1.CMM的组成

CMM由5个成熟度等级组成。除了等级1外,每个成熟度等级都由几个关键过程区域组成。每个关键过程区域又划分为5个称作共同特点的部分。共同特点规定一些关键实践,当这些关键实践群体得到认真执行时,关键过程区域的目标就能得以实现。

CMM的成分包括以下几个内容。

1)成熟度等级(Maturity levels)

一个成熟度等级是在实现成熟软件过程中的一个完整定义的平台。5个成熟度等级提供CMM的顶层结构。

2)过程能力(Process Capability)

软件过程能力描述通过遵循软件过程能实现预期结果的程度。一个组织的软件过程能力提供一种预测组织承担下一个软件项目时预期的最可能结果的方法。

3)关键过程区域(Key Processareas)

每个成熟度等级由若干关键过程区域组成。每个关键过程区域标识出一串相关的活动,当它们作为群体完成时,就达到一组目标,此组目标对建立该过程成熟度等级是至关重要的。关键过程区域是分别定义在各个成熟度等级并与之相连在一起的。例如,等级2的一个关键过程区域是软件项目策划。

4)目标(Goals)

目标概括了一个关键过程区域中的关键实践,并可用于确定一个组织或项目是否已有效地实施该关键过程区域。目标表示每个关键过程区域的范围、边界和意图。例如,软件项目策划关键过程区域的一个目标是“软件估计已文档化,供策划和跟踪软件项目使用”。参见“软件能力成熟度模型1.1版”。

5)共同特点(CommonFeatures)

将关键实践分别归入下列5个共同特点中:执行约定、执行能力、执行的活动、测量和分析及验证实施。共同特点是一种属性,它能指示一个关键过程区域的实施和规范化是否是有效的、可重复的和持久的。执行的活动这个共同特点描述实施活动。其余4个共同特点描述规范化因素,它们使得过程成为组织文化的一部分。

6)关键实践(KeyPractices)

每个关键过程区域用若干关键实践加以描述,当实施这些关键实践时,能帮助实现该关键过程区域的目标。关键实践描述是对关键过程区域的有效实施和规范化贡献最大的基础设施和活动。例如,软件项目策划这个关键过程区域的一个关键实践是“按照已文档化的规程制定项目的软件开发计划”。

2.CMM的5个等级

1)初始级

在初始级,软件开发过程基本上处于无序的状态,整个过程的特征是特定的和偶然的,有时甚至是混乱的,项目的成功往往依赖于个人能力。项目经常处于混乱状态。

2)可重复级

在可重复级上,已建立管理软件项目的方针和实施这些方针的规程,也就是建立基本的项目管理过程,能够跟踪费用、进度和功能;有适当的、必要的过程规范;借鉴以前项目的成功经验成为了可能。等级2组织的过程能力可概括为有纪律的,因为软件项目的规划和跟踪是稳定的,能重复以前的成功。

3)已定义级

在已定义级,软件的工程活动和管理活动已经被文档化和标准化,并与整个组织的软件过程相集成。所有的项目都使用统一的、文档化的、组织过程认可的版本来开发和维护软件。等级3组织的软件过程能力可概括为标准的和一致的,因为无论软件工程活动还是管理活动,过程都是稳定的和可重复的。

4)已管理级

在已管理级上,组织对软件产品和过程都设置定量的质量目标。此时,软件过程和产品质量的详细度量数据被收集,通过这些度量数据,软件过程和产品能够被定量地理解和控制。等级4组织的软件过程能力可概括为可预测的,因为过程是已测量的,并在可测的范围内运行。

5)优化级

在优化级,整个组织集中精力对通过的数据反馈进行不断的过程改进。因而在此阶段的软件过程能力可特征化为不断改进。

1.5.2XP

极限编程是敏捷模式(Agile Model)的典型代表,与CMM这些重量级(Heavyweight)的软件过程模型相比较而言,传统的CMM,ISO/IEC15504等软件过程模型通过加强软件组织级别管理与过程控制,强调通过大量的中间制品,如大量过程文档的制作以实现软件质量的保证,但却忽视了开发人员工作效率的提高;强调软件过程的可预见性、可控制性和可视性,而忽视对日益复杂多变的软件环境的适应性。正是为了弥补传统重载软件工程模型的不足,人们提出了敏捷模式(Agile Model)。因而敏捷模式的特点可以归纳为两点:一是基于对环境多变性的适应而不是对过程的预测;二是强调以人为导向而非以过程为导向。

KentBeck在他的开篇之作《Extreme Programming Explained—Embrace Change》(1997)最早提出了极限编程。题目中的“Embrace Change”道出了提出极限编程的初衷。现代企业环境日益复杂,变化莫测。传统的假定需求不可变的软件过程模型,如线性模型,已经过时。必须针对企业环境多变,客户需求多变这一事实,提出新的软件过程模型,XP就是这样的软件过程模型,充分地体现了极限编程的特点。所以XP实质上是以开发符合变化的客户需求的软件为目标而产生的一种方法。它的成功得益于特别强调客户满意度,XP使开发者能够更有效地响应客户的需求变化,甚至在软件生命周期的后期,也能做到对客户需求的变化及时响应。极限编程在国外已经很多大公司加以实践,并被证明是很有效的软件过程模型。

1.XP的过程

用户代表提出用户故事(User Stories,实际上是对需求的一种简明易懂的描述),开发小组根据用户故事进行系统比拟,并进行初步的体系结构刺探(spike,意在试探需要解决的技术难点,走通技术路线)得到系统比拟的结果。开发小组以系统比拟用户需求以及体系结构刺探得到的可能难点为基础,根据用户设定的优先级来制定发布计划,然后开始一个个迭代过程。每次迭代结束时,进行用户验收测试,若仍需继续改进,则继续迭代,否则就完成了一次小交付。

本质上XP是一种高度动态的软件过程,它通过一系列较短的迭代周期,来降低软件开发风险,适应系统需求的变更。所以极限编程通常比较适用于需求容易变化的环境,同时由于其极为重视沟通而忽视中间制品的制作,它通常对于场地集中,10人以下的开发团队较为合适。

2.XP的4个价值

1)交流(Communication)

XP充分强调了项目开发人员之间的充分交流,同时也强调客户的积极参与。

2)简化(Simplicity)

现代设计领域越来越倾向于简约之美。复杂系统的可靠构建往往出之于最为简单的设计思路。XP顺应了这一潮流,它强调在系统可以运转的前提下,做最简洁的工作;在开发中不断优化设计,时刻保持代码简洁、无冗余。

3)反馈(Feedback)

XP是高度动态的软件过程,它强调通过各种形式的反馈(这些反馈包括小交付、短迭代、测试先行等内容)以实现高度迭代的动态过程。

4)胆识(Courage)

XP以人为导向还体现在提倡开发者勇敢的面对压力,做正确的判断,并敢于付诸行动。如丢弃设计不良的代码,甚至重新设计,程序员在疲惫时立即休息,每星期工作40小时等,这些都充分体现了XP以人为导向的特点。

3.XP的11个核心实践

1)工作团队(Whole Team)

除了传统软件开发团队的一些角色,如程序员、系统分析师、项目经理这样的角色外,XP编程的Team中还包含了用户代表(On—site User)。由他来提出需求,确定开发优先级,把握开发动向。通常在XP团队中还有类似教练(Coach)的角色,以指导XP方法的实施与外部的沟通和协调。XP强调小组所有成员对整个团队的贡献。

2)计划(Planning Game)

XP中的计划包括两类:一类是发布计划(Release Planning),一类是迭代计划(Iteration Planning)。前者是指在项目开始时,所进行的项目过程交付日期所需资源所进行的粗略计划;后者是指每次迭代时,对此次迭代的工作计划的详细安排。

3)系统比拟(System Metaphor)

系统比拟是一种组员都可以接受,都易于理解的一种形象比喻,它描述了系统的功能或者运作方式。本质上它是系统架构的一种形象化的描述,其目的是为了促进组员之间的沟通与理解。

4)简单设计(Simple Design)

简单设计包含两方面内容:一是XP从不考虑将来的需求,只实现眼前要实现的功能,以简化设计;二是XP的设计尽可能简单易懂。XP的设计不是一劳永逸的事,而是不断重构,不断改进的过程,甚至在最后交付的时候都可能有设计改进。

5)设计改进(Design Improvement)

简单的设计并不意味着XP不关心设计质量,相反XP对设计要求是相当高的。XP通过持续不断的设计改进,也就是重构(Refactoring)来提高整个设计的质量。重构着眼于移除重复代码(可以通过面向对象的封装或者继承加以实现),目的在于加强软件系统中各模块内部的联系[也就是要提高系统的内聚性(Cohesion)],弱化系统各模块之间的联系[也就是降低系统的耦合性(Coupling)]。

6)结对编程(PairProgramming)

所谓结对编程,是指两个程序员肩并肩用同一台电脑编程。这样的做法看似在浪费人力,但事实上对于促进沟通,提高设计代码的质量确实有益。

7)测试驱动的开发(TestDrivenTesting)

XP通过经常性的测试以实现对设计代码的反馈。XP的测试包括单元测试和验收测试。XP的测试策略和技术是XP过程得以存在的基础。XP的测试策略是测试先行,测试用例的书写先于编码的完成,其测试技术主要是通过特定的测试框架(如Nunit,Junit等工具)实现自动化测试,以提高测试效率。

8)持续集成(Continuous Integration)

保持项目组中的所有模块始终是组装完毕,集成良好且可以执行的状态,一旦通过某一新的模块的单元测试,就将新的模块集成到整个系统中,并运行系统集成测试。这种做法非常便于查找测试中的Bugs,为增量开发提供了方便。显然这种做法必须以便捷的测试为基础,否则集成测试将是一件复杂痛苦的过程。

9)代码共享(Collective Code Ownership)

任何结对开发者在能够充分理解代码含义的前提下可以对项目组的任何代码做出改进。

10)编码标准(Coding Standard)

代码共享显然鼓励成员修改别人的代码,但前提是理解别人的代码。为此,提出编码标准这一核心实践,它要求全体成员尽可能遵守共同的编码规范,以促进沟通。

11)可持续步调(Sustainable Pace)

整个项目的开发节奏应该是可以长期维持的,为此,XP提出各种策略,如每周工作40小时,以保证成员能够以较高的工作效率长期工作。XP从1997年开始被提出,到今天虽然只有短短的十几年时间,但是发展普及非常迅速,其内容也愈加丰富。

思考题

1.简述通过软件工程所要达到的目标是什么?

2.可以从哪几个角度衡量软件的质量?并简述其具体内容。

3.简述软件开发技术。

4.什么是软件工程管理,主要包括哪些内容?

5.软件过程管理核心的主要内容是什么?

同类推荐
  • 中国移动智能手机的秘密

    中国移动智能手机的秘密

    《中国移动智能手机的秘密》是一本关于移动终端和移动互联网的科普书。作者将这18年通信行业中的学习、思考、实践积累成《中国移动智能手机的秘密》与大家分享。书本系统总结了手机的发展历史、TD产业界“从2G向3G演进”的移动终端产业分化重组进程、智能手机的使用方法用方法和应用指南,以及对移动互联网发展独特思考。
  • 计算机应用基础案例教程

    计算机应用基础案例教程

    本书是根据教育部对高等院校计算机公共基础课程的基本要求,结合计算机技术的最新发展及高职高专类院校计算机基础课程改革的最新动向编写而成。其主要内容包括计算机基础知识、WindowsXP操作系统、Word2003文字处理软件、Excel2003电子表格软件、PowerPoint2003演示文稿制作软件、计算机网络与安全及常用工具软件的使用。本书将理论知识与项目实践相结合,既对理论有较为系统全面的讲解,又通过案例突出了操作技能的培养。本书内容新颖,体系结构合理,可作为高职高专学校、成人高等学校的计算机公共基础课教材,也可以作为广大计算机爱好者的自学参考书。
  • 中国3D打印的未来

    中国3D打印的未来

    自2012年以来,有关3D打印的报道屡见报端,这一新型制造技术引起了全世界的广泛关注。《中国3D打印的未来》作者、中国3D打印技术产业联盟秘书长罗军认为,中国从20世纪90年代初开始涉足3D打印技术,并取得了巨大进展,但与国外同行相比仍存在一定差距。特别是中国3D打印企业普遍存在“小而散”、各自为政的现象,如何发挥整合优势、抱团发展是目前亟需解决的问题。如果能够加强同行合作,抱团发展,形成合力,相信3D打印会成为唯一一项中国有可能赶超世界先进水平的技术。
热门推荐
  • 逍遥魔使

    逍遥魔使

    魔族王子身负重任来到人界,却摇身一变被人族皇帝任命为帝国使者出使各国,游历四方
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 异界魂匠

    异界魂匠

    双魂大陆,以灵士、魂师、铁匠为尊。林凡,一个穿越男,莫名其妙成了天成国四大匠师家族之一的主家唯一继承人。地球来的魔刀,全新的升级体系。想铸造魂器吗?求我吧!想拥有灵魂座骑吧!求我吧!想升级成为强者吗?还是求我吗……三大职业,我全修了。灵士等级,灵兵、灵尉、灵校、灵将、灵帅、灵王……武器划分,一星准魂器、二星准魂器……九星准魂器。再往上为魂器,已经不再是简单的武器了。升级丹,魂师炼制,灵士升级的保障。……等等,等等。这是一个神秘全新的世界,等待你我去探寻揭密。(本书由于上传后,有事耽误,错过了新书榜期,成绩不理想,希望看过本书的朋友能加入到您的收藏架中,拜谢了!)
  • 超神学院之铸星神话

    超神学院之铸星神话

    兵败如山倒,残存亦末路。这是一部大局与战局的群像同人,喜欢爽文的同学请点叉。
  • 仙道姝途

    仙道姝途

    一朝梦醒,方知世上真有修仙一途。身具上佳天资,背靠结丹叔祖,手掌部分先机……一片光明的未来在向她招手。只是江燕却从不信天上会无端地掉馅饼。果然:家族是搬来的,先祖们无不想再归族地;先机是遥远的,远到隔着一个修仙界的距离。罢了,世间机缘千千万,唯有提升自身的实力方是正道!其实,这就是一个宅女写手穿进自己的新书里一步步成长的故事。PS:本文正统修仙,不白不雷不圣母,女主坚强独立上进型,简介有点无能,欢迎跳坑。
  • 前任逆袭史

    前任逆袭史

    女大学生黎羽莫名被分手。要说法却被男友连同情敌羞辱。黎羽:“我诅咒你们两个贱人,出门被车撞,吃东西被噎死......接下来人们发现黎羽的话一一验证。男友被自行车撞,渣女吃饭噎住险些丧命。惹不起,惹不起,黎羽的嘴怕是开过光......辰景是红透半边天的影帝三年前车祸丧生。辰景:“只要你肯帮我查明死因,我包你心想事成,要啥有啥。”黎羽:“老娘缺个一生一世只爱我的男人。”辰景:“没问题,本人以身相许,何止一生一世,下一世也免费赠送!”
  • 超级动物变身系统

    超级动物变身系统

    收到错误的星际快递?错,这个超级大变身系统明明就是给我的!方烨如是说道。它能做什么?变身禽兽啊!我靠,有人举报?想歪的都去面壁去呀,你们这些不纯洁的孩纸!我说的真是变身禽兽,禽兽啊,禽类和兽类啊!我这么纯洁,怎么会误导你们…………想什么呢,怎么可能只是简单地变成小鸟什么的,明明是大雕…………好了不扯了,系统功能一:变身禽兽,恩,相信你们知道什么意思。系统功能二:获得变身动物一项技能,例如狗的超级嗅觉啦,蝙蝠的回声定位啦,泰迪的日天,狮子的一日十三次,咳咳,我在说些什么?总之,以上就是不靠谱的简介了,其实我是很纯洁的,对吧。
  • 炼金图书馆

    炼金图书馆

    当艾德打开那扇神秘之门后,他发现,坠机后的生活似乎并没有那么糟糕。炼金与魔法的宏伟画卷缓缓展开。门,魔药,炼金,古代言灵,解析法术,奇异秘境...魔法隐藏在世俗之下,混乱诞生于秩序之中。‘如若你打开了通往炼金的大门,你会如何抉择?’
  • 夫人她又跑了

    夫人她又跑了

    本书又名【秦大佬的追妻之路】【今天也是追夫人的一天】省吃俭用存了三年钱准备去旅行的宋词,再去机场下车时无意中,踩到了一个易拉罐。然后她死了,绑定了一个旅行系统,可以带她小千世界免费旅行,而且还有很多高大俊美的小哥哥任她撩。她就勉强答应了。可是谁能告诉她。为何在每一个世界都吊死在一棵树上。其实她不想为了一颗大树而放弃整片森林。
  • 快穿之我家宿主是爸爸

    快穿之我家宿主是爸爸

    【无cp】每一世都不得好死的楚蕴终于厌倦了这样无休止的轮回。决定和那只蠢萌辣眼睛的鸭子一起征服星辰大海。“楚蕴楚蕴,女主又嘤嘤嘤了。”“哦,绿茶呀,灭了吧。”“楚蕴楚蕴,男主又要天凉王破了。”“哦,天不亮就让他破产吧。”“楚蕴楚蕴,皇帝让你今晚侍寝。”“嗯?直接剁了吧。”“楚蕴楚蕴……”楚蕴淡淡一笑:“垃圾,就该清理了。”鸭子……一脸崇拜。我家宿主就是爸爸!