《计算机软件体系结构》课程知识纲要目录1、课程安排 (1)2、软件体系结构的基础知识 (2)2.1 软件体系结构概论 (2)2.2 软件体系的定义 (2)2.3 软件体系的建模 (2)2.4 软件体系的生命周期 (3)2.5 软件体系结构的核心元素 (3)2.6 风格与模式 (3)2.7经典体系结构风格: (4)3、面向对象编程的基础知识 (5)4、UML建模 (5)4.1 用例图 (5)4.2活动图 (6)4.3时序图与协作图 (7)软件体系结构考试题型:填空,30,判断正误10,名词解释12,简答22,建模26,请大家认真学习知识点提纲,认真备考,尤其是平时成绩较低的同学,请端正态度1、课程安排课程内容安排:本课程的知识安排分为三个部分,一部分是软件体系结构的基础知识,一部分为面向对象编程的基础知识,一部分软件体系结构建模,包括四+1模型的建模,与UML 软件建模方法相关知识。
课程考核安排:本课程的考核分为三个部分:平时分(平时上机实验作业、课堂作业)占20%,上机实验分(第18周上机实验)占10%,期末考试占70%;2、软件体系结构的基础知识2.1 软件体系结构概论1、软件危机:软件应用需求的发展,致使软件复杂化,造成软件成本、开发进度、质量、维护难以控制,总而言之,软件开发越来越复杂困难。
危机产生的原因:缺乏正确的软件开发理论是根本,此外,软件需求不明确、软件规模与复杂度也是造成的重要原因。
2、软件工程:克服软件危机的办法,以工程的方法来进行软件生产的开发、生产与管理。
核心就是标准化,实现软件生产全流程的标准化。
3、可重用性与构件:标准化的软件开发流程,使应对特定问题的软件代码重用成为可能,当可重用的代码被抽取出来,并配以标准化的接口与应用文档,形成构件。
4、构件:语义完整、语法正确和可重用价值的单元软件,其中最核心的是可重用性。
在结构上,这是语义描述(针对构件的说明)、通信接口(构件调用与装配的接口)与实现代码(软件的功能实现)三部分组成。
5、领域:一组具有相似或相近软件需求的应用系统的覆盖的功能区域。
具有内聚性(问题的特定性)和稳定性(特定问题在较长的问题多次出现)。
6、商业化构件的分类:用户界面类、数据库类、商务应用类、工具类、网络通讯类、核心技术类。
2.2 软件体系的定义1、软件体系结构定义:软件体系结构为软件系统提供了一个结构(构件组装的结构)、行为(构件的功能)、属性(构件的约束)的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束的组成。
2.3 软件体系的建模1、建模的本质:从软件开发不同角度看问题、隐含在软件工程不同阶段,不同的参与人员对于工程的视角。
2、现有的模型:●结构模型:注重构件与连接件,试图以结构来反映系统,哲学:结构与功能的关系●框架模型:注重更高层次的可重用性,对于构件则不太关注,试图在构件及功能可替换情况下,重用框架。
●动态模型:反映系统动态行为,对前二者静态描述的补充。
●过程模型:试图反映系统构造的过程,典型的增量开发过程,也是期望能在主框架重用的情况下,开发系统。
●功能模型:试图按功能模块组件来描述系统,易于理解,极为常用。
3、4+1视图模型逻辑视图:支持系统的功能需求,注意是支持,不是表述,即系统提供给最终用户的服务。
在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。
逻辑视图解释系统功能的实现,建模人员一般为开发人员。
开发视图:又称为模块视图,主要侧重于软件模块的组织和管理,建模人员一般为项目经理。
进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求,如系统的性能和可用性,建模人员一般为测试人员。
物理视图:主要考虑如何把软件映射到硬件上,考虑系统性能、规模、可靠性等,一般建模人员为项目部署人员。
场景:可以看作是那些重要系统活动的抽象,有机联系以上四个视图,某种意义上说场景是最重要的需求抽象。
一般建模人员为项目主管。
2.4 软件体系的生命周期1、需求-〉建立-〉设计-〉实现,以及各阶段的大致内容了解。
2.5 软件体系结构的核心元素●构件:具有某种功能的可重用的软件单元●连接件:构件之间的交互,数据交互的中间件,如数据库JDBC、ODBC之类●配置:构件与连接件之间的拓扑逻辑与约束●端口:也就是构件的接口,接口可与构件相分离,形成独立的要素●角色:本质为场景,构件在场景中发挥的作用2.6 风格与模式1、风格的定义:某一特定应用领域中系统组织方式的惯用模式,即定义某一领域的术语表和一组指导构件系统的规则,其中:术语表:构件的通常表述方式2、模式:包括模块与模块组织的约束3、体系结构重用:模块+架构:体系统结构能不能重用,或者如何重用?由问题说了算,也就是领域,领域问题的相似性促成风格的形成2.7经典体系结构风格:1、管道与过滤器:经典的过程编程视角:视程序为数据处理流程,一个构件的输入为上一个构件的输出,同时该构件的输出又作为下一个构件的输入,其典型的应用:DOS 下的管道命令符。
优点:模块的高内聚、低耦合。
缺点:太理想化了,信息世界是多样化的,逻辑不是那么简单的主要的应用场景:如,大数据量的科学计算,批任务处理,数据库维护与倒库方面的工作。
极为清晰的数据处理流程数据处理时序是简单,不需要考虑过多的彼此依赖、并发性。
管道与过滤器接口可以标准化2、数据抽象与面向对象:另一种经典的编程视角: 面向对象,数据抽象:数据与其操作方法封装在一起。
这种风格的构件就是:对象优点:高内聚、低耦合:数据与其操作在一起,对现实世界的更真实建模缺点:各人观点不一,事实上面向对象的编程风格是不完全排除面向过程的,通常为两者的结合3、基于事件的隐式调用:构件彼此独立,消息与事件:消息引发事件,事件引发注册的模块,模块执行功能。
如:WINDOWS的编程基本模式、WINDOWS内核的基本模式、黑客与钩子的实现方式。
优点:扩展性很强,软件重用性也很强。
缺点: 同一消息处理的次序不太好确定,模块之间的依赖关系难以体现出来,系统对于全局逻辑的控制性不强4、分层系统:系统的架构风格:视信息世界为抽象程度不同的层次组成。
优点:系统结构清晰,扩展性强,功能模块可重用程度高。
缺点:客观世界的复杂性很难通过统一的分层结构来予以实现。
3、面向对象编程的基础知识1、面向对象技术的基本观点:●客观世界由独立的对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成。
●客观世界中具有相同特性与行为动作的对象可以抽象成类,如学生类,具有到某个学生,如张三,则为学生类的某个名为张三的特定对象。
因此,类是抽象,是同类对象的模板,对象是类的具体特例。
●类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性。
●对象之间的联系通过消息传递来维系。
2、类与对象:客观世界里的任何实体都可以被抽象为问题空间中的类。
客观世界实际存在的都是对象,而不是类。
类是问题域或实现域中某些概念的一个抽象。
类是一个封装数据属性和操作行为的模板,而对象是其实体。
3、类的继承:继承是指子类可以自动拥有父类的全部属性与操作的机制。
父类(超类)、子类(派生类)。
继承性又分为单重继承和多重继承两类。
4、多态:是指同一个消息为不同的对象接收时,可以有不同的解释,可产生不同的动作或执行结果。
5、多态性的实现方式:通过接口实现多态性:一个接口的指定动作由不同类来实现,而这些类的对象既可以看成其所属的类,且从接口的角度来看又可以看成它实现的接口类;通过继承实现多态性:一个子类的对象,既可以看成本身类,又可以看成其父类;通过抽象类实现的多态性:实现某个抽象类行为的类,其对象既可以看成抽象类的对象,又可以看成其本身类的对象。
4、UML建模4.1 用例图1、用例图包括的内容:用例(USER CASE);参与者(Actor);依赖、泛化以及关联关系(用例之间的关系)2、参与者:系统外部的实体,事物或人,也就是使用系统,触发系统活动的人。
3、系统边界:划分参与者与系统的界线,参与者不属于系统。
4、建模者应提出的问题:谁或什么使用系统?它们各自扮演什么角色?谁安装、启动、关闭、维护系统;谁从系统获得信息?谁提供信息给系统?有什么事发生在固定事件中?5、用例:系统在参与者请求或触发的时候完成某个事件,使用椭圆形表示,用例的名字可以写在其下或其中。
6、用例与参与者的关系:谁来做?参与者,做什么?用例7、用例之间的关系:泛化关系:用例与用例、参与者与参与者之间具有的继承关系包含关系:用例表示的是做一件事,而具体的事可能会分成多个步骤,每个步骤又是一个子事件;包含关系指不同的用例可能会包含同一个步骤形成的用例,那么把同一步骤抽出来作为子用例可以被这些用例包含扩展关系:把新的行为插入到已有用例中的方法。
用于某个事件中可能会有一些不同的行为,扩展关系为该事件代表的用例添加行为时提供扩展点4.2活动图1、活动图:是一种用于描述系统行为的模型视图,它可用来描述过程(业务过程、工作流、事件流等)中的活动及其迁移。
简单地讲,活动图是“OO流程图”。
2、活动图的主要应用:描述用例的行为、理解工作流程、描述复杂过程的算法。
3、活动图的构成:活动:在活动图中,用来指示要完成某项工作的动作或表示工作流的步骤。
其UML标记符是一个带有圆角的矩形。
可以用操作在活动中增加更多详细的步骤。
操作是活动中执行的小步骤。
在下列情况下发生:进入活动时发生的操作,标有entry字样。
活动进行时发生的操作,直到离开活动,标有do字样。
离开活动时发生的操作,标有exit字样。
特定事件发生时的操作,标有event字样和事件名。
操作是可选的,但提供的详细信息有助于后面完成系统设计。
状态:标记符与活动类似,也是带圆角的矩形,但状态的圆角比较小,如下图所示。
状态通常使用一个指示系统当前状态的单词或者短语来标识。
例如,Stopped是一个状态,而stop则是一个活动。
UML包含两个特殊状态,即开始状态和结束状态。
开始状态以实心黑点表示,结束状态以带有圆圈的实心黑点表示。
注意:每一个活动图只能有一个开始状态,但是可以有无数个结束状态。
决策:是基于判断条件选择控制流继续的方向。
决策的UML符号是一个小菱形标记符,然后从这里再按条件控制分支转移到满足条件的活动。
4.3时序图与协作图1、UML的交互图:是用户系统动态方面的建模,交互图可分为时序图和协作图。
2、时序图(Sequence Diagram):描述了对象之间传递消息的时间顺序,它用来表示用例中的行为顺序,是强调消息时间顺序的交互图。
时序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换,也就是说,时序图描述了类以及类间相互交换以完成期望行为的消息。