`
jiagyao
  • 浏览: 99385 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

架构师的行为准则(二)(转)

阅读更多
先确保解决方案简单可用,再考虑通用性和复用性

系统的复杂性往往是架构师基于通用性和复用性的设计而引入的,很多具体问题往往不需要通用性和复用性的解决方案。如果存在多个可实施方案难以取舍,先简单后通用原则可以成为最终的评判标准。架构师提供具体解决方案时,无需排斥通用和灵活,但是如果过早脱离具体情况,只会迷失在无限的可能性里,被复杂的配置选项、超负荷的参数列表、冗长罗嗦的接口,以及存在缺陷的抽象所淹没。先简单满足需求,当重复需求再次发生时,通过重构来达到复用是一种不错的方式

架构师应该亲力亲为

架构师干久了往往会脱离技术本身,迷茫在抽象之中,这是很危险可怕的。架构师要取得其他同事的信任,应该比业务人员更懂业务,比开发人员更懂具体的编码,比测试人员更懂如何有效地测试,就像航班的主驾驶员,虽然不需要亲自操作,但经验丰富,持续地监视着情况,一旦发现异常随时采取行动。架构师应该项目的交付和质量负有最终的责任。架构师应该尽可能地参与项目,不能把技术决策和方向上的难题拆分出扔给别人,需要采取更务实的办法,比如亲自动手研究或和其他成员讨论。

持续集成是架构师的重要任务

普通的开发人员会focus在各自负责的小模块,只会对单个模块负责,而架构师需要对整个系统负责,持续集成是一种对整个系统进行有效控制的好方法,架构师有责任让它运行起来。

避免进度调整失误

虽然保障进度是PM的职责,但变更要发生的时候,作为对技术最有发言权的架构师应该站出来,把变更的必要性和风险进行仔细分析,最大限度地支持PM的决策。

取舍的艺术

我们做系统,特别是互联网系统,绝不是做一个变形金刚,而是做一个有缺陷但却满足了现阶段商业需求的系统,因此架构师需要有取舍的艺术,你的架构是能用有限的资源满足最迫切的需求,舍掉那些看是光鲜却无太多用处的东西

打造数据库堡垒

在上层的程序设计中,架构师一般都会推崇先简单实现,然后在逐步重构的敏捷方式,但对于较为稳定的后端数据库,我们需要采取更为谨慎的态度,因为数据库是整个系统的基石,无论是业务设计还是技术设计都得保持它的稳定性,这是整个系统稳定的基础。我们往往会发现这么一个现象,当程序第一版上线后,数据库里表只会增加不会删除,也不会删除多余的字段,每次数据库变更都会引起所有人的紧张,也会使得本已混乱的数据库设计更为混乱。

重视不确定性

优良的架构能够从整体上降低设计决策的重要性,糟糕的架构则会使得常常突出选择的重要性。如果出现两个合理地选择,架构师应该停下来,设法找出介于两者之间的、具有更低重要性的决策,了解两者之外还存在其他选择,比决策结果本身更有价值

不要轻易放过不起眼的问题

项目的失败或线上故障往往是由于项目过程中的不起眼问题所引起,比如一些特殊的边界情况,而这些问题绝不能指望开发主力们去发现和解决,因为他们的注意力都会focus在主要矛盾上,作为时刻监控项目的架构师应该担当起发现这些“小bug”的义务。

让大家学会复用

架构师有义务提高开发人员可复用地解决问题的意识,比如以上几种措施:

让大家把自己能复用的代码及时共享给他人
加强复用代码的易用性,避免误用
让大家认识到已有资源好过自己动手
架构文档的抽象程度要适中

架构师写架构文档常常很纠结,写得太高层次的话就太空洞,无切实的指导意义;写得太具体的话,比如指明到类的各种UML图,就会很约束开发人员。文档要写到什么程度,关键在于满足他人的需求,比如业务部门想从文档中得知系统各功能的实施可行性,因此你的文档要能体现各主要功能是如何满足的。测试人员想知道系统内部如何流转和如何对系统进行测试,因此你的文档要体现系统主要模块的运行流程和系统可测试性。开发人员需要知道系统各自模块的划分和之间的交互规范,因此你的文档要体现模块化设计。PM需要知道这个项目有哪些风险点,因此你的文档要体现风险点识别和如何规避。DBA和运维人员需要知道系统的数据量和性能情况,因此需要指明系统如何应对大数据量的情况。关键一点,架构师不是为了设计而设计,是要想清楚别人为什么要看你的文档,怎样满足别人的需求

先尝试后决策

设计中有很多需要决策的点,很多架构师喜欢在象牙塔里凭借经验做决策,感觉这就是架构师需要干的。其实,这样的做法往往会让你很被动,不如延迟决策,把需要决策的点抛出来,让大家去尝试,在实践比较中,其实无须决策,正确的选择自然就出来了,这样也更能拉近你和大家的距离,提高大家的积极性和你的权威性

掌握业务领域知识

架构师的角色任务在于理解业务问题、业务目标、业务需求、并设计技术架构来满足它们。掌握业务领域知识将有利于架构师选择合适的架构模式,更好地制定针对未来的扩展计划。

coding是属于设计范畴

很多人常常把软件开发类比于传统行业,把coding比作是生产过程,因此很多一线开发人员称作自己为代码工人,很多架构师也是这么认为,只是把开发人员当作实现自己设计的生产工具而已。其实coding相对于传统行业应该属于设计范畴,真正生产过程实际上是由工具来完成的编译、构建和发布过程。架构师更应该把coding当作设计来看,从纸上的设计到coding后的代码还有很多设计点可挖,同样的输出的背后也许来源于完全不同的coding,其软件成品的价值也是完全不同的。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cutesource/archive/2010/07/25/5764934.aspx
分享到:
评论

相关推荐

    系统架构师(软考)-系统开发基础知识.pdf

    系统架构师(软考)-系统开发基础知识.pdf 系统架构师(软考)是指通过软考认证的系统架构师,负责设计和开发软件系统。系统开发基础知识是系统架构师必须具备的基本知识,包括软件工程概述、软件开发方法、软件...

    软考架构师2009-2022年真题附答案

    【软考架构师2009-2022年真题附答案】是一份集中的资源,涵盖了从2009年至2022年间的软件设计师资格考试(架构师级别)的实际试题及对应的答案。这个压缩包是备考者宝贵的复习资料,尤其对于那些希望在软件架构领域...

    软件系统架构师

    ### 软件系统架构师的关键知识领域与实践 #### 软件架构设计的核心概念与价值 软件系统架构师负责设计和构建软件系统的基本结构,确保系统满足业务需求、性能标准以及未来发展的灵活性。他们不仅需要具备深厚的...

    软件架构师.doc

    架构师需要制定技术框架,规范开发过程中的技术互动,同时影响开发团队的组织结构。在项目中,系统架构师扮演总设计师的角色,负责构建新产品的技术体系,并确保系统的整合与企业目标一致。 系统架构的概念起源于...

    2021年系统架构复习笔记(按章节).docx

    系统架构师的角色是理解和管理非功能性需求,制定开发规范,进行总体设计,并解决关键技术细节。 系统架构师的技术素质要求对软件工程标准有深入理解,同时需要具备管理素质,如创建高效团队,设定明确目标,提供...

    高级系统架构师培训.pdf

    ### 高级系统架构师培训知识点概述 #### 一、现代软件开发过程及架构策略 - **软件架构设计师的知识体系** - **软件架构的定义与问题**:介绍软件架构的基本概念及其在软件开发过程中扮演的角色,探讨软件架构...

    Java架构师面试总结

    【Java架构师面试总结】 Java语言作为一门广泛应用于企业级开发的编程语言,因其独特的特性和设计理念,成为了面试中常见的考察点。以下是针对Java架构师面试的一些关键知识点: 1. **Java语言特点** - **简单...

    系统架构师论文范文50篇

    在IT行业中,系统架构师扮演着至关重要的角色。他们负责设计和规划复杂的软件系统,确保其高效、可扩展且易于维护。"系统架构师论文范文50篇"是一份宝贵的资源,提供了丰富的案例和指导,适合那些希望深入理解这一...

    系统架构师 4

    系统架构师在项目中的主要职责包括:理解业务需求,制定技术策略,选择合适的架构模式,设计系统组件,定义接口规范,以及确保系统的可扩展性、性能、安全性和可靠性。这些都需要扎实的技术基础和丰富的实践经验。 ...

    BAT大厂2023年Java架构师岗面试题(综合版)

    Java 架构师在面试过程中会面临一系列深入且全面的问题,涵盖从基础知识到高级概念的广泛领域。以下是一些基于给定标题和描述的关键知识点详解: 1. **Java 语言特点**: - **简单易学**:Java 语法简洁,易于理解...

    系统架构设计师32小时通关1

    1. 系统架构设计师是设计和管理软件架构的关键人物,负责非功能性需求的确认和评估,并给出开发规范和核心技术细节。 2. 他们既要关注技术实现,也要处理组织协调,是技术和管理的桥梁。 3. 架构设计师需要与系统...

    软件架构师应该知道的97件事.pdf

    软件架构师作为软件开发项目的灵魂人物,在整个软件工程中扮演着至关重要的角色。一个优秀的架构师不仅...通过不断实践上述的架构师行为准则,软件架构师将能够有效地引导项目顺利进行,为客户提供高质量的软件产品。

    系统架构师概念强化

    系统架构师的概念强化涉及到多个关键知识点,包括架构风格、设计模式、软件集成方法和技术,以及系统分析和设计的视图模型。以下是对这些概念的详细解释: 1. 架构模式: - C/S(客户端/服务器)架构:在这种模式...

    高级软件架构师复习提纲

    如何能抽象出一个统一的状态模型,可以使状态在留转过程中被保存和传递//最好能够用一套处理机制,能够满足WinForm程序和Web应用的需要 //用户的在一个操作流程中可能会嵌套子流程,或者会转到别的流程 //记录流程的...

    高级软件架构师培训讲义

    建模语言是表达和沟通软件设计的关键工具,如统一建模语言(UML),它允许架构师以图形化的方式描绘系统组件、交互和行为,使团队成员和利益相关者能够清晰理解系统结构。而开发过程则涵盖了从需求分析、设计、编码...

    系统架构分析师考试大纲完整版

    10. **职业道德与专业责任**:强调在职业活动中应遵循的道德准则和职业行为规范。 通过系统架构分析师考试大纲的学习和实践,考生不仅可以提升自己的专业技能,还能在解决现实问题时,为企业提供高效、稳定且适应...

    详细的wap 架构师指南

    【标题】: "详细的wap架构师指南" 【描述】: "深入解析wap架构师的职责与技术要点" 【标签】: "wap架构师" 【内容摘要】: 本文主要介绍了ASPire WAP Solution的详细情况,包括WAP Portal的功能、WTBS的功能、关键...

    私塾在线 高级java软件架构师实战培训视频教程 阶段一 代码及目录 18-24 讲 共148讲

    该套Java软件架构师实战培训视频教程聚焦于高级Java开发技术,特别强调了在实际项目中的应用。课程覆盖了从第18讲到第24讲的内容,共计148讲,旨在帮助学习者深入理解并掌握软件架构设计的关键技能。 在阶段一中,...

Global site tag (gtag.js) - Google Analytics