第1章 软件体系结构概论
从软件危机说起
- 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机的表现
软件(成本)日益增加
开发(进度)难以控制
软件(质量)差
软件(维护)困难
软件危机的原因
用户需求不明确
用户在软件开发出来之前,自己也不清楚需求
用户对需求描述不清晰
在开发软件得过程中,用户修改需求
开发人员对需求得理解和用户的不一致
缺乏正确的理论指导
软件规模越来越大
软件复杂度越来越高
如何克服软件危机
技术问题、管理问题
软件工程包括三个要素:方法、工具和过程
方法指导软件技术怎么做
工具为软件方法提供自动或者半自动的软件支撑环境
过程将软件工程方法和软件工程工具合理结合
构件与软件重用
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识
可重用的软件元素越大,称重用的粒度越大
构件模型及实现
构件:语义完整、语法正确和有可重用价值的单位软件,是可以明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。
构件模型
- CORBA:通用对象请求代理结构
- EJB:Enterprise Java Bean
- DCOM:分布式构件对象模型
构件获取
- 建立基于构件的软件开发中,构件的获取途径
- 现有构件适应性修改
- 从遗留工程中获取
- 购买现成的商业构件
- 开发新的符合要求的构件
构件管理
构建分类方法
- 关键字分类法
- 刻面分类法
- 超文本组织方法
构件有哪几种
- 独立成熟的构件
- 有限制的构件
- 适应性构件
- 装配的构件
- 可修改的构件
构件库系统的5类用户
- 注册用户
- 公共用户
- 构建提交者
- 一般系统管理员
- 超级系统管理员
构件重用
什么是构件组装
将构件库中的构件做适应性修改并连接起来或者和当前开发项目的软件元素相连构建组装
- 基于功能的组装技术
- 基于数据的组装技术
- 基于对象的组装技术
软件重用实例
软件重用分为哪几种重用
- 需求重用
- 设计重用
- 代码重新
- 组织结构重用
设计重用
- 系统构建层:Java JDK类库
- 通用类构件层:工作流平台核心模块、组织管理模块、系统管理模块、页面风格函数、JSP的CSS JS等字符串处理、数据库连接、通用打印和查询、权限验证和日期处理等与业务逻辑无关的类
- 业务构件层:满足不同业务需求而设计的软件包(明确接口、大粒度构建重用)
- 表现层:JSP、Serverlet页面(只调用来展现业务流程界面)
组织重用中包含了什么组织,各组织的功能是什么
- 构建开发组:负责接受并分析来自协调层的构件设计规格说明
- 构建应用组:负责设计和实现构件逻辑
- 协调组:负责协调构件开发层和构件应用层,接受并分析来自构件应用层的构件需求
软件体系结构的兴起和发展
软件体系结构的定义
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件体系结构的意义
体系结构是风险承担者进行交流的手段
体系结构是早期设计决策的体现
软件体系结构明确了对系统实现的约束条件
软件体系结构决定了开发和维护组织的组织结构
软件体系结构制约着系统的质量属性
通过研究软件体系结构可能预测软件的质量
软件体系机构使推理和控制更改更简单
软件体系结构有助于循序渐进的原型设计
软件体系结构可以作为培训的基础
软件体系结构是可传递和可重用的模型
软件体系结构的发展史
- 软件体系结构的发展经历了哪几个阶段
- 无体系设计阶段:以汇编语言进行小规模开发为特征
- 萌芽阶段:出现程序结构设计主题,以控制流图和数据流图构成软件结构为特征
- 初期阶段:出现从不同侧面描述系统的结构模型,以UML为典型代表
- 高级阶段:以描述系统的高层抽象结构为中心,不关心具体建模细节,划分了体系结构模型和传统软件结构的界限,以“4+1”模型为标志
*第2章 软件体系结构建模
软件体系结构模型有哪几种
- 结构模型
- 过程模型
- 框架模型
- 功能模型
- 动态模型
最常用的是结构模型和动态模型
“4+1”视图模型
- “4+1”视图模型有哪几个视图,功能分别是什么
- 逻辑视图(静态):支持系统的服务
- 开发视图(静态):对软件模块进行组织和管理
- 进程视图(动态):关注系统的运行特性,支持系统的非功能性
- 物理视图(动态):考虑如何将软件映射到硬件上
- 场景视图
逻辑视图
- 通过抽象、封装和继承,可以用对象模型来代表逻辑视图
开发视图
进程视图
物理视图
场景
- 场景的定义:重要的系统活动的抽象
软件体系结构的核心模型
体系结构的核心模型有哪五种元素,基本元素是什么
- 构件:是具有某种功能的可重用的软件模板单元,表示了系统中的计算元素和数据储存
- 配置:表示构件和连接件之间的拓扑逻辑和约束
- 连接件:表示了构件之间的交互
- 端口
- 角色
基本元素是:构件、配置、连接件
构件分为哪两种
原子构件和复合构件。复合构件由原子构件和其他复合构件组成
软件体系结构的生命周期模型
软件体系结构建立在什么时候
建立在需求分析之后,软件设计之前
各阶段之间的关系
- 需求分析阶段
- 建立软件体系结构阶段
- 设计阶段
- 实现阶段
软件体系结构的生命周期
- 软件体系结构的非形式描述
- 软件体系结构的规范描述和设计
- 软件体系结构的精化及其验证
- 软件体系结构的实施
- 软件体系结构的演化和扩展
- 软件体系结构的提供,评估和度量
- 软件体系结构的终结
*第3章 软件体系结构风格
什么是软件体系结构风格
描述在一种特定应用领域中系统设计的惯用模式
经典软件体系结构风格
- 数据流风格:批处理序列、管道与过滤器
- 调用返回风格:主程序与子程序、面向对象风格、层次结构
- 独立构件风格:进程通信、事件系统
- 虚拟机风格:解释器、基于规则的系统
- 仓库风格:数据库系统、超文本系统、黑板系统
管道与过滤器
优点
- 软件具有很高的隐蔽性和具有高内聚,低耦合的特点
- 方便设计师将整个系统的输入或输出看成是多个过滤器的行为的简单合成
- 支持重用
- 系统维护和增强系统性能简单
- 允许对一些属性分析
- 支持并行执行
缺点
- 使进程成为批处理的结构
- 不适合处理交互的应用
- 没有统一的数据传输标准,过滤器需要增加数据分析和合成的工作,降低了系统的性能,增加了编写过滤器的复杂度
数据抽象和面向对象系统
优点
- 对象对于其他对象的表示是隐藏的,一个对象的表示的改变不影响其他对象
- 设计师可以将一些数据的存取问题拆解为一些交互的代理程序的集合
缺点
- 一个对象和另外一个对象通过过程调用等进行交互,必须知道对象的标识
- 必须修改所有显式调用它的其他对象,并消除由此带来的副作用
基于事件的系统(隐式调用)
优点
- 为软件重用带来强大的支持
- 方便改进系统
缺点
- 构件放弃了系统计算的控制
- 数据交换存在问题
- 对于正确性的推理存在问题
分层系统(层次系统风格)
优点
- 支持软件重用
- 支持基于抽象程度递增的系统设计
- 支持功能增强
缺点
- 不是所有系统都能轻易划分为分层的模式
- 难以找到合适,正确的层次抽象方法
仓库系统及知识库(黑板系统)
- 黑板系统的组成:知识源、黑板数据结构、控制
C2风格
- C2风格的特点
- 构件都可以实现需求应用,能将任意复杂度的功能封装
- 构件较为独立,构件之间依赖性少
- 构件之间的通信是通过以连接件作为中介的异步消息交换机制来实现的
客户/服务器风格
服务器的任务
- 数据库的安全性要求
- 数据库访问并发性的控制
- 数据库前端的客户应用程序的全局数据完整规则
- 数据库的备份与恢复
客户应用程序的任务
- 提供数据库与用户交互的界面
- 向数据库服务器提交用户请求和接收数据库服务器的信息
- 利用客户应用程序来对存于客户端的数据执行应用逻辑
C/S体系结构的优缺点
优点
- 前后端分离
- 将大量的处理任务分布在客户机上,减少了花费
缺点
- 开发成本高
- 消息内容和形式单一
- 客户端程序设计复杂
- 界面风格不一,使用繁杂,难以推广
- 软件维护和升级困难
- 软件移植困难
- 不能轻易使用新技术
三层C/S结构风格
- 2层cs体系结构的局限性
- 只有一个服务器和以局域网为核心,难以扩展至大型企业广域网和internet
- 软硬件的组合和集成能力有限
- 数据安全性不好
- 客户机负荷太重,难以管理大量的客户机,系统的性能容易变坏
各层的功能
表示层
功能:提供应用中的用户接口,负担用户和应用的对话功能
功能层
功能:将具体的业务处理逻辑编写到程序中
数据层
功能:管理数据库数据的读写
三层C/S结构应用实例
三层C/S结构的优点
- 允许合理得划分三层结构的功能,使各层的逻辑相对独立
- 允许合理有效地选取相应地平台和硬件系统,使之在处理负荷能力和处理特性上适应划分的三层结构
- 各层可以并行开发,各层可以选自各自最适合的开发语言
- 利用功能层有效地隔离表示层和数据层,为严格的安全管理奠定基础。使整个系统层次更加合理和可控制
浏览/服务器风格
优点:同三层C/S结构的优点
缺点
- 对动态页面缺乏强力支持,没有集成的数据库处理功能
- 系统扩展能力差,安全性难以控制
- 采用bs结构,响应速度远低于采用cs结构
- bs结构数据提交一般以页面为单位,缺乏数据动态交互性,不利已在线处理事务应用
异构结构风格
- C/S与B/S混合软件体系结构
异构结构的实例分析
- “内外有别”模型
- “查改有别”模型
异构组合匹配问题
第4章 软件体系结构描述
软件体系结构描述方法
软件体系结构的描述方法分为哪几种,学术界和产业界分别常用哪种
- 图形表示工具
- 数学表示工具
- 文字表示工具
产业界常用图形表示工具,学术界常用数学表示工具
软件体系结构的描述和表达方法有哪几种
- 图形表示工具
- 模块内连接语言
- 基于软构件的系统描述语言
- 软件体系结构描述语言
体系结构描述语言
体系结构描述语言ADL三个字母分别代表什么意思
A:体系结构,D:描述,L:语言
ADL中的三个基本要素是什么
- 构件:计算或数据存储单元
- 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则
- 体系结构配置:描述体系结构的构件与连接件的连接图
ADL与其他语言的比较
- ADL的能力
- 构造能力
- 抽象能力
- 重用能力
- 组合能力
- 异构能力
- 分析和推理能力
ADL的构成要素
- 构件
- 连接件
- 体系结构配置
典型的软件体系结构描述语言
C2
第6章 可扩展标记语言
XML的定义和全称
定义:XML是一套定义语义标记的规则
全称:可扩展标记语言
XML概述
- 能直接应用在Internet上
- 能被各式应用软件使用
- 能与SGML兼容
- 能轻易发展XML相关软件
- 能简化SGML
- XML文件可读性高
- XML规范能尽快完成
- XML规范必须简洁
- XML文件易于建立
- 语法不可模糊不清
XML的特点
- 简介有效
- 易学易用
- 开放的国际标准
- 高效且可扩充
XML的作用
- 使得搜索更加有意义
- 开发灵活的Web应用软件
- 实现不同数据的集成
- 使用于多种应用环境
- 客户端数据处理与计算
- 数据显示多样化
- 局部数据更新
- 与现有Web发布机制相兼容
- 可升级性
- 压缩性能高
XML的应用
- 应用于客户需要与不同的数据源进行交互时
- 应用于将大量运算负荷分布在客户端
- 应用于将同一数据以不同的面貌展现给不同的用户
- 应用于网络代理对所取得的信息进行编辑、增减以适应个人用户的需要
解析XML
XML与HTML的区别
- 和HTML的区别:XML是元标记语言可以用于定义其他标记语言。XML是“纯”数据。
- XSL是专门用于XML文档的样式单语言
XML文档
CSS与XML
*第8章 基于服务的体系结构
- SOA全称:面向服务的体系结构(Service-Oriented Architecture)
SOA概述
SOA定义:是一种在计算环境中设计,开发,部署和管理离散逻辑单元模型的方法
SOA的特征
- 松散耦合
- 粗粒度服务
- 标准化接口
面向服务的分析与设计
- 基础设计层
- 体系结构层
- 业务层
- 三个抽象级别:操作,服务和业务流程
SOA的关键技术
SOA的服务栈中包含哪几层,功能分别是
发现服务层
主要用来帮助客户端应用程序解析远程服务的位置
描述服务层
为客户端应用程序提供正确地与远程服务交互的描述信息
消息格式层
保证客户端应用程序和服务器端在格式设置上保持一致
编码格式层
为客户端和服务器之间提供一个标准的、独立于平台的数据交换编码格式
传输协议层
为客户端和服务器之间提供网络通信协议
SOA的实现方法
Web Service
三种工作角色:服务提供者、服务请求者和服务注册中心(可选)
Web Service模型中的操作包括发布、查找和绑定
- 使用webservice方法时,应用系统分为哪几个层次
- 底层传输层
- 服务通信层
- 服务描述层
- 服务层
- 业务流程层
- 服务注册层
- 使用webservice方法时,应用系统分为哪几个层次
服务注册表
ESB
服务描述语言
WSDL概述
WSDL(Web Services Description Language)是对服务进行描述的语言,它有一套基于XML的语法定义
WSDL子元素:types,message,operation,portType,binding,port,service
使用WSDL文档
WSDL文档结构
统一描述、发现和集成协议
UDDI(Universal Description Discovery and Integration*)是一种用户描述,发现,集成Web服务的技术,他是Web服务协议栈的一个重要部分。
UDDI技术规范中,包含的三个部分内容
- UDDI数据模型
- UDDI API
- UDDI注册服务
UDDI数据模型
- 数据结构:businessEntity ,businessService ,bindingTemplate , tModel
注册Web服务
调用Web服务
消息封装协议
- SOAP的定义
SOAP(Simple Object Access Protocol)以XML形式提供一个简单,轻量的用于在分散或分布环境中交换结构化和类型信息的机制
- SOAP主要包括哪几个部分
- SOAP封装结构
- SOAP编码规则
- SOAP PRC表示
- SOAP绑定
消息封装和编码规则
SOAP消息包括哪几个部分
- 封装
- SOAP头
- SOAP体
SOAP的编码规则
- 值
- 简单值
- 复合值
- 数组
- 结构
- 简单类型
- 复合类型
SOAP应用
REST
第9章 富互联网应用体系结构
RIA的概念
- RIA的概念:RIA(Rich Internet Application)富互联网应用体系结构
RIA的提出
- 富:丰富的数据模型、丰富的用户界面
丰富的含义
RIA的优点
缩写
ADL:软件体系结构描述语言
软件重用:指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程
场景:重要的系统活动的抽象
构件组装:将构件库中的构件做适应性修改并连接起来或者和当前开发项目的软件元素相连
XML:可扩展标记语言,是一套定义语义标记的规则
XSL:可扩展样式语言,是XML的应用
SOA:面向服务的体系结构,是一种在计算环境中设计,开发,部署和管理离散逻辑单元模型的方法
WSDL:对服务进行描述的语言,它有一套基于XML的语法定义
UDDI:是一种用户描述、发现、集成Web服务的技术,他是Web服务协议栈的一个重要部分
SOAP:消息封装协议,以XML形式提供一个简单,轻量的用于在分散或分布环境中交换结构化和类型信息的机制