当我问起无数人,什么是迭代式开发时,人们总是抛来一副不屑的神情:“迭代开发!这还不清楚?就是按迭代的方式进行开发嘛,开发过程采用持续集成的方式。”但我再详细询问怎么进行开发,甚至谈到如何制订计划,以及计划前的分析整理时,人们却投来诧异与迷茫的神情:“啊!迭代开发这么复杂呢?”
所有对迭代式开发的实践与研究中,工作量评估往往是最令人头痛、最大的难题。当人们信心满满地决定尝试迭代开发时,工作量评估就让不少人望而却步了。工作量评估真的有这么难吗?我们应当怎样进行评估呢?
毫无疑问,工作量评估的第一步应该是工作分解。将整个系统划分为数个模块,每个模块划分为数个功能,每个功能划分为多项工作。再逐项分解工作,直到确保每项工作能够正确评估为止。一项为其10天以上的工作是不能够准确评估的,所以应当分解,直到分解为2~3天以内的小块工作。完成工作分解以后,最终合并每项工作的工作量,就是一个功能的工作量;合并每个功能的工作量,就是一个模块的工作量;合并每个模块的工作量,就是整个系统的工作量。
但是,即使将工作量适当地进行了分解,由于每个人对需求理解的不同,对设计方式的不同,技术熟练程度的不同,对同一项工作的工作量评估也是不同的。因此,要客观地评估工作量,应当采用多人共同完成的方式,而不是一个人全搞定。
首先,将分解好的各项工作,按模块按功能罗列在一个表格中,依次描述每项工作的业务需求和工作任务,使每一个参与评估的人都清楚每项工作。然后将工作量评估分配给多个人,保证每项工作都有2~3个人同时给予评估。
该阶段的评估应当是独立的,即每个人的评估结果都不会影响另一个人。当每个人完成了自己的评估以后,项目经理收集每个人的评估结果,组织会议进行讨论。
在工作量评估讨论会上,会议组织者将一项一项地讨论每项工作。对某项工作,如果参与评估的每个人评估的工作量差异都不大,说明大家对该项工作的分歧不大,选取最合适的一个工作量评估;如果某个人的评估与其他人差距较大,认真听取他的意见。也许他对该项工作的某个细节存在误解,但也可能该细节正是需求不明确的地方。停下对该项工作的评估,联系客户明确需求,之后才可以继续该项评估。
实际上,工作量评估也是一个迭代的过程:客户提出需求、评估工作量、发现需求不明确的地方、与客户确认、再评估……如此往复数轮,不仅工作量评估出来,业务需求也能逐渐明确下来。
另外,迭代开发的每个迭代期应当包括需求分析、设计、开发、测试。因此在工作量评估时应当全面地考虑进去,而不仅仅只是开发。
最后,当所有工作量被评估出来以后,是否就可以提交客户了呢?一个成熟的项目经理应当考虑更多。并非所有人在所有时间都能满负荷工作,生病、接收突发任务、人事变动,都可能影响项目进度。因此,适当地为每项工作增加一个备用时间的系数,提供一些富余的时间,可以确保项目过程更加稳健。
转自:http://fangang.iteye.com/blog/1185132
相关推荐
### 软件工程实践中的敏捷开发与迭代开发模式 #### 第1章:软件工程实践与敏捷开发 **软件工程概述:** 软件工程是一门综合性的学科,它结合了计算机科学、项目管理学等多个领域的知识,旨在提高软件开发的质量与...
增量模型是一种分阶段交付软件功能的开发模式,通过一系列的迭代来逐步构建完整的软件系统。每一个迭代周期都会产出一部分可操作的产品。 - **特点**: - 每个增量均发布一个可操作的产品。 - 不需要等待所有需求...
3. 行为型模式:如策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、责任链模式、备忘录模式、状态模式、解释器模式和访问者模式。这些模式主要处理对象之间的通信和行为,让代码更易于理解和扩展。 在...
- Kanban:一种看板方法,它通过可视化工作流程来帮助团队高效地协作,并且通过限制同时进行的工作量来减少浪费。 - XP(极限编程):一种聚焦于提高软件质量和响应变化的敏捷开发方法,它倡导一系列工程实践,...
2. **计划**:明确开发和运行环境、编码规范、工作量估算、资源规划、迭代周期、里程碑设定、交付物定义及测试策略。 3. **需求分析**:详细定义软件功能、性能、设计限制和外部接口,确保需求无歧义、完整、可验证...
敏捷迭代方法是近年来广泛应用的一种开发模式,尤其在操作系统(OS)的开发和维护中更为常见。本资料主要针对“系统分析与设计敏捷迭代方法”课程的课后习题提供了答案,旨在帮助学生深入理解和应用相关知识点。 1. *...
总体而言,敏捷开发模式强调的是人的重要性、团队合作、适应变化和持续改进,它通过一系列实践和框架来实现快速迭代和交付高质量的产品,适应快速变化的市场需求。敏捷开发与传统开发方式相比,更加灵活、响应迅速,...
软件开发模式是软件工程中的一种策略,用于组织和管理软件项目的生命周期。常见的开发模式包括快速原型模型、增量模型、原型模型、喷泉模型和螺旋模型,每种模式都有其独特的优点和缺点,适用于不同的项目环境。 ...
2. 逐步集成:在迭代中,系统功能是分批集成的,减少了大规模集成阶段的工作量和难度,降低了集成风险。 3. 早起降低风险:通过早期的迭代,项目团队可以快速确定核心系统架构,降低项目的总体风险。一旦架构稳定,...
在软件开发领域,设计模式是一种经过时间和实践验证的解决方案,用于解决常见的设计问题。这些模式在不同的上下文中被广泛使用,以提高代码的可读性、可维护性和可复用性。本篇文档主要涵盖了软件设计模式的三大类别...
接受条件和故事点用于评估工作量,以便更准确地规划Sprint。 最后,"模式解析"意味着深入理解各种设计模式的适用场景、优缺点及其实现方式。例如,策略模式允许在运行时选择算法,而装饰器模式可以动态地给对象添加...
- **Iterator**:迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 - **Mediator**:中介者模式,定义了一个封装一系列对象交互的对象。 - **Memento**:备忘录模式,捕获一...
例如,对于“用户向自动售货机投币”的用户故事,可以通过分解为不同的步骤来评估所需的工作量。 ### 总结 传统软件开发模式如瀑布模型强调严格的计划和阶段划分,适合需求相对稳定且明确的项目。然而,在需求不...
1. **提高代码的可复用性**:通过遵循设计模式,设计者可以创建更易于复用的代码组件,减少重复编码的工作量。 2. **增强代码的可读性和可维护性**:设计模式提供了一种标准化的方法来组织代码,使得其他开发人员更...
例如,通过迭代回顾总结、自动化工作量评估、敏捷计划会议、持续集成和质量红线等工具和实践,来提升项目的效率和质量。 为了保证敏捷开发的成功,企业需要构建强大的敏捷能力体系,包括敏捷教练的培养、精益需求...
《常见的23个设计模式详解》一书深入探讨了软件工程领域中最为广泛接受和应用的设计模式,旨在帮助不同层次的开发人员、系统分析师及架构师掌握这些模式的核心概念与实践技巧。本书不仅覆盖了从初级到高级的技术细节...
包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式和解释器模式等。每一种模式都有其特定的应用场景和解决的问题,学习和理解这些模式能让你在实际开发...
在本项目中,"C++课程设计之职工工作量统计源码.zip" 是一个包含C++编程语言实现的职工工作量统计系统。这个系统旨在帮助企业管理员工的工作负载,有效地跟踪和记录每个员工的工作时间,以便进行绩效评估和资源分配...
7. **敏捷估算**:如故事点或理想时间估算,用于规划工作量。 **四、敏捷的优势** 敏捷方法提供了许多优势,如更快的市场响应能力、更高的客户满意度、更好的团队士气和创新环境。然而,敏捷并非银弹,实施时需要...
4. **行为型模式**:这类模式关注对象之间的交互和职责分配,包括责任链模式、命令模式、解释器模式、迭代器模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。比如,命令模式将请求...