现在这家公司的开发流程很奇怪,和以前的公司很不一样
一、首先拿到一个客户需求,这个客户需求(OR)可能就只有一句话:“做XXXX运维成本太高了,管理也很混乱,能不能给做个管理系统给控制一下”
由于这个客户很重要,所以虽然需求很不明确,连系统该做成啥样都不知道,但是领导还是决定要做。于是项目组就启动了。这个时候所有已知的东西,就只有这个一句话的OR
二、第一阶段,叫Chart开发,这个阶段找了很多业务专家,以及有现场运维实际经验的人来。一边猜想,一边问。这个阶段主要解决以下问题:
1、这个系统做出来要解决什么问题
2、这个系统大概是啥样的
3、这个系统做出来以后,用户要怎么用
然后这个阶段项目组分成3个小组:“业务分析组”、“竞争分析组”、“技术预研组”,来并行工作。业务分析组就是和业务专家在一起,“猜测”系统应该是怎么样的,回答前面的3个问题。竞争分析组把同类的产品拿来看,自己边用边分析,其实就是模仿。技术预研组则是把有风险的技术先研究研究,免得到时候做不出来
这个阶段结束以后,输出了一堆文档。最重要的就是一个叫“包需求”的东西。把前面的一句话OR扩大了很多,变成一个很长的需求列表。这个输出是后面所有工作的起点。
我感觉这里就有点问题了:
1、为啥叫包需求,我看了这么多书,就没见过有这么一个名词,再说也很难听
2、这个包需求,根据多个项目的经验,相当不准确。遗漏或者瞎猜的情况很严重
三、不管怎样,然后就进入第二阶段了。这个阶段叫“需求分析”,但是分析的不是原始需求了,而是上个阶段输出的“包需求”。这个阶段把包需求分解了,也加了很多人进来。每天大家就对着包需求“想象”场景,输出“场景分析”,这个场景分析之后,又把包需求分解成了一大堆“设计需求”(DR),这个DR也是一个长长的列表,作为下一阶段工作的起点
我感觉这里又有问题了:
1、本来包需求就是有偏差的,经过进一步想象,或者说瞎猜,这一阶段输出的设计需求,已经和原始需求有了更大的偏差
2、很多人没有经历过上一阶段,在这个阶段空降加入,效率很低,沟通成本很高
3、实际的开发人员到这个阶段还是没有全部参与,这个阶段的输出传递会有问题
四、不管怎样,接下来该进入第三阶段了。这个阶段的起点就是上个阶段的“设计需求清单”,这个阶段叫“设计阶段”,把设计需求,再进行一个“概要设计”,最后输出一个“用户故事清单”(Story List)。好吧,敏捷开发的名词终于出现了,在经过了这么久的瀑布之后。。
五、然后进入了迭代开发阶段,这个阶段才开始实际编码。工作的起点是上个阶段输出的“Story List”,每个开发小组对Story进行迭代的简单设计、开发、测试、集成测试。这个阶段有点像敏捷开发了,包括站立会议、持续集成、交叉检视等等手段都会引进来
六、总结,个人感觉,这个开发流程,前面是瀑布,后面是敏捷,我猜到了开头,却猜不到结局。。。
1、前面花了很大的力气(至少3个月),进行需求分析和设计,但是这个需求分析和设计的结果,往往在开发阶段发现有很多问题,部署后用户表示和最初的想法有差距
2、前期的工作成果,传递得很不好,没有参加前3个阶段的开发人员,在开发阶段基本不会去看前期的输出,但实际编码的又是这些人,这样前期的工作意义又被削弱了
总之,我觉得还是我以前那个公司,开发流程更像真正的敏捷。虽然没有站立会议、结对开发这种手段上的东西。但是出可运行交付的周期更短,用户可以更快的反馈结果,浪费在需求分析和设计阶段的时间更少
不过。。。体验一下现在这种流程也不坏,有比较才有想法嘛~~
分享到:
相关推荐
与传统的瀑布模型相比,敏捷开发更加注重团队之间的紧密协作、持续改进以及高质量的产品交付。敏捷开发的核心价值在于通过小步快跑的方式,快速迭代产品,并在每个迭代周期内收集用户反馈,从而确保产品的最终形态...
从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈;...可在迭代模型中应用瀑布模型,并且它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
敏捷开发和瀑布模型是两种截然不同的软件开发方法论,它们反映了不同的开发理念和实践策略。 瀑布模型是一种传统的线性开发方法,其特点体现在以下几个方面: 1. 阶段性依赖:瀑布模型强调从需求分析、设计、编码...
敏捷开发的目的是打破传统瀑布模型的线性开发流程,让开发团队能够更快地适应变化,更早地获取用户反馈,从而提高软件的质量和客户满意度。通过实施敏捷开发,开发团队可以更好地应对不确定性,快速响应市场需求,...
与传统的瀑布模型不同,敏捷方法允许在开发周期内进行调整,并且更加注重团队之间的沟通与协作。 #### 《Agile in a Flash》卡片简介 《Agile in a Flash》并非一本传统的书籍,而是一套便于携带的索引卡片集,旨在...
- **角色分配**:明确每个成员在团队中的职责,包括产品负责人、Scrum Master和开发团队成员。 - **需求管理**:使用用户故事来描述需求,并确保需求清晰且可验证。 - **特性与组件团队**:区分基于特性的团队和基于...
敏捷开发是一种自90年代开始受到广泛关注的软件开发方法论,旨在更好地应对需求变化和技术挑战。与传统的非敏捷开发方式相比,敏捷开发更加强调团队成员间的紧密合作与沟通,重视软件开发过程中的人的因素。这种开发...
他在软件工程领域的贡献不仅限于本书,他还是多本关于软件设计和开发的经典之作的作者,如《设计模式》一书,与Erich Gamma、Richard Helm、Ralph Johnson合著。他的作品在推动软件开发领域的发展上起到了重要作用,...
通俗易懂的解释了什么是敏捷开发模式!敏捷开发带来的好处和优点!传统的瀑布开发模式有哪些弊端,敏捷开发模式和瀑布开发模式的比较和不同!
此外,对于那些习惯了传统瀑布式开发的组织来说,向敏捷开发转变需要时间和努力。 ### 敏捷开发与组织的适应性 敏捷开发方法论的适应性是其最大的优势之一,但这并不意味着敏捷开发可以“一刀切”地适用于所有组织...
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法论,旨在应对快速变化的市场需求,提高软件产品的质量和开发团队的效率。敏捷开发的主要思想来源于极限编程(Extreme Programming, XP),它强调灵活应对需求...
瀑布模型、极限编程和敏捷开发是软件开发管理的三种典型模式,它们之间的演进关系反映了软件开发管理者在管理模式上的变化。瀑布模型强调文档、流程化和管理控制,适合大型软件开发项目,但缺乏灵活性和客户参与。...
- **技能要求高**:敏捷开发要求开发人员具备较强的自我驱动能力和技术能力,这对团队成员的素质提出了更高的要求。 - **文化适应性**:敏捷开发的成功实施很大程度上取决于组织文化的适应性,某些组织可能难以完全...
以瀑布模型为代表的线性开发流程,因其过于依赖前期规划和文档,往往导致项目在后期面临大量不可预见的问题,从而延误进度,甚至失败。在这种背景下,敏捷开发理念应运而生,其中Scrum作为最具代表性的一种实践方法...
角色包括产品负责人(Product Owner)、Scrum Master和开发团队。产品负责人负责定义和优先排序产品 backlog,Scrum Master则是团队的教练和流程守护者,确保团队遵循敏捷原则和实践,而开发团队则负责执行任务,...
【敏捷开发全程实战】是关于敏捷开发方法论的深度实践指南,旨在帮助读者全面理解和掌握敏捷开发的核心理念、流程及工具。在这个过程中,我们将深入探讨敏捷开发的起源、价值以及如何在实际项目中有效地实施敏捷。 ...
这种开发模式与传统的瀑布模型不同,它更注重团队协作、持续改进和灵活应对需求变更。 2. **核心特性**: - **迭代开发**:项目被划分为多个短周期的迭代,每个迭代都产生一个可工作的软件版本。 - **用户故事**...