1、软件体系结构概论
什么是构件
语义完整,语法正确,和有可重用价值的单位软件,在软件重用中可以明确的辨识系统。
具有一定功能,能够独立工作,或能够同其他构建装配起来协调工作的程序体。
什么是构建重用
即为软件重用,两次或多次不同的软件开发过程中重复使用相同或相 近软件元素的过程。
构建分类的三种方法
关键字分类
刻面分类
超文本组织
构建组装的三种方法
基于功能的组装
基于数据的组装
面向对象组装
软件体系结构的定义
软件体系结构为软件系统提供了一个结构,行为和属性的高级抽象,由构成系统的元素的描述,这些元素相互作用,指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统的需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
3、软件体系结构风格
软件体系结构的发展历程:
“无体系结构”设计阶段、萌芽阶段、0基础阶段、高级阶段。
经典软件体系结构风格:
管道—过滤器风格。
数据抽象和面向对象风格;
基于事件的隐式调用风格;
层次系统风格;
仓库风格和黑板风格;
MVC风格。
解释器风格;
C2风格。
管道—过滤器风格
管道-过滤器模式的体系结构是面向数据流的软件体系结构。它最典型的应用是在编译系统。一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。
C2风格
:是通过连接件绑定在一起的按一组规则运作的并行构件网络。
C2风格中的系统组织规则如下:
1、
系统中的构件和连接件都有一个顶部和一个底部;
2、
构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
3、
一个连接件可以和任意数目的其它构件和连接件连接;
4、
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。
C2风格的特点
1、
系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;
2、
所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;
3、
构件相对独立,构件之间依赖性较少。
-
请对MVC风格体系结构进行介绍,并说明该风格的优缺点。
-
答:模型-视图-控制器风格常被称为MVC风格,主要处理软件用户界面开发中所面临的问题。将模型与视图、控制器分开,从而同意为一个模型建立多个视图
-
具有例如以下长处:
-
(1)将各方面问题分解开来考虑,简化了系统设计,保证了系统的可扩展性;
-
(2)改变界面不影响应用程序的功能内核,使得系统易于演化开发,可维护性好;
-
(3)易于改变。甚至能够在执行时改变,提供了良好的动态机制;
-
缺点:主要是仅局限在应用软件的用户界面开发领域中。
C/S 三层结构是那三层,优缺点,实例
三层C/S体系结构风格是由表示层、功能层、数据层构成的。
优点:
①允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。
②允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
③应用的各层可以并行开发,可以选择各自最适合的开发语言。
④利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。
缺点:
各层间的通信效率不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。
注意点:
设计时必须慎重考虑三层间的通信方法、通信频率及数据量,这和提高各层的独立性一样是三层C/S结构的关键问题。
实例
公共对象请求代理体系结构
公共对象请求代理体系结构主要目标是提供一种机制,使得对象可以透明地发出请求和获得的应答,从而建立起一个异质的分布式应用环境
。
-
软件体系结构描述
ADL体系设计方法
ADL是一种形式化语言,在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示,分化演化细化设计过程等提供支持。
ADL体系构成要素
构件。计算或数据存储单元。
连接件。用于构建之间交互建模的体系结构构造块及其支配这些交互的规则。
体系结构配置。描述体系结构的构建与连接件的连接图。
ADL描述方法与其他语言相比较
ADL与其它的语言比較具有下面能力:
(1)构造能力:ADL可以使用较小的独立体系结构元素来建造大型软件系统;
(2)抽象能力:ADL使得软件体系结构中的构件和连接件描写叙述能够仅仅关注他们的抽象特性。而无论其详细的实现细节;
(3)重用能力:ADL使得组成软件系统的构件,连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;
(4)组合能力:ADL使得其描写叙述的每一系统元素都有其自己的布局结构。这样的描写叙述布局结构的特点使得ADL支持软件系统的动态变化组合;
(5)异构能力:ADL同意多个不同的体系结构描写叙述关联存在;
(6)分析和推理能力:ADL同意对其描写叙述的体系结构进行多种不同的性能和功能上的多种推理分析;
-
基于服务体系结构
SOA是一种在计算机环境中,设计开发部署和管理离散逻辑单元模型的方法。
SOA的特征
:松散耦合,粗粒度服务,标准化接口
Web服务的概念
是通过标准的Web协议可编程访问的Web组件
简单的说,Web服务就是一种远程访问的标准
Web服务是指可以在远程直接调用,不需要知道怎么实现的,知道能干什么,企业对外公开的一个接口
Web服务的优点
1、交叉业务集成:随着计算机和网络的发展,能够交换数据,数据要频繁交换,地点可能是分布的,数据如何交换,通过Web服务。
2、提高效率
3、拉近客户关系
4、便于实时集成:指分布式的,在服务器上运行的,在本机不要部署,复杂的业务逻辑分布在很多计算机上,有一个负载的平衡。
5、降低复杂度:不需要知道怎么实现的,只需要知道能干什么,复杂的业务逻辑屏蔽起来,可以独立的去编写。
6、旧式应用程序
Web服务的缺点
1、公开单位的应用资产存在潜在的安全风险
2、必须支持XML
3、部署Web服务技术的成本有点高
Web
Service三个组成部分
服务提供者
服务请求者
服务注册中心
Web
Service三种操作
发布 查找 绑定
Web Service三种实现方式
远程过程调用(RPC)
面向服务架构(SOA)
表述性状态转移(REST)
SOA(面向服务架构)的实现方法
Web Service
企业服务总线
服务注册表
11、软件体系结构的评估步骤,阶段
几个基本概念,
敏感点:
是一个多个构件(和、或构件之间关系)的特性。
权衡点
:是影响多个质量的特性,是多个质量属性的敏感点。
风险承担者:
在项目管理领域中通常翻译为“项目干系人”或“涉众”。
场景:
是从风险承担者的角度对于系统交互的简短描述,在进行体系结构评估时,一般首要精确地得出具体的质量目标并一直作为该评判该体系结构优劣的标准,为得到这些目标而采用的机制叫做场景。
可靠性
,是软件系统在应用或系统错误面前,在意外或错误使用的使用情况下,维持软件系统的功能特性的基本能力。
可靠性可以分为两个方面:容错,健壮性。
可修改性
是指能够快速的以较高的性能价格比对系统进行变更的能力。
可修改性包含在四个方面:可维护性、可扩展性、可移植性,结构重组。
ATAM评估的步骤
1描述ATAM方法
- 描述业务动机
- 描述体系结构
- 确定体系结构方法
- 生成质量属性效应树
- 分析体系结构方法
- 讨论和分级场景
ATAM评估阶段
第一阶段以体系结构为中心,重点是获取体系结构信息并进行分析。
第二阶段以风险承担者为中心,获取风险承担者观点,验证第一阶段的结果。
12、基于软件体系结构的开发
什么叫设计模式
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式的基本成分有哪几个?请简介其各个基本成分。
答:设计模式的四个基本成分:名称,问题,解决方式,
设计模式的关键元素
• 模式名称 (Pattern name)
• 问题 (Problem)
• 解决方案 (Solution)
• 效果 (Consequences)
常用的设计模式有哪些
总体来说设计模式分为三大类:
创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
这里主要讲解简单工厂模式,代理模式,适配器模式,单例模式4中设计模式.
基于设计体系结构的设计方法的设计步骤
ABSD方法定义的设计元素
设计元素的产生顺序
设计元素的活动
软件体系结构设计
提出软件体系结构模型:为将来实现和演化过程建立了目标。
把已标识的构件映射到软件体系结构中。
分析构件之间的相互作用。
产生软件体系结构。
设计评审:必须邀请独立于系统开发的外部人员对体系结构进行评审。
体系结构的演化过程
需求变动归类
定制体系结构演化计划
修改、增加或删除构件
更新构件的相互作用
构件组装与测试
技术评审
产生演化后的体系结构
13、软件产品线体系结构
什么软件产品线
将利用了产品间公共方面、预期考虑了可变性等设计的产品族称为产品线(Weiss和Lai)。
产品线就是由在系统的组成元素和功能方面具有共性和个性的相似的多个系统组成的一个系统族。
软件产品线就是在一个公共的软件资源集合基础上建立起来的,共享同一个特性集合的系统集合(Bass,Clements和Kazman)。
一个软件产品线由一个产品线体系结构、一个可重用构件集合和一个源自共享资源的产品集合组成,是组织一组相关软件产品开发的方式
软件产品线过程模型
双生命周期模型
领域工程:
领域分析:利用现有系统设计、体系结构和需求建立领域模型。
领域设计:用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构。
领域实现:基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。
应用工程:
需求分析:将系统需求与领域需求比较,划分成领域公共需求和独特需求两部分,得出系统说明书。
系统设计:在领域体系结构基础上,结合系统独特需求设计应用的软件体系结构。
系统实现:遵照应用体系结构,用领域可重用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构建新的系统。
SEI模型
特点:
循环重复是产品线开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征。
核心资源开发和产品开发没有先后之分。
管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责。
核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。