先确保解决方案简单可用,再考虑通用性和复用性
系统的复杂性往往是架构师基于通用性和复用性的设计而引入的,很多具体问题往往不需要通用性和复用性的解决方案。如果存在多个可实施方案难以取舍,先简单后通用原则可以成为最终的评判标准。架构师提供具体解决方案时,无需排斥通用和灵活,但是如果过早脱离具体情况,只会迷失在无限的可能性里,被复杂的配置选项、超负荷的参数列表、冗长罗嗦的接口,以及存在缺陷的抽象所淹没。先简单满足需求,当重复需求再次发生时,通过重构来达到复用是一种不错的方式
架构师应该亲力亲为
架构师干久了往往会脱离技术本身,迷茫在抽象之中,这是很危险可怕的。架构师要取得其他同事的信任,应该比业务人员更懂业务,比开发人员更懂具体的编码,比测试人员更懂如何有效地测试,就像航班的主驾驶员,虽然不需要亲自操作,但经验丰富,持续地监视着情况,一旦发现异常随时采取行动。架构师应该项目的交付和质量负有最终的责任。架构师应该尽可能地参与项目,不能把技术决策和方向上的难题拆分出扔给别人,需要采取更务实的办法,比如亲自动手研究或和其他成员讨论。
持续集成是架构师的重要任务
普通的开发人员会focus在各自负责的小模块,只会对单个模块负责,而架构师需要对整个系统负责,持续集成是一种对整个系统进行有效控制的好方法,架构师有责任让它运行起来。
避免进度调整失误
虽然保障进度是PM的职责,但变更要发生的时候,作为对技术最有发言权的架构师应该站出来,把变更的必要性和风险进行仔细分析,最大限度地支持PM的决策。
取舍的艺术
我们做系统,特别是互联网系统,绝不是做一个变形金刚,而是做一个有缺陷但却满足了现阶段商业需求的系统,因此架构师需要有取舍的艺术,你的架构是能用有限的资源满足最迫切的需求,舍掉那些看是光鲜却无太多用处的东西
打造数据库堡垒
在上层的程序设计中,架构师一般都会推崇先简单实现,然后在逐步重构的敏捷方式,但对于较为稳定的后端数据库,我们需要采取更为谨慎的态度,因为数据库是整个系统的基石,无论是业务设计还是技术设计都得保持它的稳定性,这是整个系统稳定的基础。我们往往会发现这么一个现象,当程序第一版上线后,数据库里表只会增加不会删除,也不会删除多余的字段,每次数据库变更都会引起所有人的紧张,也会使得本已混乱的数据库设计更为混乱。
重视不确定性
优良的架构能够从整体上降低设计决策的重要性,糟糕的架构则会使得常常突出选择的重要性。如果出现两个合理地选择,架构师应该停下来,设法找出介于两者之间的、具有更低重要性的决策,了解两者之外还存在其他选择,比决策结果本身更有价值
不要轻易放过不起眼的问题
项目的失败或线上故障往往是由于项目过程中的不起眼问题所引起,比如一些特殊的边界情况,而这些问题绝不能指望开发主力们去发现和解决,因为他们的注意力都会focus在主要矛盾上,作为时刻监控项目的架构师应该担当起发现这些“小bug”的义务。
让大家学会复用
架构师有义务提高开发人员可复用地解决问题的意识,比如以上几种措施:
- 让大家把自己能复用的代码及时共享给他人
- 加强复用代码的易用性,避免误用
- 让大家认识到已有资源好过自己动手
架构文档的抽象程度要适中
架构师写架构文档常常很纠结,写得太高层次的话就太空洞,无切实的指导意义;写得太具体的话,比如指明到类的各种UML图,就会很约束开发人员。文档要写到什么程度,关键在于满足他人的需求,比如业务部门想从文档中得知系统各功能的实施可行性,因此你的文档要能体现各主要功能是如何满足的。测试人员想知道系统内部如何流转和如何对系统进行测试,因此你的文档要体现系统主要模块的运行流程和系统可测试性。开发人员需要知道系统各自模块的划分和之间的交互规范,因此你的文档要体现模块化设计。PM需要知道这个项目有哪些风险点,因此你的文档要体现风险点识别和如何规避。DBA和运维人员需要知道系统的数据量和性能情况,因此需要指明系统如何应对大数据量的情况。关键一点,架构师不是为了设计而设计,是要想清楚别人为什么要看你的文档,怎样满足别人的需求
先尝试后决策
设计中有很多需要决策的点,很多架构师喜欢在象牙塔里凭借经验做决策,感觉这就是架构师需要干的。其实,这样的做法往往会让你很被动,不如延迟决策,把需要决策的点抛出来,让大家去尝试,在实践比较中,其实无须决策,正确的选择自然就出来了,这样也更能拉近你和大家的距离,提高大家的积极性和你的权威性
掌握业务领域知识
架构师的角色任务在于理解业务问题、业务目标、业务需求、并设计技术架构来满足它们。掌握业务领域知识将有利于架构师选择合适的架构模式,更好地制定针对未来的扩展计划。
coding是属于设计范畴
很多人常常把软件开发类比于传统行业,把coding比作是生产过程,因此很多一线开发人员称作自己为代码工人,很多架构师也是这么认为,只是把开发人员当作实现自己设计的生产工具而已。其实coding相对于传统行业应该属于设计范畴,真正生产过程实际上是由工具来完成的编译、构建和发布过程。架构师更应该把coding当作设计来看,从纸上的设计到coding后的代码还有很多设计点可挖,同样的输出的背后也许来源于完全不同的coding,其软件成品的价值也是完全不同的。
分享到:
相关推荐
系统架构师(软考)-系统开发基础知识.pdf 系统架构师(软考)是指通过软考认证的系统架构师,负责设计和开发软件系统。系统开发基础知识是系统架构师必须具备的基本知识,包括软件工程概述、软件开发方法、软件...
架构师需要制定技术框架,规范开发过程中的技术互动,同时影响开发团队的组织结构。在项目中,系统架构师扮演总设计师的角色,负责构建新产品的技术体系,并确保系统的整合与企业目标一致。 系统架构的概念起源于...
### 高级系统架构师培训知识点概述 #### 一、现代软件开发过程及架构策略 - **软件架构设计师的知识体系** - **软件架构的定义与问题**:介绍软件架构的基本概念及其在软件开发过程中扮演的角色,探讨软件架构...
【软考架构师2009-2022年真题附答案】是一份集中的资源,涵盖了从2009年至2022年间的软件设计师资格考试(架构师级别)的实际试题及对应的答案。这个压缩包是备考者宝贵的复习资料,尤其对于那些希望在软件架构领域...
1. 系统架构设计师是设计和管理软件架构的关键人物,负责非功能性需求的确认和评估,并给出开发规范和核心技术细节。 2. 他们既要关注技术实现,也要处理组织协调,是技术和管理的桥梁。 3. 架构设计师需要与系统...
《信息系统架构设计师考试真题详解》 信息系统架构设计师,作为IT行业中的一项高级职业,负责规划、设计和管理企业的信息系统架构,以确保其高效、稳定、安全地运行。本资料主要涵盖了2009年至2010年间的信息系统...
系统架构师的角色是理解和管理非功能性需求,制定开发规范,进行总体设计,并解决关键技术细节。 系统架构师的技术素质要求对软件工程标准有深入理解,同时需要具备管理素质,如创建高效团队,设定明确目标,提供...
### 软件系统架构师的关键知识领域与实践 #### 软件架构设计的核心概念与价值 软件系统架构师负责设计和构建软件系统的基本结构,确保系统满足业务需求、性能标准以及未来发展的灵活性。他们不仅需要具备深厚的...
- 规范化的不同阶段分别对应不同的范式,如第一范式、第二范式等。 - 在数据库设计的不同阶段,规范化的目标和重点会有所不同。 **知识点细节:** - **需求分析阶段**:确定用户的需求,理解业务流程,此时不适合...
高级开发人员架构师面试题 以下是对高级开发人员架构师面试题的详细解释和知识点总结: 1. DateTime.Parse() vs DateTime.TryParse: 在使用 DateTime.Parse() 时,如果 myString 无法满足时间格式要求,将引发...
6. **架构师的6项职责**:定义架构师的核心任务,如需求分析、设计决策、沟通协调等。 7. **架构师与项目经理的分工协作**:明确两者在项目管理与技术指导上的不同职责及合作机制。 8. **架构定义与文档**:基于...
在实际操作中,项目架构师需要考虑不同团队间的协作、开发流程的标准化以及项目的迭代管理。可能涉及敏捷开发、Scrum或Kanban方法论,以及跨部门的沟通协调策略。 3. 互联网架构:互联网架构通常是指支持大规模在线...
《员工手册》作为公司的管理理论依据和行为准则,不仅规范了员工的行为,还强调了团队合作和个体价值的实现。 组织架构方面,公司分为多个核心部门,如总经理办公室、人力资源部、财务部、设计部、工程部、市场部和...
软件架构师作为软件开发项目的灵魂人物,在整个软件工程中扮演着至关重要的角色。一个优秀的架构师不仅...通过不断实践上述的架构师行为准则,软件架构师将能够有效地引导项目顺利进行,为客户提供高质量的软件产品。
在IT行业中,系统架构师扮演着至关重要的角色。他们负责设计和规划复杂的软件系统,确保其高效、可扩展且易于维护。"系统架构师论文范文50篇"是一份宝贵的资源,提供了丰富的案例和指导,适合那些希望深入理解这一...
系统架构师在项目中的主要职责包括:理解业务需求,制定技术策略,选择合适的架构模式,设计系统组件,定义接口规范,以及确保系统的可扩展性、性能、安全性和可靠性。这些都需要扎实的技术基础和丰富的实践经验。 ...
【Java架构师面试总结】 Java语言作为一门广泛应用于企业级开发的编程语言,因其独特的特性和设计理念,成为了面试中常见的考察点。以下是针对Java架构师面试的一些关键知识点: 1. **Java语言特点** - **简单...
架构方案是架构师在软件开发过程中制定的一种技术文档,它详细说明了系统的结构设计、技术选型、接口规范、数据模型等方面的内容,目的是为了指导项目开发的方向,确保技术实现符合设计目标,同时让项目团队成员理解...
Java 架构师在面试过程中会面临一系列深入且全面的问题,涵盖从基础知识到高级概念的广泛领域。以下是一些基于给定标题和描述的关键知识点详解: 1. **Java 语言特点**: - **简单易学**:Java 语法简洁,易于理解...