软件体系结构

概念

  1. 什么是软件设计?

软件设计是从软件需求到软件实现的活动,它把各种软件需求转换为能直接实现的软件结构。

  1. 软件体系结构的主要特征:
  • 一种对复杂系统的抽象表示

  • 复杂系统的一种结构化模型,描述其组成部件及部件之间的关系

  • 具有特定工程目标的模型

  1. 软件体系结构的定义:
  • 软件体系结构是软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系

  • 软件体系结构是软件系统的基本组织、包含构件、构件之间构件与环境之间的关系,以及相关的设计与演化原则

  1. 六大关系:依赖,关联,聚集,构成,继承,实现

  2. 什么是构件图:用来描述系统中存在的构件、构件具有的接口、以及各个构件怎样通过接口连接起来形成一个完整的系统

  3. 泳道:水平泳道: 通常用于表示不同的角色或组织。垂直泳道: 通常用于表示不同的阶段或时间顺序。

  4. 顶层架构设计需要涵盖的方面:

    1. 子系统划分:将系统划分为多个子系统,每个子系统负责一个明确的功能领域。

    2. 关键构件设计:定义系统中的关键构件(如模块、组件),并明确其职责。

    3. 关键类设计:定义系统中的关键类,并明确其属性和方法。

    4. 协作关系:描述子系统、构件和类之间的交互方式。

    5. 部署模型:描绘系统在物理运行环境下的部署方式。

  5. 评价软件体系结构:

    1. 深度(Depth):软件控制的层数
    2. 宽度(Width):软件的跨度
    3. 扇出率:一个模块的扇出率指该模块直接控制的其他模块数。
    4. 扇入率:一个模块的扇入率指直接控制该模块的模块数。
    5. 可见域:该模块可直接或间接引用的一组模块。
    6. 连通域:模块可直接引用的模块。
  6. 用例的形成:从业务需求描述出发获取参与者(Actor)和场景,对场景进行汇总、分类、抽象,形成用例。

确定参与者和场景的关键在于理解业务领域和初步需求描述文档。在场景确定之后,通过对场景的汇总、分类归并、抽象即可形成用例。

  1. 什么是参与者:与用例发生交互的系统外部角色,并不只限于人员,其它与目标软件发生交互的外部实体或系统也是参与者;

  2. 用例的特征:

    1. 对参与者可见
    2. 描述系统功能
  3. 用例图细化:

  • 定义用例之间关
  • 定义新的用
  • 参与者与用例之间关系:触发执行与信息交换
  1. CS风格:
  • 特征:从向外提供服务的构件出发,沿着连接关系递次搜索各构件和连接子,形成的拓扑结构是一棵倒置的树**。**
  • 优点:使得服务功能的实现很集中,便于系统实现,使用广泛。
  • 典型应用:电子邮件系统、WWW系统、TELNET系统、CVS版本控制系统
  1. 发布-订阅模式的使用场合:

如果对象之间存在一对多的数据依赖关系,且当被依赖对象的数据改变时所有依赖于它的对象都应得到通知并自动更新