再深一层分析,无论是建筑工程领域,还是其他工程领域(包括计算机科学),从它们的演化历史来看,直觉上我们似乎能够发现其共同点:即从哲学的角度上来说,它们都是人类为了克服与生俱来的恐惧而进行的创造、演化和发展。
人类到底恐惧什么呢?
我们可以注意到,人类本能当中有这样一个重要的共同点:对不确定的、感觉到威胁的事物具有强烈的不安全感。这就激发了人类尽量把这些恐惧的因素控制在最小范围内的愿望。这也就是各个工程学科(包括系统及软件工程领域)在日积月累的发展历程中,逐步规范化、科学化、系列化以及统一化,最终保证人类在复杂环境中,当不确定的因素存在时,依然能够进行有效的控制和协调。
基于同样的目的,计算机科学中也诞生了一个重要的概念,即“系统架构(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机系统这个例子,我们可以清晰地看到:一个系统的实现是结合了各种子系统和各种技术的实现。系统架构的主要任务是界定系统级的功能与非功能的要求、规划要设计的整体系统的特征、规划并设计实现系统级的各项要求的手段,同时利用各种学科技术完成各子系统的结构构建。
而 软件架构首先要理解系统架构,并从软件架构学科的视角对系统架构提出相应的意见,同时从软件的视角协助规划、设计那些实现系统级的各项要求的手段,并最终为各软件子系统提供架构和设计。
从中可以看出,在系统架构活动中,由于对软件越来越深入的依赖,软件架构的任务也显现出重要的作用。而且系统架构与软件架构是紧密联系和互相依赖的。本书的重点将主要集中在“软件架构”,而非“系统架构”上。
文章出处:DIY部落(http://www.diybl.com/course/3_program/gcs/20090429/166072.html)
分享到:
相关推荐
分层体系结构是一种将软件系统划分为多个层次的架构风格,每一层只与相邻的层进行通信。虽然这种架构可能难以满足实时性需求,但在许多情况下,它可以提供清晰的模块划分,有助于系统的扩展和维护。 综上所述,在...
表示层是用户与软件之间直接接触的第一层,其主要任务是呈现信息给用户,并收集用户的输入。这一层的设计需要考虑到用户体验,确保界面友好且易于操作。在实现过程中,表示层不应直接操作数据库,而是通过调用业务...
### 软件体系架构中的三层结构:深入解析与应用 在软件开发的浩瀚世界里,体系架构设计是决定软件质量和效率的关键因素之一。其中,分层式结构以其清晰的职责划分和易于维护的特点,成为了软件体系架构设计中最常见...
技术架构图是软件系统架构图的另一个重要部分,它主要突出子系统/模块自身使用的技术和模块接口关联方式。在这个架构图中,我们可以看到共享平台的技术架构设计,它包括了相关体系架构的搭建、应用功能完善可开发、...
1. 解耦:上层只依赖下一层,便于发现和修改 BUG。 2. 简化复杂问题:各层分工明确,将复杂问题简化了。 3. 逻辑复用:业务接口没变,业务层和数据层能直接用。 4. 便于开发:各层接口在开发前规定好,可以独立开发...
嵌入式系统的软件架构设计是开发过程中的关键环节,它决定了系统的整体结构和组件间的交互方式。随着技术的发展,嵌入式系统的应用领域越来越广泛,从消费电子到工业自动化,再到医疗设备,都离不开良好的软件架构...
"一层架构"、"二层架构"和"三层架构"是常见的网络架构模型,主要用于描述不同层次的功能分配和通信方式。这些架构模式在www(World Wide Web,万维网)应用中尤为重要,因为它们帮助我们理解和组织web服务的复杂性。...
综上所述,本文档不仅全面系统地展示了图书杂志采购和借阅系统的软件架构设计,还详细介绍了所采用的关键技术和工具,以及设计的目标与约束条件。这对于确保项目的顺利进行、满足用户需求以及提高系统的稳定性和安全...
在软件开发中,架构模式是一种设计原则,用于构建软件系统的结构和组织。架构模式定义了系统内部的组件、组件之间的关系以及组件与外部环境之间的交互方式。不同的架构模式适用于解决不同类型的问题,它们各有优势与...
分层设计是一种常用的技术,通过将系统分为业务层、技术层等,以实现职责分明、模块化的结构。每层都专注于特定的任务,如业务逻辑处理、数据访问或用户界面展示,这有助于提高系统的可读性和可维护性。 封装和复用...
三层架构设计,作为软件开发领域的一项核心架构思想,以其独特的逻辑分层,显著地提升了系统的可维护性、可扩展性以及安全性。在日益复杂化的软件系统中,三层架构设计不仅为开发者提供了清晰的开发路径,还为系统...
1. **软件架构的概念**:软件架构是软件系统的高级结构,它定义了系统的主要组成部分、它们之间的关系以及指导这些部分如何协同工作的规则和决策。良好的软件架构能够确保系统的可扩展性、可维护性和可复用性。 2. ...
软件架构是软件开发过程中的核心组成部分,它定义了软件系统的高级结构、主要组件以及它们之间的关系,为系统设计提供了一个蓝图。本讲义将深入探讨软件架构的基本概念、重要性以及如何进行有效的架构设计。 首先,...
软件体系结构是软件开发过程中的关键部分,它是软件项目的蓝图,定义了系统的组件、它们之间的关系以及交互方式。这个概念对于理解和改进大型软件项目的整体结构至关重要。在本书中,作者将深入讲解如何定义和分析...
在IT行业中,软件架构是构建复杂系统的核心环节,它决定了系统的组织结构和组成部分,以及它们之间的相互关系。软件架构设计、架构实践和架构体系是理解并优化这一过程的关键要素。 《软件架构设计》(第一版)这...
软件体系结构是软件系统设计的高层次抽象,它包括系统的组件、这些组件之间的关系以及组件与环境的交互规则。体系结构的概念角度涉及系统的主要构件及其相互关系,模块角度关注功能分解和层次结构,运行角度描述系统...
- **角色**: 软件架构师是软件项目的总体设计师,负责构建软件的新产品开发与集成、新技术体系。对于大型软件项目而言,这个角色尤为重要。 - **职责**: 软件架构师在整个软件开发过程中扮演着关键角色,他们的职责...