我们经过以上一系列的分析,工作量评估与优先级评估,制订出一个迭代式的项目计划,再经过一系统用户确认与公司评审以后,终于可以开始我们真正的开发工作。
其实,迭代式开发的执行过程,也就是制作和不断去关注与评估项目进度表的过程。因此,当项目进入执行开发过程时,项目经理应当首先制作项目进度表。现在我们看看项目进度表长得啥样儿。
在一个项目进度表中,首先被纵向划分为三个区域:未开始任务区、正在进行任务区和已完成任务区,当然还可以增加其它区域,如下阶段完成任务区,以及工作进度、费用成本的统计图等。
同时,项目进度表又被横向地划分为数个区域,每个区域就是一个迭代期。在项目初始的状态下,所有的功能以及从中分解出来的工作,按照项目计划被分配到了对应的迭代期、未开始任务的区域。
另外,另一个统计表对整个开发进度的监控比较重要,它被称作Burn-Down Table(暂时翻译为剩余工作量统计表吧)。这个统计表的横轴是项目进行的时间,纵轴是剩余的工作量。项目开始时,横轴应当是0,而纵轴,按照项目计划,应当是该项目的总工作量。每完成一项工作,就减去该项工作的工作量,直到所有工作完成,纵轴为0。如果项目是正常而平稳地进行的,整个统计表就应当是一个平滑下降的直线,直到最后在计划交付时间(Deadline)结束,这跟直线被称作基准线,但它是理想的、实际情况往往不会是这样的。在整个项目的每天都记录下当天的剩余工作量,那么这个表就呈现出一副实际工作进度曲线图。当项目因各方面原因被延后时,该曲线就会高于基准线;当项目因进展顺利而超前时,该曲线就会低于基准线。所以Burn-Down Table可以为项目经理及其成员随时掌握项目进度,及时调整项目偏差,提供方便。
当项目进入第一个迭代期时,项目经理将第一个迭代期的功能及其任务描述清楚,填入到正在进行任务区,同时不要忘记填写各项任务的负责人。众所周知,迭代开发的每个迭代期分为需求分析、设计、开发、测试几个部分,但在这个表中监控的内容可详可简。如果希望更精细化管理,可以将每个任务再分解为需求分析、设计、开发、测试几个部分分别进行监控;如果项目不是非常复杂则不用划分如此精细,可以划分为开发与测试,或者不划分开。每天早上,项目成员召开一个简短的例会,或者通过其它方式,向项目经理汇报各项任务的工作进度。项目经理收集各项任务的工作进度,在这张表中详细记录下来。如果一项任务全部完成,则将其放置到已完成任务区域,再将其它刚刚开始的任务放置到正在进行任务区。最后,项目经理计算项目剩余工作量,并将其填写到Burn-Down Table中。
记得极限编程(XP)的其中一项重要的思想就是及时发现项目进行过程中的进度偏差,并及时进行纠正,而Burn-Down Table的使用正是体现了这种思想。通过整理和绘制Burn-Down Table,为项目经理及其成员提供了一个清晰的可视化图表,表明项目当前的进度是超前还是延后。如果是超前,项目组可以进行更多的检查与测试,进一步保证项目质量;如果是延后,则不得不通过赶工、加班等方式,加快进度。
一次迭代式开发的研究:软件开发的风险
一次迭代式开发的研究:什么是迭代式开发
一次迭代式开发的研究:怎样进行迭代式开发
一次迭代式开发的研究:迭代开发从这里开始
一次迭代式开发的研究:准确的工作量评估
一次迭代式开发的研究:功能的优先级评估
一次迭代式开发的研究:一个迭代式项目计划
一次迭代式开发的研究:开始真正的工作
一次迭代式开发的研究:从容应对需求变更
一次迭代式开发的研究:需求变更的关键步骤
一次迭代式开发的研究:Where you are
(续)
分享到:
相关推荐
在实际应用中,由于不可能无限迭代下去,通常会设置一个计算误差的要求,当连续两次迭代结果之差的绝对值小于这个误差要求时,就可以认为达到了所需的精度,从而结束迭代过程。 在程序设计方面,研究者使用...
良好的需求分析能够确保后续的设计、开发以及测试工作顺利进行,从而提高项目的成功率。然而,在实践中,许多软件项目往往因需求分析不当而导致失败。本文旨在通过具体的案例分析,探讨如何有效地进行需求分析。 ##...
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 研究生签名: 日期: 东南大学学位论文使用 授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人...
它通过定期的冲刺(通常是两周一次)来分解工作,每个冲刺结束后都会交付一个可用的增量产品。 - **TDD**提倡在编写功能代码之前先写测试,这样可以确保代码的正确性和可维护性。它还促进了设计的改进,因为开发...
#### 3.3 迭代式开发模式 - 采用敏捷开发方法,分阶段推进项目进展。 - 每个迭代周期内完成一部分功能的开发,并收集反馈进行改进。 ### 四、优秀产品设计案例分析 通过对成功案例的研究,可以更直观地理解优秀...
设计过程同样需要遵循迭代式开发的原则,不断进行需求变更的管理和质量控制。 通过上述知识点的掌握,学生可以在软件工程的学习和复习中构建起完整且系统的知识体系,为将来从事软件开发和维护工作打下坚实的基础。
这是一次将Web技术与移动应用结合的精彩实践,展现了HTML5在移动开发领域的强大潜力。 Canvas是HTML5的一个重要组成部分,它提供了一个二维图形绘制接口,允许开发者通过JavaScript来绘制动态图形。在这个连连看...
总之,“走出软件作坊”的过程是一次从无序到有序、从低效到高效、从个体到团队的转变。这不仅需要对现有工作流程的深刻反思和大胆改革,还需要对团队文化的建设和人才培养的重视。只有这样,小型软件团队才能真正...
- **并行计算机发展简述**:并行计算的概念早在20世纪50年代就已提出,但直到70年代末期,随着微处理器技术和网络技术的发展,真正的并行计算机才开始出现。并行计算技术经历了从共享内存系统到分布式内存系统的发展...
- **敏捷开发**:敏捷开发强调迭代和增量式的软件开发方法,以适应不断变化的市场需求。 #### 六、今日的软件工程 - **技术革新**:现代软件工程正面临着前所未有的技术革新,包括人工智能、区块链、物联网等新...
- 通过uni-app,开发者可以编写一次代码,生成适应不同平台的应用,减少了重复工作,提升了开发效率。 2. **小程序开发** - 微信小程序、支付宝小程序等都是轻量级的应用形态,用户无需下载安装即可使用,对于...
ASP,全称Active Server Pages,是一种由微软开发的服务器端脚本环境,用于创建动态交互式的Web页面。ASP技术允许开发者结合HTML、VBScript或JScript等脚本语言,以及服务器端组件,来生成和执行Web应用程序。这篇...
- **举例**:复杂的数据分析工具可以通过引导式步骤帮助用户快速定位所需功能,而不是一次性展示所有选项。 3. **习惯形成**: - **习惯形成**是指设计应促进用户习惯的建立,使得用户能够自然而然地使用产品。...
Java由Sun Microsystems(现已被Oracle公司收购)于1995年发布,它的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere)。Java程序主要由类组成,这些类通过编译成字节码(.class文件)可以在任何支持...
- **离散域构造**:与曲线变换(Curvelets)等其他方法先在连续域中开发变换然后对采样数据进行离散化不同,轮廓变换从离散域开始构建,并研究其向连续域的收敛。 - **非分离滤波器组**:使用非分离滤波器组来构建...
在软件开发中,版本号通常表示软件的不同迭代阶段,1.14可能是经过多次改进和修复后的稳定版本。这个版本可能包含了一系列的源代码文件,如.c、.cpp、.java、.py等,分别对应C、C++、Java或Python等编程语言。此外,...
通过多次迭代,算法能够逐渐找到最优的边缘线,即图像的真正边界。 在具体实现中,MATLAB程序可能会包含以下关键步骤: 1. 图像预处理:去除噪声,提高信噪比,可能使用滤波器如高斯滤波或中值滤波。 2. 初始化:...
同时,这也是一次锻炼逻辑思维和问题解决能力的良好实践。 在实际学习过程中,建议先整体阅读代码,理解程序架构,然后逐个模块进行深入研究。遇到不理解的部分,可以通过查阅相关文档、参考书籍或在线资源进行解答...
ChatGPT是由OpenAI开发的一款基于人工智能技术的语言模型,它的工作原理主要涉及到自然语言处理、神经网络和机器学习等核心技术。下面将详细解释ChatGPT的运作机制。 1. **概率从何而来?** ChatGPT是通过大量的...