标签:敏捷开发 范围 网络 安装不上 模式 领导 发布 客户 最新
What is MSF?——Microsoft Solution Framework(微软解决方案框架)即一个方法论,也就是微软推荐的软件开发方法。
MSF没有像敏捷那样搞一个宣言,但是它也有一套思想框架—9条基本原则
1. 推动信息共享与沟通(Foster open communications)
2. 为共同的远景而工作(Work toward a shared vision)
“共同的远景”是指产品的远景。我们做一个产品,不管是应用软件、行业软件,还是通用软件,要明确项目的目标是什么。
远景一般是由“有远见的人”提出,然后公开讨论,在讨论的过程中,可以消除误解,凝聚共识。这是一个项目的关键,是项目第一阶段要达到的主要目标
3. 充分授权和信任(Empower team members)
这一点的关键是“授权”这个词,授权(Empower)有两个意思:
在一个高效的团队中,所有的成员都应该能得到充分的授权,他们有权在职权范围内按照自己的承诺完成任务,同时,他们也充分信任其他同事能实现各自的承诺。类似地,团队的顾客(包括内部和外部的顾客)也认为团队能兑现承诺,并进行相应的规划
充分授权的管理方式是MSF的核心观念之一。MSF团队模型就是建立在以下两个原则上的:
这就是为什么MSF团队模型是网状,而不是层次结构。这样做有什么好处?好处有两点:
组员充分授权,到头来发现事情都没做完,咋办?
4. 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
关键质量目标 |
MSF小组角色 |
出口条件 |
按约束条件交付产品 |
程序管理 |
我们的项目是在时间/资源的条件内交付的么 |
按产品规格说明交付产品 |
开发 |
我们是否按照功能说明完成了各项功能 |
保证所有问题都得到处理 |
测试 |
我们发现了所有的问题,而且都有处理方案吗 |
产品部署和后续管理 |
发布管理 |
客户能否快速方便地部署产品和进行后续管理 |
让产品更好用 |
用户体验 |
产品是否适应用户的使用习惯?易学易用 |
让客户满意 |
产品管理 |
客户是否(总体上)满意我们的项目 |
在项目进展的过程中,对于每一项任务,每个人都要明确以下几点。
与“信息共享与沟通”原则相呼应,这样的安排能让所有人都明确自己的职责,同时有“大局观”—知道别人在做什么,为什么,以及整个项目的目标
5. 交付增量的价值(Deliver incremental value)
现在的软件产业,特别是和互联网相关的产业,变化非常快,用户希望产品团队经常提供更新,以适应新的需求。我们要保证在两个方面保证客户的利益:
在MSF团队模型中,“用户体验”这个角色代表了用户的利益,保证产品能真正易于使用;“产品管理”这个角色代表了客户的利益,保证了我们的产品能为顾客提供商业价值。搞技术的,要尊重这两个角色,因为他们代表的是我们的衣食父母
6. 保持敏捷,预期和适应变化(Stay agile, expect and
adapt change)
软件工程,唯一不变的是变化。所以干脆别幻想客户的需求会在第一时刻很明确,然后保持不会变。要注意,我们是预期变化,不是期望变化
除开外部原因,团队内部也在变化,我们对技术的掌握每天都在提高,原来认为不可能的事可能变得容易。我们对客观世界和软件系统的了解每天都在深化,原来觉得没问题的小细节忽然成了大问题。甚至原来一起打拼的同事忽然要离开……这些都要求我们团队保持敏捷的身段
7. 投资质量(Invest in quality)
对质量的重视,引起对质量的投资,引起对人、过程和工具的投资。
8. 学习所有的经验(Learn from all experiences)
在学习过去的经验的同时,也要避免让过去的经验妨碍解决现在的问题
这一原则有两个含义——
为什么要坚持总结和分享?是为了——
MSF在每一个里程碑结束时都要做一个“里程碑回顾”,这个回顾不必等到整个项目结束才做。这样做的好处是,大家对最近的成败都记忆犹新,能提供比较准确和全面的反馈;如果发现了错误,可以马上研究解决办法,在下一个里程碑中通过实践来验证。另外,一些好的做法可以及时得到总结和推广
在项目结束时,MSF推荐请团队以外的专家来主持召开“事后诸葛亮”会,这样的专家会比较系统地总结团队的成功经验和失败教训,同时也客观评价团队的一些特性和团队的开发过程管理,这样能促使团队成员以客观、向前看、解决问题的心态来参加“事后诸葛亮”会,避免主观臆断或相互指责
9. 与顾客合作(Partner with internal and external customers)
MSF团队模型定义了小组同级成员的一些角色和职责
在MSF团队模型中,任何技术项目都必须达到特定的关键质量目标,才能够被认为是成功的项目。任何一个角色无法实现其目标,都将危及整个项目。因此,每个角色都被认为是同等重要的,重要的决定都要共同作出。相关的目标和角色如上图所示。
每个项目都要经过一个生命周期
MSF过程模型是从传统的软件开发瀑布模型和螺旋模型发展而来的,它把瀑布模型中基于里程碑的规划优势与螺旋模型中增量迭代的长处结合了起来
MSF过程模型的基本元素是阶段和里程碑。所谓“阶段”,就是在这一段时间里团队集中精力做某一类事情,每个阶段的结束都代表了项目的进展和团队工作重心的变化。比如在“开发阶段”结束后,团队就不再允许设计/实现新的功能,除非有理由充分的“变更请求”
在Visual Studio TFS中,MSF演化为以下两个分支:
MSF敏捷开发模式吸收了近几年来在软件业界流行的各种“敏捷”开发模式的优点,认识到目前大部分软件是以网络应用相联系的,强调和用户更紧密地交流,快速迭代,避免不必要的过程。
更强调与用户的交流
项目的商业价值要由用户说了算,那些“我觉得用户会喜欢”的东西要及早和用户交流。因为“我觉得”和“用户觉得”是两码事
质量—防患于未然
防止缺陷的发生成为团队质量控制的首要任务,在防止缺陷的发生和确保缺陷被修复上,所有的角色都要负责
有一些团队把开发和测试有意无意地对立起来,好像二者是矛盾的。一个典型的例子是,有时开发人员不想给测试人员足够的信息,好像不想“帮”测试人员找到缺陷;与此同时,测试人员一旦找到缺陷,会有些得意,“看,你写的代码那么臭,我又发现了N个Bug”。这种对立情绪,也许在短期内能刺激成员的工作热情,而从长远来看是有害的。很少有人会希望在这种充满对立情绪的环境中工作
微软公司内部做过统计,在一个中大规模的团队中,一个“缺陷”从发生到被改正,中间经过了近20道工序,平均总的时间开销是12小时。优秀的团队能做到这一点:可能的缺陷在设计阶段之前就讨论过,并且在代码中已经避免了,因此在“缺陷跟踪系统”中,并没有出现很多缺陷记录在案,但是软件的质量仍然很高
重视在实战条件下的质量
这一点要求我们保持随时可以发布的高质量。如果用户说:时间到了,网站要上马。我们应该很快地交给用户一个可用的版本,也许功能不多,但是现有的功能都可用。这就要求我们必须保证项目的质量是“随时可用”。为了达到这一点,我们要重视产品的安装和发布—产品要尽早能够达到随时安装、发布的标准。在一些项目中,安装和发布都是最后阶段才做,这就导致几个问题:
精简过程,直奔主题
我们一帮人吭哧吭哧干活是为了什么?主题是什么?是为了解决用户的问题。用户给项目投资了成千上万,不是为了看到一堆过时的文档。同样,在团队成员之间的交流要简明,不必为了交接而搞出许多文档。另外一个重要的因素是,如果团队在整个软件生命周期都使用团队协作服务器(TFS),那么很多活动、决定、文档都自然地记录在TFS上,不必额外去为了文档而再写一些东西。
MSF CMMI开发模式
CMMI是CMM模型的最新版本,资料显示,如果一个项目的管理达到了CMMI较高的等级,那么项目的质量与按期完成率都会有较大的提高。
CMMI虽然源于美国,但在世界各地得到了广泛的推广与接受,特别是和外包服务相关的软件企业(例如印度)。
但是要注意的是,众多新兴的小企业,特别是互联网企业,并没有多少采用CMMI来指导软件开发。
在MSF中,CMMI 在所有的流程上都加了一个“提议”(Proposed)阶段,通过“审核”或者决定“开始调查”,处于“提议”阶段的工作项可以变为“激活”状态。如果调查的结果不是要开始着手工作,那么工作项可以退回到“提议”状态。以缺陷类型
标签:敏捷开发 范围 网络 安装不上 模式 领导 发布 客户 最新
原文地址:http://www.cnblogs.com/dingry11-96/p/6843331.html