架构模式
文章
01 软件体系结构质量特征
目录功能性 适合性 准确性 互操作性 依从性 安全性 可靠性 成熟性 容错性 易恢复性 易用性 易理解性 易学习性 易操作性 效率 时间特性 资源特性 可维护性 易分析性 易更改性 稳定性 易测试性 可移植性 适应性 易安装性 一致性 易替换性 1 功能性(Functionality) 定义:功能性是指与软件所具有的各项功能及其规定性质有关的一组属性,包括: 1.1 适合性(Suitability) 定义:与规定任务能否提供一组功能以及这组功能的适合程度有关的软件属性。适合程度的例子是面向任务系统中,由子功能构成功能是否合适、表容量是否合适等。 计算:存在:任务已被详细说明。正确:正确的解释任务的详细说明。 1.2 准确性(Accuracy) 定义:于能否得到正确或相符的结果或效果有关的软件属性。此属性包括计算值所需的准确程度。 计算:识别负责该计算功能的组件。由公式∏𝑖(𝐴𝑐𝑐𝑢𝑟𝑎𝑛𝑐𝑦(𝑓𝑢𝑛𝑐𝑡𝑖𝑜𝑛𝑎𝑙 𝑐𝑜𝑚𝑝𝑜𝑛𝑒𝑛𝑡𝑠)) 对该属性进行计算。 1.3 互操作性(互用性,Interoper...
1. 软件建模与软件架构
课程内容介绍 基于用例的需求建模 基于类图的静态建模 基于对象交互分析的动态建模 状态机建模 目录 软件模型和建模 软件架构 模型驱动的架构MDA 软件架构的视图 发展史 UML知识补充 1 软件模型和建模1.1 模型作用 在某一精度和细节层次提供系统的抽象。分析模型获得对所开发的系统的更好的理解。 是一种设计,用来指导后续过程。建模驱动架构。 1.2 建模过程面向对象的建模方法:封装、继承、多态。封装,把客观事物封装成抽象的类。将实物的属性和对属性的操作抽象为类的属性和类的操作。将实物不必要的信息进行隐蔽。 继承,让某一个类型的对象获取另一种对象的属性和方法,实现代码的重用,而不需要重新写这些方法。 多态,类实例的相同方法在不同的情况下会有不同的表现形式。使得不同结构的类的对象可以共享外部接口。 统一建模语言UML为面向对象建模提供了一套标准的图形语言和表示法。 四中建模基本方法: 用例建模——需求 静态建模——结构 动态建模——行为 状态建模——状态 2 软件架构 将系统的总体结构与系统的各个构件的内部细节进行==分离==。 ...
2. 软件架构设计方法
软件架构设计方法目录1 面向对象2 信息隐藏3 继承和泛化4 并发处理5 设计模式6 软件架构和构件7 软件质量属性8 基于用例的软件生命周期9 需求、分析和设计建模活动 1 面向对象 这一部分请参考面线对象的课程笔记。 1.1 关键概念 对象类属性操作接口对象的接口是他提供的操作的集合。 2 信息隐蔽2.1 信息隐蔽基础接口是对象可见的部分,其他对象通过接口来调用操作 对象的数据结构发生变化时,不会对其他对象产生影响,只对拥有这个数据结构的对象(同一个类)有影响,并且,由于借口不变,对这个对象的操作调用不变。 基本模块是对象,信息隐藏的内容有栈对象。必须通过栈对象来访问操作。 2.2 信息隐蔽的实现数组实现的信息隐蔽策略链表实现的信息隐蔽策略2.3 信息隐藏对象的设计 首先设计信息隐蔽对象的外部接口 其次设计信息隐蔽对象的内部实现细节 3 继承和泛化3.1 作用 实现了代码的复用,是一种扩展机制 4 并发处理4.1 主动对象 主动对象=并发对象=并发过程=并发任务 拥有自己的空值线程,并且独立于其他对象进行执行 每个主动对象处理一个顺序...
3.用例建模
用例建模目录 需求建模 用例 参与者 确定用例 用例图 用例描述 用例关系 1 需求建模1.1 需求和需求建模 描述了用户对系统的期望,主要涉及系统的外部特性 类型: 包括功能需求和非功能需求 目的: 代替手工系统或者替代旧系统 建模: 包含需求分析和需求规约 1.2 相关问题 需求分析需要考虑的问题:涉众扮演的角色、系统使用、特性、优势和局限性。 需求规约:与用户达成共识的文档。也就是需求分析说明书。需求规约的质量属性:正确、完整、无二义性;一致、可验证、易理解特性;可修改、可追踪。 非公能需求:性能、可用性、安全。 2 用例2.1 用例作用用例建模是用来描述系统功能的一种方法。用例定义了一个或多个参与者与系统交互的序列。用例不关心具体实现,总是从参与者的输入开始。 2.2 用例表示 用例名称 概述 依赖:是否依赖、包含、扩展了其他用例。 参与者 前置条件:用例启动的条件 主序列:主场景 备选序列:在某些决策点上进入的场景 非公能需求:性能和安全性的需求 后置条件:用例执行完后总是为真的结果 未解决的问题:需要讨论的问题 3 参与者3.1 参与者作用描述了一个与系统交互...
4. 静态建模
静态建模 描述了被建模系统的静态结构,不随时间变化而变化。 问题域静态建模:分析阶段对系统的主要概念进行建模。 目录 类间关系 约束 UML表示 系统上下文的静态建模 外部类静态建模 实体类的静态建模 1 类间关系1.1 关联关系 定义了两个类之间静态的、结构化的关系。 关联称为链接。类之间有链接关系的对象之间才会有链接。关联的方向取决于动作的方向。 自反关联(一元关联):一个类的一个对象和这个类的另一个对象之间的关联。 三元关联:三个类间的关联(两个类之间的关联关系也转化为一个类) 关联类:对两个或多个类之间的关系进行建模的类。 关联的多重性:一对一关联、一对多关联、规定数值的关联、可选关联(0…1表示可能存在)、多对多关联。 1.2 整体和部分的关系(组合聚合关系) 关系强弱:组合>聚合>关联 组合涉及整体和部分之间的物理关系。 聚合概念上的整体和部分关系,可以分开可以合并。 1.3 泛化特化关系 相同属性抽象为泛化类 不同属性表示了特化的性质 2 约束对关联、对象属性进行约束。 3 问题域静态建模——上下文类 通过分析用例模型来对问题域建模...
5. 动态交互建模
动态交互建模目录1概念1.1 动态模型概念 描述了被建模系统的控制行为以及构件的交互顺序。对象内部的动态模型——有限状态机模型。对象之间的动态模型——交互图或通信图。 基于用例建模和问题域的静态建模。 2对象交互建模2.1 通信图 描述了一组对象如何通过对象间的消息传递来实现交互。 每一个用例对应一个通信图。通信图中的对象都是用例包含的对象,对象之间的消息发送序列由编号来描述。通信图中的消息序列与用例描述中参与者与系统的交互序列相对应。 2.2 序列图 按照时间顺序展现了对象之间的交互。可以描述循环和迭代的过程。 不需要编号,从上到下,表示了消息的先后顺序。 序列图的优缺点 优: 清楚地显示对象间的消息传递序列 优: 对设计对象操作的执行逻辑有益 缺: 不易表述对象的关联 缺: 涉及多个对象的复杂序列图及使用了循环和判定逻辑的序列图不易阅读 通信图的优缺点 优: 清楚地展现了对象的布局及其关联关系 优: 易于平滑过渡到软件架构的设计 缺: 表示消息序列直观性差(用编号) 缺: 对设计对象操作的执行逻辑帮助有限 2.3 消息序列 交互图上的交互序列描述了用例中的一个场...
6. 软件架构模式
软件机构模式1 基于构件的软件架构模式2 软件架构的多视图3 软件架构模式4 接口设计1 软件架构1.1 定义 一个程序或计算机系统的软件架构是包含了该系统的软件元素、这些元素的外部可见的属性以及这些元素之间关系的结构或一组系统结构 描述角度:静态和动态;动能和非功能的。 1.2 基于构件的软件架构 软件由构件组成,每个组件相对独立的封装了一些信息。 构件可以由简单对象或由其他对象组成的复合对象。 构件通过接口与其他对象通信。(接口描述了通信所需要的信息,接口与实现分离,接口约定了通信模式) 1.3 设计方式 顺序式设计:没有控制线程的被动类。把构件单独编译存储在构件库中,通过调用-返回的方式进行通信。(只有一个主动类) 并发或分布式设计:构件是主动地,可以被部署到一个分布式环境的不同节点上,并发构件可以通过几种不同的通信模式进行通信:同步模式、异步模式、代理模式,群组通信模式。 2 软件架构的多视图2.1 视图角度 结构视图:是一种静态视图,使用类图来描述。 动态视图:是一种行为视图,使用通信图来描述。 部署视图:软件架构的物理配置,子系统如何在一个分布的配置中,分配到不...
7. 软件子系统架构设计
软件子系统架构设计目录 相关问题 集成通信图 关注点分离 组织原则 消息通信决策 1相关问题1.1 子系统设计建模概述 分析建模是基于需求建模(用例建模)的结果 设计建模定义了软件的结构和行为属性的软件架构 将系统分解为子系统,对子系统进行独立设计。 1.2 如何子系统设计建模 子系统是一个与其他子系统功能相对独立。 定义子系统的接口,然后就可以具体设计了。 子系统和模块的定义是等价的。 1.3 子系统化分方面考虑的问题 地理位置上的分布情况 服务器职责区分 将功能相关、耦合度高的对象划分为同一子系统。 2集成通信图2.1 通信图作用 生成初始的软件设计 通信图比序列图更能形象地描述对象之间的联结以及传递的信息。 集成通信图是泛化的UML图,描述了对象之间所有可能的交互。通信图上用不编号的简单消息表示。 可以通过高层的子系统通信图进行简化。 2.2 通信图的开发方法 合成顺序与用例执行顺序一致。 各个用例的通信图进行一次叠加。从后向前添加 3关注点分离3.1 分离关注点的方法 复合对象:复合对象属于同一个子系统。 地理位置:地理位置不同应该属于不同的子系统 客户端和服...
8.面向对象的软件架构设计
面向对象的软件架构设计1 概述2 设计类的接口和操作3 设计信息隐藏类4 设计继承5 类接口规约6 类的详细设计1 概述 信息隐藏 接口的实现与分离 顺序性面线对象软件设计,拥有一个控制线程。对象之间通信采用调用返回模式。 2 设计类的接口和操作 类的接口由每个类提供的操作组成。包括输入参数、输出参数、返回值。 类的操作可以根据静态模型或动态模型确定。 类的操作可以基于交互模型设计。当两个对象交互时,发送消息的对象调用接受消息的对象的操作。消息传递映射为操作调用。(消息名=操作名,消息参数=操作参数) 分析模型,捕获对象间传递的消息,而不是操作的准确语法。设计模型,必须提供操作的准确语法,包括名称和结构。 调用操作=通信图中的同步消息。返回值=返回消息。 3 设计信息隐藏类3.1 实体类设计 实体类是封装数据的类,其实例用来存储信息的持久化对象。 实体类分为数据抽象类和包装器类。数据抽象类:封装数据结构。包装器类:隐藏了数据,提供了接口。 分析模型中的实体类被设计为数据抽象类。封装了数据结构,并隐藏了数据结构的内部细节。属性静态建模时确...











