`
jiagyao
  • 浏览: 95998 次
  • 性别: 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
分享到:
评论

相关推荐

    高级软件架构师复习提纲

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

    信息架构:超越Web设计(第4版)(全彩).[美]Louis Rosenfeld(带详细书签) PDF 下载 高清 完整版

    √ 领域畅销经典重装再现,北极熊书长期被信息架构师、设计师及网站开发者奉为圣经 √ 新版内容全面更新,关注焦点彻底突破网站,面向更热门更前沿的电子产品与设备 √ 深度剖析IA 要素,包括组织、标签、导航、搜索...

    Java虚拟机规范中文版

    周志明(www.icyfenix.com & weibo.com/icyfenix):远光软件平台开发部部门经理,平台架构师,不愿意脱离编码的一线码农。著有《深入理解Java虚拟机:JVM高级特性与最佳实践》。关注各种Java应用,略懂OSGi、Java...

    TCP.IP路由技术[第二卷](CCIE职业发展系列).pdf

    但是随着ARPANET的不断发展,与当今许多负责管理日益增长的互联网络的网管员一样,ARPANET的架构师们也预见到了相同的问题:现在运行的路由协议没有很好的扩展性。 目录: 第一部分 外部网关协议(EGP) 第1...

    java图形图象处理系统设计与实现源码

    该系统适用于美术设计、摄影类职业人员、美工、架构师、开发人员和工程师等人群,使用场景包括:图像编辑处理、特效设计、图形绘制等多种场景。该系统的目标是为上述人群提供一个方便、快捷、高效的图像处理解决方案...

    CloudComparer:比较市场上主要公共云提供商所提供的各种托管云服务

    该项目是开源的,可让其他云架构师,IT专业人员,开发人员随时编辑和更新比较。 贡献 请阅读了解我们的行为准则以及向我们提交拉取请求的过程的详细信息。 s Ilyas_IT83 -最初的工作- 另请参阅参与此项目的列表。...

    asp.net知识库

    Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using sqlite with .NET Visual Studio 2005 中的新 DataSet ...

    jarchitecturecontrol:自动从code.google.compjarchitecturecontrol导出

    框架访问有关架构师提供的规范的代码(命名,属性,关系船),标记代码元素,报告违反规则的行为。 您可以在[ ]中找到导致该项目的需求解决方案分析。 已取得以下进展:||代码分析||确定(仅适用于Maven)|| ||...

    《Wicket开发指南一书》PDF版本下载

    (不要忘了,Delphi的创建者Anders Hejlsberg就是.net框架的架构师,所以C#和Asp.net怎么看都带着Delphi的影子。 Wicket目前最新的版本是1.2.2版,已经支持了AJAX,但感觉这个框架的发展时间毕竟还是短了一点,...

    成都市安全服务目录(包括限价)

    数据安全咨询服务 数据安全咨询服务 数据安全治理体系,在管理决策层、业务层、信息管理层、保密管理层和数据运维支持层等多个层次建立数据安全防护的技术与权责体系,包括数据安全管理规范建设咨询、数据分类分级...

    定义领域:高等教育的网络空间之战-研究论文

    鉴于高等教育的独特目的和与市场的历史分离,互联网的早期架构师认为高校拥有自己的在线空间很重要,这体现在域名扩展上,可以同时传达真实性和合法性。 那个空间就是.EDU。 多年来,封闭的 .EDU 扩展名一直是高等...

    完整版《HTML5高级程序设计》2

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    产品经理学习视频

    02.第二阶段:产品经理的工作方法及应用 1产品经理原型设计工具Axure使用基础 1-认识Axure.mp4 2-Axure操作界面.mp4 3-动态面板.mp4 4-创建部件库.mp4 5-交互设置.mp4 6-变量.mp4 7-Web案例1.mp4 8-Web案例...

    抚摸人类-研究论文

    行为数据可以而且应该为私人和公共选择架构的设计提供信息。 选择建筑师应该引导人们朝着使他们更好的结果(根据他们自己的兴趣,而不是选择建筑师的利益),但让人们自己选择。 自由主义家长制可以而且应该对选择...

    完整版《HTML5高级程序设计》4

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    完整版《HTML5高级程序设计》5

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    完整版《HTML5高级程序设计》3

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    HTML5高级程序设计.part5

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

    HTML5高级程序设计.part4

    在加盟Kaazing前,Peter在Oracle担任了近十年的资深信息架构师,获得过两项软件专利。  Brian Albers Kaazing研发中心副总裁。他有数十年的Web开发经验,曾在Oracle担任高级开发经理。Brian是一位讲演常客,经常在...

Global site tag (gtag.js) - Google Analytics