`
cloudtech
  • 浏览: 4607127 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

系统架构与软件架构是一层含义吗

 
阅读更多

系统架构与软件架构


再深一层分析,无论是建筑工程领域,还是其他工程领域(包括计算机科学),从它们的演化历史来看,直觉上我们似乎能够发现其共同点:即从哲学的角度上来说,它们都是人类为了克服与生俱来的恐惧而进行的创造、演化和发展。
人类到底恐惧什么呢?
我们可以注意到,人类本能当中有这样一个重要的共同点:对不确定的、感觉到威胁的事物具有强烈的不安全感。这就激发了人类尽量把这些恐惧的因素控制在最小范围内的愿望。这也就是各个工程学科(包括系统及软件工程领域)在日积月累的发展历程中,逐步规范化、科学化、系列化以及统一化,最终保证人类在复杂环境中,当不确定的因素存在时,依然能够进行有效的控制和协调。
基于同样的目的,计算机科学中也诞生了一个重要的概念,即“系统架构(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机系统这个例子,我们可以清晰地看到:一个系统的实现是结合了各种子系统和各种技术的实现。系统架构的主要任务是界定系统级的功能与非功能的要求、规划要设计的整体系统的特征、规划并设计实现系统级的各项要求的手段,同时利用各种学科技术完成各子系统的结构构建。
而 软件架构首先要理解系统架构,并从软件架构学科的视角对系统架构提出相应的意见,同时从软件的视角协助规划、设计那些实现系统级的各项要求的手段,并最终为各软件子系统提供架构和设计。
从中可以看出,在系统架构活动中,由于对软件越来越深入的依赖,软件架构的任务也显现出重要的作用。而且系统架构与软件架构是紧密联系和互相依赖的。本书的重点将主要集中在“软件架构”,而非“系统架构”上。

分享到:
评论

相关推荐

    深入理解三层软件架构

    软件架构是软件工程中最重要的一环,是系统架构师从高层看问题的集合,对整个软件功 能的抽象。 一个好的架构有利于系统的分层设计、并行开发、降低模块之间的耦合、提高模块本身的内聚。 良好的架构设计,对整个软件...

    一层架构二层架构三层架构

    www一层架构二层架构三层架构

    C语言嵌入式系统编程修炼之软件架构篇

    C语言嵌入式系统编程修炼之软件架构篇为你详细讲述了在软件架构时应该遵守的原则和注意的问题,通过阅读本文,相信你在嵌入式系统软件架构的能力会更上一层楼。

    java系统软件技术架构设计方案.docx

    xxx系统力技术架构与平台设计 java系统软件技术架构设计方案全文共3页,当前为第1页。 java系统软件技术架构设计方案全文共3页,当前为第1页。 一、 设计理念 "既要创造客户价值,又要提供良好的用户体验"是xxxx公司...

    《软件系统架构与开发环境》第二章源代码-by 南邮-陈杨

    本书作者把软件架构知识、软件工程方法论、软件技术开发平台等相关知识有机地组织起来,清晰地地阐明了它们的关系,拨开软件架构设计的迷雾,为读者指出了一条学习软件系统架构知识的佳径。本书对软件架构工程技术和...

    软件系统架构设计说明书模板

    本系统采用四层架构设计 - 2 - 一、展现层 - 2 - Web前端 - 2 - 二、通讯层 - 2 - 三、服务层 - 3 - 四、数据层 - 4 - 其他系统: - 4 - 1、认证系统: - 4 - 2、日志系统: - 7 - 3、会话治理 - 8 - 4、DNS劫持处理...

    单层架构 三层架构 多层架构

    软件分层的概念一直很模糊,也没有一个统一的标准,即使有些人明白三层架构的理念但却不会使用,不是如何创建三层架构。在网上发现了一个很不错的网站架构设计模式,分别介绍了单层架构,二层架构,三层架构,有例字...

    软件的架构与设计模式之什么是架构

    什么是软件系统的架构(Architecture)?一般而言,架构有两个要素: •它是一个软件系统从整体到部分的最高层次的划分 一个系统通常是由元件组成的,而这些元件如何形成相互之间如何发生作用,则是关于这个系统...

    三层架构三层架构

    三层架构三层架构三层架构三层架构开发技术 ■图书馆管理系统的开发流程 ■网站的编译与发布 12.1 ... 对于一个简单的应用程序来说,代码量不是很多的情况下,一层结构或二层结构开

    超市管理系统(三层架构)

    这是一款功能比较完整的,基于三层架构的超市管理系统,主要功能如下: 1、进货管理 主要包括了采购进货、退货、财务往来、采购单据查询、库存查询等主要功能 2、销售管理 主要包括了商品销售信息、顾客退货、库存...

    三层架构 实体类实现日记系统

    三层架构 实体类实现日记系统 完成介绍三层架构实体类的作用和实现

    最简单,最适合入门学习的三层架构例子

    (开始说正题 )有很多入门学者在为三层架构感到困惑,不知三层架构如何实现,现在本人详细地详一个简单的例子来说明三层架构的实现,至于三层架构是什么原理,老大说得很详细了,本人不再重复。 最后,说下各层的...

    《软件系统架构与开发环境》第四章源代码-by 南邮-陈杨

    本书作者把软件架构知识、软件工程方法论、软件技术开发平台等相关知识有机地组织起来,清晰地地阐明了它们的关系,拨开软件架构设计的迷雾,为读者指出了一条学习软件系统架构知识的佳径。本书对软件架构工程技术和...

    C#三层架构与工厂模式的区别与联系

    单层的管理中,已实现数据库的连接、命令的执行、不同数据集的应用。实现一个管理信息系统所需的技术,似乎已齐全了。...这就是基于三层架构的应用程序体系结构,是目前最通用的架构模式。 关键字:三层架构、工厂模式

    ASP.NET三层架构

    互不干涉,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。这样就能更好的实现开发中的分工,有利于组件的重用。所以这些年关于模式的研究有很多成果,应用也很广泛...

    基于.Net 平台的三层架构软件框架的设计与实现

    在介绍软件复用技术和三层架构思想的基础之上,运用C#设计并实现了一个.NET平台下的信息系统软件框架。信息系统开发时通过运用该软件框架可以很方便的生成一个MIS 雏形,从而能有效的提高信息系统软件的开发效率和...

    三层架构学生管理系统

    三层架构学生管理三层架构学生管理三层架构学生管理

    网络通讯录 简单网页 三层架构

    额~~~小作业,用3层架构做的 也就是对数据库的增删查改

    基于架构的软件设计方法

    卡内基梅隆大学软件工程研究所本世纪初曾提出了基于架构的设计(Architecture Based Design)方法,本文着重从软件系统设计方面阐述基于架构的软件设计方法,用于产品线及长生命系统的高层软件架构设计,同时也为项目...

    软件架构一张纸.docx

    1.系统架构与中间件的内涵及要点 2.软件架构的传统样式 3.计算层的软件架构技术 4.数据层的软件架构技术 5.表示层的软件架构技术 6.软件架构评审与测试

Global site tag (gtag.js) - Google Analytics