当前位置:文档之家› 软件体系结构

软件体系结构

软件体系结构课程报告一、简答题: (每题10分,共40分)1.简述软件体系结构建模中“4+1”视图模型,并举一示例模型。

答:4+1视图模型从5个不同视角(逻辑视图,进程视图,物理视图,开发视图和场景视图)来描述软件体系结构.每一个视图只关心系统的侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容.最终用户:功能需求编程人员:软件管理系统集成人员:性能可扩充性,吞吐量等. 系统工程人员:系统拓扑,安装通信等. 举例:开发视图.开发视图也称为模块视图,主要侧重于软件模块的组织和管理.软件可通过程序库或子系统进行组织,这样,对于一个软件系统,就可以由不同的人进行开发.开发视图要考虑软件内部的需求,如软件开发的容易性,软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性.开发视图通过系统输入输出关系的模型图和子系统图来描述.层次结构风格.2. 简述层次体系结构风格及其特点,并举一示例。

答:层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户.连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束.这种风格支持基于可增加抽象层的设计.这样,允许将一个复杂问题分解成一个增量步骤序列的实现.由于每一层最多只影响两层,同时只要给相邻层提供相同接口,允许每一层用不同的方法实现,同样为软件重用提供了强大的支持.分层同用协议.(1).支持基于抽象程度递增的系统设计,使设计师可以把一个复杂系统按递增的步骤进行分解.(2).支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层.(3)支持重用,只要提供的服务接口定义不变,同一层的不同实现可以交换使用. 不足之处:(1).并不是每个系统都可以很容易的划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来.(2)很难找到一个合适的,正确的层次抽象方法.3.简述基于体系结构的软件开发过程并说明在实际软件开发活动中如何实施。

(1).体系结构需求:功能,行为,性能,设计约束等方面的期望(1.1)需求获取:软件功能,使得用户能完成他们的任务,从而能满足业务上的功能需求.(1.2)标识结构:生成类图,对类进行分组把类大包成构件.(1.3)需求评审:小组,仔细的审查.(2).体系结构设计:(2.1)提出软件体系结构模型.(2.2)把已标识的构件映射到软件体系结构中.(2.3)分析构件之间的相互作用.(2.4)产生软件体系结构(2.5)设计评审.(3).体系结构文档化:主要输出结果是体系结构需求规格说明和测试体系结构需求的质量设计说明书这两个文档.(4).体系结构复审:目的是标识潜在的风险,及早发现体系结构设计中的缺陷和错误.包括体系结构能否满足需求,质量需求是否在设计中得到体现,层次是否清晰,构件的划分是否合理,文档表达是否明确,构件的设计是否满足功能与性能的要求等.(5)体系结构实现:用实体显示出一个软件体系结构,既要符合体系结构所描述的结构性设计决策,分割成规定的构件,按规定方式相互交互.(6).体系结构演化:是使用系统演化步骤去修改应用,以满足新的需求.(6.1)需求变动归类.(6.2)制定体系结构演化计划(6.3)修改,增加或删除构件(6.4)更新构件相互作用6.5)构件组装与测试6.6)技术评审(6.7)产生演化后的体系结构4. 简述软件体系结构ATAM评估过程,并设计一个软件项目的评估日程安排。

答:4.1。

描述ATAM方法:1*ATAM方法步骤简介。

2*获取和分析技术。

3*评估结果。

4.2。

描述业务动机:1*系统最重要的功能需求。

2*技术,管理,经济或政治方面的约束条件。

3*业务目标和环境。

4*主要的风险承担者,5*体系结构驱动因素。

4.3。

描述体系结构:1*技术约束。

2*要与本系统交互的其他系统。

3*用以满足质量属性要求的体系结构方法。

4.4。

确定体系结构方法:由设计师确定,有分析小组捕获,但不进行分析。

4.5。

生产质量属性效用树:确定系统最重要的质量属性目标,并对这些质量目标设置优先级和细化。

4.6。

分析体系结构方法:1*理解体系结构方法。

2*找出该方法的缺陷,3*找出该方法的敏感点。

4*发现与其它方法的交互和权衡点。

把最高优先级的质量属性需求与实现他们的体系结构方法关联起来。

4.7。

讨论和分级场景:1*集体讨论用例场景(描述风险承担者期望使用信用的方式)和改变场景(描述风险承担者所期望的系统在将来变更的方式)2*成长场景描述的是体系结构在中短期的改变,包括期望的修改,性能或可用性的变更,移植性,与其他软件系统的集成等。

3*一旦投票结果确定,所有的场景就可设置优先级。

4.8。

分析体系结构方法:重复第六步工作,把新得到的最高优先级场景与尚未得到的体系结构工作产品对应起来。

4.9。

描述评估结果:1*已文档化了的体系结构方法,风格。

2*场景及优先级。

3*基于属性问题。

4*效用树。

5*所发现的风险决策。

6*已文档化了的无风险决策。

7*所发现的敏感点和权衡点。

二、论述题:(30分)选取目前构件模型中OMG的CORBA、Sun的EJB、Microsoft的DCOM之一,论述模型的结构、特点以及使用该技术开发构件的过程,并举一示例。

答:Sun的EJB构件模型EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。

提供了让客户端使用的分布式对象的框架。

简化了企业级软件的开发。

EJB容器提供了目录服务,事务管理,安全等。

EJB的类型:(1)。

会话Bean:与所在客户会话的生存周期一样长,即在客户交互期间有效。

1*无状态会话Bean:一次对一个客户提供业务逻辑而不在方法调用之间保存客户状态,即调用完后,无状态会话Bean就被释放到缓冲池中。

2*状态会话Bean:可以维持调用客户的状态并在方法调用之间维护客户状态。

(2)。

实体Bean:代表了某个持久对象,用于映射基础数据库表格,生成数据库的对象视图。

1*容器管理的持久性:负责同步bean状态与基础数据库。

2*Bean管理的持久性:编程人员要在beande实现类中编码所有需要的SQL 语句与JDBC调用。

(3)。

消息驱动的bean:一些业务逻辑的消息使用者。

EJB的特点:1*清晰的体系结构:支持多层应用体系结构和基于构件开发。

2*简化的编程模型:只需要关注服务的实现,其余事务有EJB容器完成。

3*通用的编程模型。

4*易移植性:可以部署到任何兼容的EJB容器中。

5*支持事务处理:可以通过代码外的描述定义事务处理。

6*可扩展性:可随应用的增长而扩展,并提供了负载平衡。

7*安全性:由EJB服务器提供资源的访问权限控制。

EJB至少包括四个元素:主接口,组件接口(Remote或Local接口),Bean实现类和部署描述项。

开发EJB组件的设计过程:Online--BookStore1.目标规划:(1)系统的用户登录及身份验证要求。

1*系统用户注册。

2*验证用户的注册信息。

3*系统用户进入系统时的身份验证。

(2)在线图书销售系统要求1*允许用户浏览所有图书。

2*允许登录用户购买自己喜欢的图书。

3*允许用户对购物车进行管理。

4*系统实现订单的处理。

5*系统完成整个的购物流程。

2.系统规划(1)系统结构层次1*客户层:使用Web浏览器。

2*表示层:使用JSP+JavaBean。

3*业务层:使用EJB中的会话Bean。

4*集成层:通过EJB中的实体Bean连接到数据库。

5*资源层:J2EE中提供的各种资源。

(2)数据模型:产品(Book)模型,账户(Account)模型,订单(AccountOrder)3.EJB的设计(1)体系结构分层的设计:Online--BookStore的系统层次结构(1)表示层模式:1*截取过滤器:促进请求的预先处理和后处理。

2*前端控制器:提供请求处理的集中控制器。

(2)商业层模式:1*值对象:通过减少网络对话,以加速层之间的数据交换。

2*会话外观;隐藏业务对象复杂性,集中化工作处理。

3*服务器定位:封装业务服务查找和创建的复杂性,定位业务服务工场。

5.实体Bean(数据)和会话Bean(业务过程)的合理分配6.状态会话Bean和无状态会话Bean的选择(1)状态会话Bean:在Online--BookStore的购物车中,客户被分配到一个购物车,整个会话期间,客户独占使用这个购物车,购物过程中可能从购物车中拿出一些商品,最后查询购物车中的所有内容并结帐,然后离开商店。

这些不同方法之间的状态数据都需要保留下来,所以适合使用状态会话Bean实现。

(2)无状态会话Bean:在Online--BookStore的账户模块中,因生成一个新的注册用户和判断用户是否登录,都是一次性的业务处理,可以使用无状态会话Bean7.Bean管理持久性和容器管理持久性的选择在Online--BookStore的实体中Bean使用的都是CMP管理持久性。

8.远程接口和本地接口的选择在Online--BookStore的实体中Bean使用的都是本地接口,让会话Bean来访问实体Bean,隐藏了实体Bean的各个细节。

而所有的会话Bean,采用远程接口,是客户可以访问会话Bean。

三、应用题:(30分)选取自己熟悉的领域,根据客户提出的功能需求应用MVC模式设计一应用系统的软件体系结构。

要求必须说明清楚每层的接口、服务类。

MVC模式能使界面(View)和数据(Model)能有效的分开,由控制器(Controller)去控制。

电子时钟的例子1.首先我们来看一下Model,Model按照我的理解是数据,就是所有的共用数据都是存储在Model里面的,时钟里有这样的数据,小时,分钟,秒;现在我们来建立一个Model,ModelLocator.as:package net.smilecn.clock.model{import flash.events.EventDispatcher;import flash.events.Event;public class ModelLocator extends EventDispatcher{private var_hour:String;private var_minutes:String;private var_second:String;public function ModelLocator():void{}public function get hour():String{return_hour;}public function set hour(value:String):void{_hour = value;dispatchEvent(new Event("changeHour"));}public function get minutes():String{return_minutes;}public function set minutes(value:String):void{_minutes = value;dispatchEvent(new Event("changeMinutes"));}public function get second():String{return_second;public function set second(value:String):void{_ second = value;dispatchEvent(new Event("changeSecond"));}}}这个代码应该会好懂,这里ModelLocator继承了EventDispatcher这个类,继承这个类的原因是ModelLocator需要用dispatchEvent发消息出去。

相关主题