• 理解软件架构


            看了温昱老师的《软件架构设计》,很有感触,这些年一直埋头垒代码,却不曾抬头俯瞰下自己做过的软件系统,当温老师高屋建瓴的将软件架构概念分为两大流派--组成派和决策派,我感同身受,先来回顾下IT界的大牛是如何定义软件架构。

            1.Booch、Rumbaugh和Jacobson的定义

             架构是一系列重要决策的集合,这些决策与以下内容有关:软件的组织,构成系统的结构元素及其接口的选择,这些元素在相互协作中明确表现出的行为,这些结构元素和行为元素进一步组合所构成的更大规模的子系统,以及指导这一组织--包括这些元素及其接口、它们的协作和它们的组合。
     

            2.Woods的观点
           软件架构是一系列决策,如果做了不正确的决策,你的项目可能最终会被取消。

           3.Garlan和Shaw的定义
           架构包括组件、连接件和约束。组件可以是代码也可以是独立的程序。连接件可以是过程调用、管道和消息,用于表示组件之间的相互关系。约束是组件连接时的条件。

           4.Perry和Wolf的定义
           软件架构是一组具有特定形式的架构元素,这些元素分为三类:负责完成数据加工的处理元素、作为被加工信息的数据元素及用于把架构的不同部分组合在一起的连接元素。
          

           5.IEEE的定义
           架构是以组件、组件之前的关系、组件和环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。

           6.Bass的定义
           某个软件或计算机系统的软件架构是该系统的一个或多个结构,每个结构均由软件元素、这些元素的外部可见属性、这些元素之间的关系组成。

            7.Mary Shaw的定义
            软件系统的架构将系统描述为计算机组件及组件之前的交互。

            以上定义和观点囊括了业界决策派和组成派关于软件架构的定义,在我看来,决策派认为架构是一系列决策的集合,并且这些决策对组件、连接件和约束起决定性作用,而组成派认为架构是由组件、连接件和约束构成的,一些设计原理指导着这三个要素产生作用。简而言之,决策派认为决策占主导作用,它是架构的精髓所在;组成派认为三个要素是架构的根基,没有骨架,决策就失去了附着点,根基才是架构的存在之本。

            读完温昱老师的书,自己对于架构有了全新的认识,架构不能像决策派认为的只有灵魂,或者说灵魂占主导作用,也不能像组成派认为的架构只是三个要素构成的这么简单。在我看来架构不是用一句话可以概括的,它的含义非常丰富,简单可以表述为一个中心,两个基本点。

            架构是不同层次的集合,良好的层次划分是架构设计的核心,通过逻辑视图和物理视图两个基准点来描述各个层次,从而实现管理人员、开发人员、客户(包含最终用户)的一致理解。

  • 相关阅读:
    Python连接MySQL乱码(中文变问号)
    mysql学习04 pymysql 学习
    mysql学习03
    多态与多态性
    重用父类功能的两种方式
    菱形继承问题
    组合
    继承的应用和派生的概念引出
    类的继承
    类与类型
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3231036.html
Copyright © 2020-2023  润新知