一直以来,信息技术(IT)领域存在着一大隐忧,不论是所谓的企业内(In house)或是软件公司(Software house)的IT团队,大多数都缺乏架构设计师(Architect)的编制 ...

一直以来,信息技术(IT)领域存在着一大隐忧,不论是所谓的企业内(In house)或是软件公司(Software house)的IT团队,大多数都缺乏架构设计师(Architect)的编制。架构规划的工作大都由项目经理、系统分析师与程序设计师兼任或分摊了,导致普遍轻忽软件架构专业人才的培养与任用。再不然就是常常将架构设计师(architect)职位作为留住项尖开发人员所用的升级奖励。其实架构设计师与系统分析师、程序设计师的专业领域与角色并不相同,接下来我还会进一步点出其中的根本差异。上述情形在以往系统架构并不复杂的状态下,还不至于发生太大的问题。但在分布式架构到处可见的现在,系统本身涉及的实体层面愈来愈复杂,再加上系统服务的范围与重要性在e化的潮流下与日俱增,遂使诸如安全性(Security)、可用性(Availability)、可靠性(Reliability)、延展性(Scalability)、效能(Performance)…等系统层次的非功能性需求(Non-Functional requirement)日益重要。请看以下两则最近才发生的新闻:
  
  
  
  「“财政部”表示,如果纳税人不愿所得资料上网,在四月二十日以前,
  
  仍可以透过网际网络提出申请。不过,财政部的报税网站(http://tax.nat.gov.tw)最近因为涌入大量浏览人次,经常塞车,甚至爆掉,许多纳税人等待二、三个小时仍无法连上网络。」
  
  -----4/16联合报 (申请报税资料免上网 一团乱)
  
  
  
  「刑事局针对资料隐码攻击手法可能对网站的危害分析后,发现八成以上的电子商务网站与各级政府网站,普遍有这种安全漏洞,会被骇客乘隙而入。更惊人的是,某些电子商务网站已经安装防火墙与防毒软件系统,并使用网络交易安全机制,确认网络交易的身分认证权限,但是资料隐码攻击者还是可以轻易找到漏洞,破坏交易安全的认证制度。」
  
  -----4/23联合报 (资料隐码攻击 八成网站躲不过)
  
  
  
  急于在最后期限之前申请个人所得资料不上网造成报税网站大塞车,曝露网站系统在可用性、延展性、效能等等系统层次的问题。资料隐码(SQL njection)模式的骇客攻击,显示安全性始终是信息系统最重要的考量。在这些一连串新闻背后都是信息系统架构层次的问题。因此国外有专家戏称开发系统若不妥善规划处理这类非功能性需求,就容易发生所谓的「CNN时刻」 (当信息系统发生重大问题而造成CNN头条新闻的时刻)。也就是说在媒体发达的今日,软件功能的完善与否固然重要,但是系统架构层次(亦即非功能性需求所对应的层次)一旦出现问题,马上就有可能成为媒体竞相报导的题材,造成企业形象无可弥补的损失。因此开发团队若没有职司因应架构层次需求的架构设计专业人员,由于相关技术人员责任不清、角色不明,对于目前愈来愈复杂的分布式架构,难免就会发生捉襟见肘,难以支应的状况。这种情况就好比要盖一栋现代化大楼的建筑公司缺乏建筑技师一样,这在建筑业是不可思议的事,可是在软件业却是司空见惯。
  
  
  
  之前为了准备这篇短文用「Architect」上网搜寻相关信息,无意间看到网友谈到这个英文字的中文翻译与意涵:
  
  
  
  「由于 Engineer 听起来太过死板, 所以就算在计算机的世界中有人会觉得称他们自己为 Architect 比较有设计/创造者的意味在里头, 基本上英文是非常活的语言, 如果你头脑够活, 你高兴用 Software Director/Designer/Artist/Architect 都无所谓... 」
  
  -----tw.bbs.lang.english
  
  (Re: "Architect"一词除作"建筑师"之外尚有何翻译?)
  
  
  
  在Marc Sewell 与 Laura Sewell去年出版的「The Software Architect's Profession: An Introduction」一书中,曾很俏皮的在该书前言中引用牛津英文字典对「Architect」的解释(一般字典都将其视为建筑师、或其它诸如造船工业等技术领域作解释),并加入以下一段注释突显在软件领域上的解释:
  
  「c In full software architect. A designer of software based technology, who prepares plans, and superintends construction. 」
  
  
  
  这句话指出「Architect」主要就是准备计划并监督建构过程的软件技术设计人员,这也就是我会用「架构设计师」作为其译文的原因。其实一个好的架构设计师不只是位受到尊敬的资深技术人员,通常也是策略制定、组织协调高手、称职的顾问与领导者。这是因为软件架构规划与设计主要就是以巨观(Macro View)的角度切入系统架构,一般所谓的设计(Design)则是以微观(Micro View)的角度切入。比如一般设计师通常考虑的层次是一个使用者按下按钮时所发生的状况,而架构设计师考虑的则是成千上万个使用者按下按钮时所发生的状况。架构设计师规划系统的角度主要都是从Top-Down方式着手,而一般设计师则是多半从Bottom-Up的方式着手。另外,就以大家耳熟能详的设计模式(Design Pattern)为例,其实它也被称为微架构模式(Micro Architecture Pattern),而诸如Model-Control-View (MVC)等涉及架构层次的Pattern则被称为架构模式(Architecture Pattern)。这种巨观/微观的角度分野,在其它学科也常看见,如总体经济学与个体经济学,大历史观与微历史观等等。这种巨观角度的本质,就是架构设计师专业领域与其它软件开发人员最根本的不同之处。
  
  从巨观的角度,举凡架构规格与决策、排定架构审阅时程、解决所有架构相关的问题、所有主要技术决策的核可、维护架构规格等等都是架构设计的主要工作。一位好的架构设计师通常具有以下专业领域的技术素养:
  
  
  
  -企业需求
  
  -硬件与软件架构
  
  -分析、设计与开发
  
  -产品支持
  
  -效能、安全性、容量规划(capacity planning)、网络
  
  
  
  通常在项目的一开始,需求与初始分析等工作流程会产生规划的企业流程与预期系统完成的功能。有了这些信息,架构设计师就能研拟最初的高阶架构蓝图(blueprint)并列出影响架构可能因素的清单。另外,架构设计师也要担负估算项目成本的职责。这通常是经由审慎评估这些将会付诸实施的项目计划对系统既有基础结构(infrastructure)与架构的冲击,以及计算可能付出的成本与所带来的效益而订定。
  
  
  
  
  
  除了上述任务以外,检查初期架构规划设计、影响因素与成本,维持与企业架构决策的一致性也是架构设计师的重要职责之一。这通常要找出制定项目的架构决策与其优先级的判断基准、定义问题领域(Problem Domain)、决定可能解决方案的制约条件、确认有关可能解决作法的假设状况以及辨识模块重用的可能性。架构设计师也必须负责确保需求的达成,以及硬件、软件、基础结构、效能、安全性、容量、可用性和系统运作、管理与维护等等属于系统层次相关技术之间的协调与平衡。在某些关键时刻,他也要做出系统与架构在协调、妥
  
  协与平衡上种种必须当机立断但又很困难判断的决策。
  
  
  
  
  
  架构设计师必须设法降低可能的技术风险(technical risk)对系统的冲击。在规划初期,技术风险对一般人来说通常都是不可知、不可验证也不可测的。风险大多与系统层次的需求有关,有时也会与企业需求有关。不论任何风险的类型,有经验的架构设计师都可在项目的先期也就是构建架构时期,预先列出这些可能的风险,然后在后续的开发时期配合开发人员予以适当地处理与解决。另外,架构设计师也必须领导开发团队,保持与其它成员的良好互动,确保开发人员是根据架构蓝图来构建系统。
  
  
  
  就如我之前所说,一个好的架构设计师通常也是策略制定、组织协调高手、称职的顾问与领导者。他主要的任务就在规划与系统架构层次相关的事务,评估可能的风险与成本,并有效运用有限的人力、物力资源达成系统层次的需求。这样的专业人员在很难预知何时涌入大量浏览使用者,广泛运用诸如多层(Multi-tier)、集群式(clustering)等复杂分布式架构,系统效能、安全性、可靠性动辄成为媒体报导焦点的e化潮流下,更加突显其无可替代的重要性。
  
  
  
  「一个具有架构设计师的开发团队未必就一定能妥善处理系统层次的需求,但一个不具有架构设计师的开发团队则肯定没有人会专责处理系统层次的需求。」
  
  
  
  参考书籍:
  
  1. “Software Architect's Profession, An Introduction”
  
  by Marc Sewell, Laura Sewell Prentice Hall 2001
  
  2. "Sun Certified Enterprise Architect for J2EE Technology Study Guide"
  
  by Mark Cade, Simon Roberts Prentice Hall 2002  

转载于:https://www.cnblogs.com/springMVC/archive/2008/02/23/2204562.html

架构设计师(Architect)的专业与角色相关推荐

  1. 架构设计师(Architect)的专业与角色(转载)

    一直以来,信息技术(IT)领域存在着一大隐忧,不论是所谓的企业内(In house)或是软件公司(Software house)的IT团队,大多数都缺乏架构设计师(Architect)的编制.架构规划 ...

  2. 系统架构设计师软件生命周期_云架构师生命中的一天

    系统架构设计师软件生命周期 OpenStack可能是一个谜. 我们有开放源代码的纯粹主义者,他们证明了OpenStack的优点,即使许多企业爱好者都怀疑OpenStack是否适合他们. 云实践负责人V ...

  3. 系统架构设计师考试4

    架构师考试经验总结 2014年12月14日 11:35:52 langkailen 阅读数 7251 2011年11月中旬参加了系统架构设计师的考试,考试还算比较顺利,顺利通过了国家分数线,获得了资格 ...

  4. 系统架构设计师如何进行架构设计

    9.1 软件架构概述 9.1.1 软件架构的定义 定义1:软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构有软件元素.元素的外部可见属性及他们之间的关系组成. 定义2:软件架构为软件系统 ...

  5. 【软考系统架构设计师】2011年下系统架构师综合知识历年真题

    [软考系统架构设计师]2011年下系统架构师综合知识历年真题 2011年下系统架构师综合知识历年真题 [软考系统架构设计师]2011年下系统架构师综合知识历年真题 [2011下架构真题第01题:绿色] ...

  6. 软考高级之系统架构设计师系列【2】考试说明及考点分析

    有道无术,术尚可求,有术无道,止于术. 本系列参考系统架构设计师教程[清华大学出版社] 文章目录 考试要求 科目一考点 第1章 操作系统(3分) 第2章 数据库系统(5分) 第3章 嵌入式系统(2分) ...

  7. 架构设计师论文-论软件架构评估

    摘要: 随着国家新政策.新标准的推行及优化营商环境的要求,我所在单位现有的登记系统已不满足新形势下的业务需求:2019年,单位获批开展全省不动产统一登记云平台升级改造项目,我作为单位信息化部门负责人, ...

  8. [架构之路-139]-《软考-系统架构设计师》-企业信息化战略与实施:信息系统生命周期、企业信息化与电子商务、企业应用集成

    前言: 企业信息化的本质是企业的管理的信息化,中心是企业管理,是通过信息化的手段辅助企业管理. 因此,架构师不仅仅要懂软件,懂架构,还需要熟悉企业管理的架构,懂企业管理的流程!!! 这也是<软考 ...

  9. 【软考系统架构设计师】2014年下系统架构师论文写作历年真题

    [软考系统架构设计师]2014年下系统架构师论文写作历年真题 2014年下系统架构师论文写作历年真题 [软考系统架构设计师]2014年下系统架构师论文写作历年真题 2014年下系统架构师试题一(需求管 ...

  10. 【软考 - 高级系统架构设计师】(笔记)01 -企业信息化战略与实施

    [软考 - 高级系统架构设计师](笔记)01 -企业信息化战略与实施 一.企业信息化战略与实施 二.企业信息化与电子商务 一.企业信息化战略与实施 信息的定义 香农:信息就是不确定性的减少 维纳:信息 ...

最新文章

  1. mysql、clickhouse读写分离性能测试
  2. matlab非线性回归delta,讲解:Delta-sigma、Matlab、analog-to-digital、MatlabPython|SQ
  3. python env_#!/usr/bin/env python 有什么用?
  4. 前后端敏感数据加密方案及实现_01
  5. arm中断保护和恢复_嵌入式ARM系统异常和中断处理知识总结
  6. ASP非模板生成静态页
  7. fun(int **p)的使用
  8. java的file类中的方法_java中File类的使用方法|chu
  9. 深度学习花书- 4.3 基于梯度的优化方法
  10. 微信和qq默认表情代码对照表及表情文件下载
  11. av_malloc 与 av_free 的函数原型
  12. Linux之ES集群搭建
  13. 使用谷歌地图在 Flutter 应用中添加地图
  14. MacBook Pro死机强制重启键
  15. MATLAB中的快速傅里叶变换FFT与IFFT
  16. 专门画像素图的软件_画像素的软件
  17. 最喜欢的科技资讯类英文网站
  18. JAVA汉字拼音解析
  19. Jmeter通过HTTP代理服务器录制脚本(二)
  20. BCG 使用之CBCGPCalendar控件

热门文章

  1. caffe的python接口学习(7):绘制loss和accuracy曲线
  2. windows下安装Pytorch环境
  3. error LNK2038 RuntimeLibrary 不匹配的解决
  4. 几何学五大公理_【欧几里德的平面几何五大公理是什么?】作业帮
  5. 构造方法之间如何调用?
  6. 数据库学习笔记4-隔离级别 Read Committed
  7. 使用Jsoup完成网页爬虫
  8. linux top 网络,Linux Top 详解
  9. Chrome常用插件和油猴(Tampermonkey)脚本使用及常用脚本分享(网盘)
  10. javascript 复选框(checkbox)全选/全不选/反选