对于系统架构设计,我现在是功力不够,境界还凑合,俗称眼高手低是也。功力不够只能一点一点地练,一点一点的涨了,还不知道什么时候能有所小成。不过有境界也算是一件好事情,所以这个系列会先聊一聊境界方面。

之所以用了这样一个标题,是因为系统架构设计既有比较通用的、相对固定的方法与模式,即工程化的一面,也需要设计师发挥个人的灵感与才华,即艺术的一面。二者不可偏废。

系统架构设计有7个需要注意的要素,可以概括为P4QAD,具体如下:

要素1:原则(Principles)。原则是系统架构的内在规律性的东西,是为了达到系统的可靠性、性能、可重用性、可扩展性等多方面的需求,应当遵守的具有普遍意义的规则。原则的重要性勿需多言,因此在七个要素中它位列第一。

要素2:过程(Process)。过程就是设计系统架构的步骤与操作流程,即先做什么,再做什么,在什么条件下怎么做,等等。对任何一种方法论而言,过程是体现其可操作性的要素,因此其重要性仅次于原则。

要素3:产品(Products)。系统架构设计的产品不是指最终完成的那个系统,而是指的架构设计的方案、文档等,例如传统软件工程的需求分析文档、概要设计文档与详细设计文档。产品往往是和过程耦合的,耦合关系规定了在设计过程的某一步应当输出哪些产品,从而保证过程的每个步骤能够达到目的。通常设计过程中会形成多种产品,分别从不同的角度、不同的尺度对设计进行描述,因此产品体系应当保证完备性(必要的角度和尺度都覆盖到了)与一致性(不同的产品之间没有矛盾)。关于这一点,一些架构框架(architecture framework)有专门的规定。

要素4:模式(Patterns)。模式是前人总结的具有可重用性的设计方案,是学习的榜样和模仿抄袭的对象。不过在模仿之前一定要先搞清楚这个模式针对的需求与适用的环境。

要素5:定量(Quantification)。可选的设计方案往往有多种,如何进行选择呢?针对方案中的不同点进行的定量分析是最有说服力的判断依据。定量分析的结果与我们的直觉相悖是很常见的。只依靠经验与直觉,甚至于只谈设计理念、原则,而不做定量分析,是架构设计道路上的大坑。可惜许多人喜欢往里面跳。

要素6:方面(Aspect)。系统架构设计需要考虑多方面的需求:最终用户能直接体验到的是系统的功能、性能、可靠性等,系统的运营者还要关心系统的控制管理,开发者强调开发周期与成本、可重用性、维护调试等,上述几类参与者都可能会对系统的可扩展性提出需求……设计师需要根据项目实际情况,针对各方面的需求进行设计,并进行融合与折衷,不能只注重系统功能与性能,忽视了其他方面。

要素7:决策(Decisions)。在系统架构设计中,原则、过程、产品、模式这些并不能自动解答设计师面临的所有疑问。拿球赛打个比分,这些只是基本技术动作,掌握好它们是成为一个好球员的基本要求。怎样在比赛中运用这些基本技术动作,对球进行合理的处理,则需要球员根据场上情况,在一瞬间做出自己的决策。这是集中体现球员才华的地方,往往也是球星与普通球员之间的主要区别所在。与球员们相比,系统架构设计师有更充足的时间来进行决策,不过决策同样也是最体现设计师智慧与才华的地方。

在P4QAD中,第一个要素“原则”统领了系统架构设计的工程与艺术,第二个到第六个要素是属于工程方面的,最后一个“决策”属于艺术方面。

(待续)

转载于:https://www.cnblogs.com/yuesiyuewei/archive/2012/01/06/2313912.html

系统架构设计的工程与艺术(0)相关推荐

  1. petshop4.0 具体解释之中的一个(系统架构设计)

    前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有很多.Net与J2EE之争,很多数据是从微软的PetShop和Sun的PetStore而来.这样的争论不可避免带有浓厚的 ...

  2. petshop4.0 详解之一(系统架构设计)

    前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来.这种争论不可避免带有浓厚的商 ...

  3. petshop4.0 详解之一(系统架构设计)(转载)

    前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来.这种争论不可避免带有浓厚的商 ...

  4. 企业级权限系统架构设计 (v 2.0)

    企业级权限系统架构设计 (v 2.0) Ⅰ. 系统概况 1. 层级关系(权限视角) 1.1 [一级权限]访问权限 功能说明 登录系统的下游,通过身份认证控制访问目标. 建立生态系统:开放平台级的授权访 ...

  5. 0. 视频监控系统架构设计

    0.视频监控系统架构设计 0.1.功能指标 (1)搭建共享文件夹 (2)实现Ubuntu的NAT上网和桥接上网 (3)搭建局域网 (4)搭建nfs服务器.tftp服务器 (5)将uboot.kerne ...

  6. 基于BPMN2.0的工单系统架构设计(下)

    版权声明: 本文为博主原创文章,未经博主允许不得转载.关注公众号技术汇(ID: jishuhui_2015) 可联系到作者. 在上两篇文章中,介绍了BPMN2.0和工作流定义语言(以下简称WDL),以 ...

  7. 系统工程(SE)学习笔记(四)——系统架构设计

    TOC 在法求学时,一位教授告诉我,架构为什么是architecture?因为它有点像art.对于这个稍微有点"冷"的笑话,我第一个联想到的就是香港中银大厦,在我看来,中银大厦的外 ...

  8. 分布式实时处理系统架构设计与机器学习实践

    编者按:在2017年的1月11日,CSDN高级架构师金牌授课群为群友们带来了第一次的分享,讲师和主题参见这里,本文为课程后续的文字整理,第一时间发出来分享给读者,课件下载点击这里. 大家好,我们今天主 ...

  9. PetShop的系统架构设计[转]

    <解剖PetShop>系列之一 前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的Pet ...

最新文章

  1. pytorch 报错No module named torch
  2. 程序与进程的区别,并发与并行的区别,多进程的实现原理
  3. logz.io一个企业级的ELK日志分析器 内部集成了机器学习识别威胁——核心:利用用户对于特定日志事件的反馈处理动作来学习判断日志威胁 + 类似语音识别的专家系统从各方收集日志威胁信息...
  4. 线程中这么调用类_「手撕面试官」谈谈你对JDK中Executor的理解?
  5. [转] 让Visual Studio生成Release版本的可执行文件
  6. 路劲寻找-八数码问题(判重)
  7. LOJ2195 旅行
  8. 入门前端学习路线图【送书】
  9. 需求与业务的区别、需求设计与业务设计的区别
  10. onCreate onRestoreInstanceState onSaveInstanceState
  11. OpenCV-图像处理(05、图像混合)
  12. 创建一个简单的Flash动画
  13. linux 关闭防火墙,关闭8081端口防火墙
  14. 悉尼mit it硕士选课 INFO5990
  15. 查询时报错The error may involve defaultParameterMap ### The error occurred while setting parameters
  16. DDTW 导数动态时间规整算法
  17. 速度单位:MHZ、GHZ、Mbps
  18. 恒大造车,从来都不是梦
  19. 研究ffmepg中有感(NDK 与 JNI 的关系)
  20. 21岁:写给自己也写给未来的自己的话

热门文章

  1. jquery拼接后css样式不生效_JQuery常用选择器以及操作属性和样式的方法介绍
  2. Java高并发编程(九):Java中原子操作类
  3. include详解 shell_Linux 系统结构详解,看这一篇就够了
  4. Win2008 r2 iis7/iis7.5系统下HTTP重定向(301重定向)图文方法
  5. 搭建mongodb分片
  6. 微信小程序_(组件)flex布局
  7. 微信公众号点击菜单即可打开并登录微站的实现方法
  8. SpringBoot日记——ElasticSearch全文检索
  9. bzoj 4547: Hdu5171 小奇的集合
  10. 博客园添加访问人数统计超详细教程