职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 3206|回复: 0

[转载]业界软件研发模式对比分析

[复制链接]
cayean 发表于 2007-7-17 13:39 | 显示全部楼层 |阅读模式
伴随软件行业的发展,业界公司也不断对软件的研发开发模式进行了深入的探讨,形成目前业界比较流程的几个软件开发模式,例如MSF、RUP、XP、CMM,而这些模式都存在相应的优势和缺点;同时因为软件的类型多样、面向的客户对象不同、甚至使用的开发语言不同,决定了软件企业需要结合本公司的产品实际情况选择合适的开发模式;选择不当的开发模式会使软件的开发和测试陷入不断修改代码和测试软件的困境,增加了软件开发成本,延长了软件发布时间。

一、MSF模式

   MSF于1994年首次引入,当时还是一个来自微软的产品开发过程中的一些最佳方法的松散集合,MSF产生后在微软产品组、交付中心、技术组和微软合作伙伴,甚至客户那里得到成功实施,并不断完善,既然MSF被众多软件企业所借鉴使用,MSF本身具备一些值得我们学习借鉴的优点,同时也存在一些需要注意,并进行适当改进的地方,接下来我们重点从组织、流程模型进行分析。

1.1、MSF小组模型

   MSF 小组模型定义了小组同级成员的一些角色和职责,这些成员都在以相互依存的跨学科角色进行信息技术项目工作。下面的图表对该模型的逻辑进行了描述。

   一个成功的软件项目需要同时实现多个目标,例如至少需要包含能够满足客户的要求、客户满意度要比较高;公司的投入要在一定范围内,要实现投资收益,毕竟商业企业的盈利是应该首要考虑的内容;项目的实际开发进行要受控不能无限拖延;最终的交付要有比较高的质量;整体软件系统的架构设计要比较合理、易于扩展、易于维护;同时还要求项目同时需要给公司带来新的技术积累、经验教训,从而使后续项目能够持续成功;而这些目标需要通过不同的活动来实现,软件项目的活动又具体划分为多种类型,大概主要划分为面向市场类活动、项目管理类活动、架构设计类活动、开发实现类活动、测试类活动、支撑类活动(例如配置管理等),而这些活动需要具备不同技能人员来执行,所以MSF具体定义了如下五类角色群:产品管理、程序管理、开发、测试、发布管理、用户体验,并且明确定义了五类角色具体职责,这些职责的定义对具体软件企业有很大的借鉴价值:

角色群 职责
产品管理 重点负责和客户前期进行沟通,明确项目需求,同时初步思考项目的解决方案、管理客户需求说明,管理客户的期望,针对项目范围、进度、资源进行权衡、负责进行后期市场宣传与推广。
程序管理 重点负责项目管理、承担项目架构师职责,制定切实可行的项目计划、并对项目计划进行跟踪控制,进行项目风险评估、并跟踪监控风险。
开发 负责具体项目详细设计与实现,提供专题技术开发与研究,估计本专项领域的所需时间和精力。
测试 制定测试策略、计划,具体执行测试,提交测试结果
发布管理 提供项目小组后勤支持,管理项目的交付,管理项目与渠道的关系
用户体验 充当类似真实使用者的角色,负责用户文档、帮助文档,开展用户培训。

针对MSF小组模型定义,作者感觉重点体现如下优点:

1)    按照角色群的方式定义,便于角色的分层管理;

2)    角色、职责定义全面含盖了软件项目的所有必须的活动;

3)    定义了根据不同项目情况,小组模式的扩展与收缩方法,对不同规模、不同类型的项目有很大的借鉴价值;

4)    角色定义就体现了商业软件开发的市场驱动、财务驱动;

5)    角色定义的层次体现了对测试、服务等职能工作的重视;

结合中国软件企业的管理现状,MSF在中国软件企业具体使用时就会暴露如下缺陷:

1)    项目的责任主体不明确,缺少一个角色对项目的整体负责,产品管理对项目前端和后端负责、程序管理对项目中间负责,另MSF更强调的是大家协同共同为项目负责,甚至不同阶段项目的第一责任主体可以不同,体现了类似“生产模式”的研发。

2)    MSF只定义了操作级项目模式,而没有详细定义项目决策团队的模式,在中国职能管理根深底厚,简单定义项目操作级的组织模式,项目实际执行中会因为人员来自不同职能部门产生比较多的冲突和相互配合问题。

1.2、流程模型

  每个项目都要经过一个生命周期,这是一个包含项目里所有活动的过程,而这些活动的发生要到项目结束并过渡到操作状态才会结束。生命周期模型的主要功能是建立活动进行的顺序。正确的生命周期模型能够简化项目,并帮助确保每一个步骤都会让项目更加接近成功。下面是 MSF 过程模型生命周期的一个简图。

  MSF 过程模型把来自传统的瀑布模型和螺旋模型的概念结合起来,以阶段和里程碑为基础,每个阶段都有其自身的特色,每个阶段的结束都代表了项目进展和中心点的变化。里程碑是检查和同步点,用来确定阶段的目标是否已经实现。同时MSF基于软件项目需求的特点(模糊性、易变性),建议采用版本化项目开发模式,具体就会出现多个版本的叠代开发,类似如下流程模型:

  整体来讲MSF的流程模型定义是非常清晰的,也体现了软件项目的实际特征,作者感觉MSF流程模型集中体现了以下优点:

1)    阶段化,将流程划分为明显的几个阶段,并且明确定义了阶段结束标准;

2)    并行化,MSF流程模型把并行开发的思维体现的比较清晰,例如明确定义开发阶段就需要明确定义下阶段(稳定阶段)的集中测试所需要的测试用例;

3)    阶段里程碑和内部小里程碑都被比较确切地定义,通过内部里程碑的控制可以有效控制项目构件的交付质量,通过阶段里程碑的控制可以有效解决构件之间的遗留问题,确保项目整体质量;

4)    实现各个职能领域的交叉协同,流程模型中同时详细定义各个支撑角色(例如配置管理)的活动,实现了工程活动和管理活动的有效配合,从而从流程体系上保证了进度、质量、成本在一定范围的协调一致;

结合中国软件企业的管理现状,发现具体采用MSF流程模式进行实际项目开发时,也暴露出MSF需要具体补充和完善的地方,如下:

1)    MSF流程模型是基于项目资源是有限的,而实际情况是一个公司往往同时会进行多个项目,MSF流程模式中没有对多项目管理进行详细描述,没有充分体现管道管理的思想,没有将管道管理贯彻在具体的项目流程模型中;

2)    MSF流程模型中,缺少对公司高层管理团队活动职责的定义,更多局限在项目操作级,而实际情况是很多问题是在项目级无法解决的,所以如果没有明确定义高层的规范参与的话,无疑是增加了项目的风险;

  整体来讲MSF是一个非常具有借鉴价值的软件开发模式,通过对MSF的分析研究,对实际公司研发体系的构建会有比较大的借鉴价值,后续我们会结合中国软件企业的实际情况,连续对RUP、CMM、XP、NPD-CMM等软件开发模式进行分析,敬请大家关注。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-18 12:02 , Processed in 0.155796 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表