1.1 历史
20世纪50年代基本上不存在系统化的开发,那是编程的“黑暗时代”。现在的开发人员几乎很难想象当时的软件开发环境。当时大型主机的内存只有几KB(kilobyte,千字节),纸带就是高科技输入系统。西联曾经有效垄断了电传输入设备,该设备每按下一个键都需要做几英尺-磅的功,这些设备导致程序员患上腕管综合征,该症状甚至成了医学界的一个专有名词。没有浏览器、调试器或者CRT终端。基本汇编语言(Basic Assembly Language,BAL)是解决软件危机的银弹。
20世纪50年代末60年代初,更好的工具以更高级别计算机语言的形式出现,将0和1抽象为符号名、更高层次的操作、块结构,并且将结构抽象为记录和数组。这时的开发工作更加轻松,开发人员的生产力更高,但是关于如何正确使用这些技术没有指导。因此这种复兴催生了“黑客时代”,一个个人生产力占统治地位的时代。
黑客时代从20世纪60年代初直至70年代中。这一时期的特点就是由非常聪明的人生产大量的代码,每年10万行的FORTRAN代码产量并非不常见。开发人员必须非常聪明,因为他们花费大量的时间来调试程序,他们要精于此道才能使代码快速交付。对于问题,他们常有天才的解决方案。在20世纪60年代,黑客一词是很有赞赏意味的。它用于描述那些可以生产大量代码完成出色工作,并使其能够保持运行的人。
然而,在20世纪70年代末期,蜜月结束了。黑客变成了一个具有贬义的称谓。因为黑客们开始进行新的项目开发,将之前他们所编写的代码交由其他人维护。随着时间的推移,当更多特定应用出现时,这些代码往往不能正常工作。世界发生了改变,程序也需要随之提高。通常重写这些黑客代码比修复它还要简单一些。此时,人们才发现这些代码在“某些”方面错了。在行业的说明中,“可维护性”这一名词出现了,那些不可维护的代码此时被称为“黑客代码”。
20世纪60年代末的解决方案是一种更加系统化的方法,将之前获得的那些多种多样的宝贵教训组合成方法用于构建软件。同时,随着程序变得越来越大,需要为之设计结构的想法出现了。“软件设计”作为一项活动从软件编程中独立了出来。在黑客时代末期出现的方法将所获得的各类教训组合在一起产生协同效益,使整体大于部分的总和。这些方法都在结构化开发的涵盖之下。
从20世纪80年代开始,软件产业的各个方面都有了巨大的进步。OO范式是一种特别规范的分析与设计方法,带来了层出不穷的革新。