第1章:软件体系结构概论
什么是软件危机,软件危机的具体表现有哪些?
软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件危机的表现:
软件成本日益增长,开发进度难以控制,软件质量差,软件维护困难
产生软件危机的原因,如何克服软件危机?
产生软件危机的原因有用户需求不明确,缺乏正确的理论指导,软件规模越来越大,软件复杂度越来越高。
人们面临的不光是技术问题,更重要的是管理问题。要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与生产技术。在技术上,应该采用基于重用的软件生产技术;
在管理上,应该采用多维的工程管理模式。
构件:(components,也译为组件,部件):
是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。
软件架构师的关注点:
关注的首先不是功能,而是品质关注点(非功能性需求) 。涉众关注的是那些品质,如性能,安全,可伸缩性,还是可变性,可维护性,可用性等。理解的涉众的品质关注点后,考虑折中。分而治之,保持概念完整性
软件体系结构的定义
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述,这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件体系结构的意义
体系结构是风险承担者进行交流的手段,体系结构是早期设计决策的体现,它明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性,可以预测软件的质量,是推理和控制更改更简单,有助于循序渐进的原型设计。同时,软件体系结构是可传递和可重用的模型。
软件体系结构的应用现状
目前,软件体系结构领域研究非常活跃,归纳现有体系结构的研究活动,主要包括以下几个方面
1.软件体系结构描述语言2.体系结构构造与表示 3.体系结构分析、设计与验证4.体系结构发现、演化与重用5.基于体系结构的软件开发方法6.特定领域的体系结构框架7.软件体系结构支持工具8.软件产品线体系结构9.建立评价软件体系结构的方法
架构分析、设计与验证,发现、演化与重用
架构分析的内容可分为结构分析、功能分析和非功能分析。生成一个满足软件需求的架构的过程即为架构设计。
架构设计过程的本质在于将系统分解成相应的组成成分,并将这些成分重新组装成一个系统。 架构设计有两大类方法:过程驱动方法和问题列表驱动方法。
架构测试着重于仿真系统模型,解决架构层的主要问题。由于测试的抽象层次不同,架构测试策略可以分为单元/子系统/集成/验收测试等阶段的测试策略。
架构发现 从既存系统中提取软件的架构,属逆向工程。
架构重用 属于设计重用,比代码重用更抽象。由于软件架构是系统的高层抽象,反映了系统的主要组成元素及其交互关系,因而较算法更稳定,更适合于重用。
软件架构演化是指由于系统需求、技术、环境、分布等因素的变化而导致软件架构的变动。软件系统在运行时的架构变化称为架构的动态性,而将架构的静态修改称为架构扩展。两者都是架构适应性和演化性的研究范畴。
第2章 软件体系结构建模。
软件体系结构建模的种类
结构模型、框架模型、动态模型、过程模型和功能模型
什么是“4+1视图”,分别给出每个视图的名称和主要关注点。
“4+1”的视图模型是Kruchten于1995年提出的用于描述软件体系结构的方式,主要用5个不同的视图:逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。 每一个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容
软件体系结构的生命周期模型
软件体系结构的非形式化描述,软件体系结构的规范描述和分析,软件体系结构的求精及其验证,软件体系结构的实施,软件体系结构的演化和拓展,软件体系结构的提供、评价和度量,软件体系结构的终结
容器
容器是指一个在其内部可以执行构件或驻留数据的东西。它可以是从网络或应用服务器直到富客户端应用或数据库的任何东西。容器通常是可执行文件,但未必是各自独立的流程。
C4模型
在面向对象的系统中,通常系统由多个容器组成,容器由多个构件组成,构件由多个类组成
第3章 软件体系结构风格。
软件架构风格的定义
诸风格的特征
◎数据流风格:批处理序列;管道/过滤器。
管道与过滤器风格的软件体系结构的特点
(1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;(2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;(3)支持软件重用。(4)系统维护和增强系统性能简单。(5)允许对一些如吞吐量、死锁等属性的分析;(6)支持并行执行。但是,这样的系统也存在着若干不利因素。
(1)通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。
(2)不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重。
(3)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
◎调用/返回风格:主程序/子程序;面向对象风格;层次结构。
面向对象的优点
能形象地表现现实世界的领域,重用性高,对应变化很强。 即易扩展, 维护性强
数据抽象和面向对象组织缺点
性能损失。 面向对象编程为了:重用性、 灵活性和扩展性等特性而作出的牺牲。测试比较麻烦,对整体系统设计要求高
◎独立构件风格:进程通讯;事件系统。
基于事件的隐式调用优点:
为软件重用提供了强大的支持。 当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中。为改进系统带来了方便。 当用一个构件代替另一个构件时,不会影响到其它构件的接口。
基于事件的隐式调用缺点:
构件放弃了对系统计算的控制。数据交换的问题。 有时数据可被一个事件传递,但
有时系统必须依靠一个共享的仓库进行交互。 这时全局性能和资源管理便成了问题。
既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。
分层系统优点:
支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;
支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;支持重用。 只要提供的服务接口定义不变,同一层的不同实现可以交换使用。 这样,就可以定义一组标准的接口,而允许各种不同的实现方法。
分层系统缺点:
并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化
的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;很难找到一个合适的、 正确的层次抽象方法。
◎虚拟机风格:解释器;基于规则的系统。
◎仓库风格:数据库系统;超文本系统;黑板系统。
请简要说明黑板风格的定义。
黑板结构是一个六至八层的层次结构,每一层都抽象了与之相邻的较低一层的信息。
知识源代表整个问题求解中的独立的子任务。每个知识源被组织成一个条件部分和一个动作部分,条件部分规定什么时候知识源可用,动作部分负责处理相关的黑板元素并产生新的元素。控制构件作为黑板的监控程序和调度程序;通常将黑板知识源应用到黑板中各种元素具有优先次序,调度程序负责监控黑板和计算的优先次序。
◎C2风格
C2风格的特点
C2体系结构风格:可以概括为通过连接件绑定在一起的按照一组规则动作的并行构件网络。组织规则有:1、系统中的构件和连接件都有一个顶部一个底部。2、构件的顶部应连接到某连接件的底部,构件的底部应连接到连接件的顶部,构件之间不能直接连接。3、一个连接件可以和任意数目的其他构件和连接件相连。4、当两个连接件直接相连时,必须由其中一个底部到另一个的顶部。C2风格的特点:系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。
◎C/S风格
C/S风格优点:
C/S架构具有强大的数据操作和事务处理能力,模型思想简单,易于理解。系统的客户应用程序和服务器构件分别运行在不同计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理。 将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约费用。
C/S风格缺点:
开发成本较高,客户端程序设计复杂,信息内容和形式单一,用户界面风格不一,使用繁杂,不利于推广使用,软件移植困难,软件维护和升级困难,新技术不能轻易应用
◎三层C/S风格
三层C/S风格优点:
允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性,和可扩展性。允许更灵活选用相应的平台和硬件系统,使之在
处理负荷能力上与处理特性上分别适应于三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。应用的各层可以并行开发,可以选择各自最适合的开发语言。利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑
客手段非法访问数据层,为严格的安全管理奠定了坚实的基础。
要注意的问题:
三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说
也达不到所要求的性能。设计时必须慎重考虑三层间的通信方法、 通信频度及数据量。 这和提高各层的独立性一样是三层C/S结构的关键问题。
◎三层B/S风格
B/S风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器。优点(1)基于B/S体系结构的软件,系统安装,修改和维护全在服务器端解决。(2)提供了异种机,异种网,异种应用服务的联机,联网,同意服务的最现实的开放性基础。缺点(1)缺乏对动态页面的支持能力,没有集成有效的数据库处理能力。(2)在数据查询等响应速度上,要远远低于C/S体系结构。(3)数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用。
◎异构风格
◎领域特定的软件架构(DSSA)
◎典型的软件系统的架构类型
◎游戏系统的体系结构实例Darkstar
◎商业系统体系结构实例Explanner/Ai,Explanner/J
第5章 统一建模语言(UML).
复习UML的各种图的含义,用途和画法
类图在UML中有何重要作用?
1.为开发人员提供这种模仿现实世界的表达方式。
2.让分析员使用客户所采用的术语和客户交流,促使客户说出所要解决的问题的重要细节。
RUP 4+1图
什么是体系结构描述语言?它与程序语言以及UML有哪些区别与联系?
ADL是一种形式化语言,在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:构件、连接件、体系结构配置。
跟其他语言的比较:构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统;抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节;重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合;异构能力:ADL允许多个不同的体系结构描述关联存在;分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。
第6章 可扩展标记语言(XML).
XML的特点,作用,应用
特点:
简洁有效;易学易用;开放的国际化标准;高效且可扩充
作用:
使得搜索更加有意义;
开发灵活的Web应用软件;实现不同数据的集成;使用于多种应用环境;客户端数据处理与计算;数据显示多样化;局部数据更新;与现有Web发布机制相兼容;可升级性;压缩性能高
应用:
应用于客户需要与不同的数据源进行交互时;应用于将大量运算复合分布在客户端;应用于将统一数据以不同的面貌展现给不同的用户;应用于网络代理对所取得的信息进行编辑、增减以适应个人用户的需要
XML与HTML的区别
HTML是一种格式化的语言,一个HTML文本可以看作一个格式化的程序,而一段符合XML语法规范的文本则是一段“纯”数据,它的结构由其它的称为DTD的文本来描述,而它的处理则可能是任何其它支持XML的容器或程序。与XML相比的另一个不同点是,XML是一种元标记语言。XML定义了一套元句法,与特定领域有关的标记语言都必须遵守。
XSL与CSS的区别
XML文档的解析的各种API接口的特征和选择原则
DOM,SAX,JDOM,JAXP
第8章 基于服务的体系结构。
SOA的定义,特征,用途(目的)
什么是SOA,SOA具有哪些特征?
SOA,是Service-Oriented Architecture的简写,是面向服务的体系结构的意思,对此,W3C,Service-architecture.com和Gartner给出了不同的定义,SOA是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。由于SOA考虑到了系统内的对象,所以虽然SOA是基于对象的,但是作为一个整体,它却不是面向对象的。
SOA的特征:(1)松散耦合;(2)粗粒度服务;(3)标准化接口。
用途(目的):
便于将业务系统能力分解为独立性高(或松散耦合),粗粒度的和可复用的服务; 便于对服务进行组装和编排以满足业务和流程的变化需求。
SOA的目标:
为方便构建数据服务,业务服务,展现层构件,使用户容易借助界面建模,流程引擎和规则引擎实现灵活的应用组装。
SOA的设计原则
明确定义的接口;自包含和模块化;粗粒度;松耦合;互操作性、兼容和策略声明
SOA的关键技术
发现服务层;描述服务层;消息格式层;编码格式层;传输协议层
SOA的实现方法
1.Web Service
什么是Web服务?Web服务具有哪些特点?
答:Web服务是使用标准技术在Internet上运行的商务流程,它可以使用标准的Internet协议,将功能纲领性的体现在Internet和Intranet上。特征:1、使用标准协议规范2、使用协议的规范性3、高度集成能力4、完好的封装性5、松散耦合
说明Web服务的体系结构模型?它的三个核心协议分别是什么?
Web服务是一种崭新的分布式计算模型,是Web上数据和信息集成的有效机制。
三个构成元素为:Serverice Broker、Service Provider、Service Requester
三个核心协议:简单对象访问协议SOAP;统一描述、发现和集成协议UDDI;Web服务描述语言WSDL
WEB服务作为Web服务体系结构的核心,简要说明Web服务的核心技术及其作用。
(1):底层传输层,主要负责消息的传输机制。
(2):服务通信协议层,服务通信协议层主要是以一种统一的方式描述并定义服务之间进行通信传输所需的技术标准。
(3):服务描述层,主要以一种统一的方式描述服务的接口和消息交换方式。
(4):服务层,主要功能是将遗留系统进行包装,并通过发布的WSDL接口描述被定位和调用。
(5):业务流程层,主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从服务的底层调用抽象出来。
(6):服务注册层,主要功能是使服务提供者能够通过WSDL发布服务定义,并支持服务请求者查找所需的服务信息。
2.服务注册表
3.企业服务总线
第9章 富互联网应用体系结构。
RIA的优点
1.RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。
RIA客户端开发技术类别
Macromedia Flash/Flex;AJAX;Laszlo;Avolon;Java SWT;XUL;Bindows;Oracle Forms
Javascript/Html5: 被认为是最有前途的RIA技术
Ajax开发模式
Ajax核心技术
Ajax开发过程
AJAX技术的核心是什么?AJAX是如何将多种已有的技术绑定在一起的?这些技术各自起到什么作用?
AJAX技术的核心是javascript调用XML的异步传输。借助于AJAX,可以在用户单击按钮时,使用JavaScript和DHTML立即更新用户界面,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和css来相应的更新用户界面,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信,Web站点看起来是即时响应的。
XML的高拓展性、高灵活性,使得其可以描述各种不同类的应用软件中的不同类型的数据,可以实现不同数据的集成。
XHTML结合了部分XML的强大功能和HTML的简单特性。
JavaScript主要用来传递用户界面上的数据到服务端并返回结果。
XMLHttpRequest用来响应通过HTTP传递的数据,一旦数据返回到客户端,就可以立刻使用DOM将数据显示在网页上。
DOM为XML文档的已解析版本定义了一组接口。
XSLT能够减少大量的用JavaScript编写的应用逻辑。
CSS提供了从内容中分离应用样式和设计的机制。
第11章 用户界面设计
OO分析模型 --> 设计模型
接口设计包含用户接口设计=用户界面设计
用户界面设计的黄金规则及其含义
用户操纵控制
减少用户的记忆负担
保持界面一致
用户操作控制
以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式。提供灵活的交互。
允许用户交互被中断和撤销。当技能级别增长时可以使交互流线化并允许定制交互。使用户与内部技术细节隔离开来。设计应允许用户与出现在屏幕上的对象直接交互。
减轻用户记忆负担
减少对短期记忆的要求。建立有意义的缺省。定义直观的快捷方式。界面的视觉布局应该基于真实世界的象征。以不断进展的方式揭示信息。
保持界面一致
允许用户将当前任务放入有意义的环境中。在应用系统家族内保持一致性。如果过去的交互模型已经建立起了用户期望除非有不得已的理由,否则不要改变它。
界面分析从哪些方面着手
WebApp 界面设计
有效的WebApp 界面
WebApp界面设计原则
第12章 基于体系结构的软件开发
软件设计里的模式的层次
设计模式 – 定义,作用,分类
什么是设计模式?它与风格、框架有什么区别与联系?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。对通用设计问题的重复解决方案。
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。软件框架是整个或部分系统的可重用设计;模式比框架更加抽象;框架是模式的特例化;设计模式被实现成为框架后,可以极大的减轻从设计到实现的鸿沟;利用了模式的框架比没有利用模式的框架更容易理解、更能被设计与实现重用;通常成熟的框架包含了多种设计模式;一个框架不仅可以具体实现一个模式,还可以具体的实现多个模式;设计模式与风格两者为近义词,通常情况下可以互相通用;风格主要是指大的,宏观的设计。模式既可宏观,又可微观。
作用:
1、复用解决方案——通过复用已经公认的设计,我能够在解决问题时取得先发优势,而且避免重蹈前人覆辙。我可以从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案了。
2、确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识。设计模式在项目的分析和设计阶段提供了共同的基准点。
3、提高观察高度--模式还为我们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使我们从“过早处理细节”的桎梏中解放出来。
4、大多数设计模式还能使软件更容易修改和维护。其原因在于,它们都是久经考验的解决方案。所以,它们的结构都是经过长期发展形成的,比新构思的解决方案更善于应对变化。而且,这些模式所用代码往往更易于理解——从而使代码更易维护。
美丽的架构的原则和特性
GoF的23种经典设计模式
分类:
1.创建型模式
▪工厂方法模式▪ 抽象工厂模式▪ 建造者模式▪ 原型模式▪ 单例模式
2.结构型模式
▪ 适配器模式▪ 桥接模式▪ 组合模式▪ 装饰模式▪外观模式▪ 享元模式▪ 代理模式
3.行为型模式
▪ 职责链模式▪ 命令模式▪ 解析器模式▪ 迭代器模式▪ 中介者模式▪ 备忘录模式▪ 观察者模式
▪ 状态模式▪ 策略模式▪ 模版方法模式▪ 访问者模式
工厂模式,抽象工厂模式的具体代码实现示例
MVC特点和Java实现示例
MVP
中间件技术
中间件的定义,优点,功能,分类,发展趋势
定义:
中间件是处于系统软件和应用软件之间的一类软件。
优点:
它使设计师集中设计与应用有关的部分,大大简化了设计和维护工作。
功能:
1.负责客户机与服务器之间的连接和通信,以及客户机与应用之间的高效率通信机制。
2.提供应用层不同服务之间的互操作机制没,以及应用层与数据库之间的连接和控制机制。
3.提供一个多层体系结构的应用开发和运行的平台,以及一个应用开发框架,支持模块化的应用开发。
4.屏蔽硬件、操作系统、网络和数据库的差异。
5.提供应用的负载和高可用型、安全机制和管理功能,以及交易管理机制,保证交易的一致性。
6.提供一组通用的服务区执行不同的功能,避免重复的工作和是应用之间可以协作。
分类:
采用自底向上的方式来划分,可分为底层中间件、通用型中间件和集成性中间件三大层次。
主要的中间件:RPC,ORB,RMI,RMI-IIOP,MOM, 事务处理监控器
编程语言Scala有哪些特点?
编程语言Scala的特点:
1)测试容易。函数性语言(Lisp等)的优点。
2)代码量少。脚本语言(Ruby,Python等)的优点。
3)由编译器进行型检查(型宣言不要)。静的型定义语言(Java,C等)和动的型定义语言(Ruby,Lisp等)的优点。
4)可直观易懂地记述处理流程。面向过程语言(Cobol,C等)的优点。
5)可实现封装,继承,多态,面向对象开发。面向对象语言(Java,C#等)的优点。
1.关于软件开发,有哪些新趋势?
一、在全球金融危机布景下,开源软件将取得更多的商场时机
二:开源软件将主导移动运用软件的开展
三:将开源软件推行到云核算、SaaS(软件即效劳)
选择一个你熟悉的大型软件系统,分析其体系结构中用到的风格,以及表现出的特点(为什么要采用这种风格?带来了哪些优势?具有哪些不足?)。
对社交软件体系结构中用到的风格分析:采用了C/S风格,并且在一定程度上算为三层C/S风格
采用这种风格的原因:
表示层:社交信息的显示,并提供了更新和搜索等操作
功能层:具有搜索、在线聊天、离线留言、文件传输等等功能
数据层:有数据库服务器提供留言、相册、好友信息等数据
优点:使逻辑结构更为清晰,分类明确,给用户更好的体验
缺点:需要数据通信的支持,对网络的依赖很高,没有网络,许多功能将没有意义。
对于一个实际的系统,不能判断它是A风格、B风格还是C风格,因为没有足够的理由把它归为任何一种独立的体系结构风格。这种系统类型被称为异构结构,对应着它是分层系统,所以这个虚拟系统是分层系统。
这个系统包含的体系结构有:管道和过滤器风格、事件驱动风格、分层系统。
管道和过滤器风格
管道和过滤器风格的优点:
管道和过滤器风格的缺点:
事件驱动风格
以体系结构定义作为开发框架,支持基于构件的开发.该语言提供了建模,分析,仿真和代码生成的能力,但是没有将连接子显式地表示为一阶实体。
分层系统
分层系统的优点:支持基于抽象程度递增的系统设计;支持功能增强;支持重用。
分层系统的缺点:并不是每个系统都可以很容易的划分为分层的模式,甚至即使是层次化的,出于性能的考虑,也不得不吧一些低及或高级的功能综合起来;很难找到一个合适的、正确的层次抽象方法。
C2风格
系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;
所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;
构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。
基于消息总线的风格
消息总线是系统的连接件、负责消息的分派、传递和过滤以及处理结果的返回。消息是构件之间通信的唯一方式。由于构件通过总线进行连接,并不要求各个构件具有相同的地址空间或局限在一台机器上,因此该风格可以很好的刻画分布式开发系统,以及CORBA.DCOM和EJB规范的系统
traveler.com是一家在线旅游信息服务公司,其主要业务是为自助旅游者提供关于旅游线路及周边信息的服务。随着公司业务的不断发展,公司用户要求提供基于位置的增值旅游信息服务,即希望能够在给定位置(利用 GPS 全球定位系统获取)的情况下得到周边的地理位置、住宿、餐饮和交通等旅游相关信息。针对该需求,公司技术人员对现有系统的体系结构和运行模式进行了认真分析,决定采用Mashup技术集成来自其合作网站(设为A、B、C、D)的信息,满足用户的需求。具体实现方式是:
(1)利用A网站提供的地图信息,得到用户位置相关的周边地理信息。
(2)B网站根据用户的位置信息向其提供周边的住宿信息。
(3)C网站根据用户的位置信息向其提供周边的餐饮信息。
(4)D网站根据用户的位置信息向其提供周边的公交线路等信息。
问题1:
(2)对用户请求的服务作出相应的处理。(3)Traveler网站向A网站请求返回用户所处位置周边的地图信息。(5)Traveler网站向B网站请求返回用户所处位置周边的住宿信息。
(7)对网站提供的信息作出响应的处理。
问题2:
聚合的是服务时,则通过调用API来获取各个源的功能,Mashup最常用的API类型一般有两种,分别是REST和SOAP;如果聚合的是数据,则使用RSS来获取数据。
问题3:
客户端的用户界面能表现和应对更多更复杂的数据模式,这样才能处理客户端的运算以及异步发送、接收数据。当页面在服务器上创建完成并交付给HTML后,客户端的程序为用户提供比与服务器交互更良好的感受。为了达到高度复杂的数据模式,客户端允许用户构建一个高响应、交互式的应用程序。可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。
一方认为应采用微软.net平台,一方认为应采用Java企业版平台
给出两个平台的优势和共有的特点
(1)、.Net平台:易于部署和设置、多程序设计语言支持、针对特定平台的优化支持
Java企业版平台:良好跨平台可移植性支持、丰富的多厂商外部支持、良好的源代码以外的可定制性的支持
共同特点:良好的Web多层应用开发支持、良好的O/R(对象/关系)映射支持、良好的Web服务支持
J2EE更适合大型企业,大企业钟情J2EE
.NET更适合中小型企业,实施速度快,维护容易,中小企业则看好.Net
J2EE平台更稳定
.NET平台更适合与微软系统的软件结合
支持J2EE平台的服务器更好也更贵
支持.NET平台的服务器占据低端市场,价格适中
J2EE平台适合大数据量并发处理的系统
.NET平台适合与微软应用软件(例如Office、Project、Exchange等)结合紧密的系统
(2)、MVC模式中各组间应采用何种构件实现
在基于EJB的重量级框架中,实现的构件分别为:
模型(Model):由EJB构件实现
视图(View):由JSP构件实现
控制器(Controller):由Servlet构件实现
在基于Struts等的轻量级框架中,实现的构件分别为:
模型(Model):由Java Bean构件实现
视图(View):由JSP构件实现
控制器(Controller):由Servlet构件实现
(3)、MVP模式与MVC模式的主要区别为:
① 在组件耦合度方面:在MVP模式中,视图并不直接使用模型,它们之间的通信通过Presenter进行,从而实现了视图与模型的分离,而在MVC模式中,视图直接与模型交互。
② 在组件分工方面:在MVP模式中,视图需要处理鼠标及键盘等触发的界面事件,而在MVC模式中这通常是由控制器完成的工作;在MVP模式中,系统核心业务逻辑组织集中在Presenter中,而在MVC模式中,相应的控制器通常只完成事件的分发。
③ 在开发工程化支持方面:MVP模式可更好地支持单元测试,而在MVC模式中,由于模型与视图绑定,因此难以实施相应的单元测试;在MVP模式中,Presenter基于约定接口与视图和模型交互,可更好地支持组件的重用。
(4)、事务的基本特征包括:
原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据的完整性限制没有被破坏。
隔离性:两个事务的执行是互不干扰的,两个事务时间不会互相影响。
持久性:在事务完成以后,该事务对数据所作的更改便持久地保存在数据库之中,并且是完全的。
EJB规范支持的两种事务控制方法为:
容器维护的事务(Container Managed Transaction,CMT):由EJB容器根据部署描述符或EJB构件注释中指定的事务属性自动控制事务的边界,容器维护的事务是方法级的,即默认将一个方法当作一个事务执行,当方法执行的过程中发生系统级异常,容器会自动将事务回滚,从而将方法前面执行的结果恢复。
Bean维护的事务(Bean Managed Transaction,BMT):由程序员在EJB的源代码中控制事务执行的边界,事务的边界通过Java事务接口(Java Transaction API,JTA)进行控制,Bean维护的事务可以跨越方法的边界。
1.什么是软件重用,软件重用的层次可以分为哪几个级别?
答:软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件重用的层次按重用的粒度大小可分为程序代码重用,测试用例重用,设计文档重用,设计过程重用,需求分析文档重用及领域知识重用。
2.软件体系结构模型可以分为哪几种,具体是如何划分的?
答:软件结构的核心模型由5种元素组成:构件、连接件、配置、端口和角色。其中,构件、连接件和配置是最基本的元素。
3.体系结构的设计和演化中实验原型阶段分为2个周期,分别对各周期简述。
答:第一周期没有具体的、明确的日期,第一周期结束会形成图形用户界面的初始设计和问题域模型两个版本。第二周期的任务是设计和建立一个下次软件体系结构,具有以下特征:足够灵活,能包括现有元素,也有包括新增功能;提供相当稳定的结构,在这个结构中,原型能在实验原型阶段进行演化;开发一个高效的开发的组织,允许开发人员并行地在原型基础上进行开发。
4.连接件:是用来建立构件间的交互以及支配这些交互规则的体系结构构造模块。
5.体系结构配置:体系结构配置或拓扑是描述体系结构的构件与连接件的连接图。体系结构配置提供信息来确定构件是否正确连接、接口是否分配、连接件构成的通信是否正确,并说明实现要求行为的组合含义。
6.软件体系结构的动态性:指软件系统在运行时刻的体系结构变动。
7.Web服务栈:Web服务栈是一种全新的体系结构,整个Web服务的技术系列被称为Web服务栈。
8.SOAP:简单对象访问协议,SOAP是一个基于XML的,在松散分布式环境中交换结构化信息的轻量级协议,它为在一个松散的、分布式环境中使用XML交换结构化的和类型化的信息提供了一种简单的机制。
9.WSDL标准:是一种XML格式,用来实现Web服务栈中的描述层,将网络服务描述为能够进行消息交换的通信端点集合。
10.可修改性:是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。可修改性包括:1可维护性,2可扩展性,3结构重组,4可移植性
11.核心资源:是领域工程所有结果的集合,是产品线中产品构造的基础。
12.软件产品线:软件产品线就是在一个公共的软件资源集合基础上建立起来的共享同一个特性集合的系统集合。
13.SEI模型:SEI将产品线的基本活动分为三部分,分别是核心资源开发,产品开发和管理。
14.产品线体系结构:产品线体系结构是一个软件体系结构和一组在一族产品中可重用的构件,为增加软件重要、为企业降低软件开发和维护的成本提供了一个重要的途径。
15.体系结构的生命周期模型分为哪几个阶段?
答:1、需求分析阶段 2、建立软件体系结构阶段 3、设计阶段 4、实现阶段
16.请简述软件体系结构的生命周期。
答:以自然语言进行软件结构的非形式化描述,接着运用合适的形式化数学理论模型对上一阶段的非形式化描述进行规范定义,从而得到软件形式结构的形式化规范描述。对设计好的软件体系结构进行验证和求精,直到不需要进行求精验证时,转入软件体系结构的实施。在此阶段将软件结构实施于系统设计中,并将其结构的构件和连接件有机组织在一起。判断软件体系结构是否需要扩展,演化。需要从则重复以上步骤,否则对该体系结构进行评价、度量,转入终结阶段。
17.动态体系结构特征有哪些?
答:1、可构造性动态特征2、适应性动态特征3、智能型动态特征
18.请简述基于构件的动态体系结构模型是如何支持运行系统更新的?
答:1、检测更新的范围 2、更新准备工作 3、执行更新 4、存储更新
19.软件体系结构评估的主要方式有哪些?
答:1.基于调查问卷或检查表的评估方式:调查问卷是一系列可以应用到各种体系结构评估的相关问题,这些问题可能涉及体系结构对设计决策,有些问题涉及体系结构的文档,有的问题针对体系结构描述本身细节问题等。检查表中也包含一系列比调查问卷更细节和具体的问题,它们更趋向于考察某些关心的质量属性。这一评估方法比较灵活自由,可评估多种质量属性,也可以在软件体系结构设计的多个阶段进行。2.基于场景的评估方式:场景是一系列有序使用或修改系统的步骤。基于场景的方式由SEI首先提出并应用在体系结构权衡分析方法和软件体系结构分析方法中,这种软件体系评估方式分析软件体系结构对场景也就是对系统对使用或修改活动的支持程度,从而判断该体系结构对这一场景所代表对质量需求对满足程度。3.基于度量的评估方式:度量是指为软件产品对某一属性所赋予对数值。此评估技术涉及3个基本活动:首先需要建立属性和质量之间的映射关系,然后从软件体系结构文档中获取度量信息,最后根据映射原则分析推导出系统对某些质量属性。
20.简述双生命周期中的领域工程阶段的主要任务及内容。
答:(1)领域分析。利用现有的系统设计、体系结构和需求建立领域模型。(2)领域设计。用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构。(3)领域实现。基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。
21.软件产品线的过程模型有哪些?
答:1、双周期模型 2、SEI模型 3、三生命周期模型
22.请简述并画出“4+1”视图模型
答:“4+1”视图模型即从5个不同的视角(逻辑视图,进程视图,物理视图,开发视图和场景视图)来描述软件体系结构。每个视图之关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务;开发视图也称模块视图,主要侧重于软件模块的组织和管理;进程视图侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性;物理视图主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等;场景可以看做是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。