水晶方法概论(一):Crystal的起源之路
Crystal方法是最具轻量级、最灵活的软件开发方法之一。它由Crystal Clear、Crystal Yellow、Crystal Red等几种具有独特特征的敏捷方法组成。
总之,Crystal系列方法强调每个项目都有区别于其他项目的地方。因此,团队需要量身定制出适应这些特性的策略和实践。与其他敏捷方法一样,Crystal方法通过促进按时和频繁的工作软件交付,激发了用户的参与度、适应性,并为团队的工作排除干扰、消除浪费。
水晶方法基于两种关键假设:
-
首先,团队可以通过简化工作和项目流程来提高自身效率。
其次,每个项目都与其他项目不同,都需要一些特定、具体的方法和策略。
Alistair说,每个项目都是一个游戏,团队需要制定策略才有可能赢得比赛。也就是说,在计划项目时,我们应该让所有人参与进来,允许他们互动并欢迎每个人提出想法。
-
人
-
互动
-
社区
-
技能
-
才华
沟通
项目的属性会随着项目参与人数的变化而变化。
Alistair观察到,小型团队能够构建并交付项目,无需过多的书面工作或状态报告。而较大的团队主要交付大型项目,因此需要大量的文书工作、持续更新以及频繁沟通。
由此,Alistair得出,每一个策略都取决于项目的复杂程度。而Crystal方法的适用性取决于三个方面:
-
首先是团队规模;
-
其次是关键程度;
最后是项目优先级。
例如,一所学校根据以下几点将5年级划分为5个A、5个B、5个C等不同的部分:
-
他们以前的课程成绩;
-
理解能力;
他们的个人能力。
划分班级的结构对教师来说很有帮助。由于每个部分中的学生的理解水平几乎相同,因此教师可以相应地来定义他们的教学策略。
那么,Alistair使用不同的颜色来区分不同的方法。反过来说,这会使我们很容易就能确定什么时候使用什么方式。
-
1-6人的小团队;
-
支持固定价格,无谈判合同;
-
以人为本,不太关注流程和工件;
-
需要文档;
-
项目安全焦点。
-
7-20人的小型团队;
-
明确代码区域的所有权。代码区域所有权是这样定义的,如果需要进行更改,那么只有代码所有者才能去处理;
-
反馈来自“真实用户”。另外,它还消除了由于间接沟通而造成的进一步混乱;
-
首选方便、直接的沟通。它减少了很多对于文档的需求,因此,开发人员很容易理解他的工作;
-
任务是由客户定义并验证的目标;
-
自动化测试用于更快地解决Bug;
制定每月改进计划,包括制定待办事项列表,并在规定时间内实现。
-
团队规模为21-40人;
-
项目期限为1-2年;
-
根据其职能技能拆分团队;
-
遵循增量开发;
-
每3-4个月发布一次;
-
每个版本都称为“增量”;
专为中型项目而设计。
-
团队规模为21-40人;
-
在具有不断发展的代码库的项目中使用,供公众使用;
它专注于缺陷最小化。
虽然“Crystal Orange web”和“Crystal Orange”大体相似,但Crystal Orange web并不处理单个项目,而是处理一系列需要编程的项目。这些计划的结果需要与代码库合并,并被开发人员使用。然而,方法还是保持不变。
对于40-80人的团队,需要遵循传统的软件开发方法。除此之外,还会根据所需工作组建和划分团队。
-
团队规模为80-200人;
-
适用于大型项目;
此外,根据软件的需要,定义的方法也有所不同。
以上是Crystal系列的主要成员。但是,对于大型项目,还有两种方法:
两者都适用于非常关键的大型项目的方法。他们的团队和策略会根据项目的关键程度来决定,这些项目意义非凡。
如上图所示,舒适度(C),可自由支配资金(D),基本资金(E)和项目寿命(L)是垂直因素。水平因素是“团队规模”。
因此,Alistair认为,必须考虑所有因素,才能决定采用哪种方法。
例如,对于规模为40人的项目,在提交发布日期之前,开发人员将考虑以下因素:
-
适合工作多少小时(C);
-
可用于该项目的资金(D);
-
完成该项目需要多少资金(E);
-
如果这些要求中的任何一个不满足,则可以增加 /减少项目的团队规模和寿命(L);
最后,选择最可行的方法。
或根据团队规模,开发人员可以根据提供的资金(E),可用的资金(D)和资源的舒适度(C)估算项目完成情况(L)。
https://www.toolsqa.com/agile/crystal-method/