现在的位置: 首页 > 综合 > 正文

作IT学生不容易,当IT老师也很难(续)——软件教育随想(3)

2013年10月20日 ⁄ 综合 ⁄ 共 1511字 ⁄ 字号 评论关闭

                                                            软件教育随想
                                                                                                                邹欣

6) 三文鱼模型

很多学生在学校里认真学习了很多软件知识,在同学中间也很牛的样子,于是他们踌躇满志地毕业了。 但是到了工作单位,他们发现项目组中老中青,各种背景的人都有。 没有人请自己从头设计全新的软件, 自己得从读别人的代码,维护软件系统上手。 我在《移山之道》 这本书里写过 “三文鱼模型”:

软件学院的小慧老师对阿超抱怨,软件工程这门课看似容易,实际太难教。

小慧说:我是按照经典的瀑布模型来讲课的,本来以为会是高屋建瓴,一泻千里,但是实际情况是这样的:

1. 需求分析:学生们都不懂企业的需求是什么,上课睡觉。
2. 设计阶段:学生们画了许多 UML 图,用设计工具画了各种形状的图形,仅此而已。
3. 实现阶段:学生们开始热烈讨论,UML 图早已经扔到一边。
4. 稳定阶段:学生们中十分之一的人开始写代码,其他人不知道在干什么.代码大部分情况下都不能工作,所有设计过的种种黑箱和白箱测试都无从开始。
5. 发布阶段:这个阶段只有一天时间,就是最后检查的那一天,同时还有人在调试程序.
6. 维护阶段:课程结束了,同学们对自己的产品没有任何维护,放假了!

最后大部分同学们都说自己根本没学到什么本事,然后下个学期,新的一批学生进来重复这一过程。。。

阿超沉吟半晌,说,事实上,一个软件工程师在现实世界中的职业发展好像和瀑布相反:

1. 毕业进入公司,开始维护一些已有的软件(维护阶段)
2. 能够在项目中改一些bug,然后发布小规模的更新版本 (稳定/发布阶段)
3. 负责重写一个小小的模块,没有文档,写很多代码(实现阶段)
如果做得还可以, 就会进入下一阶段:
4. 有机会设计比较大的模块,自己写一些文档 (设计阶段)
过了很长时间,才发展到下面这个阶段…
5. 有机会去和用户谈新的项目 (需求分析)

那软件工程的课程能否也像这样安排?  可以试一试这样的流程:
1. 开始维护以前同学开发出来的程序,理解程序。
2. 找bug,改bug,重构小部分代码,以满足用户的需求。
3. 一部分同学可以开发测试用例
4. 在现有版本的基础上做增量开发
a) 理解需求  (这个时候理解了客户需求是什么)
b) 设计
c) 开发
d) 回归测试 (用到上面开发的测试用例来保证软件质量)

小慧问:那这是什么模型?

阿超说:嗯,看起来像是从瀑布下方一步一步上溯到源头,不妨叫“大马哈鱼洄游模型” , 或者简称“三文鱼模型”。

==============
邹欣现任微软亚洲研究院 (Microsoft Research Asia) 技术创新组项目主管。主要负责研究成果到商业产品的转化。他从1996年起在微软公司Outlook, Visual Studio 产品团队工作。 在加入微软公司之前,邹欣从事过 软件开发及软件测试工作。
邹欣1991 年毕业于北大计算机软件专业,获学士学位,1996 年获美国Wayne State Univ. (韦恩州立大学) 计算机软件专业硕士学位。
出版:《移山之道 – VSTS 软件开发指南》,《编程之美 – 微软技术面试心得》(合作)
教学:
讲授清华大学理论计算机中心 软件科学试验班 《现代软件工程》(2007, 2008)
讲授(合作) 北京大学软件学院 《软件实现技术》  (2008, 2009)
博客: http://yishan.cc/members/xin.aspx
 

抱歉!评论已关闭.