三文鱼洄游模型
软件学院的小慧老师对阿超抱怨,软件工程这门课看似容易,实际太难教。
小慧说:我是按照经典的瀑布模型来讲课的,本来以为会是高屋建瓴,一泻千里,但是实际情况是这样的:
- 需求分析:学生们都不懂企业的需求是什么,上课睡觉。
- 设计阶段:学生们画了许多 UML 图,用设计工具画了不少矩形框,如此而已
- 实现阶段:学生们开始讨论,UML 图早已经扔到一边。
- 稳定阶段:学生们中十分之一的人开始写代码,其他人不知道在干什么.代码大部分情况下都不能工作,所有设计好的种种黑箱和白箱测试都无从开始。
- 发布阶段:这个只有一天时间,就是最后检查的那一天,同时还有人在调试程序.
- 维护阶段:课程结束了,同学们对自己的产品没有任何维护,放假了!
最后大部分同学们都说自己根本没学到什么本事,然后下个学期,新的一批学生进来重复这一过程。。。
阿超沉吟半晌,说,事实上,一个软件工程师在现实世界中的职业发展好像和瀑布相反:
- 毕业进入公司,开始维护一些已有的软件(维护阶段)
- 能够在项目中改一些bug,然后发布小规模的更新版本 (稳定/发布阶段)
- 负责重写一个小小的模块,没有文档,写很多代码(实现阶段)
- 有机会设计比较大的模块,自己写一些文档 (设计阶段)
- 有机会去和用户谈新的项目 (需求分析)
那软件工程的课程能否也像这样安排? 可以试一试这样的流程:
- 开始维护以前同学开发出来的程序,理解程序。
- 找bug,改bug,重构小部分代码,以满足用户的需求。
- 一部分同学可以开发测试用例
- 在现有版本的基础上做增量开发
- 理解需求 (这个时候理解了客户需求是什么)
- 设计
- 开发
- 回归测试 (用到上面开发的测试用例)
小慧问:那这是什么模型?
阿超说:嗯,看起来像是从瀑布下方一步一步上溯到源头,不妨叫“大马哈鱼洄游模型”
小慧在电脑上敲了几下,说:根据糍粑的翻译,应该叫
Malaysia admires fish back to swim 模型?
阿超昏倒了一会,醒来之后说:以后要少用糍粑。这个模型可以叫
Salmon Upstream 模型,或者简称“三文鱼模型”