`
wangshu3000
  • 浏览: 131662 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

架构和架构设计师

阅读更多

系统架构通俗的说起来就是系统的结构组织方式.原则上说, 架构只有好坏之分,而不存在有无的问题. 软件的体系架构可以直接体现为代码的类结构, 也可以表现为文档性的编码规范和全局约定等. 如果软件架构中能够抽象出一些稳定的元素, 那我们就可能得到一些所谓的框架代码. 一般业务架构是很难重用的, 目前常见的框架代码所描述的多半是与业务无关的技术架构.
   
    良好的系统架构应该体现出应用本身的结构要求. 所谓各个为自己, 架构为大家. 只要各个局部符合规格, 应该由架构负责在合适的时刻按照合适的方式把它们组装在一些. 一个良好的架构中, 应该很少出现结构性的if语句, 不需要应用代码自己通过动态判断来定义某个特殊的触发时刻. 架构是一种规范, 当然也就是一种局限. 架构的可退化性是非常重要的, 否则一旦出现抽象泄露, 需要超出原有架构设计做出编码补充的时候, 往往无法将代码自然的融入原有的框架结构, 则整个框架出现大面积的失效情况. 而有的时候更糟糕的情况是一些关键性的资源处在原有技术架构的私有控制之中, 我们为了克服架构限制不得不采用各种trick来hack原有框架, 造成错误的累加和传播, 而补丁的补丁是最难维护的.

    架构问题并不是一成不变的. 在一些情形下无关紧要的问题在另一种情形下可能会成为灾难性的架构问题. 例如在多层B/S架构下, 如果现在要求为每一个表增加一个对应的历史表, 并对其进行查看和维护操作. 为了最大限度的重用代码, 这要求我们的多层结构中的每一层都能够参数化, 这样我们才能用同样的代码处理不同的数据表. 如果我们的money很足, 小弟够多, 有足够的人月砸上去, 那么我们完全可以把业务表和历史表分开处理, 但如果反之,我们就会遇到一个典型的架构问题.

    架构师未必有自己的框架, 因为设计不等价于创造, 架构师只要知道如何把系统中的各种元素按照可行的方式组装在一起就可以了. 但是一个架构设计是非常依赖于我们所能采用的技术手段的, 当现有各种可用的技术元素都无法满足我们的需求的时候, 某些架构师可能会选择创造一种技术元素. 当然, 创造是艰难的, 它所要求的甚至是不同的技能. Sun的Green项目创造了java语言, 从而开启了一个伟大的时代, 这绝对不会是大多数架构设计师的选择(有趣的是,Green项目本身失败了). EJB现在还有多少人在真正使用, 想想当年多少架构师在吹嘘这些东西. 他们对于技术的把握真的就那么幼稚吗? 架构设计并不是凭空出现的, 当时可选的东西就是如此, 而spring和hibernate这些都不属于架构设计本身的内容.它们是一种创造.
   
   架构师未必是团队的领导者. 确实,他的工作类似于编剧, 负责执行的一般是导演. 事实上,一个建筑设计师是极少直接领导一个工程队的.架构师也未必比高级程序员要高明, 他们负责的是不同的内容. 至于产品的"商标及商标的相关元素"和"技术市场架构"等也不属于架构师的工作范畴, 他不能去抢产品经理的饭碗. 当然,在国内的现实情况下, 很多所谓的架构师所做的最重要的工作可能是公关工作, 向客户秀出所谓的理念, 与实际开发是不搭嘎的.    
   
   理论上说, 架构师可以不是编程的强者, 也可以不决定一些具体数据结构的选择, 但他不能不了解各种技术抉择潜在的影响. 这 就如同一个建筑设计师可以不精通工程力学,但是他不能愚蠢到藐视重力, 设计出倒三角式的大厦. 与建筑不同的是, 在软件中我们所面临的不是一种"凝固的艺术", 我们无法以完全静态的方式理解代码,而必须在头脑中把它们运行起来. 架构师应该写下一些实际的代码, 以检验各个接口的可配合性并获得对于代码结构的直接感觉. 实际上, 按照现在软件业的成熟度, 一般我们无法实现建筑中建筑设计师与土木工程师的分工, 很多时候软件架构师都需要直接面对实现的细节. 如果组内缺乏非常强悍的coder, 有编程能力的架构师亲自操刀实现关键性代码的时候也是很多的.

    架构师必须有经验, 但他所依赖的不能只是经验. 只要算一算架构师的年纪, 就会知道以他们在这个世界上的存在时间, 并不足以使得他们经历各种技术细节. 架构设计更多的是依赖我们对于系统结构原理的理解, 而经验可以让我们规避那些原理失效的地方(例如系统级bug). 君 子非异能也, 善假于物也. 很多时候,我们更应该从有经验的朋友或者技术支持那里搜集技术细节, 以确保它们能够满足我们在架构上的原理性需求. Know Why而不仅仅是Know How是非常重要的. 一个农民发明家也许可以得到某个巧妙的机械设计, 但是没有系统的掌握工程力学, 他们是无法去开发精密的导弹控制系统的.当然, 软件开发还处在非常原始的阶段, 掌握一些设计原理和设计模式多半也不过是五十步笑百步而已, 经验的地位是无可替代的.

    架构师不是预言家. 在多变的业务环境中, 架构师的目标不应该是预测到所有的变化可能, 并把它们表达到系统架构中. 这个世界上不乏一些耗资数十亿,设计三四年,但最终每个谈到它的人都要说一句的产品开发项目. 架构设计所能做到的最好的程度是自然的标注出系统的结构边界,成功的delay各种技术抉择.

    架构师不是超人, 他所考虑的东西也许要远一些, 所需要平衡的利益也许要多一些, 但是单独一个人是无法对整个产品或者项目的成败负责的. 如果ThoughtWorks的Martin Follower来处理国内的某些项目, 我估计他会死得很难看.架构师也是人, 也会犯错误,甚至是很低级的错误, 而每个人都会有一些独特的想法. 经历的多了, 你就会回归到终极的认识, 一切都只是浮云, 只有money才是硬道理.

分享到:
评论

相关推荐

    【精心整理】系统架构设计师软考资料.zip

    系统架构设计师考试大纲和复习指南 系统架构设计师课程大纲 系统架构设计师:浅谈架构 系统架构设计师:软件架构师之路 系统架构设计师复习笔记 系统架构师论文范文50篇(含完整目录) 系统架构设计师各知识点思维导图...

    软考架构设计师 论文论文

    【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师...

    系统架构设计师与信息系统项目管理师有哪些不同?.pdf

    系统架构设计师与信息系统项目管理师有哪些不同?.pdf系统架构设计师与信息系统项目管理师有哪些不同?.pdf系统架构设计师与信息系统项目管理师有哪些不同?.pdf系统架构设计师与信息系统项目管理师有哪些不同?.pdf...

    系统架构设计师教程(软考)划重点版本

    课程采用《系统架构设计师教程第四版》教程,对涉及考试的考点进行讲解,主要内容包括:软件架构设计、软件工程、项目管理等课程内容。 【内容介绍】 系统架构设计师,软件架构设计、软件工程、项目管理课程内容的...

    系统架构设计师教程 系统架构设计师教程

    系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程

    软考高级系统架构设计师资料

    “系统架构设计师,属于计算机技术与软件(高级)专业技术资格。考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展的实际情况,考虑有关约束条件,设计正确、合理的软件架构,确保系统架构具有良好的...

    系统架构设计师历年真题.rar

    系统架构设计师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。 系统架构设计师考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展...

    架构设计师考点分布图架构设计师考点分布图

    架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图架构设计师考点分布图...

    2017年系统架构设计师考试大纲

    2017年系统架构设计师考试大纲,2017年系统架构设计师考试大纲,

    2009-2018年软考系统架构设计师真题及答案解析(28套)

    2009年下半年 系统架构设计师 案例分析.docx 2009年下半年 系统架构设计师 综合知识.docx 2009年下半年 系统架构设计师 论文 .docx 2010年下半年 系统架构设计师 案例分析.docx 2010年下半年 系统架构设计师 综合...

    系统架构设计师教程系统架构设计师教程

    系统架构设计师教程系统架构设计师教程系统架构设计师教程

    【系统架构设计师】论软件架构师的角色和培养

    负责起草了全国计算机技术与软件专业技术资格(水平)考试中的系统分析师和系统架构设计师考试大纲,主编了有关考试教材。本文主要讨论软件架构师的角色和培养问题。文章按如下方式组织:第1节介绍软件架构和软件架构...

    2019年软考系统架构设计师学习笔记.pdf

    2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构设计师学习笔记.pdf2019年软考系统架构...

    系统架构设计师 设计模式

    软考 架构 软件架构设计 系统架构设计师 pdf 教程 2009

    高软-系统架构设计师-考点整理

    高软-系统架构设计师-考点整理 高软-系统架构设计师-考点整理高软-系统架构设计师-考点整理高软-系统架构设计师-考点整理高软-系统架构设计师-考点整理高软-系统架构设计师-考点整理高软-系统架构设计师-考点整理高...

    系统架构设计师大纲2021.pdf

    系统架构设计师大纲2021

    系统架构设计师教程.pdf

    系统架构设计师教程.pdf系统架构设计师教程.pdf

    系统架构设计师.pdf

    系统架构设计师.pdf

    系统架构设计师教程

    资源名称:系统架构设计师教程内容简介:杨春辉主编的《系统架构设计师教程》作为全国计算机技术与软件专业技术资格(水平)考试指定用书,系统地介绍了系统架构设计师的基本要求和应掌握的重点内容。全书共分21章,...

    系统架构设计师教程_带目录高清pdf版

    系统架构设计师教程 高清 带目录 PDF版下载 系统架构设计师教程 高清 带目录 PDF版下载

Global site tag (gtag.js) - Google Analytics