什么是软件危机,软件危机的具体表现有哪些?
软件危机:落后的软件生产方式没法知足迅速增加的计算机软件需求,从而致使软件开发与维护过程当中出现一系列严重问题的现象。
软件危机的表现:
软件成本日益增加,开发进度难以控制,软件质量差,软件维护困难
产生软件危机的缘由,如何克服软件危机?
产生软件危机的缘由有用户需求不明确,缺少正确的理论指导,软件规模愈来愈大,软件复杂度愈来愈高。
人们面临的不光是技术问题,更重要的是管理问题。要提升软件开发效率,提升软件产品质量,必须采用工程化的开发方法与生产技术。在技术上,应该采用基于重用的软件生产技术;
在管理上,应该采用多维的工程管理模式。
构件:(components,也译为组件,部件):
是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程当中能够明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。是具备某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。
软件架构师的关注点:
关注的首先不是功能,而是品质关注点(非功能性需求) 。涉众关注的是那些品质,如性能,安全,可伸缩性,仍是可变性,可维护性,可用性等。理解的涉众的品质关注点后,考虑折中。分而治之,保持概念完整性
软件体系结构的定义
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述,这些元素的相互做用、指导元素集成的模式以及这些模式的约束组成。软件架构不只指定了系统的组织结构和拓扑结构,而且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件体系结构的意义
体系结构是风险承担者进行交流的手段,体系结构是早期设计决策的体现,它明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性,能够预测软件的质量,是推理和控制更改更简单,有助于按部就班的原型设计。同时,软件体系结构是可传递和可重用的模型。
软件体系结构的应用现状
目前,软件体系结构领域研究很是活跃,概括现有体系结构的研究活动,主要包括如下几个方面
1.软件体系结构描述语言2.体系结构构造与表示 3.体系结构分析、设计与验证4.体系结构发现、演化与重用5.基于体系结构的软件开发方法6.特定领域的体系结构框架7.软件体系结构支持工具8.软件产品线体系结构9.创建评价软件体系结构的方法
架构分析、设计与验证,发现、演化与重用
架构分析的内容可分为结构分析、功能分析和非功能分析。生成一个知足软件需求的架构的过程即为架构设计。
架构设计过程的本质在于将系统分解成相应的组成成分,并将这些成分从新组装成一个系统。 架构设计有两大类方法:过程驱动方法和问题列表驱动方法。
架构测试着重于仿真系统模型,解决架构层的主要问题。因为测试的抽象层次不一样,架构测试策略能够分为单元/子系统/集成/验收测试等阶段的测试策略。
架构发现 从既存系统中提取软件的架构,属逆向工程。
架构重用 属于设计重用,比代码重用更抽象。因为软件架构是系统的高层抽象,反映了系统的主要组成元素及其交互关系,于是较算法更稳定,更适合于重用。
软件架构演化是指因为系统需求、技术、环境、分布等因素的变化而致使软件架构的变更。软件系统在运行时的架构变化称为架构的动态性,而将架构的静态修改称为架构扩展。二者都是架构适应性和演化性的研究范畴。javascript
软件体系结构建模的种类
结构模型、框架模型、动态模型、过程模型和功能模型
什么是“4+1视图”,分别给出每一个视图的名称和主要关注点。
“4+1”的视图模型是Kruchten于1995年提出的用于描述软件体系结构的方式,主要用5个不一样的视图:逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。 每个视图只关心系统的一个侧面,5个视图结合在一块儿才能反映系统的软件体系结构的所有内容
软件体系结构的生命周期模型
软件体系结构的非形式化描述,软件体系结构的规范描述和分析,软件体系结构的求精及其验证,软件体系结构的实施,软件体系结构的演化和拓展,软件体系结构的提供、评价和度量,软件体系结构的终结
容器
容器是指一个在其内部能够执行构件或驻留数据的东西。它能够是从网络或应用服务器直到富客户端应用或数据库的任何东西。容器一般是可执行文件,但未必是各自独立的流程。
C4模型
在面向对象的系统中,一般系统由多个容器组成,容器由多个构件组成,构件由多个类组成css
软件架构风格的定义
诸风格的特征
◎数据流风格:批处理序列;管道/过滤器。
管道与过滤器风格的软件体系结构的特色
(1)使得软构件具备良好的隐蔽性和高内聚、低耦合的特色;(2)容许设计者将整个系统的输入/输出行为当作是多个过滤器的行为的简单合成;(3)支持软件重用。(4)系统维护和加强系统性能简单。(5)容许对一些如吞吐量、死锁等属性的分析;(6)支持并行执行。可是,这样的系统也存在着若干不利因素。
(1)一般致使进程成为批处理的结构。这是由于虽然过滤器可增量式地处理数据,但它们是独立的,因此设计者必须将每一个过滤器当作一个完整的从输入到输出的转换。
(2)不适合处理交互的应用。当须要增量地显示改变时,这个问题尤其严重。
(3)由于在数据传输上没有通用的标准,每一个过滤器都增长了解析和合成数据的工做,这样就致使了系统性能降低,并增长了编写过滤器的复杂性。
◎调用/返回风格:主程序/子程序;面向对象风格;层次结构。
面向对象的优势
能形象地表现现实世界的领域,重用性高,对应变化很强。 即易扩展, 维护性强
数据抽象和面向对象组织缺点
性能损失。 面向对象编程为了:重用性、 灵活性和扩展性等特性而做出的牺牲。测试比较麻烦,对总体系统设计要求高
◎独立构件风格:进程通信;事件系统。
基于事件的隐式调用优势:
为软件重用提供了强大的支持。 当须要将一个构件加入现存系统中时,只需将它注册到系统的事件中。为改进系统带来了方便。 当用一个构件代替另外一个构件时,不会影响到其它构件的接口。
基于事件的隐式调用缺点:
构件放弃了对系统计算的控制。数据交换的问题。 有时数据可被一个事件传递,但
有时系统必须依靠一个共享的仓库进行交互。 这时全局性能和资源管理便成了问题。
既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。
分层系统优势:
支持基于抽象程度递增的系统设计,使设计者能够把一个复杂系统按递增的步骤进行分解;
支持功能加强,由于每一层至多和相邻的上下层交互,所以功能的改变最多影响相邻的上下层;支持重用。 只要提供的服务接口定义不变,同一层的不一样实现能够交换使用。 这样,就能够定义一组标准的接口,而容许各类不一样的实现方法。
分层系统缺点:
并非每一个系统均可以很容易地划分为分层的模式,甚至即便一个系统的逻辑结构是层次化
的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;很难找到一个合适的、 正确的层次抽象方法。
◎虚拟机风格:解释器;基于规则的系统。
◎仓库风格:数据库系统;超文本系统;黑板系统。
请简要说明黑板风格的定义。
黑板结构是一个六至八层的层次结构,每一层都抽象了与之相邻的较低一层的信息。
知识源表明整个问题求解中的独立的子任务。每一个知识源被组织成一个条件部分和一个动做部分,条件部分规定何时知识源可用,动做部分负责处理相关的黑板元素并产生新的元素。控制构件做为黑板的监控程序和调度程序;一般将黑板知识源应用到黑板中各类元素具备优先次序,调度程序负责监控黑板和计算的优先次序。
◎C2风格
C2风格的特色
C2体系结构风格:能够归纳为经过链接件绑定在一块儿的按照一组规则动做的并行构件网络。组织规则有:一、系统中的构件和链接件都有一个顶部一个底部。二、构件的顶部应链接到某链接件的底部,构件的底部应链接到链接件的顶部,构件之间不能直接链接。三、一个链接件能够和任意数目的其余构件和链接件相连。四、当两个链接件直接相连时,必须由其中一个底部到另外一个的顶部。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 java
复习UML的各类图的含义,用途和画法
类图在UML中有何重要做用?
1.为开发人员提供这种模仿现实世界的表达方式。
2.让分析员使用客户所采用的术语和客户交流,促使客户说出所要解决的问题的重要细节。
RUP 4+1图
什么是体系结构描述语言?它与程序语言以及UML有哪些区别与联系?
ADL是一种形式化语言,在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:构件、链接件、体系结构配置。
跟其余语言的比较:构造能力:ADL可以使用较小的独立体系结构元素来建造大型软件系统;抽象能力:ADL使得软件体系结构中的构件和链接件描述能够只关注它们的抽象特性,而无论其具体的实现细节;重用能力:ADL使得组成软件系统的构件、链接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;组合能力:ADL使得其描述的每一系统元素都有其本身的局部结构,这种描述局部结构的特色使得ADL支持软件系统的动态变化组合;异构能力:ADL容许多个不一样的体系结构描述关联存在;分析和推理能力:ADL容许对其描述的体系结构进行多种不一样的性能和功能上的多种推理分析。程序员
XML的特色,做用,应用
特色:
简洁有效;易学易用;开放的国际化标准;高效且可扩充
做用:
使得搜索更加有意义;
开发灵活的Web应用软件;实现不一样数据的集成;使用于多种应用环境;客户端数据处理与计算;数据显示多样化;局部数据更新;与现有Web发布机制相兼容;可升级性;压缩性能高
应用:
应用于客户须要与不一样的数据源进行交互时;应用于将大量运算复合分布在客户端;应用于将统一数据以不一样的面貌展示给不一样的用户;应用于网络代理对所取得的信息进行编辑、增减以适应我的用户的须要
XML与HTML的区别
HTML是一种格式化的语言,一个HTML文本能够看做一个格式化的程序,而一段符合XML语法规范的文本则是一段“纯”数据,它的结构由其它的称为DTD的文原本描述,而它的处理则多是任何其它支持XML的容器或程序。与XML相比的另外一个不一样点是,XML是一种元标记语言。XML定义了一套元句法,与特定领域有关的标记语言都必须遵照。
XSL与CSS的区别
XML文档的解析的各类API接口的特征和选择原则
DOM,SAX,JDOM,JAXP 算法
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上。特征:一、使用标准协议规范二、使用协议的规范性三、高度集成能力四、无缺的封装性五、松散耦合数据库
说明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.企业服务总线
编程
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提供了从内容中分离应用样式和设计的机制。设计模式
OO分析模型 --> 设计模型
接口设计包含用户接口设计=用户界面设计
用户界面设计的黄金规则及其含义
用户操纵控制
减小用户的记忆负担
保持界面一致
用户操做控制
以不强迫用户进入没必要要的或不但愿的动做的方式来定义交互模式。提供灵活的交互。
容许用户交互被中断和撤销。当技能级别增加时可使交互流线化并容许定制交互。使用户与内部技术细节隔离开来。设计应容许用户与出如今屏幕上的对象直接交互。
减轻用户记忆负担
减小对短时间记忆的要求。创建有意义的缺省。定义直观的快捷方式。界面的视觉布局应该基于真实世界的象征。以不断进展的方式揭示信息。
保持界面一致
容许用户将当前任务放入有意义的环境中。在应用系统家族内保持一致性。若是过去的交互模型已经创建起了用户指望除非有不得已的理由,不然不要改变它。
界面分析从哪些方面着手
WebApp 界面设计
有效的WebApp 界面
WebApp界面设计原则浏览器
软件设计里的模式的层次
设计模式 – 定义,做用,分类
什么是设计模式?它与风格、框架有什么区别与联系?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。对通用设计问题的重复解决方案。
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。软件框架是整个或部分系统的可重用设计;模式比框架更加抽象;框架是模式的特例化;设计模式被实现成为框架后,能够极大的减轻从设计到实现的鸿沟;利用了模式的框架比没有利用模式的框架更容易理解、更能被设计与实现重用;一般成熟的框架包含了多种设计模式;一个框架不只能够具体实现一个模式,还能够具体的实现多个模式;设计模式与风格二者为近义词,一般状况下能够互相通用;风格主要是指大的,宏观的设计。模式既可宏观,又可微观。
做用:
一、复用解决方案——经过复用已经公认的设计,我可以在解决问题时取得先发优点,并且避免重蹈前人覆辙。我能够从学习他人的经验中获益,用不着为那些老是会重复出现的问题再次设计解决方案了。
二、确立通用术语——开发中的交流和协做都须要共同的词汇基础和对问题的共识。设计模式在项目的分析和设计阶段提供了共同的基准点。
三、提升观察高度--模式还为咱们提供了观察问题、设计过程和面向对象的更高层次的视角,这将使咱们从“过早处理细节”的桎梏中解放出来。
四、大多数设计模式还能使软件更容易修改和维护。其缘由在于,它们都是久经考验的解决方案。因此,它们的结构都是通过长期发展造成的,比新构思的解决方案更善于应对变化。并且,这些模式所用代码每每更易于理解——从而使代码更易维护。
美丽的架构的原则和特性
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.关于软件开发,有哪些新趋势?
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.体系结构的生命周期模型分为哪几个阶段? 答:一、需求分析阶段 二、创建软件体系结构阶段 三、设计阶段 四、实现阶段 16.请简述软件体系结构的生命周期。 答:以天然语言进行软件结构的非形式化描述,接着运用合适的形式化数学理论模型对上一阶段的非形式化描述进行规范定义,从而获得软件形式结构的形式化规范描述。对设计好的软件体系结构进行验证和求精,直到不须要进行求精验证时,转入软件体系结构的实施。在此阶段将软件结构实施于系统设计中,并将其结构的构件和链接件有机组织在一块儿。判断软件体系结构是否须要扩展,演化。须要从则重复以上步骤,不然对该体系结构进行评价、度量,转入终结阶段。 17.动态体系结构特征有哪些? 答:一、可构造性动态特征二、适应性动态特征三、智能型动态特征 18.请简述基于构件的动态体系结构模型是如何支持运行系统更新的? 答:一、检测更新的范围 二、更新准备工做 三、执行更新 四、存储更新 19.软件体系结构评估的主要方式有哪些? 答:1.基于调查问卷或检查表的评估方式:调查问卷是一系列能够应用到各类体系结构评估的相关问题,这些问题可能涉及体系结构对设计决策,有些问题涉及体系结构的文档,有的问题针对体系结构描述自己细节问题等。检查表中也包含一系列比调查问卷更细节和具体的问题,它们更趋向于考察某些关心的质量属性。这一评估方法比较灵活自由,可评估多种质量属性,也能够在软件体系结构设计的多个阶段进行。2.基于场景的评估方式:场景是一系列有序使用或修改系统的步骤。基于场景的方式由SEI首先提出并应用在体系结构权衡分析方法和软件体系结构分析方法中,这种软件体系评估方式分析软件体系结构对场景也就是对系统对使用或修改活动的支持程度,从而判断该体系结构对这一场景所表明对质量需求对知足程度。3.基于度量的评估方式:度量是指为软件产品对某一属性所赋予对数值。此评估技术涉及3个基本活动:首先须要创建属性和质量之间的映射关系,而后从软件体系结构文档中获取度量信息,最后根据映射原则分析推导出系统对某些质量属性。 20.简述双生命周期中的领域工程阶段的主要任务及内容。 答:(1)领域分析。利用现有的系统设计、体系结构和需求创建领域模型。(2)领域设计。用领域模型肯定领域/产品线的共性和可变性,为产品线设计体系结构。(3)领域实现。基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。 21.软件产品线的过程模型有哪些? 答:一、双周期模型 二、SEI模型 三、三生命周期模型 22.请简述并画出“4+1”视图模型 答:“4+1”视图模型即从5个不一样的视角(逻辑视图,进程视图,物理视图,开发视图和场景视图)来描述软件体系结构。每一个视图之关心系统的一个侧面,5个视图结合在一块儿才能反映系统的软件体系结构的所有内容。 逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务;开发视图也称模块视图,主要侧重于软件模块的组织和管理;进程视图侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性;物理视图主要考虑如何把软件映射到硬件上,它一般要考虑到系统性能、规模、可靠性等;场景能够看作是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。