软件工程实用教程11-系统设计_第1页
软件工程实用教程11-系统设计_第2页
软件工程实用教程11-系统设计_第3页
软件工程实用教程11-系统设计_第4页
软件工程实用教程11-系统设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、软 件 工 程第十一章系统设计第十一章 系统设计任务1 创建体系结构什么是软件体系结构框架模式及应用架构任务2 创建动态模型什么是动态模型健壮性分析序列图协作图状态图活动图选择正确的图2任务1 创建体系结构根据前面软件设计一章学习到的知识,我们知道项目进入到了系统设计阶段将意味着我们需要对系统的内部组织形式及实现方式做以考虑,也就是说要对具体如何搭建系统提出相应的解决方案。资源管理系统的功能性需求已经明确,那么采用什么样的体系结构能够满足异地交互的需求,为广大教师提供方便图书交换的场所呢?31 什么是软件体系结构定义体系结构是一种重要决策,其中涉及软件系统的组织,对结构元素及其组成系统所籍接口

2、的选择,这些元素特定与其相互协作的行为,这些结构和行为元素到更大的子系统的组成,以及指导该组织结构(这些元素及其接口、协作和组成)的体系结构风格。 构建软件结构的目的重用:系统能够重用以前的代码和设计,从而提高开发效率;扩展:在系统能够保持结构的稳定的前提下很容易地扩充功能和提升性能;简洁:好的架构一定易于理解,易于学习,易于维护,人们希望能够通过一个简洁的体系结构来把握系统。应用程序的分割目标应用程序的分割是我们在细化阶段的主要任务和目标。系统的体系结构就是应用程序分割策略的综合应用。一般常用的分割策略按功能进行划分按系统的物理布局进行划分按软件层次划分功能划分 将系统以子系统、功能模块的形

3、式进行划分。层次划分 也称为按服务进行划分。层是对模型中不同抽象层次上的逻辑结构进行分组的一种特定方式。通过分层,从逻辑上将子系统组织成为许多独立的、职责相关的集合,而层间关系的形成要遵循一定的规则。“较低”的层是较低级别和一般性服务;“较高”的层则是与应用相关的。协作和耦合是从“较高”层到“较低”层进行的,要避免从“较低”层到“较高”层的耦合。功能划分与层次划分之间的关系 层次划分是对体系结构的横向分解,功能划分是对体系结构的纵向分解。它们之间的关系,如图所示。 物理布局划分 系统的逻辑分层分别实现在不同的物理层(物理机器)上,通常将这种物理层次上的划分称为客户端程序和服务器端程序,常见的架

4、构描述为C/S(如图所示)、B/S系统。分离服务尽管功能模块的划分非常容易理解,但是正如我们前面分析的那样,要使应用程序的体系结构可扩展,更易于维护,就必须隔离出应用程序的逻辑层,进行逻辑层次的划分,从横向组织应用程序。应用程序的三个逻辑层表示服务业务服务数据服务各个逻辑层的范围和目标 使用层有助于解决的问题源码的变更波及整个系统;应用逻辑与用户界面交织在一起,无法复用于其他不同界面或分布到其他处理结点之上;潜在的一般性技术服务或业务逻辑与更特定于应用的逻辑交织在一起,无法被复用、分布到其他结点或方便地使用不同实现进行替换;不同关注领域之间高度耦合,难以为不同开发者清晰地界定和分配任务。2 框

5、架模式及应用框架框架是构建问题解决方案的基础结构。在对象技术中,框架是一种复用技术,是反复出现的组织模式和习惯用法,是对一系列体系结构的抽象。框架模式的本质是一些特定的元素按照特定的方式组织成一个有利于上下文环境里的特定问题的解决结构。而应用框架是一项具体技术的应用。这种应用技术往往是对某一框架模式的实现。框架模式是思想,应用框架是对框架模式的具体实现。框架模式 MVC一个著名的体系框架模式(结构)是模型-视图-控制器(MVC)框架,模型(model)代表系统的模型层,视图(view)是模型的展现层 ,控制器(controller)负责业务的流转。是面向对象设计中使用分离关注点原则的一个经典例

6、子。MVC强制编程者将应用类分为三组,它们分别特化和继承自抽象类:模型、视图和控制器。MVC框架示意图 分离MVC的观点有以下几点优势:允许单独开发GUI、业务数据和模型层逻辑。增加了程序可维护性,可复用性、可扩展性。替换或者移植到一个不同的GUI,而不需要对模型进行根本性的改变。改造和重新设计模型,同时保持用户GUI的表示形式。允许相同模型状态上的多视图。改变GUI对用户事件的响应方式,而不改变GUI的表示方式(一个视图控制器甚至在运行时改变)。使模型没有GUI也能执行(例如,用于测试或用于批量处理)。应用框架 Struts是一个具体的“Web应用框架”,它能比较完善地实现MVC模式的Web

7、应用。Struts的实现控制(Controller)ActionServlet。模型(Model):一般是以JavaBean的形式存在。大致分三类:ActionBean(亦称Action)、FormBean(亦称ActionForm)、JavaBean 或EJB。 视图(View) struts提供自定义的JSP 标记,如 Html、Bean、Logic、Template等,构建JSP,完成视图 。构建过程分为三个阶段:物理结构的选择(初步体系结构)逻辑结构的确定实现结构的确定制定初步体系结构根据用户的需求我们要选取一种合适的系统体系结构,一种适用的系统体系决定了系统的框架。对于用户来讲,他们

8、并不关心功能具体如何实现,只关心使用的方便及其实用性,但对于系统设计人员及程序人员来说,却要知道系统到底是什么样的系统,所以系统初步架构的选取是系统设计第一步。 体系结构的选取可参考关键问题: 是单机还是客户机/服务器系统? 是常规应用开发还是底层开发(是否有单片机系统)? 客户机最大点数是多少? 是否提供给第三方API接口? 网络(或数据通信)是什么连接方式? 客户机是胖客机还是瘦客户机? 数据文件的保存方式(文本、本地数据库、大型数据库)?逻辑结构的划分体系结构中的层表示在系统中垂直方向的划分,而分区则表示对层在水平方向上进行划分。形成相对平行的子系统。 信息系统逻辑结构中常见的层 执行体

9、系结构 我们把特定于应用程序而选择的技术、产品和体系结构的集合,称为应用程序的执行体系结构。 MSMS项目的部分逻辑层视图 任务2 创建动态模型前面我们通过对体系结构的搭建,初步形成了资源管理系统整体的组织形式。但是,如果想描述系统内部具体的运作形式,并且能够有效指导我们进行编码,我们还需要添加一些动态元素来描述系统内部是如何响应外部发出的请求的。那么,大家想一想看,可以通过构建什么样的模型帮助我们形成图12-1所示的程度,最终帮助我们完成代码编写的工作呢?311 什么是动态模型定义有助于设计逻辑、代码行为或方法体。UML中提供的动态模型包括序列图、协作图、状态图和活动图。动态模型的分类序列图

10、交互图之一,是最常用的动态模型。以时间为中心,其重点是对象之间消息的线性流动。项目细化阶段对用例路径的建模。协作图交互图之一,和序列图解释的信息是相同的,但它强调的是单个对象及其发送和接收的消息。协作图以对象为中心。协作图提供的视角表现了一个对象的繁忙程度。如果一个对象处于繁忙状态,则其生命周期值得关注,可以利用状态图作进一步分析。状态图对一个类的生命周期进行建模,它追踪了一个对象从诞生到消亡的全过程。它对一个对象可以处于的状态进行建模,包括对象转换到新状态或处于某个特定时的时间和与实践相关联的动作和活动。通常具有实时嵌入式性质的应用程序所用的类中,使用状态图的比例高一些。活动图对一个复杂的步

11、骤进行建模,它还可以用来对用例路径的步骤进行建模。它最接近传统意义的程序流程图。2 健壮性分析何为健壮性分析健壮性分析将动态模型和静态模型关联起来。在UML中,健壮性分析采用健壮图来表示。健壮图在UML中,健壮图是一个类图。在类图上,使用三种图标来表示三种不同的对象。边界对象(类)参与者使用它来同系统交互。通常,边界对象用作屏蔽和媒介,隔离了如何取得应用程序提供的服务的大部分交互细节。位于系统与外界的交界处,包括所有的窗体、报表、系统硬件接口、与其他系统的接口。识别边界类的简单途径就是注意系统中的参与者。每个参与者都需要与系统建立接口实体对象(类)通常是来自领域模型的对象。它们用来保存持久性的

12、应用程序实体的有关信息,并提供用于驱动应用程序中大多数交互所需的服务。实体对象通常提供一些非常具体的服务。存储和检索实体属性创建和删除实体提供随着实体的改变有可能改变的行为控制对象(类)对应用领域中的活动进行协调,即将边界对象和实体对象关联起来。每一个用例中通常有一个控制类,它控制用例中的事件顺序。通常,控制类可以扮演以下几种角色。与事物相关的行为特定于一个或少量用例(或用例中的路径)的一个控制序列将实体对象与边界对象分离的服务健壮性分析的要素帮助确保用例文本的正确性是后续工作的基础可帮助发现对象是系统的初步设计健壮图的图例-查看最近订单健壮性图的使用规则参与者只同边界对象交互边界对象只能同控

13、制器和参与者交互实体对象只能同控制器交互控制器可同边界对象、实体对象以及其他控制器交互,但不能同参与者进行交互例子用例:登录基本流程:用户在登录页面上输入其用户ID和密码,然后单击“登录”按钮。系统根据永久性账号数据对登录信息进行验证。系统显示欢迎页面。分支流程:1.a如果用户单击登录页面上的“注册”按钮,系统将调用注册用户用例。2.a如果身份验证失败,系统将在一个单独的对话框中显示对该用户的提示语。顾客单击OK按钮后,系统返回到登录页面。用例UC2.1:添加藏书基本流程:藏书者登记新购买图书的信息,包括书名、作者、译者、出版社、购买时间(系统自动给出录入时间)、价格、对图书的推荐信息、喜爱程

14、度(默认情况下为3星,最高等级为5级,最低等级为1级),数量(默认为1本,极个别情况会出现多本重复书籍)、类别(方便管理,可自己设定归类名称)。系统进行输入信息的有效性检查。系统根据图书名称进行重复图书检查。存储图书信息,并提示存储成功。系统重新显示初始添加藏书界面,用户可以进行下一本图书的录入过程。分支流程:1.a 如果藏书者录入信息有误。 1 系统提示藏书者此信息。 2 返回刚才的添加藏书界面,界面保持原来填写数据。3.a 如果图书名称发生重复,系统将提示此信息,并给出相应图书列表,用户可以查阅图书的详细信息,同时要求用户对此情况进行处理。1 如果确认图书录入重复,则系统放弃对当前图书信息

15、的存储。2 如果只是同名不同书,则用户确认此情况后,系统对当前录入的图书信息进行保存。3 序列图为用例设计其序列图目的识别设计类或子系统,其实例需要去执行用例的事件流把用例的行为分布到有交互作用的设计对象或所参与的子系统定义对设计对象或子系统及其接口的操作需求为用例捕获实现性需求注意除非在两个类之间定义了关联,否则这两个类的对象之间是无法发送消息的。如果一个用例路径需要在两个对象之间通信,而对应的两个类之间不存在相应的关联,那么类图就是不正确的。用例文本的序列图根据用例模板中的内容画出“添加新书”用例的序列图4 协作图协作图与序列图所揭示的信息是相同的,但它强调的是单个的对象及其发送的消息。协

16、作图以对象实例为中心。协作图提供的视角表现了一个对象的繁忙程度。如果一个对象处于繁忙状态,则其生命周期值得关注,可以利用状态图作进一步分析。5 状态图对一个类的生命周期进行建模,它追踪了一个对象从诞生到消亡的全过程。当所建模的类呈现出值得关注的和复杂的动态行为时,状态图才是有价值的。状态建模的步骤识别状态选择使用该类的任意用例的主路径该路径的上下文环境加入到状态图中选择同一个用例中的另一条路径或一个不同的用例,直至无法继续获取信息为止状态图对类建模的作用许多事件最终都会导致对类操作的建模。所有的工作(动作和活动)最终都会导致对类操作进行建模。许多操作都是私有的。向其他对象发送的所有消息都会导致在目标类中定义一个操作。任何识别出来的状态变量都会成为所建模类的成员变量。6 活动图对一个复杂操作中

温馨提示

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

评论

0/150

提交评论