系统架构与软件架构

再深一层分析,无论是建筑工程领域,还是其他工程领域(包括计算机科学),从它们的演化历史来看,直觉上我们似乎能够发现其共同点:即从哲学的角度上来说,它们都是人类为了克服与生俱来的恐惧而进行的创造、演化和发展。
人类到底恐惧什么呢?
    我们可以注意到,人类本能当中有这样一个重要的共同点:对不确定的、感觉到威胁的事物具有强烈的不安全感。这就激发了人类尽量把这些恐惧的因素控制在最小范围内的愿望。这也就是各个工程学科(包括系统及软件工程领域)在日积月累的发展历程中,逐步规范化、科学化、系列化以及统一化,最终保证人类在复杂环境中,当不确定的因素存在时,依然能够进行有效的控制和协调。
    基于同样的目的,计算机科学中也诞生了一个重要的概念,即“系统架构(System Architecture)”。
1997年,Eberhardt Rechtin与MarkW.Maier在其著名的研究论著中,为计算机科学界总结了人类在系统架构方面的实践成果,从而奠定了系统科学和系统架构在计算机科学中的基石。他们通过实践总结,列举了一系列系统架构的应用领域:工业系统、航空系统、软件与信息技术系统等。无论是什么样的系统架构应用领域,应用系统架构原理的目的都是一样的,即完整地、高一致性地、综合全面地、平衡各种利弊地、有技术和市场前瞻性地设计系统和实施系统。Eberhardt Rechtin 与MarkW. Maier这样的方法论级的实践总结,当然立即受到了工程界的热烈欢迎。因为本能的不安全感,会让我们不由自主地摒弃那些不确定的、不系统化的架构经验。
    我们平常还能看到这样一种现象:有的行业的架构设计从业人员把自己叫做“系统架构师”(System Architect);有的软件工程领域的架构人员把自己也叫做“系统架构师”,而不是“软件架构师”。从比尔•盖茨称呼自己为“软件架构师”(Software Architect)来看,他非常明白这两个词的联系和区别。严格地讲,Eberhardt Rechtin与MarkW.Maier提出的“系统架构”或“系统设计”,与我们平时所谈到的“软件架构”或“软件设计”既有千丝万缕的联系,又有比较明显的区别。
    当我们把软件技术与其他技术(例如物理技术、化学技术、机械技术、电子技术等)一起放在历史的河流中进行比较时,我们就会发现:为了开发和生产一个产品,其他相关技术的投入和花费的逐年增长率,要远远低于软件设计与开发投入的逐年增长率。
    在软件技术方面投入的增长率高于在其他技术方面投入的增长率,其主要原因是系统或产品不像过去那样严重受制于硬件或其他技术,而是更加依赖那些非功能方面的要求,这体现在更加依赖于系统对软件及其架构品质的要求。
    我们可以以一个医疗行业的CT机(Computed Tomography,计算机X线断层摄影机)系统为例来进行分析。CT机是现代医学诊断中不可缺少的设备。通过X线束对人体的某一部分按一定厚度的层面进行扫描,由于人体各种组织的疏密程度不同,X线的穿透能力也不同,所以检测器接收到的射线就有了差异。由此产生的信号转变为数字信息后由计算机进行处理,并输出到显示屏上,显示出人体组织的图像,以发现病变并确定病变的相对空间位置、大小、数目等。
    由于CT机的关键部件包括X线系统、高压发生器、检测器、成像系统、机架与床等,涉及电子、机械、图像处理、计算机等学科。综合考虑,针对CT机质量方面的系统级要求(CT机系统级的要求其实很多,仅列出部分作为参考)如下:
  安全性(Safety)
  保密性(Security)
  可靠性(Reliability)
  健壮性(Robustness)
  可制造和装配性(Manufacturability and Assembly,机械设计的人员对这个词不会陌生)
  可测试性(Testability)
  可服务性(Serviceability)
  可配置性(Configurability)
  可安装性(Installability,你可以在国际软件测试资质认证委员会ISTQB提供的软件测试标准术语表里找到这个词)
  可演化性(Evolvability)
  可移植性(Portability)
  可升级性(Upgradeability)
  可扩展性(Extendability)
  可维护性(Maintainability)
  可处置性(Disposability,环境工程的人员对这个词不会陌生)
    除了CT机系统级的质量要求外,我们还可以列出CT机在其他非功能性方面的要求,例如:
  可用性(Useability)
  有吸引力的图像界面
  强吞吐量的生产能力(Throughput or Productivity)
  快速的响应时间(Response Time)
  高质量的图像处理
  状态可重现性(Reproduceability)
  状态可预测性(Predicatability)
  高精度计算
  低廉的成本
  低廉的运行操作成本
  与周边环境的强交互能力(CT机操作人员、病人、维护人员等)
  耗电低
  较低的其他资源消耗(水、空气、化学药剂等)
  CT机的大小和重量适中
  资源利用率高
  运输和移动方便
  CT机市场技术领先性
  CT机设计与行业标准吻合
    如果把上述所有CT机系统的非功能性要求做一下汇总和分析,我们就能发现:这些要求都是系统级的设计要求;如果加上CT机的功能要求,就能够代表要生产的CT系统是什么样子、未来会如何运作;这些非功能性的要求,有些是与机械和电子设计相关的,但绝大多数是与软件架构和设计相联系的。这也就意味着,一个完整的CT机系统的非功能性指标要求是由多个子系统和多种技术结合在一起才能得以实现,即一个系统往往是软硬结合的。
    从CT机系统这个例子,我们可以清晰地看到:一个系统的实现是结合了各种子系统和各种技术的实现。系统架构的主要任务是界定系统级的功能与非功能的要求、规划要设计的整体系统的特征、规划并设计实现系统级的各项要求的手段,同时利用各种学科技术完成各子系统的结构构建。
而    软件架构首先要理解系统架构,并从软件架构学科的视角对系统架构提出相应的意见,同时从软件的视角协助规划、设计那些实现系统级的各项要求的手段,并最终为各软件子系统提供架构和设计。
    从中可以看出,在系统架构活动中,由于对软件越来越深入的依赖,软件架构的任务也显现出重要的作用。而且系统架构与软件架构是紧密联系和互相依赖的。本书的重点将主要集中在“软件架构”,而非“系统架构”上。

系统架构与软件架构是一层含义吗相关推荐

  1. 系统架构_软件架构风格概述

    系统架构_软件架构风格概述                                    转载自:http://jpkc.whu.edu.cn/jpkc/dxqyxxxtfgnjg/dzja/ ...

  2. 系统架构师—软件架构设计(一)概述、构建、视图、基本架构风格

    1.软件架构概述 从需求分析到软件设计之间的过渡过程称为软件架构.只要软件架构设计好了,整个软件就不会出现坍塌性的错误,即不会崩溃. 架构设计就是需求分配,将满足需求的职责分配到组件上. 软件架构为软 ...

  3. 系统架构设计师 - 软件架构设计 - 软件架构风格

    文章目录 软件架构风格描述 数据流风格 批处理风格 管道过滤器风格 调用返回风格 主子程序风格 面向对象(显式调用风格) `层次结构`风格 独立构件风格 调用返回风格(隐式调用) 虚拟机风格 基于规则 ...

  4. 系统架构设计师 - 软件架构设计 - 架构评估

    软件质量属性 记忆口诀 : 安全 操作 功能 修改 靠/用 可变 性 安全性 系统提供功能给合法用户的同时,拒绝 非法用户的访问请求 或 企图 的能力; 互操作性 系统与外部系统 (环境) 进行相互作 ...

  5. 系统架构设计师 - 软件架构设计 - 特定领域软件架构DSSA(Domain Speciffic Softwore Architecture)

    特定领域软件架构 某一特定应用领域内,为一组应用提供组织结构参考标准.高层次的软件架构 横向特定领域: 例如持久层设计领域 纵向特定领域: 例如供应链系统领域 活动过程 领域分析:根据领域知识 ,获取 ...

  6. 系统架构设计师 - 软件架构设计 - 基于架构开发方法 ABSD (Architecture-Based Soft Design)

    文章目录 基于架构的开发方法 体系结构需求 体系结构设计 体系结构文档化 体系结构复审 体系结构实现 体系结构演化 语义上的 "体系结构" = "架构" 基于架 ...

  7. 系统架构师—软件架构设计(二)CS/BS/SOA/DSSA/ABSD

    1.层次架构风格 1.1.两层C/S架构 客户端和服务器都有处理功能,相比较于传统的集中式软件架构,还是有不少优点的,但是现在已经不常用,原因有:开发成本较高.客户端程序设计复杂.信息内容和形式单一. ...

  8. 软考高级-系统架构师-软件架构设计

    本章节主要内容如下( 上午综合题可以考到20~26分,其中案例题和论问题都有涉及 ): 目录: 一.软件架构的概念 1.软件架构概念 2.软件架构发展史 3.软件架构的建模 4.4+1模型 二.软件架 ...

  9. 系统架构师—软件架构设计(三)

    软件架构评估 质量属性 1.性能:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数. 如响应时间.吞吐量. 设计策略:优先级队列.增加计算资源.减少计 ...

  10. 软考高级-系统架构师-软件架构设计练习题

    目录: 1.第一部分习题 2.第二部分习题 1.第一部分习题 例1: 答案:C 例2: 答案:C A:选项 B:选项这里的测试并不是真正的在代码中运行而是使用实例进行验证 C:选项,架构复审人员需要外 ...

最新文章

  1. linux mysql5.7.11安装_centos 7 安装mysql 5.7.11
  2. thinkphp导入css失败,为什么用thinkphp总是提示css错误?
  3. poj 3261 Milk Patterns 后缀数组 最长重复子串
  4. C#中找不到MouseWheel事件的解决办法
  5. win8开发中需要用到一些系统版本之类的统计信息,总结如下。
  6. 这款耳机的性价比堪比AirPods,有点酷!
  7. 让海底电缆给数据中心提供更快的直连
  8. UVA 1212 Duopoly
  9. 电脑桌面计算机图标下不显示文字,电脑桌面图标下面的文字有时会突然不见,然后 – 手机爱问...
  10. jenkins使用python plugin编写代码构建时报错:Caused: java.io.IOException: Cannot run program “python“
  11. Excel VBA——两种获取使用最大行数的方法
  12. UI recorder 自动化UI测试框架使用手册
  13. Proxmox VE 7.2 更改登录横幅
  14. (多方法)彻底解决MAC终端[进程已完成]的“死机”现象
  15. 理解前端框架、前端库,两者有什么区别
  16. 【移动开发】View的scrollTo()和scrollBy()区别
  17. 民事诉讼法学类毕业论文文献包含哪些?
  18. 数字化医院建设的四大要领
  19. Vue框架 MIinUI 配置
  20. DIY无线网卡天线大集合

热门文章

  1. 隐藏 console 窗口
  2. MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart...
  3. 89c52串口发送接收小示例
  4. Win8 开发者训练营第一天的过程,感受和收获
  5. Roling in the deep
  6. 关于SqlDataReader类型的变量传值问题
  7. Vert.x 异步访问数据库 MySQL
  8. 【洛谷 3905】道路重建
  9. WCF开发实战系列二:使用IIS发布WCF服务(转)
  10. 从零开始一起学习SLAM | 相机成像模型