前天看完了Craig Larman写的《UML和模式应用》
书的内容包括面向对象的分析和设计,迭代和增量式开发。
客观来说是一本不错的书,信息量巨大,包含了大量名词解释,具体的例子,做项目的时候一定可以用得到。
缺点是,书的排版给我一种信息爆炸的感觉,字体较小,看久了眼睛不舒服;目录详细得可以用来作为读书笔记,所以读起来容易让人感觉枯燥和吃力;遍布各处的作者关于瀑布式开发的批评,并且时刻提醒我自己所处的位置,让我觉得有点重复和罗嗦。
不过我已经从这本书得到很多了,谢谢Larman。
本书一大特色是介绍了各种历史。
历史的重要性怎么强调都不过分,打个比方,你在山上看黄河,它一会儿向北流一会儿向南流,那它到底往哪里流,那你再站高一点,站到云端,你才清楚都看到它是东流入海的。
知道历史,我们才有大局观,才晓得自己在技术浪潮中处于什么位置,我们能做些什么,我们的目标不会就是坐在那里编编程而已。
我把各种历史简图总结如下,我们不说细了,只说本质,聪明的你们会看到各种历史之间的因果关系。
1, 数字电子计算机发展史
a) 1946年:世界上第一台真正意义上的数字电子计算机,诞生于美国宾夕法尼亚大学
b) 1971年:INTEL公司开发成功第一块微处理器4004
正是计算机的发明才有了现在的软件开发,那么下面是软件的发展简史。
2, 软件行业发展史,一般的说法是分为五代
a) 第一代1949-1959:随着第一台计算机发明,为政府,军方以及大的客户定做软件项目。
b) 第二代1959-1969:独立于硬件的软件产品出现。软件被专门开发出来重复销售给一个以上的客户。
c) 第三代1969-1981:企业解决方案公司的兴盛。许多著名的企业在此时成立,如:1972年,SAP;1975年,Microsoft;1977年,Oracle;1987年,Sybase。
d) 第四代1981-1994:客户大众市场软件。微处理器,带动了个人计算机的兴起,于是需要建立一种全新的软件:基于个人计算机的大众市场的产品。
e) 第五代1984至今:互联网增值服务。提供无限联网容量的互联网的腾飞,开创了一个新的时代。这个时代现在比较热门的是google,社会化软件,如twitter,facebook。
现在可以来说说,OOA/D的历史了
3, OOA/D的历史
a) 1960-1970:OO编程语言开始崭露头角,标志是smalltalk的发明。
b) 1980年代:OOA/D开始成为正式的主题,许多著名的先驱如:kent beck发展了他们的思想,许多论文陆续发表。
c) 1994年:UML1.0发表
d) 2004年:UML2.0发布
再来看看进化,迭代和增量式开发
4, IID的历史
a) 1950-1960:美国,IID在Mercury空间项目,以及Trident潜水艇项目中得到应用。
b) 1970年代:IID在众多大型国防和航天项目中采用,其中包括美国航天飞机飞行控制软件。
c) 1980年代:Frederick Brooks(人月神话 )阐述了瀑布方法都缺陷;Barry Boehm发布螺旋模型风险驱动IID方法。
d) 1990年代:各种IID方法百花齐放,如UP,DSDM,Scrum,XP……
e) 2001年:敏捷联盟成立
伴随着这些历史的是一本本重量级的著作:
5, 各种著述
a) 1994:GOF的那本设计模式
b) 1999:Martin Fowler的重构
c) 2001:敏捷宣言
d) 2002:Robert C. Martin的敏捷软件开发;Martin Fowler企业软件架构模式
e) 2003:Eric Evans领域驱动的设计;Kent Beck测试驱动开发
f) 2004:重构与模式;测试驱动开发(实用指南);Steve McConnell代码大全第二版
g) 2005:Larman,UML和模式应用
看完这么多历史以后,我想各位可以按图索骥,确定自己在技术浪潮中的位置了。