英文及译文下载链接:http://pan.baidu.com/share/link?shareid=163291504&uk=1428554614
1、文章主题总结
首先我们从文章的几个小标题看每部分讲了哪些:
1.1 What's architecture?
作者在写他的著作 Patterns of Enterprise Application architecture 中尝试将architecture定义为:define architecture as a word we use when we want to talk about design but want to puff it up to make it sound important. 即Martin认为architecture一词被滥用,大家在想要说明某个东西重要时,就加上architecture这个名号。
另外Martin赞同Ralph Johnson的观点:对architecture的定义依然是:组件和组件交互的接口。不同的是,这些组件和接口是被expert developers所共同认可的。他强调人的重要性。expert developers认为重要的才是真正重要的,才是可以加到architecture里的。并且不是一个人,而是一群人,因为本来软件开发就不是一个人的活动。
1.2 The architect’s role
architect不应该是做所有决定的人,而是一个guide。guide本身是skilled,experienced的team成员,他引导其他人,保持与整个团队的通讯,从全局上指导developers更好的开发,并进而提高整个team的abilitity。
1.3 Getting rid of software architecture
开发过程中,change是不可避免的,所以我们采用这样的开发方法,它可以消除程序的不可变性(敏捷开发就是其中的一种方法)。而architecture可以define为人们认为程序中难以改变的成分。我们的目标是去不可变性(irreversibility),所以我们要去architecture。
2、我的观点
Martin很重视人在software development中的角色。现在软件理论技术实际上已经比较完善,但是项目开发依然面临很多问题,这些问题是因为缺乏真正的expert人才。有这样一张图:
从图中看出,programmers很多,但各公司依然在喊急缺,因为他们要的是experienced programmers。所以,人是目前software development成功与否的关键。
architecture很重要的一点是社交性。因为它不但依赖于软件,而且依赖于软件的什么部分是重要的,而其重要性是开发组大多数人的共识。这个很重要。因为一个搞土木的朋友曾说:建筑设计师做出的东西都很不负责,他们只为了好看,都不考虑设计出那样的图,是否真的可以实现。好多地方的承重什么的,他们都没有考虑。但是最终出名的都是他们。
因此有专门一个architect的组织不够合理,他分离了architect和programmer(真正的实施者)。因此拥有一个像guide那样的人很重要,如who needs an architect所言。