系统架构通俗的说起来就是系统的结构组织方式.原则上说, 架构只有好坏之分,而不存在有无的问题. 软件的体系架构可以直接体现为代码的类结构, 也可以表现为文档性的编码规范和全局约定等. 如果软件架构中能够抽象出一些稳定的元素, 那我们就可能得到一些所谓的框架代码. 一般业务架构是很难重用的, 目前常见的框架代码所描述的多半是与业务无关的技术架构.
良好的系统架构应该体现出应用本身的结构要求. 所谓各个为自己, 架构为大家. 只要各个局部符合规格, 应该由架构负责在合适的时刻按照合适的方式把它们组装在一些. 一个良好的架构中, 应该很少出现结构性的if语句, 不需要应用代码自己通过动态判断来定义某个特殊的触发时刻. 架构是一种规范, 当然也就是一种局限. 架构的可退化性是非常重要的, 否则一旦出现抽象泄露, 需要超出原有架构设计做出编码补充的时候, 往往无法将代码自然的融入原有的框架结构, 则整个框架出现大面积的失效情况. 而有的时候更糟糕的情况是一些关键性的资源处在原有技术架构的私有控制之中, 我们为了克服架构限制不得不采用各种trick来hack原有框架, 造成错误的累加和传播, 而补丁的补丁是最难维护的.
架构问题并不是一成不变的. 在一些情形下无关紧要的问题在另一种情形下可能会成为灾难性的架构问题. 例如在多层B/S架构下, 如果现在要求为每一个表增加一个对应的历史表, 并对其进行查看和维护操作.
为了最大限度的重用代码, 这要求我们的多层结构中的每一层都能够参数化, 这样我们才能用同样的代码处理不同的数据表. 如果我们的money很足, 小弟够多, 有足够的人月砸上去, 那么我们完全可以把业务表和历史表分开处理, 但如果反之,我们就会遇到一个典型的架构问题.
架构师未必有自己的框架, 因为设计不等价于创造, 架构师只要知道如何把系统中的各种元素按照可行的方式组装在一起就可以了. 但是一个架构设计是非常依赖于我们所能采用的技术手段的, 当现有各种可用的技术元素都无法满足我们的需求的时候, 某些架构师可能会选择创造一种技术元素. 当然, 创造是艰难的, 它所要求的甚至是不同的技能. Sun的Green项目创造了java语言, 从而开启了一个伟大的时代, 这绝对不会是大多数架构设计师的选择(有趣的是,Green项目本身失败了). EJB现在还有多少人在真正使用, 想想当年多少架构师在吹嘘这些东西. 他们对于技术的把握真的就那么幼稚吗? 架构设计并不是凭空出现的, 当时可选的东西就是如此, 而spring和hibernate这些都不属于架构设计本身的内容.它们是一种创造.
架构师未必是团队的领导者. 确实,他的工作类似于编剧, 负责执行的一般是导演. 事实上,一个建筑设计师是极少直接领导一个工程队的.架构师也未必比高级程序员要高明, 他们负责的是不同的内容. 至于产品的"商标及商标的相关元素"和"技术市场架构"等也不属于架构师的工作范畴, 他不能去抢产品经理的饭碗. 当然,在国内的现实情况下, 很多所谓的架构师所做的最重要的工作可能是公关工作, 向客户秀出所谓的理念, 与实际开发是不搭嘎的.
理论上说, 架构师可以不是编程的强者, 也可以不决定一些具体数据结构的选择, 但他不能不了解各种技术抉择潜在的影响. 这就如同一个建筑设计师可以不精通工程力学,但是他不能愚蠢到藐视重力, 设计出倒三角式的大厦. 与建筑不同的是, 在软件中我们所面临的不是一种"凝固的艺术", 我们无法以完全静态的方式理解代码,而必须在头脑中把它们运行起来. 架构师应该写下一些实际的代码, 以检验各个接口的可配合性并获得对于代码结构的直接感觉.
实际上, 按照现在软件业的成熟度, 一般我们无法实现建筑中建筑设计师与土木工程师的分工, 很多时候软件架构师都需要直接面对实现的细节. 如果组内缺乏非常强悍的coder, 有编程能力的架构师亲自操刀实现关键性代码的时候也是很多的.
架构师必须有经验, 但他所依赖的不能只是经验. 只要算一算架构师的年纪, 就会知道以他们在这个世界上的存在时间, 并不足以使得他们经历各种技术细节.
架构设计更多的是依赖我们对于系统结构原理的理解, 而经验可以让我们规避那些原理失效的地方(例如系统级bug). 君子非异能也, 善假于物也. 很多时候,我们更应该从有经验的朋友或者技术支持那里搜集技术细节, 以确保它们能够满足我们在架构上的原理性需求. Know Why而不仅仅是Know How是非常重要的. 一个农民发明家也许可以得到某个巧妙的机械设计, 但是没有系统的掌握工程力学, 他们是无法去开发精密的导弹控制系统的.当然, 软件开发还处在非常原始的阶段, 掌握一些设计原理和设计模式多半也不过是五十步笑百步而已, 经验的地位是无可替代的.
架构师不是预言家. 在多变的业务环境中, 架构师的目标不应该是预测到所有的变化可能, 并把它们表达到系统架构中. 这个世界上不乏一些耗资数十亿,设计三四年,但最终每个谈到它的人都要说一句的产品开发项目. 架构设计所能做到的最好的程度是自然的标注出系统的结构边界,成功的delay各种技术抉择.
架构师不是超人, 他所考虑的东西也许要远一些, 所需要平衡的利益也许要多一些, 但是单独一个人是无法对整个产品或者项目的成败负责的. 如果ThoughtWorks的Martin Follower来处理国内的某些项目, 我估计他会死得很难看.架构师也是人, 也会犯错误,甚至是很低级的错误, 而每个人都会有一些独特的想法. 经历的多了, 你就会回归到终极的认识, 一切都只是浮云, 只有money才是硬道理.
分享到:
相关推荐
【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师论文案例分享【软考】架构设计师...
系统架构设计师考试大纲和复习指南 系统架构设计师课程大纲 系统架构设计师:浅谈架构 系统架构设计师:软件架构师之路 系统架构设计师复习笔记 系统架构师论文范文50篇(含完整目录) 系统架构设计师各知识点思维导图...
《软考系统架构设计师教程和系统架构设计师考试全程指导》是针对全国计算机技术与软件专业技术资格(水平)考试中的高级资格——系统架构设计师所编写的权威教程。这套教材结合了清华大学出版社出版的《系统架构设计...
系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程 系统架构设计师教程
【系统架构设计师】是软件开发领域中的核心角色,他们承担着设计和规划复杂软件系统架构的任务,确保系统在技术上可行、高效,并满足业务需求。系统架构设计师不仅要具备深厚的技术底蕴,还需拥有良好的管理和协调...
系统架构设计师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。 系统架构设计师考试合格人员能够根据系统需求规格说明书,结合应用领域和技术发展...
系统架构设计师考试是国家对计算机技术与软件专业人才进行水平评价的一种方式,通过考试的人员将获得证明其具备从事相应专业岗位工作能力和水平的证书。这个证书对于求职者和在职人员来说具有重要意义,它不仅可以...
系统架构设计师是IT行业中的高级职位,其主要负责现代信息系统的整体规划与设计。在学习笔记中,我们将会了解到系统架构的概念、架构师的定义、职责以及所需的技术与管理素质。此外,还包括与系统架构师相关的其他...
本压缩包包含了多份关键文档,包括"系统架构设计师教程第二版.pdf"、"软考-系统架构设计师备考计划参考 _ 码蜂窝.pdf"以及"2023年系统架构设计师备考学习计划.pdf",这些资料将为考生提供全面的学习路径和深度学习...
2009年下半年 系统架构设计师 案例分析.docx 2009年下半年 系统架构设计师 综合知识.docx 2009年下半年 系统架构设计师 论文 .docx 2010年下半年 系统架构设计师 案例分析.docx 2010年下半年 系统架构设计师 综合...
而《历年系统架构设计师考试试题分类精解_案例分析与论文篇》则重点针对案例分析和论文写作部分,提供实战技巧和范例,提升考生在实际问题分析和解决方案阐述方面的能力。 这三本书的组合,为考生提供了系统性的...
系统架构设计师考试是一项旨在评估并认证个人在计算机科学和信息技术领域,特别是系统架构设计方面专业能力的考试。通过这项考试,考生需展示他们能够根据需求规格说明书,结合实际场景和技术趋势,设计出合理且具备...
系统架构设计师论文汇总...这些论文覆盖了系统架构设计的多个方面,对于提升系统架构设计师的专业素养和实践能力具有重要意义。通过深入学习和理解这些知识点,设计师可以更好地规划和构建高效、稳定、安全的信息系统。
系统架构设计师作为IT领域的一个重要职业角色,主要负责对软件系统进行高层次的设计和规划。系统架构设计师的工作不仅要求有深厚的技术功底,还需要具备良好的系统思维和解决复杂问题的能力。针对这个职位,思维导图...
《系统架构设计师教程》第二版是一本全面介绍系统架构设计师所需知识和技能的专业教材。通过对上述知识点的学习,读者不仅可以掌握扎实的理论基础,还能通过丰富的案例分析获得实践经验,这对于准备参加系统架构设计...
系统架构设计师是信息技术行业中一个关键的角色,他们负责设计、规划和实施大型复杂系统的结构,以满足业务需求、性能、安全性和可扩展性等多方面的要求。在2020年的讲义中,可能会涉及以下几个主要知识点: 1. **...
根据提供的信息,我们可以推断这份文档“系统架构设计师教程.pdf”是关于系统架构设计方面的教程。由于提供的部分内容仅包含重复的网址(www.TopSage.com),我们无法从中直接获取具体的教学内容。因此,我们将基于...
在计算机组成与体系结构这一章节中,讲解了系统架构的基础知识,强调即使作为系统架构设计师,理解硬件和底层原理的重要性。计算机系统由硬件和软件构成,可视为多级层次结构。硬件部分包括: 1. 控制器:负责分析...
《系统架构设计师真题与答案解析》是一个针对系统架构设计师这一职业资格认证考试的重要学习资源。这个压缩包包含了从2009年至2018年间的历年真题及对应的答案解析,对于备考者来说是极其宝贵的参考资料。下面将详细...
为了帮助备考者深入理解这一职位的要求和考试内容,本资料集合了2009年至2018年的系统架构设计师真题,涵盖了历年来的考试重点和难点,旨在为考生提供全面的复习指导。 系统架构设计师的考试通常分为三个部分:基础...