软件体系结构作业完整版.docx
《软件体系结构作业完整版.docx》由会员分享,可在线阅读,更多相关《软件体系结构作业完整版.docx(17页珍藏版)》请在冰豆网上搜索。
软件体系结构作业完整版
软件体系结构作业(完整版)
第一章:
1.根据自己的经验,谈谈对软件危机的看法。
软件危机是指软件生产方式无法满足迅速增长的计算机需求,开发和维护过程出现的一系列问题。
以下几个原因导致:
(1)软件自身特点
(2)开发人员的弱点
(3)用户需求不明
(4)缺乏正确理论指导
(5)开发规模越来越大
(6)开发复杂度越来越高
可以通过软件生命周期的模型和软件工具的使用来缓解危机,通过程序自动化和软件工业化生产的方法实现软件标准化的目标,进一步缓解软件危机带来的影响。
软件危机有利有弊,除了带来许多麻烦,也给我们带来许多挑战,克服危机的过程,我们在技术上和创新上都有了一个提升,也算是间接为软件产业的发展做了贡献。
2.什么是软件重用,软件重用的层次可以分为哪几个级别?
软件重用:
是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。
可以分为三个层次:
(1)代码重用
(2)设计结果重用(3)分析结果重用
3.什么是可重用构件?
相对于普通的软件产品,对可重用构件有何特殊要求?
可充用构件表示软件重用过程中,可重用的软件构件元素。
可重用构件的特殊要求:
(1)可重用构件应该具有功能上的独立性与完整性;
(2)可重用构件应该具有较高的通用性;
(3)可重用构件应该具有较高的灵活;
(4)可重用构件应该具有严格的质量保证;
(5)可重用构件应该具有较高的标准化程。
4.基于构件的软件开发的优势是什么?
基于构件的软件开发面临哪些挑战和困难?
优势:
基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用
困难和挑战:
没有可依据的参考,可用资源和环境缺乏,开发难度高,而各方面需求增长速度与日剧增,更新和升级的跟进是一个不小的挑战.此外,在同一系统采用多个开发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题
挑战和困难:
(1)在同一系统采用多个开发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题;
(2)采用随处可以购买到的构件可能会使开发出来的软件产品丧失技术上的独创性和市场上的竞争力;
(3)第三方的构件开发商可能歇业,这会使购买的构件失去维护服务。
这些都是在购买第三方构件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。
5.简述3种应用最为广泛的构件技术规范COM、CORBA和EJB的各自特点。
CORBA的特点:
(1)实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置。
(2)应用程序间的统一接口。
(3)采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。
(4)分层的设计原则和实现方式。
COM的特点:
(1)语言无关性。
(2)可重用性。
EJB的特点:
(1)可移植性。
(2)平台独立性。
(3)简化了分布式对象的开发、部署和访问。
6.就项目管理方面而言,软件重用项目与非重用项目有哪些不同之处。
使用软件重用技术可减少重复工作,提高软件生产率, 缩短开发周期。
同时,由于软构建大多经过严格的质量认证,因此有助于改善软件质量,大量使用构建,软件的灵活性和标准化程度可得到提高。
7.实际参与/组织一个软件重用项目的开发,然后总结你是如何组织该项目的开发的。
针对之前的一个软件重用项目的开发过程,将该项目的的软部件进行整合,整理成软部件库,对不要重用的部分进行修剪同时选取需要的软部件。
根据以上步骤,然后结合当前开发的项目,进行软件重用。
8.软件体系结构的研究范畴有哪些?
举例加以说明?
研究范畴:
非形式化的框图,形式化建模符号、体系结构说明的分析与开发工具,体系结构再工程。
其中典型的例子是美国卡耐基梅隆大学的RobertJ.A11en于l997年提出的Wright系统
9.根据软件体系结构的定义,你认为软件体系结构的模型应该由哪些部分组成?
构件(component):
可以是一组代码,如程序的模块也可以是一个独立的程序(如数据库的SQL服务器);
连接件(connector):
是关系的抽象,用以表示构件之间的相互作用。
如过程调用、管道、远程过程调用等;
限制(constrain):
用于对构件和连接件的语义说明。
10.在软件体系结构的研究和应用中,你认为还有哪些不足之处?
(1)缺乏同意的软件体系结构的概念,导致体系结构的研究范畴模糊。
(2)ADL繁多,缺乏同意的ADL的支持。
(3)软件体系结构研究缺乏统一的理论模型支持。
(4)在体系结构描述方便,尽管出现了多种标准规范或建议标准,但仍很难操作。
(5)有关软件体系结构性质的研究尚不充分,不能明确给出一个良体系结构的属性或判定标准,没有给出良体系结构的设计指导原则,因而对于软件开发实践缺乏有力的促进作用。
(6)缺乏有效的支持环境软件体系结构理论研究与环境支持不同步,缺乏有效的体系结构分析、设计、方针和验证工具支持,导致体系结构应用上的困难。
(7)缺乏有效的体系结构复用方案。
(8)体系结构发现方法研究相对欠缺。
第二章:
1.软件体系结构模型是软件体系结构的表现形式,软件体系结构模型可以分为哪几种,具体是如何划分的?
(1)结构模型
这是一个最直观、最普遍的建模方法。
这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。
研究结构模型的核心是体系结构描述语言。
(2)框架模型
框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。
框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
(3)动态模型
动态模型是对结构或框架模型的补充,研究系统的"大颗粒"的行为性质。
例如,描述系统的重新配置或演化。
动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。
这类系统常是激励型的。
(4)过程模型
过程模型研究构造系统的步骤和过程。
因而结构是遵循某些过程脚本的结果。
(5)功能模型
该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
它可以看作是一种特殊的框架模型。
2.选择一个规模合适的系统,为其建立“4+1”模型。
3.引入了软件体系结构以后,传统软件过程发生了哪些变化?
这种变化有什么好处?
软件体系结构的引入使软件设计开发更加具体和形象,它的模型更使得软件过程更加方便和多样化。
其好处在于:
包括程序员在内的绝大多数系统的利益相关人员都借助软件体系结构来进行彼此理解、协商、达成共识或者相互沟通的基础,软件体系机构的模型可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用,在很多方面使得软件开发更加人性化。
4.软件体系结构的生命周期模型与软件生命周期模型有什么关系?
软件体系结构是贯穿于软件研发的整个生命周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系,软件体系结构的生命周期模型为软件生命周期模型提供了很好的结构依据和参考,也为其构建了很好的开发方式。
第三章软件体系结构风格
1、层次系统结构和基于消息的层次系统结构有什么区别?
层次结构将系统进行分级组织,其组织思想是:
在层次结构中,每一层向上层提供服务,并作为客户向下层请求服务。
分层系统的优点:
支持基于抽象程度递增的系统设计;支持功能增强;支持重用。
分层系统的缺点:
并不是每个系统都可以很容易的划分为分层的模式,甚至即使是层次化的,出于性能的考虑,也不得不吧一些低及或高级的功能综合起来;很难找到一个合适的、正确的层次抽象方法。
消息总线是系统的连接件、负责消息的分派、传递和过滤以及处理结果的返回。
消息是构件之间通信的唯一方式。
由于构件通过总线进行连接,并不要求各个构件具有相同的地址空间或局限在一台机器上,因此该风格可以很好的刻画分布式开发系统,以及CORBA.DCOM和EJB规范的系统。
2、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。
二层C/S体系结构将应用一分为二,服务器负责数据管理,客户机完成与用户的交互任务。
优点
(1)C/S体系结构具有强大的数据操作的事务处理能力,模型思想简单,易于人们理解和接受。
(2)对软硬件的变化有极大的适应性和灵活性,易于对系统进行扩充和缩小。
(3)系统中的功能构建充分隔离,节约大量费用。
缺点:
(1)开发成本较高。
(2)客户端程序设计复杂(3)信息内容和形式单一(4)用户界面风格不一,使用繁杂不易推广。
(5)软件移植困难(6)软件维护和升级困难(7)新技术不能轻易应用。
三层CS在上面的基础上进行了改造,并增加了一个服务器,其优点:
(1)允许合理的划分三层结构的功能,能提高系统和软件的可维护性和可扩展性。
(2)具有良好的可升级性和开放性。
(3)应用的各层可以并行开发,可以选择各自最适合的开发语言。
(4)为严格的安全管理奠定了坚实的基础。
B/S风格就是上述三层应用结构的一种实现方式,其具体结构为:
浏览器/Web服务器/数据库服务器。
优点
(1)基于B/S体系结构的软件,系统安装,修改和维护全在服务器端解决。
(2)提供了异种机,异种网,异种应用服务的联机,联网,同意服务的最现实的开放性基础。
缺点
(1)缺乏对动态页面的支持能力,没有集成有效的数据库处理能力。
(2)在数据查询等响应速度上,要远远低于C/S体系结构。
(3)数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用。
3、组织或参与一个采用B/S和C/S混合体系结构的软件项目的开发,总结开发经验。
首先,开发者根据一定的原则,将系统的所有子功能分类,决定哪些子功能适合采用C/S,哪些适合采用B/S。
适合采用C/S的子功能应具备以下特点:
1安全性要求高;2要求具有较强的交互性;3使用范围小,地点固定;4要求处理大量数据。
例如,仓库管理系统中的入库单、领料单的输入功能,财务系统中的凭证输入功能等等。
而适合采用B/S的子功能应具备以下特点:
1使用范围广,地点灵活;2功能变动频繁;3安全性、交互性要求不同。
例如:
企业内部信息发布功能,意见箱输入功能,公司财务分析表的查询功能,总裁决策支持系统中的查询功能等等。
相对于单独采用C/S或B/S,这种方案的优点在于:
1保证敏感数据的安全性,特别是对数据库的修改和新增记录加强了控制;2经济有效地利用企业内部计算机的资源,简化了一部分可以简化的客户端;3既保证了复杂功能的交互性,又保证了一般功能的易用与统一;4系统维护简便,布局合理;5网络效率最高。
如果系统开发者在系统设计阶段决定采用这种C/S与B/S相结合的模式,那么在系统开发生命周期的如下各个阶段相对这种新模式都应有所响应。
在系统设计阶段主要考虑的是MIS系统平台选择问题。
在详细设计阶段,系统开发者需要根据企业自身的业务特点,以及一定的选择原则,来决定各个子功能采用哪一种模式并在系统说明书上分别注明。
在编码设计阶段,系统开发者需要针对采用不同模式的子功能,选用不同的编码方式(例如:
C/S可以采用VB编程环境,而B/S采用ASP方法),然后编译生成不同的客户应用及Web服务程序。
在安装调试阶段,其特点主要体现在系统的物理结构上,即特定的客户应用程序将被安装在特定的使用者的客户端上,Web服务程序需要被安装在Web服务器上,而每个客户端上都将被安装上浏览器,同时,客户应用的使用者必须接受一定的培训。
在软件维护阶段,针对不同模式的子功能应采取不同维护方式。
4、组织或参与一个采用三层体系结构的软件项目的开发,总结开发经验。
三层体系结构包括:
用户界面表示层(USL)、业务逻辑层(BLL)、数据访问层(DAL)。
各层的作用:
1:
数据访问层:
主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。
2:
业务逻辑层:
主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:
表示层:
主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:
aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
三层是指逻辑上的三层,即使这三个层放置到一台机器上。
三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。
在保证客户端功能的前提下,为用户提供一个简洁的界面。
这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。
“中间业务层”的用途有很多,例如:
验证用户输入数据、缓存从数据库中读取的数据等等....但是,“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来,形成一种业务规则。
要保证“数据访问层”的中的函数功能的原子性!
即最小性和不可再分。
“数据访问层”只管负责存储或读取数据就可以了。
我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级。
它未必会提升性能,因为当子程序模块未执行结束时,主程序模块只能处于等待状态。
这说明将应用程序划分层次,会带来其执行速度上的一些损失。
但从团队开发效率角度上来讲却可以感受到大不相同的效果。
需要说明一下,三层结构不是.NET的专利,也不是专门用在数据库上的技术。
它是一种更加普适的架构设计理念。
此种架构要在数据库设计上注意表之间的关系,尽力满足主与子的关系。
在功能上对用户要有一定的限制,不要表现在对于子表的删除操作一定要慎重,以免造成主表与子表的数据在逻辑上出现的主表的外键在子表中没有相对应的值。
“三层结构”开发模式,入门难度够高,难于理解和学习。
这是对于初学程序设计的人来说的。
以这种模式开发出来的软件,代码量通常要稍稍多一些。
这往往会令初学者淹没在茫茫的代码之中。
望之生畏,对其产生反感,也是可以理解的。
5、在软件开发中,采用异构结构有什么好处,其负面影响有哪些?
1).结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。
2).软件包,框架,通信以及其他一些体系机构上的问题,目前存在者多中标准。
即使再某一段时间内某一标准占据着统治地位,但变动最终是绝对的。
3).工作中,我们总会遇到一些遗留下的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。
然而在很多场合,将技术与经济综合进行考虑时,总是决定不重写它们。
4).在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。
负面影响:
大多数应用程序只使用10%的代码实现系统的公开功能,剩下90%的代码完成系统管理功能:
输入和输出,用户界面,文本编辑,基本图表,标准对话框,通信,数据确认和旁听追踪,特定领域的基本定义等。
6、选择一个你熟悉的大型软件系统,分析其体系结构中用到的风格,以及表现出的特点(为什么要采用这种风格?
带来了哪些优势?
具有哪些不足?
)。
对社交软件的分析:
采用了C/S风格,并且在一定程度上算为三层C/S风格
表示层:
社交信息的显示,并提供了更新和搜索等操作
功能层:
具有搜索、在线聊天、离线留言、文件传输等等功能
数据层:
有数据库服务器提供留言、相册、好友信息等数据
优点:
使逻辑结构更为清晰,分类明确,给用户更好的体验
缺点:
需要数据通信的支持,对网络的依赖很高,没有网络,许多功能将没有意义。
7、黑板风格和仓库风格之间的区别是什么?
仓库风格的体系结构由两个构件组成:
一个是中央数据结构,用于说明当前数据的状态;一个是一组对中央数据进行操作的独立构件。
对于系统中数据和状态的控制方法有两种:
一个是传统的方法——由输人事务选择进行何种处理,并把执行结果作为当前状态存储到中央数据结构中,这时,仓库是一个传统的数据库体系结构;另一种方法——由中央数据结构的当前状态决定进行何种处理。
这时,仓库是一个黑板体系结构,即黑板体系结构是仓库体系结构的特殊化。
8、研究项目:
著名的体系结构风格有多少种?
利用图书馆和Internet做一些调查,然后给出一个数量。
最为常用的软件体系结构风格,总共有五种,分别是:
数据流风格【DataFlowStyle】
调用/返回风格的体系结构【Call-and-ReturnStyle】
虚拟机风格的体系结构【VirtualMachineStyle】
独立组件风格的体系结构【IndependentComponentsStyle】
仓库风格的体系结构【DataCentered(Repositories)Style】
第四章软件体系结构描述
1、体系结构描述有哪些方法?
有哪些标准和规范?
传统软件体系结构描述方法:
1、图形表达工具
对于软件体系结构的描述和表达,一种简洁易懂且使用广泛的方法是采用由矩形框和有向线段组合而成的图形表达工具。
在这种方法中,矩形框代表抽象构件,框内标注的文字为抽象构件的名称,有向线段代表辅助各构件进行通讯、控制或关联的连接件。
目前,这种图形表达工具在软件设计中占据着主导地位。
尽管由于在术语和表达语义上存在着一些不规范和不精确,而使得以矩形框与线段为基础的传统图形表达方法在不同系统和不同文档之间有着许多不一致甚至矛盾,但该方法仍然以其简洁易用的特点在实际的设计和开发工作中被广泛使用,并为工作人员传递了大量重要的体系结构思想。
为了克服传统图形表达方法中所缺乏的语义特征,有关研究人员试图通过增加含有语义的图元素的方式来开发图文法理论。
2、模块内连接语言
软件体系结构的第二种描述和表达方法是采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言MIL(ModuleInterconnectionLanguage)。
由于程序设计语言和模块内连接语言具有严格的语义基础,因此他们能支持对较大的软件单元进行描述,诸如定义/使用和扇入/扇出等操作。
MIL方式对模块化的程序设计和分段编译等程序设计与开发技术确实发挥了很大的作用。
但是由于这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了他们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力
2、体系结构描述语言与程序设计语言有什么区别?
ADL与其他的语言比较具有以下能力:
(1)构造能力:
ADL能够使用较小的独立体系结构元素来建造大型软件系统;
(2)抽象能力:
ADL使得软件体系结构中的构件和连接件描述可以只关注他们的抽象特性,而不管其具体的实现细节;(3)重用能力:
ADL使得组成软件系统的构件,连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;(4)组合能力:
ADL使得其描述的每一系统元素都有其自己的布局结构,这种描述布局结构的特点使得ADL支持软件系统的动态变化组合;(5)异构能力:
ADl允许多个不同的体系结构描述关联存在;(6)分析和推理能力:
ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。
ADL与需求语言的区别在于后者描述的是问题空间,而前者描述的是接空间。
ADL与建模语言的区别在于后者对整体行为的关注要大于部分的关注,而ADl集中在构建的表示上。
3、典型的软件体系结构描述语言包括哪些?
它们分别需要描述体系结构中哪些基本元素?
主要有五种ADL:
UniCon,Darwin,C2SADL,Acme和xADL.
Rapide:
一种事件驱动的ADL,它以体系结构定义作为开发框架,支持基于构件的开发.该语言提供了建模,分析,仿真和代码生成的能力,但是没有将连接子显式地表示为一阶实体.
Wright:
其主要特点是将CSP 用于软件体系结构的描述,从而完成对体系结构描述的某些形式化推理(包括相容性检查和死锁检查等).但它仅仅是一个设计规约语言,只能用于描述,无法支持系统生成,同时CSP 的使用也是比较困难的事情.
Acme:
支持ADL 之间的映射及工具集成的体系结构互交换语言.其目标是作为体系结构设计的一个共同的互交换格式,以便将现有的各种ADL 在这个框架下统一起来;而它本身也可以看作是一种ADL.
xArch:
一种基于XML 的ADL.它使用XML 定义了描述体系结构的核心元素,可以用来简单的描述软件体系结构,也可以作为设计其它ADL的基础,或者用作体系结构描述描述语言的互交换机制。
xADL2.0:
以xArch为基础的基于XML的ADL。
除了xArch的核心元素,xADL2.0还提供了对系统运行时刻和设计时刻的元素的建模支持,类似版本,选项和变量等更高级的配置管理观念,以及对产品家族的体系结构的建模支持.此外,xADL2.0还利用XML的可扩展性简化了新的ADL的设计及其相应工具的开发过程。
4、对一个你熟悉的软件系统,如果要使用ADL对其体系结构进行描述,你会选择哪一种?
为什么?
这样选择的优点和缺点各有哪些?
我会选择Acme。
下面介绍原因:
Acme是CMU的Acme项目的产物.该项目始于1995年,目的是为了研究一个公共的语言,使之能在不同的体系结构设计工具之间作为体系结构描述信息互换的桥梁.目前Acme及其开发工具包AcmeLib提供了一个通用的,可扩展的基础框架用于描述,表示,生成以及分析系统的软件体系结构.而作为桥梁作用的Acme,由于必须具备大多数ADL共有的概念,因此它本身也是一个ADL,并且是一个相对而言比较简单的通用的ADL. Acme的建模元素和特点 Acme的主要特点表现为:
采用七个基本的体系结构设计元素作为体系结构的本体(architectural ontology),
采用灵活的标注机制支持使用外部语言定义的非结构化信息 ,使用类型机制对常见的可复用的软件体系结构俗语和风格进行抽象描述 使用开放的语义框架对体系结构描述进行推理 Acme的设计元素 Acme的设计元素 ,以下对Acme所采用的设计元素进行简要介绍.这七个设计元素是:
构件(components):
系统中的计算元素和数据存储.直观的说,就是线框图中的框.典型的构件有:
客户端,服务器,数据库,黑板,过滤器等.
连接子(connectors):
构件之间的交互.直观的说,就是线框图中的线.典型的连接子有:
过程调用,事件广播,客户和服务器之间的协议等.
系统(systems):
构件和连接子的配置.
端口(ports):
构件通过端口与外界发生交互.一个构件可以有多个不同类型的端口,每个端口都是一个接口的集合,例如一系列需要以特定顺序调用的过程.
角色(roles):
连接子通过角色与外界发生交互.角色定义了构件之间交互的参与者.
表示(representations):
构件或者连接子内部结构的描述.通过"表示"这个概念,系统的体系结构就具有了层次结构.同时,"表示"这个概念可以用于描述体系结构实体的多个视图(但是Acme本身并不处理视图之间的对应关系)。
映射(rep-maps):
将构件或者连接子的内部"表示"与外部接口进行映射. 简单的客户端-服务器系统
以下是一个简单的客户端-服务器系统的Acme描述:
Acme本质上是一些ADL的建模元素的"最大公约数",因此它能作为不同ADL及其支撑工具之间用于信息交换的语言.这是Acme的最大作用,当然这也使得它只能成为一个建模能力一般的ADL,例如Acme中就没有相应的机制用于对构件或者系统行为进行描述或者规约.相关研究者正在