摘至 邹欣《构建之法》一书,以作学习之用
1. 大马哈鱼洄游模型
软件工程按照经典的瀑布模型
1. 需求分析
2. 设计阶段
3. 实现阶段
4. 稳定阶段
5. 发布阶段
6. 维护阶段
事实上在现实世界中,软件工程师的职业发展与瀑布流程刚好相反
- 毕业进入公司(或者实习生),开始学习并维护一些已有的软件(维护阶段),主要由自己的师傅(Mentor)带领
- 能够在项目中改一些 Bug,然后发现发布小规模的更新版本(稳定/发布阶段),联系重构,开始和其他同事打交道
- 有机会负责重写一个较小的模块,没有多少文档,自己要写很多代码(实现阶段)
- 表现好的员工,有机会设计比较大的模块,自己写一些文档(设计阶段),和更多成员发生工作联系。在一些情况下还能发挥领导作用
- 员工逐渐成长为团队的骨干,有机会计划新的项目(需求分析)
现实生活中,学习的过程
Alpha 阶段
- 开始维护以前的同学开发出来的程序,理解程序,理解用户的痛点
- 找 Bug,改 Bug,重构小部分代码;一部分同学可以开发测试用例
- 在现有版本的基础上做少部分增量开发,快速分布并收集用户反馈
Beta 阶段
- 根据 Alpha 版本的反馈,进一步分析需求,估计实现需求的难度(此时应该能理解客户需求是什么)
- 设计 -> 开发(重构)
- 回归测试(用到上面开发的测试用例)
- 发布,收集用户反馈,看看新的版本是否真的解决了用户的问题
所以这种学习模式就像从瀑布下方一步一步上溯到源头,然后又从源头流下去,故称之为“大马哈鱼