作者回复: 总结的非常详细👍
你的这些分享相信对其他看这篇专栏的同学都非常有价值👍
作者回复: 以前我也分不清楚:)
下周的敏捷开发文章会有针对两者的对比,希望能帮助你解惑
作者回复: 还是有些不一样,原型开发呢,基本上没什么设计,代码质量也不要求,甚至就是工具生成,就是为了怎么快确认需求怎么来。
而迭代模型则是控制需求范围,通过减少需求保证时间段速度快,不牺牲质量
作者回复: 确实,想通过类比的方式讲清楚确实有点难度。精装修的问题是,不是从头开发的,不涉及功能模块的开发,都是在修修补补:)
我们也不必过于纠结这些,毕竟例子只是辅助理解的,还有很多文字介绍,应该结合起来可以比较容易理解一点。从你的留言看明显是懂了的👍
作者回复: 👍都总结在点上。
我再补充一点文章中可能没交代清楚的:
迭代模型在迭代时,不是简单什么功能都做,而是在每个迭代选择当前优先级最高的功能,最核心的功能。
作者回复: 表述没问题的。
我觉得关于架构设计可以看看这篇文章:《从0开始学架构-08 | 架构设计三原则》合适原则、简单原则、演化原则https://time.geekbang.org/column/article/7071
跟你总结的比较类似,非常有道理。
作者回复: 👍你的答案整理的很好。
如果没有直接客户,产品直接面向最终用户,这种可以跳过原型步骤。
有些大的重构和迭代可以并行做,重构的完了再把现有数据迁移过去
在一个迭代里面,正常情况下,是不会轻易接受需求变更的,会放到下一个迭代。如果必须要变,那就需要重新调整迭代目标了,但这样的情况不能出现太多,不然就失去迭代的意义了。
作者回复: 💯
迭代模型的时候,一定要注意先上优先级高的需求、核心的需求。
作者回复: 🤝谢谢指正,结合最近波音747Max的案例,确实不能乱用,不能说飞机的软件也用敏捷这种快速上线快速迭代的模式。
我觉得组合研发模式的前提还是质量,软件工程的目标就是要构建和维护高质量的软件,无论怎么组合开发模式,都不能牺牲质量。
这里我也列一些我觉得好的实践:
1. 瀑布模型可以参考敏捷开发,引入持续集成、自动化测试,提升效率
2. 敏捷开发可以参考瀑布模型,开发前多设计,开发后多测试,尤其是要辅助人工测试
作者回复: 👍是的,要根据实际情况选择。
至于前后端分离,算一种开发模式也说的过去。我个人觉得也算增量的一种,按模块划分,类似的还有按服务划分。
作者回复: 👍是的,需求不明确导致的返工会造成很大浪费。
建议还可以思考下:如何验证?是全都验证还是先验证一部分?
作者回复: 👍是的,应该就是迭代模型,整个项目变成了若干小的周期,每个项目周期就是一个瀑布模型。
另外不用纠结于是哪种模型,更多的是去看看这些模型哪些是有你可以借鉴的地方,看有什么是可以帮助你改进优化项目流程的。
比如说迭代模型,它的发布周期通常是固定的,一个周期到了,小瀑布要走完要发布小版本,这样可以避免延期,倒逼着你优先选取核心的功能。
作者回复: 赞,这样的做法确实不错,对客户来说可以不担心花了钱做不出来东西,对于你来说不担心做了收不到钱👍
作者回复: Keynote画的,另外还有OmniGraffle
作者回复: 你们导师说的很有道理👍
作者回复: 如果你想推行敏捷,可以先找个小项目,组个小团队试点,成了可以作为一个参考,领导可以去邀功,以后可以更大规模尝试;失败了也损失不大,领导也不用担责任。
不管用不用敏捷开发,你都可以学习其中好的实践,例如持续集成用起来,帮助你高效的集成部署;自动化测试代码写起来,帮助你提高项目质量;迭代快起来,以前3个月变成1个月,以前1个月的变2周。有些事情即使只是程序员都是可控范围内的,做着做着其实你就“敏捷”起来了。
作者回复: 👍是的,要敏捷起来,组织架构、流程制度也必须要跟着调整,光喊口号做样子是没用的。
作者回复: MVP更多的是需求定义上的概念,和开发模型并没有关系。
但是你使用迭代开发或者敏捷开发,必然要优先选择最核心最重要的功能需求先开发。
所以通常MVP的方式选择核心需求,用迭代模型或敏捷开发开发需求。
作者回复: 恐怕不行,因为快速原型模型是牺牲质量的。质量差的软件,去测试市场,你不知道是因为质量问题不行还是需求没抓住不行:)
这种情况,可以考虑用迭代模型,先开发核心需求,然后再逐步迭代。
作者回复: 👍对,增量模型就是需求很明确,可以划分成几个模块,然后按照模块分别应用瀑布模型开发,而且多个模块可以并行开发。