[导入]软件工程和乒乓球

进了大学,我还没选过别的体育课,从大二上到现在,打了四个学期乒乓球了,不过水平还是不见长。
今天向同学讲解UML,告诉他到底要怎样学这个东东,不过我也不是很熟的说。不知怎的,就拿乒乓球作比较了。
乒乓球中打一场球赛,和软件工程中做一个项目类似。如何赢球赛,就好比如何做成功这个项目。大家知道的,

  • 比赛前要先分析对手的情况,这叫需求分析,知己知彼才能百战百胜;
  • 然后要考虑,对手打什么,我怎么出手,如何组织进攻,出现意外怎么办,这叫结构设计;
  • 上战场打了,这是编码;
  • 比赛的时候根据实际情况不断作出分析判断,这叫迭代。
  • 比赛的时候出现了不可遇见的意外,这叫风险;
  • 比赛结束,宣布结果并领奖,这是交付;
  • 比赛输了,承诺下次一定打好,这个是交付延期;
  • 比赛之前,做做热身,这个是测试;


当然这个纯粹是搞笑,其实我要说的不是这些。我们都知道国家队的运动员从小就开始十分艰苦的训练,从握拍姿势,正手攻球、反手推挡的动作,哪个不要练几百遍?然后再是讲理论,什么旋转,进攻策略等等等等,但是也在同时不停的训练,不时还要去打打比赛,小的比赛,大的比赛。到后来,纯粹就是凭经验、凭感觉在那里打。
看看我们学软件工程的大学生,有几个真的是经过不断地训练,出来就可以独挡一面的呢?很多同学连编程基本功“握拍姿势”都有问题,如何能去学更高层次的东西呢。
学校里的老师,讲理论的时候,光讲理论,所谓实践不过是走个过场,有点经验的人一看到要求就知道这课设计有问题。要么就是就课论课,我教软件工程,管理一概不提,谁都知道管理是软件项目中最有风险的一个方面。
真正教UML,却不讲软件过程,那UML能做的就很有限,UML就是为了使分析人员设计人员思路清楚,使编码人员编程时一目了然,我看UML的模型中处处都有软件过程的影子,软件过程指导你如何从一个模型到另一个模型。同学们编程尚不行,看到需求时就大脑一片混乱,没有软件过程指导,怎么去完成呢,更何况是几个人合作。
再说了,讲课也只讲那些所谓流行的、所谓有钱途的。把自己的思维局限在那些狭小的空间中,殊不知,计算机的领域,也是广阔得让人受不了啊。这次来了个外教,教了Haskell,又一个外教,教了Prolog,我觉得好,现在都在学OO, C-style的语言,就是应该接触这些另类的但功能丝毫不差的Functional Language,我想也没几个同学真正听懂吧,就像结构化的到面向对象化在思维方式上的根本变化一样。也要知道,我们要掌握软件设计的思想,不是单单用用那些工具。
而且,现在的教育甚至有误导,让大家做什么动不动就要用Enterprise Edition, Professional, Architect Version等等那些许可费用在104以上的软件,自以为有计算机软件保护条例第二十二条保护,又别上我们是教育机构就可以随便用那些软件了。这种病态的思想,我们作为软件工程师,竟然都对这些东西习惯了,这不就害了国家的软件业吗。
这次教面向对象设计,又是用Rational Rose这种又大又贵又难用的东西。
不管了。我想,也许只有在真正工作中才能锻炼我们吧。


文章来源:http://herald.seu.edu.cn/blog/shiningray/archive/2005/03/07/13501.aspx

posted on 2005-03-07 23:07  ShiningRay  阅读(436)  评论(0编辑  收藏  举报