概述
1.软件体系结构主要包括哪3个部分?
答:软件体系结构=构件+连接件+约束。软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。
2.软件重用相关内容。
答:
定义:软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。
一、软件重用定义
软件重用(Software Reuse,又称软件复用或软件再用)的概念对于大家并不陌生。早在1968年的NATO软件工程会议上就已经提出可复用库的思想。软件重用的定义也很多,比较权威和通用的一种是:软件重用是利用事先建立好的软部品创建新软件系统的过程。这个定义蕴含着软件重用所必须包含的两个方面:
1. 系统地开发可重用的软部品。这些软部品可以是代码,但不应该仅仅局限在代码。我们必须从更广泛和更高层次来理解,这样才会带来更大的重用收益。比如软部品还可以是:分析,设计,测试数据,原型,计划,文档,模板,框架等等。
2. 系统地使用这些软部品作为构筑模块,来建立新的系统。
二、软件重用的好处
软件重用会带来以下好处:
1. 提高软件生成率。
2. 缩短开发周期 。
3. 降低软件开发和维护费用。
4. 生产更加标准化的软件。
5. 提高软件开发质量。
6. 增强软件系统的互操作性。
7. 减少软件开发人员数量。
8. 使开发人员能比较容易的适应不同性质的项目开发。
三、软件重用形式
软件重用的形式(或手段)很多,重用的级别有大有小。主要有以下几种:
1. 源代码模块或者类一级的重用。这是最基本的软件重用形式。
2. 二进制形式的重用。如组件重用。
3. 组装式重用。比如:把好几个应用程序的功能集成在一起。例如,要建立一个门户站点应用,登陆用户既可以查询天气情况,又可以查看股市行情,还可以在线购物。这些功能由不同网络应用服务供应商提供,通过这种组装式重用,就可以非常容易地把上述功能都集成到新的门户站点中。
4. 分析级别重用。
5. 设计级别重用。
6. 软件文档重用。
四、软件重用分类
为软件重用分类比较困难,因为软件重用技术众多,一种重用技术可以包括多种重用形式。比如说:框架即可以包括代码级重用,也可以包括设计级重用。有一种分类方法是按照软件重用所应用的领域范围,把重用划分为两种:横向重用和纵向重用。
1. 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。
2. 纵向重用是指在一类具有较多公共性的应用领域之间进行软部品重用。因为在两个截然不同的应用领域之间实施软件重用非常困难,潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。纵向重用活动的主要包括以下几个步骤:
1) 首先进行域分析。根据应用领域的特征及相似性预测软部件的可重用性。
2) 然后进行软部品的开发。一旦确认了软部件的重用价值,即可进行软部品的开发并对具有重用价值的软部品进行一般化,以便它们能够适应新的类似的应用领域。
3) 最后,软部件及其文档即可进入软部品库,成为可供后续项目使用的可重用资源。
五、流行的软件重用技术
最理想的重用技术是它的重用产品能够和用户的需求完全一致,不需要用户做任何自定义,并且能够无需用户学习就能够被使用。然而,一种重用技术能够适合今天,可能不适合明天。一个重用产品越是能够被自定义,它越是可能在一个特定的环境下被使用,但是这也需要用户进行更多的学习,研究和实践。
自从软件重用思想产生以来,计算机科学家和软件工程师就致力与软件重用的技术的研究和实践。在30多年的时间内,出现多种软件重用技术,如:库函数,模板,面向对象、设计模式、组件、框架、构架。
下面是应用程序框架和其它三种软件流行的重用技术的比较。
1. 库函数
库函数是很早的软件重用技术。很多编程语言为了增强自身的功能,都提供了大量的库函数。对于库函数的使用者,他只要知道函数的名称,返回值的类型, 函数参数和函数功能就可以对其进行调用。
2. 面向对象
面向对象技术是近三十年来学术界和工业界研究和应用的一个热点。面向对象技术通过方法、消息、类、继承、封装、和实例等机制构造软件系统,并为软件重用提供强有力的支持。面向对象方法已成为当今最有效、最先进的软件开发方法。与函数库对应,很多面向对象语言为应用程序开发者提供了易于使用的类库,如VC++中的MFC。
3. 模板
模板相当于工业生产中所用的“模具”。有各种各样的模板(如文档模板,网页模板等),利用这些模板可以比较快速地建立对应的软件产品。模板把不变的封装在内部,对可能变化的部分提供了通用接口,由使用者来对这些接口进行设定或实现。
4. 设计模式
设计模式作为重用设计信息的一种技术,在面向对象设计中越来越来流行。设计模式描述了在我们周围不断重复发生的问题,该问题的解决方案的核心和解决方案实施的上下文。设计模式命名一种技术并且描述它的成本和收益,共享一系列模式的开发者拥有共同的语言来描述他们的设计。
5. 构件
普通意义上的构件应从以下几个方面来理解:
1) 构件应是抽象的系统特征单元,具有封装性和信息隐蔽,其功能由它的接口定义。
2) 构件可以是原子的,也可以是复合的。因此它可以是函数,过程或对象类,也可以是更大规模的单元。一个子系统是包含其它构件的构件。
3) 构件是可配置和共享的,这是基于构件开发的基石,且构件之间能相互提供服务。
6. 构架
普通意义上的构架应从以下几个方面来理解:
1) 构架是与设计的同义理解,是系统原型或早期的实现。
2) 构架是高层次的系统整体组织。
3) 构架是关于特定技术如何合作组成一个特定系统的解释。
7. 框架
如果把软件的构建过程看成是传统的建筑过程;框架的作用相当于为我们的房屋搭建的“架子”。框架从重用意义上说,是一个介于构件和构架之间的一个概念。构件,框架和构架三者的主要区别在于:对重用的支持程度的不同:
1) 构件是基础,也是基于构件开发的最小单元。构件重用包括可重用构件的制作和利用可重用构件构造新构件或系统,
2) 一个框架和构架包含多个构件。这些构件使用统一的框架(构架)接口,使得构造一个应用系统更为容易。
3) 框架重用包括代码重用和分析设计重用,一个应用系统可能需要若干个框架的支撑,从这个意义上来说,框架也是一个“构件”的同时,框架又是一类特定领域的构架。
4) 构架重用不仅包括代码重用和分析设计重用,更重要的是抽象层次更高的系统级重用。
5) 框架和构架的重用层次更高,比构件更为抽象灵活,但也更难学习和使用。
3.黑盒重用和白盒重用。
答:
黑盒重用:是指对已有构建无需做任何修改,直接进行重用,这是理想的重用方式。
白盒重用:是指已有构建并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用。
4.软件构件。
答:软件系统中具有相对独立功能,可以明确辨识,接口由规约指定,与语境有明显依赖关系,可独立部署,且多由第三方提供的可组装软件实体。
5.基于UML的软件体系结构中,什么是“4+1”视图模型。
答:
Philippe Kruchten提出的4+1视图方法
该方法的不同架构视图承载不同的架构设计决策,支持不同的目标和用途:
逻辑视图:当采用面向对象的设计方法时,逻辑视图即对象模型。
开发视图:描述软件在开发环境下的静态组织。
处理视图:描述系统的并发和同步方面的设计。
物理视图:描述软件如何映射到硬件,反映系统在分布方面的设计。
运用4+1视图方法:针对不同需求进行架构设计
如前文所述,要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。
6.类图、用例图、顺序图、状态转换图。
答:
类图:类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
用例图:用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
顺序图:顺序图是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
状态转换图:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外状态转换图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。因此状态转换图提供了行为建模机制。
在状态转换图中,每一个节点代表一个状态,其中双圈是终结状态。许多单片机教材上对工作模式的表达通常采用状态图的形式。
7.以图书管理系统为例,分析本系统应有的模块,掌握相关子系统的UML用例图、图书查询预约系统的顺序图。
8.B/S、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 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
三、B/S、C/S结构软件技术上的比较
C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。国内目前的大部分ERP(财务)软件产品即属于此类结构。
B/S(浏览器/服务器模式)是随着Internet技术的兴起,对C/S结构的一种改进。在这种结构下,软件应用的业务逻辑完全在应用服务器端实现,用户表现完全在Web服务器实现,客户端只需要浏览器即可进行业务处理,是一种全新的软件系统构造技术。这种结构更成为当今应用软件的首选体系结构。e通管理系列产品即属于此类结构。
9.软件是否具有一定的演化能力,主要体现在哪些方面?
答:是
1.可分析性:具有良好演化能力的软件应该容易进行分析,以便可以快速的确定需要进行修改的部分。
2.可修改性:具有良好演化能力的软件应该可以方便容易的修改
3.稳定性:具有良好演化能力的软件应该具有避免由于修改而造成不良后果的能力。
4.可测试性:验证一个软件演化后修改有效的能力。
10.软件演化与软件维护的关系。
答:
软件维护类型
纠错性维护(Corrective maintenance)
由于软件中的缺陷引起的修改
完善性维护(Perfective maintenance)
根据用户在使用过程中提出的一些建设性意见而进行的维护活动
适应性维护(Adaptive maintenance)
为适应环境的变化而修改软件的活动
预防性维护(Preventive maintenance)
为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础
11.静态演化、动态演化的概念。
答:静态演化是指软件在停机状态下的演化,期优点是不用考虑运行状态的迁移,同时也没有活动的进程需要处理,然而停止一个应用程序就意味着中断它提供的服务,造成软件暂时失效。
动态演化是指软件在执行期间的演化,相对于静态演化而言,动态演化过程具有持续可用的显著特点,软件不会存在暂时的失效。但由于涉及状态迁移等问题,比静态演化更复杂,包括动态更新,增加,和删除构件,动态配置系统结构等问题。
12.单体演化、全局演化的概念。
答:图
13在体系结构层次上两类评估技术
浅谈软件体系结构评估技术 - 百度文库
14.类之间的关系:关联,泛化,依赖,细化,
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
1. 泛化(Generalization)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
【箭头指向】:带三角箭头的实线,箭头指向父类
2. 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口。
3.关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,
丈夫与妻子关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。
但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。
下图为自身关联:
4.聚合(Aggregation)
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。
如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体
5.组合(Composition)
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,
它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
6. 依赖(Dependency)
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,
所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
15软件体系结构的定义和作用
16.什么是UML
答: UML是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
UML的概念包括了UML语义(Semantics)和UML表(Notation)两个部分。UML语义定义了静态模型和动态模型。结构模型强调系统的对象结构,入对象的类、接口、属性和关系;行为模型关注的是系统对象的行为动作,如对象的方法、交互、协作和状态。UML表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。重要内容由9种图来定义,包括用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。
17常用体系结构风格有哪些
数据流风格:批处理序列,管道/过滤器 调用/返回风格:主程序/子程序,面向对象风格,层次结构 独立构件风格:进程通信,事件系统 虚拟机风格:解释器,基于规则的系统 仓库风格:数据库系统,超文本系统,黑板系统
18饮水机售水系统用例图
17.常用的体系结构风格
答:管道/过滤器体系结构风格
面相对象体系结构风格
分层体系结构风格
客户机/服务器体系结构风格
浏览器/服务器体系结构风格
事件驱动体系结构风格
数据共享体系结构风格
解释器体系结构风格
C2体系结构风格
19.MVC体系结构风格中,M/V/C分别代表什么?
答:(1)什么是mvc?
是一种软件架构的思想,将软件按照模型、视图、控制器
来划分。模型负责封装业务处理逻辑,视图负责输入和输出(
表示逻辑),控制器负责协调模型和视图。
模型:
封装:需要先写接口,然后实现接口中声明的方法。
业务处理逻辑:业务本身的处理流程,另外,还包括
为保证业务处理正常可靠执行的基础服务(事务、安全、
日志等等)。
视图:
输入:提供相应的操作界面,方便用户使用。
输出:将模型返回的结果以合适的方式来展现。
控制器:
协调: 视图向控制器发请求,由控制器来选择相应的
模型来处理;模型返回的结果给控制器,由控制器来
选择合适的视图,生成相应的界面给用户。
(2)mvc最大的优点:
可以实现模型的复用:
一方面,模型只返回处理结果,并不用关心这些
结果如何展现。我们可以提供不同的视图来展现这些
数据;另外一方面,对于同一个模型,我们可以提供
不同的操作界面来访问。
(3)开发一个web应用,如何使用mvc? (javaee)
1)模型使用java类来实现,视图使用jsp,
控制器使用servlet或者是filter来实现。
2)所有请求先发送给控制器(servlet),由控制器去选择
模型(java类)来处理;模型的处理结果交给控制器,控制器
选择视图(jsp)。
1.软件体系结构主要包括哪3个部分?
答:软件体系结构=构件+连接件+约束。软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。
2.软件重用相关内容。
答:
定义:软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。
一、软件重用定义
软件重用(Software Reuse,又称软件复用或软件再用)的概念对于大家并不陌生。早在1968年的NATO软件工程会议上就已经提出可复用库的思想。软件重用的定义也很多,比较权威和通用的一种是:软件重用是利用事先建立好的软部品创建新软件系统的过程。这个定义蕴含着软件重用所必须包含的两个方面:
1. 系统地开发可重用的软部品。这些软部品可以是代码,但不应该仅仅局限在代码。我们必须从更广泛和更高层次来理解,这样才会带来更大的重用收益。比如软部品还可以是:分析,设计,测试数据,原型,计划,文档,模板,框架等等。
2. 系统地使用这些软部品作为构筑模块,来建立新的系统。
二、软件重用的好处
软件重用会带来以下好处:
1. 提高软件生成率。
2. 缩短开发周期 。
3. 降低软件开发和维护费用。
4. 生产更加标准化的软件。
5. 提高软件开发质量。
6. 增强软件系统的互操作性。
7. 减少软件开发人员数量。
8. 使开发人员能比较容易的适应不同性质的项目开发。
三、软件重用形式
软件重用的形式(或手段)很多,重用的级别有大有小。主要有以下几种:
1. 源代码模块或者类一级的重用。这是最基本的软件重用形式。
2. 二进制形式的重用。如组件重用。
3. 组装式重用。比如:把好几个应用程序的功能集成在一起。例如,要建立一个门户站点应用,登陆用户既可以查询天气情况,又可以查看股市行情,还可以在线购物。这些功能由不同网络应用服务供应商提供,通过这种组装式重用,就可以非常容易地把上述功能都集成到新的门户站点中。
4. 分析级别重用。
5. 设计级别重用。
6. 软件文档重用。
四、软件重用分类
为软件重用分类比较困难,因为软件重用技术众多,一种重用技术可以包括多种重用形式。比如说:框架即可以包括代码级重用,也可以包括设计级重用。有一种分类方法是按照软件重用所应用的领域范围,把重用划分为两种:横向重用和纵向重用。
1. 横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。
2. 纵向重用是指在一类具有较多公共性的应用领域之间进行软部品重用。因为在两个截然不同的应用领域之间实施软件重用非常困难,潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真正所在。纵向重用活动的主要包括以下几个步骤:
1) 首先进行域分析。根据应用领域的特征及相似性预测软部件的可重用性。
2) 然后进行软部品的开发。一旦确认了软部件的重用价值,即可进行软部品的开发并对具有重用价值的软部品进行一般化,以便它们能够适应新的类似的应用领域。
3) 最后,软部件及其文档即可进入软部品库,成为可供后续项目使用的可重用资源。
五、流行的软件重用技术
最理想的重用技术是它的重用产品能够和用户的需求完全一致,不需要用户做任何自定义,并且能够无需用户学习就能够被使用。然而,一种重用技术能够适合今天,可能不适合明天。一个重用产品越是能够被自定义,它越是可能在一个特定的环境下被使用,但是这也需要用户进行更多的学习,研究和实践。
自从软件重用思想产生以来,计算机科学家和软件工程师就致力与软件重用的技术的研究和实践。在30多年的时间内,出现多种软件重用技术,如:库函数,模板,面向对象、设计模式、组件、框架、构架。
下面是应用程序框架和其它三种软件流行的重用技术的比较。
1. 库函数
库函数是很早的软件重用技术。很多编程语言为了增强自身的功能,都提供了大量的库函数。对于库函数的使用者,他只要知道函数的名称,返回值的类型, 函数参数和函数功能就可以对其进行调用。
2. 面向对象
面向对象技术是近三十年来学术界和工业界研究和应用的一个热点。面向对象技术通过方法、消息、类、继承、封装、和实例等机制构造软件系统,并为软件重用提供强有力的支持。面向对象方法已成为当今最有效、最先进的软件开发方法。与函数库对应,很多面向对象语言为应用程序开发者提供了易于使用的类库,如VC++中的MFC。
3. 模板
模板相当于工业生产中所用的“模具”。有各种各样的模板(如文档模板,网页模板等),利用这些模板可以比较快速地建立对应的软件产品。模板把不变的封装在内部,对可能变化的部分提供了通用接口,由使用者来对这些接口进行设定或实现。
4. 设计模式
设计模式作为重用设计信息的一种技术,在面向对象设计中越来越来流行。设计模式描述了在我们周围不断重复发生的问题,该问题的解决方案的核心和解决方案实施的上下文。设计模式命名一种技术并且描述它的成本和收益,共享一系列模式的开发者拥有共同的语言来描述他们的设计。
5. 构件
普通意义上的构件应从以下几个方面来理解:
1) 构件应是抽象的系统特征单元,具有封装性和信息隐蔽,其功能由它的接口定义。
2) 构件可以是原子的,也可以是复合的。因此它可以是函数,过程或对象类,也可以是更大规模的单元。一个子系统是包含其它构件的构件。
3) 构件是可配置和共享的,这是基于构件开发的基石,且构件之间能相互提供服务。
6. 构架
普通意义上的构架应从以下几个方面来理解:
1) 构架是与设计的同义理解,是系统原型或早期的实现。
2) 构架是高层次的系统整体组织。
3) 构架是关于特定技术如何合作组成一个特定系统的解释。
7. 框架
如果把软件的构建过程看成是传统的建筑过程;框架的作用相当于为我们的房屋搭建的“架子”。框架从重用意义上说,是一个介于构件和构架之间的一个概念。构件,框架和构架三者的主要区别在于:对重用的支持程度的不同:
1) 构件是基础,也是基于构件开发的最小单元。构件重用包括可重用构件的制作和利用可重用构件构造新构件或系统,
2) 一个框架和构架包含多个构件。这些构件使用统一的框架(构架)接口,使得构造一个应用系统更为容易。
3) 框架重用包括代码重用和分析设计重用,一个应用系统可能需要若干个框架的支撑,从这个意义上来说,框架也是一个“构件”的同时,框架又是一类特定领域的构架。
4) 构架重用不仅包括代码重用和分析设计重用,更重要的是抽象层次更高的系统级重用。
5) 框架和构架的重用层次更高,比构件更为抽象灵活,但也更难学习和使用。
3.黑盒重用和白盒重用。
答:
黑盒重用:是指对已有构建无需做任何修改,直接进行重用,这是理想的重用方式。
白盒重用:是指已有构建并不能完全符合用户需求,需要根据用户需求进行适应性修改后才可使用。
4.软件构件。
答:软件系统中具有相对独立功能,可以明确辨识,接口由规约指定,与语境有明显依赖关系,可独立部署,且多由第三方提供的可组装软件实体。
5.基于UML的软件体系结构中,什么是“4+1”视图模型。
答:
Philippe Kruchten提出的4+1视图方法
该方法的不同架构视图承载不同的架构设计决策,支持不同的目标和用途:
逻辑视图:当采用面向对象的设计方法时,逻辑视图即对象模型。
开发视图:描述软件在开发环境下的静态组织。
处理视图:描述系统的并发和同步方面的设计。
物理视图:描述软件如何映射到硬件,反映系统在分布方面的设计。
运用4+1视图方法:针对不同需求进行架构设计
如前文所述,要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。
6.类图、用例图、顺序图、状态转换图。
答:
类图:类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
用例图:用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
顺序图:顺序图是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
状态转换图:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外状态转换图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。因此状态转换图提供了行为建模机制。
在状态转换图中,每一个节点代表一个状态,其中双圈是终结状态。许多单片机教材上对工作模式的表达通常采用状态图的形式。
7.以图书管理系统为例,分析本系统应有的模块,掌握相关子系统的UML用例图、图书查询预约系统的顺序图。
8.B/S、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 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
三、B/S、C/S结构软件技术上的比较
C/S结构软件(即客户机/服务器模式)分为客户机和服务器两层,客户机不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。国内目前的大部分ERP(财务)软件产品即属于此类结构。
B/S(浏览器/服务器模式)是随着Internet技术的兴起,对C/S结构的一种改进。在这种结构下,软件应用的业务逻辑完全在应用服务器端实现,用户表现完全在Web服务器实现,客户端只需要浏览器即可进行业务处理,是一种全新的软件系统构造技术。这种结构更成为当今应用软件的首选体系结构。e通管理系列产品即属于此类结构。
9.软件是否具有一定的演化能力,主要体现在哪些方面?
答:是
1.可分析性:具有良好演化能力的软件应该容易进行分析,以便可以快速的确定需要进行修改的部分。
2.可修改性:具有良好演化能力的软件应该可以方便容易的修改
3.稳定性:具有良好演化能力的软件应该具有避免由于修改而造成不良后果的能力。
4.可测试性:验证一个软件演化后修改有效的能力。
10.软件演化与软件维护的关系。
答:
软件维护类型
纠错性维护(Corrective maintenance)
由于软件中的缺陷引起的修改
完善性维护(Perfective maintenance)
根据用户在使用过程中提出的一些建设性意见而进行的维护活动
适应性维护(Adaptive maintenance)
为适应环境的变化而修改软件的活动
预防性维护(Preventive maintenance)
为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础
11.静态演化、动态演化的概念。
答:静态演化是指软件在停机状态下的演化,期优点是不用考虑运行状态的迁移,同时也没有活动的进程需要处理,然而停止一个应用程序就意味着中断它提供的服务,造成软件暂时失效。
动态演化是指软件在执行期间的演化,相对于静态演化而言,动态演化过程具有持续可用的显著特点,软件不会存在暂时的失效。但由于涉及状态迁移等问题,比静态演化更复杂,包括动态更新,增加,和删除构件,动态配置系统结构等问题。
12.单体演化、全局演化的概念。
答:图
13在体系结构层次上两类评估技术
https://wenku.baidu.com/view/88feb6d5a300a6c30d229f65.html
14.类之间的关系:关联,泛化,依赖,细化,
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
1. 泛化(Generalization)
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
【箭头指向】:带三角箭头的实线,箭头指向父类
2. 实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口。
3.关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,
丈夫与妻子关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。
但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。
下图为自身关联:
4.聚合(Aggregation)
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。
如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体
5.组合(Composition)
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,
它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
6. 依赖(Dependency)
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,
所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
15软件体系结构的定义和作用
16.什么是UML
答: UML是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
UML的概念包括了UML语义(Semantics)和UML表(Notation)两个部分。UML语义定义了静态模型和动态模型。结构模型强调系统的对象结构,入对象的类、接口、属性和关系;行为模型关注的是系统对象的行为动作,如对象的方法、交互、协作和状态。UML表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。重要内容由9种图来定义,包括用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。
17常用体系结构风格有哪些
数据流风格:批处理序列,管道/过滤器 调用/返回风格:主程序/子程序,面向对象风格,层次结构 独立构件风格:进程通信,事件系统 虚拟机风格:解释器,基于规则的系统 仓库风格:数据库系统,超文本系统,黑板系统
18饮水机售水系统用例图
17.常用的体系结构风格
答:管道/过滤器体系结构风格
面相对象体系结构风格
分层体系结构风格
客户机/服务器体系结构风格
浏览器/服务器体系结构风格
事件驱动体系结构风格
数据共享体系结构风格
解释器体系结构风格
C2体系结构风格
19.MVC体系结构风格中,M/V/C分别代表什么?
答:(1)什么是mvc?
是一种软件架构的思想,将软件按照模型、视图、控制器
来划分。模型负责封装业务处理逻辑,视图负责输入和输出(
表示逻辑),控制器负责协调模型和视图。
模型:
封装:需要先写接口,然后实现接口中声明的方法。
业务处理逻辑:业务本身的处理流程,另外,还包括
为保证业务处理正常可靠执行的基础服务(事务、安全、
日志等等)。
视图:
输入:提供相应的操作界面,方便用户使用。
输出:将模型返回的结果以合适的方式来展现。
控制器:
协调: 视图向控制器发请求,由控制器来选择相应的
模型来处理;模型返回的结果给控制器,由控制器来
选择合适的视图,生成相应的界面给用户。
(2)mvc最大的优点:
可以实现模型的复用:
一方面,模型只返回处理结果,并不用关心这些
结果如何展现。我们可以提供不同的视图来展现这些
数据;另外一方面,对于同一个模型,我们可以提供
不同的操作界面来访问。
(3)开发一个web应用,如何使用mvc? (javaee)
1)模型使用java类来实现,视图使用jsp,
控制器使用servlet或者是filter来实现。
2)所有请求先发送给控制器(servlet),由控制器去选择
模型(java类)来处理;模型的处理结果交给控制器,控制器
选择视图(jsp)。
最后
以上就是动人红牛为你收集整理的软件体系结构期末复习题的全部内容,希望文章能够帮你解决软件体系结构期末复习题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复