
13种常见软件体系结构风格定义分析、结构图、优缺点⼀、概述
软件体系结构表⽰系统的框架结构,⽤于从较⾼的层次上来描述各部分之间的关系和接⼝,主要包括构件、构件性质和构件之间的关系。
通过使⽤软件体系结构,可以有效地分析⽤户需求,⽅便系统的修改,以及减⼩程序构造风险。
随着软件规模不断地增⼤和复杂程度⽇益增⾼,系统框架架构的设计变得越来越关键。软件框架设计的核⼼问题是能否复⽤已经成型的体系结构⽅案。由此,产⽣了软件体系结构风格的概念。
⼆、常见风格分类
体系结构风格的形成是多年探索研究和⼯程实践的结果。⼀个良好和通⽤的体系结构风格往往是⼯程技术领域成熟的标志。经过多年的发展,已经总结出许多成熟的软件体系结构风格,例如:
1. 数据流风格:批处理和管道/过滤器。
2. 调⽤/返回风格:主程序/⼦程序、层次结构和C/S。
3. ⾯向对象风格。
4. 独⽴部件风格:进程通信和事件驱动。
5. 虚拟机风格:解释器和基于规则的系统。
6. 数据共享风格:数据库系统和⿊板系统。
三、体系结构风格
1.管道/过滤器 体系结构风格
主要包括过滤器和管道两种元素。在这种结构中,构件被称为过滤器,负责对数据进⾏加⼯处理。每个过滤器都有⼀组输⼊端⼝和输出端⼝,从输⼊端⼝接收数据,经过内部加⼯处理之后,传送到输出端⼝上。数据通过相邻过滤器之间的连接件进⾏传输,连接件可以看作输⼊数据流和输出数据流之间的通路,这就是管道。
原理图:
优点:
1. 简单性。
2. ⽀持复⽤。
3. 系统具有可扩展性和可进化型。
4. 系统并发性(每个过滤器可以独⽴运⾏,不同⼦任务可以并⾏执⾏,提⾼效率)。
5. 便于系统分析。
缺点:
1. 系统处理⼯程是批处理⽅式。
2. 不适合⽤来设计交互式应⽤系统。
3. 由于没有通⽤的数据传输标准,因此每个过滤器都需要解析输⼊数据和合成数据。
4. 难以进⾏错误处理。
传统的编译器就是管道/过滤器体系结构风格的⼀个实例。编译器由词法分析、语法分析、语义分析、中间代码⽣成、中间代码优化和⽬标代码⽣成⼏个模块组成,⼀个模块的输出是另⼀个模块的输⼊。源程序经过各个模块的独⽴处理之后,最终将产⽣⽬标程序。编译器的框架结构如图:
2.⾯向对象 体系结构风格
在⾯向对象体系结构中,软件⼯程的模块化、信息隐藏、抽象和重⽤原则得到了充分的体现。在这种体系结构中,数据表⽰和相关原语操作都被封装在抽象数据类型中。在这种风格中,对象是构件,也成为抽象数据类型的实例。对象与对象之间,通过函数调⽤和过程调⽤来进⾏交互。
原理图:
优点:
1. ⼀个对象对外隐藏了⾃⼰的详细信息
2. 对象将数据和操作封装在⼀起
3. 继承和封装⽅法为对象服⽤提供了技术⽀持
缺点:
1. 如果⼀个对象要调⽤另⼀个对象,则必须知道它的标识和名称
2. 会产⽣连锁反应
3.事件驱动 体系结构风格
事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应⽤程序运⾏。
事件驱动体系结构的基本思想是:系统对外部的⾏为表现可以通过它对事件的处理来实现。在这种体系结构中,构件不再直接调⽤过程,⽽是声明事件。系统其他构件的过程可以在这些事件中进⾏注册。当触发⼀个事件的时候,系统会⾃动调⽤这个事件中注册的所有过程。因此,触发⼀个事件会引
起其他构件的过程调⽤。
原理图:
优点:
1. 事件声明者不需要知道哪些构件会响应事
2. 提⾼了软件复⽤能⼒
3. 便于系统升级
缺点:
1. 构件放弃了对计算的控制权,完全由系统来决定
2. 存在数据·传输问题
4.分层 体系结构风格
在分层风格中,系统将划分为⼀个层次结构。
每⼀层都具有⾼度的内聚性,包含抽象程度⼀致的各种构件,⽀持信息隐藏。
分层有助于将复杂系统划分为独⽴的模块,从⽽简化程序的设计和实现。
通过分解,可以将系统功能划分为⼀些具有明确定义的层,较⾼层是⾯对特定问题,较低层具有⼀般性。
每层都为上层提供服务,同时⼜利⽤了下层的逻辑功能。在分层体系结构中,每⼀层只对相邻层可见。层次之间的连接件是协议和过程调⽤。⽤以实现各层之间的交互。
原理图:
优点:
1. 设计者可以将系统分解为⼀个增量的步骤序列从⽽完成复杂的业务逻辑。
2. 每⼀层之多和相邻的上下两层进⾏交互。
3. 只要给相邻层提供相同的接⼝。
缺点:
1. 并⾮所有系统都能够按照层次来进⾏划分。
2. 很难找到⼀种合适和正确的层次划分⽅法。
3. 在传输数据是,需要经过多个层次。
4. 多层结构难以调试。
5.C2 体系结构风格
更多推荐
系统,风格,体系结构,过滤器,构件,事件,对象
发布评论