软件体系结构_第1页
软件体系结构_第2页
软件体系结构_第3页
软件体系结构_第4页
软件体系结构_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件体系结构课程报告一、简答题 : (每题 10 分,共 40 分)1简述软件体系结构建模中“4+1”视图模型,并举一示例模型。答:4+1 视图模型从 5个不同视角 (逻辑视图 , 进程视图 , 物理视图 , 开发视图和场景视图 )来描述软件体系结构 . 每一个视图只关心系统的侧面,5 个视图结合在一起才能反映系统的软件体系结构的全部内容. 最终用户 : 功能需求编程人员 : 软件管理系统集成人员 : 性能可扩充性 , 吞吐量等 . 系统工程人员 : 系统拓扑 , 安装通信等 . 举例: 开发视图 . 开发视图也称为模块视图 , 主要侧重于软件模块的组织和管理. 软件可通过程序库或子系统进行组

2、织, 这样, 对于一个软件系统 , 就可以由不同的人进行开发.开发视图要考虑软件内部的需求, 如软件开发的容易性, 软件的重用和软件的通用性, 要充分考虑由于具体开发工具的不同而带来的局限性. 开发视图通过系统输入输出关系的模型图和子系统图来描述. 层次结构风格 . 各 种 各 样 的 空 中交通管制系统5 人机接口离线工具外部系统测试工具特 定 的 空 中 交 通管理系统构件4 空中交通管制功能区 : 飞行管理 , 雷达管理等空 中 交 通 管 制 系统框架3 航空类 , 空中交通管理类分布式虚拟机2 支撑机制 : 通信, 时间, 存储, 资源管理等基本元素1 公用构件底层服务逻辑视图开发视

3、图进程视图物理视图场景视图2. 简述层次体系结构风格及其特点,并举一示例。答: 层次系统组织成一个层次结构, 每一层为上层服务 , 并作为下层客户 . 连接件通过决定层间如何交互的协议来定义, 拓扑约束包括对相邻层间交互的约束.这种风格支持基于可增加抽象层的设计. 这样, 允许将一个复杂问题分解成一个增量步骤序列的实现. 由于每一层最多只影响两层, 同时只要给相邻层提供相同接口 , 允许每一层用不同的方法实现, 同样为软件重用提供了强大的支持. 分层同用协议 . (1). 支持基于抽象程度递增的系统设计, 使设计师可以把一个复杂系统按递增的步骤进行分解 . (2). 支持功能增强 , 因为每一

4、层至多和相邻的上下层交互, 因此功能的改变最多影响相邻的上下层 . (3) 支持重用 , 只要提供的服务接口定义不变, 同一层的不同实现可以交换使用. 不足之处 : (1). 并不是每个系统都可以很容易的划分为分层的模式, 甚至即使一个系统的逻辑结构是层次化的 , 出于对系统性能的考虑 , 系统设计师不得不把一些低级或高级的功能综合起来 . (2) 很难找到一个合适的 , 正确的层次抽象方法 . 用户系统基本工具核心层各种构件过程调用3. 简述基于体系结构的软件开发过程并说明在实际软件开发活动中如何实施。答: 基于体系结构的软件开发模型(1). 体系结构需求 : 需求是指用户对目标软件系统在功

5、能, 行为, 性能, 设计约束等方面的期望 . (1.1)需求获取 : 是定义开发人员必须实现的软件功能 , 使得用户能完成他们的任务, 从而能满足业务上的功能需求. (1.2)标识结构 : 生成类图 , 对类进行分组 , 把类大包成构件 . (1.3)需求评审 : 组织一个由不同代表组成的小组, 对体系结构需求及相关构件进行仔细的审查 . (2). 体系结构设计 : (2.1)提出软件体系结构模型 . (2.2)把已标识的构件映射到软件体系结构中. (2.3)分析构件之间的相互作用 . (2.4)产生软件体系结构 (2.5)设计评审 . (3). 体系结构文档化 : 主要输出结果是体系结构需

6、求规格说明和测试体系结构需求的质量设计说明书这两个文档. (4). 体系结构复审 : 目的是标识潜在的风险, 及早发现体系结构设计中的缺陷和错误. 包括体系结构能否满足需求, 质量需求是否在设计中得到体现, 层次是否清晰 , 构件的划分是否合理 , 文档表达是否明确 , 构件的设计是否满足功能与性能的要求等 . (5) 体系结构实现 : 用实体显示出一个软件体系结构, 既要符合体系结构所描述的结构性设计决策 , 分割成规定的构件 , 按规定方式相互交互 . (6). 体系结构演化 : 是使用系统演化步骤去修改应用, 以满足新的需求 . (6.1) 需求变动归类 .(6.2)制定体系结构演化计划

7、(6.3) 修改, 增加或删除构件 (6.4)更新构件相互作用6.5) 构件组装与测试 6.6) 技术评审 (6.7) 产生演化后的体系结构体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构演化0:m 0:n 4. 简述软件体系结构atam 评估过程,并设计一个软件项目的评估日程安排。答:4.1 。描述 atam 方法:1*atam方法步骤简介。 2*获取和分析技术。 3*评估结果。4.2 。描述业务动机: 1*系统最重要的功能需求。2*技术,管理,经济或政治方面的约束条件。 3*业务目标和环境。 4*主要的风险承担者, 5*体系结构驱动因素。4.3 。描述体系结构: 1*

8、技术约束。 2*要与本系统交互的其他系统。3*用以满足质量属性要求的体系结构方法。4.4 。确定体系结构方法:由设计师确定,有分析小组捕获,但不进行分析。4.5 。生产质量属性效用树:确定系统最重要的质量属性目标,并对这些质量目标设置优先级和细化。4.6 。分析体系结构方法: 1*理解体系结构方法。 2*找出该方法的缺陷, 3*找出该方法的敏感点。 4*发现与其它方法的交互和权衡点。把最高优先级的质量属性需求与实现他们的体系结构方法关联起来。4.7 。讨论和分级场景: 1*集体讨论用例场景(描述风险承担者期望使用信用的方式)和改变场景(描述风险承担者所期望的系统在将来变更的方式)2*成长场景描

9、述的是体系结构在中短期的改变,包括期望的修改,性能或可用性的变更,移植性,与其他软件系统的集成等。3*一旦投票结果确定,所有的场景就可设置优先级。4.8 。分析体系结构方法:重复第六步工作,把新得到的最高优先级场景与尚未得到的体系结构工作产品对应起来。4.9 。描述评估结果: 1*已文档化了的体系结构方法,风格。2*场景及优先级。3*基于属性问题。 4*效用树。 5*所发现的风险决策。 6*已文档化了的无风险决策。7*所发现的敏感点和权衡点。开始时间所作工作第一天8:30 介绍 描述 atam 方法(第 1 步) 第一10:00 客户描述业务动机 (第 2 步) 10:45 休息11:00 客

10、户描述体系结构 (第 3 步) 阶段12:00 确定体系结构方法 (第 4 步) 12:30 中餐13:45 生成质量属性效用树 (第 5 步) 14:45 分析体系结构方法 (第 6 步) 15:45 休息16:00 分析体系结构方法 (第 6 步) 17:00 休会中断几个星期第二天第二阶段8:30 介绍 描述 atam 方法(第 1 步) 9:15 客户描述业务环境 /动机(第 2 步) 10:00 休息10:15 客户描述体系结构 (第 3 步) 11:15 确定体系结构方法 (第 4 步) 12:00 中餐13:00 生成质量属性效用树 (第 5 步) 14:00 分析体系结构方法

11、(第 6 步) 15:30 休息15:45 分析体系结构方法 (第 6 步) 17:00 休会第三天8:30 介绍/扼要重述 atam 方法8:45 分析体系结构方法 (第 6 步) 9:30 讨论场景(第 7 步)10:30 休息10:45 设置场景优先级(第7 步)11:15 分析体系结构方法 (第 8 步) 12:30 中餐13:30 分析体系结构方法 (第 8 步) 14:45 准备汇报结果 /休息15:30 描述结果(第 9 步)16:00 进一步的分析 /角色的分配17:00 休会二、论述题:( 30 分)选取目前构件模型中omg 的 corba、sun的 ejb 、microso

12、ft的 dcom 之一,论述模型的结构、特点以及使用该技术开发构件的过程,并举一示例。答:sun的 ejb构件模型ejb是用于开发和部署多层结构的、分布式的、面向对象的java 应用系统的跨平台的构件体系结构。 提供了让客户端使用的分布式对象的框架。简化了企业级软件的开发。 ejb容器提供了目录服务,事务管理,安全等。ejb的类型:(1)。会话 bean :与所在客户会话的生存周期一样长,即在客户交互期间有效。 1*无状态会话 bean:一次对一个客户提供业务逻辑而不在方法调用之间保存客户状态,即调用完后,无状态会话bean就被释放到缓冲池中。 2* 状态会话 bean:可以维持调用客户的状态

13、并在方法调用之间维护客户状态。(2)。实体 bean :代表了某个持久对象,用于映射基础数据库表格,生成数据库的对象视图。 1*容器管理的持久性:负责同步bean 状态与基础数据库。 2*bean管理的持久性:编程人员要在 beande实现类中编码所有需要的sql 语句与 jdbc调用。(3)。消息驱动的 bean:一些业务逻辑的消息使用者。ejb的特点:1*清晰的体系结构:支持多层应用体系结构和基于构件开发。2*简化的编程模型:只需要关注服务的实现,其余事务有ejb容器完成。3*通用的编程模型。4*易移植性:可以部署到任何兼容的ejb容器中。5*支持事务处理:可以通过代码外的描述定义事务处理

14、。6*可扩展性:可随应用的增长而扩展,并提供了负载平衡。7*安全性:由 ejb服务器提供资源的访问权限控制。ejb至少包括四个元素:主接口,组件接口(remote或 local 接口), bean实现类和部署描述项。开发 ejb 组件的设计过程: online-bookstore 1.目标规划:(1)系统的用户登录及身份验证要求。1*系统用户注册。2*验证用户的注册信息。3*系统用户进入系统时的身份验证。(2)在线图书销售系统要求1*允许用户浏览所有图书。2*允许登录用户购买自己喜欢的图书。3*允许用户对购物车进行管理。4*系统实现订单的处理。5*系统完成整个的购物流程。2.系统规划(1)系统

15、结构层次1*客户层:使用 web浏览器。2*表示层:使用 jsp+javabean 。3*业务层:使用 ejb 中的会话 bean。4*集成层:通过 ejb 中的实体 bean连接到数据库。5*资源层: j2ee中提供的各种资源。(2) 数据模型:产品(book) 模型,账户(account) 模型,订单(accountorder)模型。supplier book category shoppingcart account accountorder orderitem 3.ejb 的设计(1)体系结构分层的设计: online-bookstore 的系统层次结构客户层:面向用户表示层:处理客户

16、层业务层:封装业务逻辑集成层:连接外部资源层:组件引用的系统4.层次模式的选择(1)表示层模式:1*截取过滤器:促进请求的预先处理和后处理。2*前端控制器:提供请求处理的集中控制器。(2)商业层模式:1*值对象:通过减少网络对话,以加速层之间的数据交换。2*会话外观;隐藏业务对象复杂性,集中化工作处理。3*服务器定位:封装业务服务查找和创建的复杂性,定位业务服务工场。5.实体 bean(数据)和会话 bean(业务过程)的合理分配6.状态会话 bean和无状态会话 bean的选择(1)状态会话 bean:在 online-bookstore 的购物车中, 客户被分配到一个购物车,整个会话期间,

17、 客户独占使用这个购物车, 购物过程中可能从购物车中拿出一些商品, 最后查询购物车中的所有内容并结帐,然后离开商店。 这些不同方法之间的状态数据都需要保留下来,所以适合使用状态会话bean实现。(2)无状态会话 bean:在 online-bookstore 的账户模块中, 因生成一个新的注册用户和判断用户是否登录, 都是一次性的业务处理, 可以使用无状态会话bean 7.bean管理持久性和容器管理持久性的选择在 online-bookstore 的实体中 bean使用的都是 cmp 管理持久性。8.远程接口和本地接口的选择在 online-bookstore 的实体中 bean使用的都是本

18、地接口,让会话bean来访问实体 bean,隐藏了实体 bean的各个细节。而所有的会话bean,采用远程接口,是客户可以访问会话bean。浏览器小服务ejb jdbc 数据库三、应用题:( 30 分)选取自己熟悉的领域,根据客户提出的功能需求应用mvc 模式设计一应用系统的软件体系结构。要求必须说明清楚每层的接口、服务类。mvc 模式能使界面(view )和数据( model )能有效的分开,由控制器(controller )去控制。电子时钟的例子1.首先我们来看一下model,model按照我的理解是数据,就是所有的共用数据都是存储在 model 里面的 ,时钟里有这样的数据,小时 ,分钟

19、 ,秒 ;现在我们来建立一个model,modellocator.as:package net .smilecn .clock .model import flash .events .eventdispatcher; import flash .events .event ;public class modellocatorextendseventdispatcherprivate var _hour :string ;private var _minutes :string ;private var _second :string ;public function modellocator

20、():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 ev

21、ent (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发消息出去。再来看一下controller.as这个类:packa

22、ge net .smilecn .clock .control import flash .utils .timer ; import flash .events .timerevent ;import net .smilecn .clock .model .modellocator ;public class controller private var _model :modellocator;private var _timer :timer ;public function controller (model :modellocator):void _model = model ;pu

23、blic functionstarttime ():void _timer = new timer (1000 ,0);_timer .addeventlistener(timerevent .timer ,timerhandler );_timer .start();private function timerhandler (event :timerevent ):void var nowdate :date = new date ();_model .hour = nowdate .gethours ()9?string (nowdate .gethours ():0+nowdate .

24、 gethours ();_model .minutes = nowdate .getminutes ()9?string (nowdate .getminutes ():0+nowdate .getminutes ();_model .second = nowdate .getseconds ()9?string (nowdate .getseconds ():0+nowdate .getseconds ();这个类中我们用到了timer 类,因为我们用的是时钟,所以需要一个定时器,timer 是一个很好的定时器,timer(1000,0),这里1000 是指 1000 毫秒,就是1 秒钟触

25、发一次定时钟,0 表示次数,这里0 是无限次,如果是大于0 的数就是这个数的次数。侦听timerevent.timer事件就是1 秒钟去执行一次timerhandler方法,timerhandler方法的功能是得到当前的时间然后去改变_model 里面的值, 再看一下modellocator.as里面的代码,当 hour,minutes,second的值改变的时候就会去发消息出去,那么谁来侦听这些消息呢,当然是view, 现在来看下view.as :package net .smilecn .clock .view import flash .display .sprite ;import f

26、lash .events .event ;import flash .text.textfield ;import net .smilecn .clock .model .modellocator;import net .smilecn .clock .control .controller ;public class view extends sprite private var _model :modellocator;private var _controller :controller ;private var time_txt :textfield ;public function

27、view (model :modellocator ,controller :controller ):void _model = model ;_controller = controller ;time_txt = new textfield ();addchild (time_txt );_model .addeventlistener(changehour ,changetimehandler);_model .addeventlistener(changeminutes,changetimehandler);_model .addeventlistener(changesecond,changetimehandler);_controller .starttime ();private function changetimehandler(event :event ):void time_txt .text = _model .hour + : +_model .minutes + : +_model .second ;在 view 里面,侦听了 _model 的事件,所以当收到数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论