谈谈我接受软件工程的过程。 读书时,根本不知道有软件工程理论的存在,认为软件就是一个指令的集合,软件开发完全就是个体行为,软件开发方法也是由老师口传心授的。虽然我学的不是计算机专业,但在那时,即使有计算机专业的同学向老师提及软件工程的思路,老师也会回答:你的想法太尖端了,现在还用不上——当时就算搞研究的大学教授,也无法认识到软件工程的重要性。 那我们是怎么做软件的?老师说,要构思,要设计,要有整体思路,那时的系统分析通常叫做总体设计,然后,就画框图,要模块化、抽象出子程序、按照框图写程序,程序调通了,软件就完成了。 Bill所接受的教育比我还早几年,虽然美国的教育和行业发展当时比我们超前了许多,但我认为,他所接受的也不外乎这些。 显然没有系统地接受软件工程的理论教育。 因此,本人断言,比尔盖茨开发MS DOS没有用软件工程,有的只是我前面所说的口传心授的、个体的开发方法和过程。 没错,这些东西是体现了软件工程的一些思路,但被你捡到篮子里的东西,不能说这本来就是你的,而应该说软件工程是在这些方法基础上的总结。 后来由于工作的机遇,毕业后就接触了不少有志于软件应用的人,他们给了我很多指导,从用户界面、总体设计、开发方法到具体的实现、代码优化,还是口传心授。当时代表计算机应用发展主流的《计算机世界》讨论的也就这些,根本看不到系统化的方法论。 很多年,我就是怎么做软件的,直到我离开软件开发的岗位。 等我再回来主持软件开发工作,微软的东西已经有了控件、有了层次、有了结构化,软件工程的管理方法有了用武之地。应该说,从技术上,软件工程的管理对象和管理过程有了合理的映象。 但这时候,面向对象和软件工程之类的资料还是很难觅到。 一个偶然的机会,碰到一位老者,谈起我开发管理中的困惑,不料他哈哈大笑,笑我空入宝山,白白背着一身财富,不知道使用。 在大学时学过运筹学,其中的线性规划和图论是我仅有的两门得了优秀的课——用的就是这个!经过他的指点,我找出了其中的联系,也把相关的方法运用到了具体的工作中。 直到后来找了一些更有针对性的书,参加一些相关的讲座、讨论,还有灌水,才逐渐形成和接受了软件工程系统化的思路。 闲时,翻出一本大学时的闲书《管理的数量方法》,其中的一节:进度表应用问题,居然完全包含了Project(软件)的思想,让我狂晕! 可惜,这一本30几万字的书里,找不到任何“软件工程”的字眼。 软件工程的理论方法,只是运用于软件项目的众多有效的管理方法归纳到一起而形成的,它们在软件工程理论和方法存在之前早已存在,而不是软件工程所独有和固有的。 很多人,包括我、我的老师,可能也包括Bill,在前期,他们在运用这些方法时,根本就不知道软件工程的存在,那么,怎么能说他们运用的是软件工程呢?
|