东南大学-软件系统设计与体系结构-复习.docx
《东南大学-软件系统设计与体系结构-复习.docx》由会员分享,可在线阅读,更多相关《东南大学-软件系统设计与体系结构-复习.docx(20页珍藏版)》请在冰豆网上搜索。
东南大学软件系统设计与体系结构复习
第一章:
概述
1、软件危机
2、软件架构的作用:
软件架构在高级层次上对软件进行描述,便于软件开发过程中各个视角的统一,能够及早发现开发中的问题并支持各种解决方案的评估和预测
3、什么是软件架构?
软件架构是一个软件系统的设计图,并不仅限于软件系统的总体结构,还包含一些质量属性以及功能和结构之间的映射关系,即设计决策。
4、软件架构的两个主要焦点:
系统的总体结构、需求和实现之间的对应。
5、*软件架构的主要思想:
将注意力集中在系统总体结构的组织上。
6、软件架构的实现的手段:
①运用抽象方法屏蔽错综复杂的模块间连接,使人们的认知提升并保持在整体结构的部件“交互”层次;
②进一步将交互从计算中分离出来,建立“组件+连接件+配置”的软件系统高层结构组织方式。
7、*软件架构的特征:
(1)注重可重用性——组件及架构级重用
(2)利益相关者较多——平衡需求
(3)关注点分离——模块化、分而治之
(4)质量驱动——关注非功能属性
(5)提倡概念完整性——强调设计决策是一个持续的过程
(6)循环风格——用标准方法来处理反复出现的问题
8、软件架构的发展阶段
(1)基础研究阶段(1968-1994):
提出“软件架构”,开始尝试模块化的实践
(2)概念体系和核心技术形成阶段(1991-2000):
软件架构作为一个独立的领域出现;软件架构核心技术的发展;软件组件技术
(3)理论体系丰富发展阶段(1996-1999)
(4)理论完善和普及应用阶段(1999至今)
第二章:
软件架构定义
1、*组成派定义依据:
软件架构主要反映系统是由哪些部分组成的,以及这些部分是如何组成的,强调软件系统的整体结构和配置。
①软件架构={元素,组成,原理}
l架构元素:
具有一定形式的结构化元素,包括处理元素、数据元素和连接元素
l架构组成:
由加权的属性和关系构成。
属性用来约束架构元素的选择,关系用来约束架构元素的放置。
l架构原理:
捕获在选择架构风格、架构元素和架构形式的选择动机
②软件架构包括组件、连接件和约束三大要素。
l组件:
可以是一组代码,也可以是独立的程序
l连接件:
过程调用、管道和消息等,用于表示组件之间的相互关系
l约束:
一般为组件连接时的条件
③软件架构是某一系统的基本组织结构,其内容包括软件组件、组件间的联系、组件与其环境间的联系,以及指导上述内容设计和演化的原理。
2、*决策派定义依据:
软件架构设计是软件设计的一部分,软件设计实际上是开发人员意志和决策在软件开发过程中的体现,软件架构更是高层领导和架构师意志和决策的体现,强调设计决策,更加注重架构风格和模式的选择。
①软件架构是一系列重要决策的集合,这些决策关于:
软件系统的组织;组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为;如何组合这些元素,使它们逐渐合成为更大的子系统;架构风格;这些元素以及它们的接口、协作和组合。
②软件架构是架构层次上所有设计决策的集合体,这些设计决策与以下内容有关:
架构改造的影响、原理、设计准则、设计约束以及附加需求。
③软件架构是“设计决策+设计”,这里的设计是指设计决策的推理过程。
3、组成拍和决策派的区别:
组成派关注于软件本身,将软件架构看作组件和交互的集合;决策派关注于软件架构中的实体(人),将软件架构视为一系列重要设计决策的集合。
(可以再把两者的定义依据答一下)
4、*参考定义框架(一般性定义):
软件架构由:
组件、连接件、配置、端口和角色五种元素组成。
组件:
具有某种功能的可重用的软件模块单元,表示了系统中主要的计算单元和数据存储。
组件有两种:
复合组件和原子组件。
复合组件由其他复合组件和原子组件通过连接而成。
连接件:
表示了组件之间的交互。
配置:
表示了组件和连接件的拓扑逻辑和约束。
端口:
组件作为一个封装的实体,只能通过其接口与外部交互,组件的接口由一组端口组成,每个端口表示了组件和外部环境的交汇点。
角色:
连接件作为建模软件体系结构的主要是提,同样也有接口,连接件的接口由一组角色组成,连接件的每个角色定义了该连接件表示的交互的参与者。
第三章:
软件架构模型
1、软件架构模型:
对架构设计决策的具象化和文档化。
2、软件架构模型的意义(为什么要有软件架构模型?
):
软件架构模型能够将软件架构某些关键或关注的方面剥离出来,使用统一的图形、文档和数据进行描述,达到直观、便捷地理解、分析和交流。
3、*软件架构建模的五类方法:
①基于非规范的图形表示的建模方法
②基于UML的建模方法
各个图分别对系统的哪些方面进行了建模?
l用例图从概念上描述了系统的逻辑功能;
l类图反映了架构中的静态关系;
l顺序图反映了系统的同步和并行逻辑;
l活动图表现了一定的并发行为;
l组件图反映了系统的逻辑结构;
l部署图描述了物理资源的分布情况。
4+1view:
逻辑视图:
关注功能,可以采用UML用例图来实现
开发视图:
关注软件的静态组织结构,使用UML的类图、对象图和组件图来表示模块,用包来表示子系统,利用连接表示模块和子系统之间的关联。
过程视图:
关注软件的流程特征,可以采用UML的状态图、顺序图和活动图来实现。
物理视图:
关注功能单元的分布状况,可以使用UML的配置图来实现
场景试图:
关注用户需求,可以使用用例或场景来描述。
③基于形式化的建模方法
基本思想:
利用一些已知特性的数学抽象来为目标软件系统的状态特征和行为特征构造模型。
④基于UML形式化的建模方法
基本思想:
利用形式化与UML结合的建模方法研究成果,对UML图形赋予形式化语义,然后就可以利用已有的形式化语言和工具对UML模型进行推理验证。
⑤其他建模方法:
文本语言建模方法、模型驱动的架构建模方法
4、*软件架构建模方法的发展趋势:
第一层次:
文本模型
从原始的自然语言文档化到以XML为代表的由固定规范、结构的文档化。
第二层次:
图形可视化模型
(什么是可视化?
)将软件架构按照图形的方式进行表达,需要便于涉众阅读、理解和交流,使之不会因图形过于复杂而难以把握软件架构的概况。
第三层次:
UML模型
使用单一的集成的表示法来对系统的多个方面进行建模,模型范畴包括从系统的静态结构到动态行为特征、从系统的逻辑功能到物理部署。
第四层次:
形式化模型
(什么是形式化?
)
面向模型的方法,利用一些已知特性的数学抽象来为目标软件系统的状态特征和行为特征构造模型。
代数方法,它为目标软件系统的规格说明提供了一种特殊的机制,包括描述抽象概念并进行进程联接和推理的方法。
第五层次:
未来模型
只是一种设想,需要前四层技术都发展到相当成熟的阶段。
只有将各个层次的先进技术结合在一起,才能建立完备、精确的模型,才能利用模型直接生成全部代码。
第四章:
软件架构风格
1、什么是软件架构风格?
软件架构风格又称软件架构惯用模式,是描述某一特定应用领域中系统组织方式的惯用模式,作为“可复用的组织模式和习语”,为设计人员的交流提供了公共的术语空间,促进了设计复用与代码复用。
2、使用架构风格的好处:
①可以极大地促进设计的重用性和代码的重用性,并且使得系统的组织结构易被理解。
②使用标准的架构风格可较好地支持系统内的互操作性以及针对特定风格的分析。
***********经典的软件架构风格**********
1、管道过滤器风格
(1)特点:
①在管道过滤器风格下,每个功能模块都有一组输入和输出。
功能模块称作过滤器;功能模块间的连接可以看作输入、输出数据流之间的通路,称作管道。
②管道-过滤器风格的特性之一在于过滤器的相对独立性,即过滤器独立完成自身功能,相互之间无需状态交互。
③从解耦的角度:
每个过滤器之间都是解耦的,每个过滤器都专注于自己的职责。
过滤器是独立运行的组件;
过滤器对其处理上下连接的过滤器“无知”;
结果的正确性不依赖于各个过滤器运行的先后次序。
(解耦的好处)解耦能够保持组件之间的自主和独立。
它的直接结果就是改动成本低,维护成本低,可读性高。
(2)优点:
①由于每个组件行为不受其他组件的影响,整个系统的行为易于理解。
②管道-过滤器风格支持功能模块的复用。
(任何两个过滤器,只要它们之间传送的数据遵守相同的规约,就可以相连接。
)
③基于管道-过滤器风格的系统具有较强的可维护性和可扩展性。
④支持一些特定的分析,如吞吐量计算和死锁检测等。
(3)缺点:
①管道-过滤器风格往往导致系统处理过程的成批操作。
②根据实际设计的需要,设计者需要对数据传输进行特定的处理(如加密),导致过滤器必须对输入、输出管道中的数据流进行解析和反解析,增加了过滤器具体实现的复杂性。
③交互式处理能力弱。
(4)实例:
①传统的编译器,一个阶段的输入是另一个阶段的输出。
②Unix和DOS中的管道操作符‘|’:
将符号‘|’之前的命令的输出作为‘|’之后命令的输入。
2、事件驱动风格
(1)基本思想:
不直接调用一个过程,而是发布或广播一个或多个事件。
系统中的其它组件通过注册与一个事件关联起来的过程,来表示对某一个事件感兴趣。
当这个事件发生时,系统本身会调用所有注册了这个事件的过程。
这样一个事件的激发会导致其它模块中过程的隐式调用。
(2)从解耦的角度:
系统组件松耦合。
在系统执行的过程中,可以并行处理不可预期的事件发生。
观察者模式:
让多个观察者对象同时监听某一主题对象,当该对象状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
(3)特点:
①事件发布者不知道哪些组件会受到事件的影响;组件不能对事件的处理顺序,或者事件发生后的处理结果做任何假设。
②从架构上来说,事件驱动系统的组件提供了一个过程集合和一组事件。
③过程可以使用显示的方法进行调用,也可以由组件在系统事件中注册。
当触发事件时,会自动引发这些过程的调用。
④连接件既可以是显示过程调用,也可以是一种绑定事件声明和过程调用的手段。
(4)优点:
①事件声明者不需要知道哪些组件会影响事件,组件之间关联较弱。
②提高软件复用能力。
只要在系统事件中注册组件的过程,就可以将该组件集成到系统中。
③系统便于升级。
只要组件名和事件中所注册的过程名保持不变,原有组件就可以被新组件替代。
(5)缺点:
①组件放弃了对计算的控制权,完全由系统来决定。
②存在数据交换问题。
③该风格中,正确性验证成为一个问题。
3、黑板风格
(1)特点:
①黑板系统是传统上被用于信号处理方面进行复杂解释的应用程序,以及松散耦合的组件访问共享数据的应用程序。
②黑板架构实现的基本出发点是已经存在一个对公共数据结构进行协同操作的独立程序集合。
③黑板系统的命于它反映的是一种信息共享系统——如同教室的黑板一样,有多个人读,也有多个人写。
④数据驱动或状态驱动的控制机制。
系统在运行时,每当有新输入、新结果和新状态写入黑板时,中心控制组件就对黑板上的信息进行评价,并据此协调各专门程序进行工作。
⑤组成部分:
知识源、黑板数据结构、控制器。
(2)优点:
①便于多客户共享大量数据,他们不关心数据何时有的、谁提供的、怎样提供的。
②既便于添加新的作为知识