软件架构综述

本文介绍了软件架构的起源、主要思想和特征,强调了可复用性、利益相关者的需求、关注点分离和质量驱动的重要性。软件架构的发展经历了从模块设计到组件化,再到理论体系完善和普及应用的阶段。目前的研究焦点包括架构描述、分析、设计、测试以及产品线架构。软件架构在实际应用中,如人人网、金蝶EAS、Lucene和12306网站等,都发挥了关键作用。
摘要由CSDN通过智能技术生成

软件架构产生的背景

  软件架构用来刻画软件系统整体抽象结构的一种手段。卡耐基梅隆大学的Mary Shaw和David Garlan的专著中推广软件架构的概念,即组件、连接件和风格的集合。
软件架构两个主要的关注点:
  1. 系统的总体结构
  2. 需求与实现之间的对应

软件架构的主要思想和特征

主要思想

  软件架构的主要思想,将注意力集中在系统总体结构的组织上,实现的手段是运用抽象方法来屏蔽错综复杂的模块间连接,是人们的认知提升,并保持在整体结构的组件交互层次,并进一步将交互从计算中分离出来,建立“组件+连接件+配置”的软件系统高层结构组织方式。

软件架构的特征

软件架构的特征:

  1. 注重可复用性
      避免重复劳动,不再采用一切“从零开始”的模式,充分借鉴已有的知识和经验。
      组件就是重用思想的重要体现。
  2. 利益相关者较多
      软件系统需要满足每个利益相关者的需求
  3. 关注点分离
      分而治之的思想,模块化是其中具体设计原则之一
  4. 质量驱动
      软件架构是处理质量属性需求和控制复杂性的主要手段,质量驱动是最为重要的关注点
  5. 提倡概念完整性
      所有的设计决策必须遵守概念完整性,要求用相似的方法做相似的事情
  6. 循环风格

软件架构的发展阶段

软件架构的发展可以分成如下几个阶段:

  1. 基础研究阶段(1968-1994)
    1. 模块设计原则:
    2. 高内聚
    3. 低耦合
    4. 模块大小适度
    5. 模块调用链的深度不可过多
    6. 接口干净,信息隐蔽
    7. 尽可能复用已有的模块
  2. 概念体系和核心技术形成阶段(1991-2000)
    • 组件化开发:业务组件相对独立,具有可组装性和可插拔性。每个组件的运行仅依赖于平台或容器,组件与组件之间不存在直接的耦合关系。同时组件之间并非完全独立,经过组装后可以与其他组件进行业务上的交互。
  3. 理论体系完善和发展阶段(1996年至今)
    1.研究热点
    1. 软件架构分析、设计、测试;
    2. 软件架构发现、演化、重用;
    3. 基于软件架构的开发方法;
    4. 软件架构风格等
  4. 普及应用阶段(1999年至今)

软件架构研究和应用现状

目前软件架构的相关研究主要集中在以下两个方面:

  1. 软件架构理论和方法研究
  2. 软件架构的应用研究

软件架构理论和方法研究

  1. 软件架构描述和构造表示
    架构表示是指按照一定的描述方法,用架构描述语言对架构进行说明的结果,并将架构描述的过程称为架构构造。
    形式化的方法是在严格的数学基础上(逻辑、代数、自动机、图论等)之上的方法,该方法可以分成5类:
    1. 基于模型的方法
    2. 代数方法
    3. 过程代数方法
    4. 基于逻辑的方法
    5. 基于网格的方法
  2. 软件架构分析、设计及测试
    软件架构设计是只生成一个满足用户需求的软件机构的过程。
  3. 软件结构发现、演化、复用
    软件系统在运行时刻的架构变化称为架构动态性,而将架构的静态修改称为架构扩展。
  4. 基于软件架构的开发模型
  5. 软件架构风格与模式
    架构风格(架构模式)是针对特定场景中常见的问题提供的一般性可重用方案,反应了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效的组织成一个完整的系统。
    架构风格主要有5种主要类型:
    1. 数据流风格:批处理序列,管道-过滤器
    2. 调用/返回风格:主程序/子程序,面向对象,层次化结构
    3. 独立组件风格:进程通信,事件系统
    4. 虚拟机风格:解释器,基于规则的系统
    5. 仓库风格:数据库系统,超文本系统,黑板系统
  6. 软件产品线架构
    软件产品线表示一组具有公共的系统需求集的软件系统,都是基于基本的用户需求对标准的产品线架构进行定制,将可重用组件与系统独有的部分集成而得到的。
  7. 软件架构支持工具

软件架构的应用研究

  1. 软件架构风格的应用
    不同的架构风格具有各自的优缺点和应用场景。
  2. 软件架构在开发过程中的应用
    软件架构是软件生命周期种的重要产物,它影响软件开发的各个阶段。
  3. 常见的软件产品的结构
    1. 人人网采用JavaEE技术作为主要的业务解决方案,基本按照通用的JavaEE模型进行设计。
    2. 金蝶EAS(Enterprise Application Suite)系统在架构模型上遵循SOA架构体系。
    3. Lucene作为优秀的全文搜索引擎,其系统架构具有强烈的面向对象特征。
    4. 12306网站或系统采用的是两地三中心混合云架构。
    5. 大数据时代,移动互联、社交网络、数据分析等应用的迅速普及,对数据中心提出革命性需求,存储基础架构已经成为IT核心之一。数据驱动的软件架构(Data-Driven Software Architecture, DDSA)目前在各行各业得到研究开发和推广。

参考书籍

备注

  • 本文仅为对软件架构理论与实践的日常学习总结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值