0
软件体系结构概论
软件体系结构产生背景
- 规模增长
- 需求增加
- 满足需求
- 维护问题
软件重用的定义
在开发新的系统软件时对已有软件的重新使用,该软件可以是已存在的软件,也可以是专门设计的可重用构件。
软件 重用类型
依据不同的分类:
- 依据重用的对象 产品重用 过程重用
- 依据重用的方式 黑盒重用 白盒重用
- 依据重用方法 组合式重用 生成式重用
- 依据应用的领域范围 横向重用 纵向重用
软件成分重用的方式
- 源代码的重用
- 目标代码级重用 使用函数库的方式体现
- 设计和分析结果重用
- 类的重用
- 构件重用
主流核心模型
构件、连接件、配置约束
构件的定义
将大而复杂的应用软件分解为一系列可先行实现,易于开发,理解,重用和调整的软件单元。只有当构件达到一定规模,形成构件库时,才能有效支持构件在产品线上的重用。
基于构件的开发思想
将用户需求分解为一系列子功能构件,在开发的过程中不必重新设计这些子模块,只需从现有的构件库中寻找合适的构件来组装应用系统。
软件体系结构建模
软件体系结构应该以模型的形式具体化。
为了使软件体系结构能够满足系统的功能、性能和质量需求,就需要有一种规范的软件体系结构描述方法,这就是建模语言。
ADL(体系结构描述语言)
用于把体系结构文档化的工具集合。
广泛使用的ADL
- ACME
- Rapide
- Unicon
- Wright
- Darwin
- Aesop
- SADL
- MetaH
- C2
有无工具的支持是ADL是否可用的重要标志。
描述体系结构的两种方法
- 实践派-使用通用的建模符号
- 学院派- 使用ADL
实践派风格的特点是:关注更广范围的开发问题,提供多视角的体系结构模型集,强调实践可行性而非精确性,将体系结构看成开发过程的蓝本,给出针对通用目标的解决方案。
学院派风格则侧重于软件体系结构形式化理论的研究。在学院派风格中,倡导使用体系结构描述语言来刻画软件的框架结构。
ADL集中描述了整个系统的高层结构。通常,ADL提供了一个概念框架和一套具体的语法规则。此外,在每种体系结构描述语言中,还会提供相应的工具支持,用于分析、显示、编译和模拟该语言所表示的软件体系结构。
学院派风格的特点是:模型单一,具有严格的建模符号,注重体系结构模型的分析与评估,给出强有力的分析技术,提供针对专门目标的解决方案。
ACME的基本特征
- 提供了基本的元素描述体系结构,应提供拓展
- 提供灵活的注解机制来描述系统的非结构性信息
- 提供了可对软件体系结构风格重用的模板机制
- 提供开放的语义框架,对体系结构描述进行形式化推理
UML ADL的关系
- ADL是研究软件体系结构规范及模型的形式化工具,但应用领域狭窄
- UML是建模语言,用来对软件进行描述的文档
4+1视图模型
逻辑视图,也称概念视图。主要支持系统功能需求的抽象描述,即系统最终将提供给用户什么样的服务。主要描述了系统的功能需求及其之间的相互关系,并按照应用领域的概念来描述系统的框架结构。
开发视图,也称模块视图。主要侧重于描述系统的组织,根据系统模块的组织方式,可以有不同的形式。通常是根据分配给项目组的开发和维护工作来组织,该视图主要使用层次结构风格,通常将层次限制在4-6层左右。
过程视图。主要侧重于描述系统的动态属性,即系统运行时的特性。该视图着重解决系统的并发和分布,及系统的完整性和容错性,同时也定义在逻辑视图中的各个类中的操作是在哪一个控制线索中被执行的。
物理视图。主要描述如何把软件映射到硬件上,通常要考虑系统的性能、规模、容错等。物理视图展示了软件在生命周期的不同阶段中所必须的物理环境、硬件配置和分布状况。
场景视图。场景是用户需求和系统功能实例的抽象,设计者通过分析如何满足每个场景所要求的约束来分析软件的体系结构。
总的来说,逻辑视图定义了系统的目标;开发视图和过程视图提供了详细的系统设计实现方案;物理视图解决了系统的拓扑结构、安装和通信问题;场景反映了完成上述任务的组织结构。
基于体系结构的软件开发过程
体系结构在整个软件生存周期中扮演着重要的角色。下图给出了基于体系结构的软件开发过程包括的几个主要活动;
通过对特定领域应用软件进行分析,提炼其中的稳定需求和易变需求,建立可重用的领域模型。根据用户需求和领域模型,产生应用系统的需求规格说明;
在领域模型的基础上,提炼面向特定领域的软件体系结构。 在体系结构的框架指导下,把系统功能分解到相应的构件和连接件。
低层设计主要解决具体构件和连接件的设计问题,通过重用设计件库中存放的设计模式、对象和其他类型的可重用设计,或根据情况设计新的构件,并提炼入库。
软件体系结构风格
可划分为五大类
- 数据流风格:批处理序列,管道过滤器
- 仓库风格:数据库系统 超文本系统 黑板系统(知识源 黑板 控制组件)
- 独立构件风格:进程通信 事件系统
- 调用/返回风格:主程序/子程序 面向对象 层次结构
- 虚拟机风格:解释器 基于规则的系统
B/S vs C/S
答:B/S结构(Browser/Server结构)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应