系列文章目录

系统架构设计师:

第一部分 企业信息化战略与实施
第二部分 软件工程
第三部分 软件架构设计


文章目录

  • 系列文章目录
  • 前言
    • 1.软件架构的概念
    • 2.软件架构的发展史
    • 3.软件架构建模
  • 二、软件架构的风格
  • 三、架构描述语言ADL
  • 四、特定领域软件架构
  • 五、基于架构的软件开发
  • 六、软件质量属性
  • 七、软件架构评估
  • 八、软件产品线
  • 九、构件与中间技术
  • 十、Web架构设计
  • 总结

前言

软件架构设计


# 一、软件架构的概念

1.软件架构的概念


         体系结构 = 架构
         架构设计就是需求分配,即将满足需求的 职责分配到组件上。

  • 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
  • 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
  • 软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
  • 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
  • 软件架构是可以传递和可复用的模型,通过研究软件架构可能预测软件的质量。

2.软件架构的发展史

3.软件架构建模

  • 结构模型:以架构的构件、连接件和其他概念来刻画结构
  • 框架模型:不太侧重描述结构的细节而更侧重整体的结构
  • 动态模型:系统的“大颗粒”的行为性质
  • 过程模型:构建系统的步骤和过程
  • 功能模型:由一组功能构建按层次组成,下层向上层提供服务

二、软件架构的风格

架构:

  • 架构设计的一个核心问题是能否达到架构级的软件复用
  • 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
  • 架构风格定义了用于描述系统的术语和一组指导构建系统的规则。

架构风格:

  • 数据流风格:批处理序列、管道-过滤器
    1、批处理序列:构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在其前一步结束后才能开始,数据必须是完整的,以整体的方式传递。
    2、管道-过滤器:每一个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常是通过对输入数据流的变换或计算来完整的,包括通过计算和增加信息以丰富数据、通过浓缩和删除以精简数据、通过改变记录方式以转化数据和递增地转化数据等。这里的构件称为过滤器,连接件就是数据流传输的管道,讲一个过滤器的输出传到另一个过滤器的输入。早期编译器就是采用这种架构。要一步一步处理的,均可考虑采用此架构风格。
  • 调用/返回风格:主程序/子程序、面向对象、层次结构
    1、主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合称为模块。通过调用作为交互机制,即充当连接件的角色。调用关系具有层次性,其语义逻辑表现为主程序的正确性取决于它调用的子程序的正确性。
    2、面向对象:构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和他们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件即是对象间交互的方式,对象是通过函数和过程的调用来交互的。
    3、层次结构:构件组织成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层,通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度,修改某一层,最多影响其和相邻的两层(通常只能影响上层)
        层次结构-优点:
            1.这种风格支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。
            2.不同的层次处于不同的抽象级别:越靠近底层,抽象层级越高;越靠近顶层,抽象级别越低。
            3.由于每一层最多只影响两层,同时只要给相邻等提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。
        层次结构-缺点:
            1.并不是每个系统都可以很容易地划分为分层的模式。
            2.很难找到一个合适的、正确的层次抽象方法。
  • 独立构件风格:进程通信、事件驱动系统(隐式调用)
    1、进程通信:构件是独立的过程,连接件是消息传递。构件通常是命名过程,消息传递的方式可以是点对点、异步或同步方式,以及远程过程(方法)调用等。
    2、事件驱动系统(隐式调用):构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。这种风格中的构件是匿名的过程,他们之间交互的连接件往往是以过程之间的隐式调用来实现的。主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便,其缺点是构件放弃了对系统计算的控制。
  • 虚拟机风格:解释器、基于规则的系统
    1、解释器:解释器通常包括一个完成解释工程的解释引擎、一个包括被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低。
    2、基于规则的系统:基于规则的系统包括规则集、规则解释器、规则/数据选择器和工作内存,一般用在人工智能领域和DSS中。
  • 仓库风格(以数据为中心的风格):数据库系统、超文本系统、黑板系统
            仓库风格中构件分为两种:一种是中央数据结构,保存系统的当前状态;另一种是独立构件,对中央数据存储进行操作。
    1、数据库系统
    2、黑板系统:(以数据库系统为基础)包括知识源、黑板和控制三部分、知识源包括若干独立计算的不同单元,提供解决问题的知识。知识源相应黑板的变化,也只修改黑板;黑板是一个全局数据库,包括问题域空间的全部状态,是知识源相互作用的唯一媒介;知识源相应是通过黑板状态的变化来控制的。黑板系统通常应用在对于解决问题没有确定性算法的软件中(信号处理、问题规划和编译器优化等)
    3、超文本系统:构件以网状连接方式相互连接,用户可以在构件之间进行按照人类的联想思维法功能室

三、架构描述语言ADL

四、特定领域软件架构

五、基于架构的软件开发

六、软件质量属性

七、软件架构评估

八、软件产品线

九、构件与中间技术

十、Web架构设计


总结

系统架构设计师-软件架构设计

系统架构设计师-软件架构设计相关推荐

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

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

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

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

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

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

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

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

  5. 系统架构设计师的设计工作和需求

    系统架构设计师是产品经理的天花板,也是软考高级证书,系统架构设计师,并且还能够入选省专家人才库,成为副主任工程师,在实际落地项目中,要求就跟软考有些区别,但是需要落地,我就在这里介绍下架构师的能力和水 ...

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

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

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

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

  8. 软考必过 - 系统架构师 - 软件架构设计 - SOA与微服务

    世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. 文章目录 软件架构设计 面向服务的架构(SOA) 软件架构设计 面向服务的架构(SOA) SOA特点 粗粒度 低 ...

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

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

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

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

最新文章

  1. [JS] 关于parseInt的一个小知识:[‘1‘, ‘2‘, ‘3‘].map(parseInt)
  2. linux中操作java进程
  3. 代码坏味道 - 耦合
  4. object detection
  5. Spring泛型依赖注入
  6. DDPG-强化学习算法
  7. 《Flask Web开发——基于Python的Web应用开发实践》代码使用方法
  8. COM组件设计与应用(十三)(转载)
  9. kail利用msf工具对MS12-020漏洞进行渗透测试
  10. AngularJS 的常用特性(二)
  11. python获取目录树_Python读取文件目录树——os.walk
  12. 技术干货 | 如何在 Library 中使用/依赖 mPaaS?
  13. 1086: [SCOI2005]王室联邦
  14. 虚拟仪器的python实现_基于Python的虚拟仪器技术探究及实现.pdf
  15. sql 执行 delete 的时候,结合子查询 exists ,怎样支持别名呢?
  16. python 漏洞扫描器_自动扫描全网漏洞的扫描器
  17. 2022-2027年(新版)中国钢铁产业运行状况及需求前景预测报告
  18. 【武汉加油!中国加油!】挑战七天 实现机器视觉检测有没有戴口罩系统——第四五六七天
  19. magento mysql4-install_MAGENTO与表,数据字段的对应关系
  20. 内核区间树的使用Demo

热门文章

  1. 【外挂对抗总结】小游戏H5小程序网页游戏分析
  2. LaTeX 格式、字母、符号、公式 (总结)
  3. PHP知识大全【高级】
  4. 挂载命令 mount
  5. 双核不可阻挡!首款双核处理器Tegra2详解
  6. 用公式编辑器打的公式变大了怎么办?
  7. 开源项目_C语言学生个人信息管理系统课程设计_chenjie的博客
  8. 计算机领域国际顶级会议
  9. 逻辑地址和物理地址的相互转换
  10. python 函数基础