文章目录
- 软件体系结构
- 软件体系结构概论
- 软件体系结构建模
- 软件体系结构风格
- 统一建模语言
- 基于体系结构的软件开发
软件体系结构
软件体系结构概论
软件危机是指计算机软件的开发和维护过程中遇到的一系列严重问题。
软件危机的表现:
软件危机的原因:
软件工程的基本要素:过程、方法、工具。
软件工程过程(五种活动):
软件工程方法(四种方法):
软件体系结构构成(核心模型):构件+连接件+约束
体系结构风格:用于描述某一特定应用领域中系统组织的惯用模式,反映了领域中众多系统所共有的结构和语义特性。
软件框架:软件框架是由开发人员定制的应用系统的骨架,是整个或部分系统的可重用设计,由一组抽象构件和构件实例间的交互方式组成。
设计模式:描述了软件系统设计过程中常见问题的一些解决方案,通常是从大量的成功实践中总结出来的且被广泛公认的实践和知识。
框架和体系结构的关系:
- 体系结构的呈现形式是一个设计规约,而框架则是“半成品”的软件。
- 体系结构的目的是指导软件系统的开发,而框架的目的是设计复用。
框架和设计模式的关系:
- 框架给出的是整个应用的体系结构;而设计模式则给出了单一设计问
题的解决方案,且可以在不同的应用程序或者框架中进行应用。 - 举例:一个网络游戏可以基于网易的Pomelo框架开发,这是一个基于
Node.js的高性能、分布式游戏服务器框架;在实现某个动画功能时,
可能会使用观察者模式实现自动化的通知更新。 - 设计模式的目标是改善代码结构,提高程序的结构质量;框架强调的
是设计的重用性和系统的可扩展性,以缩短开发周期,提高开发质量。
构件:是具有某种功能的可复用的软件结构单元,表示系统中主要的计算元素和数据存储。
构件获取:
构件三个流派:
-
CORBA:对象管理集团OMG的通用对象请求代理结构CORBA。
OMG: Object Management Group
CORBA: Common Object Request Broker Architecture -
EJB:Sun公司制定的EJB规范。
EJB: Enterprise Java Bean -
DCOM:Microsoft公司制定的分布式构件对象模型DCOM。
DCOM: Distributed Component Object Model
构件管理:
- 构件描述。
- 构件分类与组织。
- 人员及权限管理。
构件描述是模型对构件本质的抽象描述,主要是为构件的制作与构件的重用提供依据。从管理角度出发,也需要对构件进行描述,例如:实现方式、实现体、注释、生产者、生产日期、大小、价格、版本和关联构件等信息,它们与构件模型共同组成了对构件的完整描述。
构件分类与组织:
- 关键字分类法。
- 刻面分类法。
- 超文本组织方法。
构件管理:人员及权限管理:包括五类用户,即注册用户、公共用户、构件提交者、一般系统管理员和超级系统管理员。
构件重用:
- 检索与提取构件。
- 理解与评价构件。
- 修改构件。
- 构件组装。
构件重用:检索与提取构件:
- 基于关键字的检索。
- 刻面检索法。
- 超文本检索法。
- 其他检索方法。
构件重用:理解与评价构件:
- 构件的功能与行为。
- 相关的领域知识。
- 可适应性约束条件与例外情形。
- 可以预见的修改部分及修改方法。
构件重用:构件组装 :
- 基于功能的组装技术。
- 基于数据的组装技术。
- 面向对象的组装技术。
连接:是构件间建立和维护行为关联与信息传递的途径。
连接件 :表示构件之间的交互并实现构件之间的连接。
软件体系结构的目标:有效性、简单性、可重用性、可拓展性。
软件体系结构建模
Kruchten4+1视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。
•逻辑视图:当采用面向对象的设计方法时,逻辑视图即是对象模型。
•过程视图:描述系统的并发和同步方面的设计。
•物理视图:描述软件到硬件之间的映射关系,反映系统在分布方面的设计。
•开发视图:描述软件在开发环境下的静态组织。
Rational 4+1视图模型:
、
用例视图
•用例视图包含描述用户、分析师和测试工程师看到的系统行为的用例。
•根据视图可确定系统架构。
•UML:
静态方面:用例图描述。
动态方面:交互图、状态图和活动图描述。
设计视图
•设计视图包含构建系统的类、接口和类之间的协作。
•主要支持系统的功能性需求,也即系统提供给用户的服务。
•UML:
静态方面:类图、对象图描述。
动态方面:交互图、状态图和活动图描述。
交互视图
•交互视图描述了系统不同部分之间的控制流,包括可能的并发和同步机制。
•主要解决系统的性能、可拓展性、吞吐量等问题。
•UML:
静态方面:类图、对象图描述。
动态方面:交互图、状态图和活动图描述。
实现视图
•实现视图包含用于组装和发布物理系统的组件。
•主要解决系统发布的配置管理问题。
•UML:
静态方面:物件图描述。
动态方面:交互图、状态图和活动图描述。
部署视图
•部署视图包含形成系统硬件拓扑结构的节点。
•主要解决构成物理系统的部件的分布、发布和安装问题。
•UML:
静态方面:部署图描述。
动态方面:交互图、状态图和活动图描述。
软件体系结构风格
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,强调了软件系统中通用的组织结构。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
通用体系结构风格分类:
•数据流风格:批处理序列;管道/过滤器。
•调用/返回风格:主程序/子程序;面向对象风格;层次结构。
•独立构件风格:进程通讯;事件系统。
•虚拟机风格:解释器;基于规则的系统。
•仓库风格:数据库系统;超文本系统;黑板系统。
主程序-子程序风格是结构化程序设计的一种典型风格,从功能的观点设计系统,通过逐步分解和细化,形成整个系统的体系结构。(应用于C语言)
数据抽象和面向对象系统风格(应用于java):
- 系统被看作是对象的集合,每个对象都有一个它自己的功能集合。
- 数据及作用在数据上的操作被封装成抽象数据类型。
- 只通过接口与外界交互,内部的设计决策则被封装起来。
管道-过滤器风格把系统任务分成若干连续的处理步骤,这些步骤由通过系统的数据流连接,一个步骤的输出是下一个步骤的输入(应用于视频播放器)。
事件系统是将应用看成是一个构件集合,每个构件直至发生对它有影响的事件时才有所动作(应用于程序调试器)。
层次结构:
- 层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
- 这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。
仓库体系结构是一种以数据为中心的体系结构,适合于数据由一个模块产生而由其他模块使用的情形。
客户机/服务器体系结构是一种分布式系统模型,作为服务器的子系统为其他客户机的子系统提供服务,作为客户机的子系统负责与用户的交互。
三层C/S结构:
B/S结构
- 第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
- 第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
- 第三层数据层:主要是接受客户端请求后独立进行各种运算。
CORBA技术规范
- 接口定义语言(IDL)
- 接口池(IR)
- 动态调用接口(DII)
- 对象适配器(OA)
CORBA体系结构模型
什么是前后端分离:就是把数据操作和显示分离出来。 前端专注做数据显示,通过文字,图片或者图标等方式让数据形象直观的显示出来。 后端专注做数据的操作。 前端把数据发给后端,有后端对数据进行修改。
统一建模语言
什么是模型:模型是对现实的简化,建模是为了更好地理解系统。
UML简介:
- 英文 Unified Modeling Language 首字母缩写。
- 中文:统一建模语言。
- 统一( Unified ):
- 软件工程领域全部认可并遵守的规范,类似于自然语言中的“英语”。
- 具有简单、直观和规范的特点,学习和掌握比较简单。所描述的软件模型,可以直观地理解和阅读,由于具有规范性,所以能够保证模型的准确、一致。
- 建模( Modeling ):
- 用于表达现实的简化视图,以便于面向对象软件系统的设计与实现。
- 语言( Language ):
- UML主要是遵循精确语法的图形语言(还包括规则、约束、扩展机制)。
UML语法和语义:
UML的构成
UML事物
结构事物
-
结构事物(structural thing):UML模型的静态部分,描述概念或物理元素。
-
结构事物也称为:构件事物。
-
常见的结构事物包括:
类(class)
接口(interface)
协作(collaboration)
用例(use case)
主动类(active class)
构件(component)
节点(node)
行为事物
-
行为事物(Behavioral Thing):UML模型图的动态部分,描述跨越空间和时间的行为。
-
常见的行为事物包括:
交互(interaction):实现某功能的一组构件事物之间的消息的集合,涉及消息、动作序列、链接。
状态机(state machine):描述事物或交互在生命周期内响应事件所经历的状态序列。
分组事物
-
分组事物(Group Thing):UML模型图的组织部分,描述事物的组织结构。
-
常见的分组事物包括:
包(package)。
注释事物
-
注释事物(Annotational thing): UML模型的解释部分,用来对模型中的元素进行说明和解释。
-
常见注释事物包括:
注解(note)。
UML关系
UML图形
类图(重点)
交互图(重点)
顺序图(重点)
基于体系结构的软件开发
MVC设计模式(重点)
MVC结构:
MVC的框架:
MVC的通信机制
MVP:MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。
MVVM:MVVM是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。
设计模式分类:
设计模式的组成:
- 模式名称
- 问题
- 解决方案
- 后果
中间件的分类
- 底层中间件:JVM(Java Virtual Machine,Java虚拟机)、CLR(Common Language Runtime,公共语言运行库)、ACE(Adaptive Communication Environment,自适配通信环境)等
- 通用型中间件:也称为平台,其主流技术主要有RPC、ORB、MOM(Message-Oriented Middleware,面向消息的中间件)等
- 集成型中间件:WorkFlow、EAI等
主要的中间件技术:
- 远程过程调用
- 远程方法调用
- 对象请求代理
- 面向消息的中间件
- 事务处理监控器
软件过程模型主要分类:
- 瀑布模型
- 原型化模型
- 迭代式开发
- 可转换模型
6806166733)]
设计模式的组成:
- 模式名称
- 问题
- 解决方案
- 后果
中间件的分类
- 底层中间件:JVM(Java Virtual Machine,Java虚拟机)、CLR(Common Language Runtime,公共语言运行库)、ACE(Adaptive Communication Environment,自适配通信环境)等
- 通用型中间件:也称为平台,其主流技术主要有RPC、ORB、MOM(Message-Oriented Middleware,面向消息的中间件)等
- 集成型中间件:WorkFlow、EAI等
主要的中间件技术:
- 远程过程调用
- 远程方法调用
- 对象请求代理
- 面向消息的中间件
- 事务处理监控器
软件过程模型主要分类:
- 瀑布模型
- 原型化模型
- 迭代式开发
- 可转换模型
设计题涉及软件过程模型分析