英文及译文下载链接: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所言。

Who needs an architect?---Martin Fowler的更多相关文章

  1. 微服务(Microservices)—Martin Fowler【翻译】

    本文转载自:http://www.cnblogs.com/liuning8023/p/4493156.html -------------------------------------------- ...

  2. (转载)持续集成(第二版)[来自:Martin Fowler]

    转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...

  3. 马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别

    马丁 福勒 Martin Fowler 关于依赖注入和反转控制的区别 http://martinfowler.com/articles/injection.html 中文翻译:http://files ...

  4. <转载> 22种代码味道(Martin Fowler与Kent Beck) http://blog.csdn.net/lovelion/article/details/9301691

    Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构——改善既有代码的设计>)一书中与Kent ...

  5. 福勒(Martin Fowler)

    福勒(Martin Fowler),在面向对象分析设计.UML.模式.软件开发方法学.XP.重构等方面,都是世界顶级的专家,现为Thought Works公司的首席科学家.Thought Works是 ...

  6. Martin Fowler关于IOC和DI的文章(中文版)

    IoC容器和Dependency Injection模式 Martin Fowler 编者语:最近研究IoC,在网上搜索到很多网页推荐阅读Martin Fowler的一片名叫Inversion of  ...

  7. Martin Fowler关于IOC和DI的文章(原版)

    Inversion of Control Containers and the Dependency Injection pattern In the Java community there's b ...

  8. MARTIN FOWLER谈敏捷开发

    转自:http://www.scrumcn.com/agile/scrum-knowledge-library/agile-development.html#tab-id-9 每个人都在谈论敏捷开发( ...

  9. 什么是微服务 Martin Fowler的microservices

    https://martinfowler.com/articles/microservices.html https://martinfowler.com/microservices/ 微服务,最早由 ...

随机推荐

  1. 类、对象以及jvm运行内存解析

    一.JVM内存的分析: 第一步:存放在硬盘上的程序首先要被加载到内存空间中. 第二步:内存中的jvm找到程序中main函数作为入口,然后开始执行. 第三步:执行过程中的内存管理:内存分为四个部分: 栈 ...

  2. HTML5 indexedDB数据库的入门学习(一)

    笔者早些时间看过web sql database,但是不再维护和支持,所以最近初步学习了一下indexedDB数据库,首先indexedDB(简称IDB)和web sql database有很大的差别 ...

  3. [改善Java代码]推荐使用String直接量赋值

    建议52:推荐使用String直接量赋值 一.建议 String对象的生成方式有两种: 1.通过new关键字生成,String str3 = new String(“中国”); 2.直接声明,如:St ...

  4. Java中final变量的初始化方式

    原文转自:http://blog.csdn.net/zhangjk1993/article/details/24196847 public class FinalTest1 { //--------- ...

  5. hdu 4374 单调队列优化动态规划

    思路:我只想说,while(head<=rear&&que[rear].val+sum[j]-sum[que[rear].pos-1]<=dp[i-1][j]+num[i- ...

  6. 【转】测试用例设计——WEB通用测试用例

    现在项目做完了,我觉得还是有必要总结一下,学习到的内容.毕竟有总结才能有提高嘛!总结一下通用的东西,不管什么项目基本都可能会遇到,有写地方也有重复的或者有的是按照个人的习惯来总结的不一定都对,有不对的 ...

  7. java 下载文件功能代码例子

    public static void down(HttpServletRequest request,    HttpServletResponse response) throws Exceptio ...

  8. 让 Putty 保存密码,自动登陆的四种方法

    Putty 基本是我在紧急时候用来登陆 Linux/Unix 终端的不二之先,因其小,开源,界面也非常实用.可是当你要在私有的机器上,经常性的要登陆很多机器的时候就觉得烦琐了,不光打开一堆的窗口,还要 ...

  9. javascript笔记——jqGrid 格式化时间列

    { name:'startTime', sortable:false, editable:true, width:300, sorttype:'date', //unformat:startTime, ...

  10. CAF(C++ actor framework)使用随笔(延迟发送,消息转发,消息优先级)(四)

    e). 消息延迟发送(和前面没太大区别直接上代码) #include <iostream> #include "caf/all.hpp" #include " ...