第七章中提到“王不如远交而近攻,得寸则王之寸,得尺亦王之尺也。”这句话出自《战国策.秦策三》,翻译过来就是“大王您还不如和远的国家结盟,而进攻近距离的国家,这样得到的一寸土地是大王您的,得到一尺土地也是大王您的一尺。”这是一种十分正确的外交和军事的策略,是和远方的国家结盟,和相邻的国家为敌。这样既可以防止邻国肘腋之变,又能使敌国两面受敌,无法与我方抗衡。这在当今的软件市场也是一样的,各个大企业之间不断并购,对标准、理论、语言上的争夺,未必也就是出于对“软件实现的考虑”。其最终的实质不过也就是一面打压对手的优势,一面又借助对手和同盟的力量来削弱自己的劣势或补充实力罢了。现实中的软件工程就是这样的。除了软件工程本质的力量推动之外,商业因素也推动着软件工程体系的发展。理想状态下,“软件工程=过程+方法+工具”,但是现实中我们不得不考虑成本的问题,如果愚公能成功,那也是几百年之后的事情,这放在现实生活中,项目早就不复存在了。
第八章中提到《晋书.王献之传》中有言:“此郎亦管中窥豹,时见一斑”比喻看到的只是一部分或比喻可以从观察的部分推测到全貌,指看东西太片面了,视野狭小。思考问题的方法是由点及面,也可以是统揽全局的。之前说到的工具、方法与过程,在这本书中被分解开来思考。但是他们之间并不是孤立的,而是彼此相互作用的。比如在做过程的时候,既要有实施过程的工具,也有相关的过程和方法理论。即使你做出了无数个细节图,你也要能把他们拼起来,才能得到一整只“豹”。所以工程的整体问题仍是实现。之前我们提到,UML只是一种沟通工具,如果可以,其实也可以用甲骨文来写。出于沟通的必要,语言的象征意义在图中应该被表述的足够准确和详细,这样不同的读者才能明白你想要表达的意思。否则,下一个读者阅读你写的UML时,跟刚出土的甲骨文有什么区别呢。项目经理大概是唯一肩负沟通懂程序的人和不懂程序的人之间的协调的使命的人了,知道他们两者的不同很重要,项目经理要能够理解不同的角色关注的层面不一样,关注点也不同。作为灵活的软件工程,既要懂得平衡项目的资源、时间和功能,懂得忽略一些细枝末节,最后才能真正做的出东西,实现工程。
在这一学期的JAVA语言课即将结束的时候,《大道至简》这本书也翻到了末篇。正如读完了《大道至简》这本书不代表你就真正理解了作者蕴含在表面文字下的内涵和深意一样,JAVA的结课也不代表我们就学会了这门强大的语言。我们对编程语言的学习,才刚刚打开了一个新世界的大门。