第三章 面向对象系统分析概述.ppt
《第三章 面向对象系统分析概述.ppt》由会员分享,可在线阅读,更多相关《第三章 面向对象系统分析概述.ppt(143页珍藏版)》请在麦多课文档分享上搜索。
1、第三章 面向对象系统分析概述,面向对象系统分析简称为OOA,本章讨论OOA所涉及到的一些主要问题和基本概念,并综述性地介绍目前流行的各种OOA方法。,主要内容:,系统分析面临的主要问题,包括对问题域和系统责任的理解和准确划分、交流问题、如何应对需求的不断变化、软件复用的考虑等。,应用的开发过程概述,各个阶段的主要任务和侧重点,基本方法等;,面向对象系统分析的主要任务和目的。,几种常用的面向对象系统分析方法。,3.1 应用的开发过程概述,我们习惯于将一个应用(Appilication)的开发过程(软件开发过程)划分为以下六个阶段:需求描述、分析、设计、实现、测试、维护。下面分别对各个阶段的主要任
2、务作简单的介绍。,1. 需求描述,1) 需求的概念,需求是“用户解决某个问题或达到某个目标所需的条件或功能”。,需求描述也称为需求分析,它是系统分析的前期和基础,需求描述中应该包含对系统的外部行为的尽可能的详细的刻画。,2)需求描述阶段的侧重点,实际上,需求描述侧重于功能方面的描述,因此系统分析人员必须善于从功能需求中寻找功能的作用者和相关体,也即寻找存在于系统中的一个个对象(或者说:将某一领域分割成各种对象)。否则很可能会诱导后继阶段围绕功能展开,这将有悖于面向对象的宗旨。,2分析阶段,1)分析阶段的目标,理解软件为满足需求所要解决的问题,描述系统应该做什么而不是怎么做。可以看出分析阶段所侧
3、重的是软件方面的需求而不是用户方面的需求。,2)分析阶段的主要任务,在初步理解现实世界的基础上,建立系统的面向对象模型(对象模型和动态模型),在建模过程中不断地加深对问题的理解。,所谓现实世界是指一个组织的现状(例如一个企业用现有的业务过程为顾客服务),以及再工程后的状态(对现有进程进行调整后的状态)。,面向对象的分析方法为后继阶段给问题构造解决方案建立了坚实的基础,同时也为构建“合适”的系统提供了强有力的保证。,3设计阶段,1)目标,考虑如何构造一个好的软件系统框架。,2)主要工作,包括系统设计、对象设计和持久对象设计。,系统设计主要给出分层的系统结构。,一个系统通常分为应用、支撑和服务三个
4、层次,每一 层对应一个子系统。,对象设计主要完成对分析模型的细化和精化以适应实际的实现环境。,持久对象设计主要完成数据库服务器的设计、定义数据库操作对象和模型对象之间的交互等。,4实现阶段,实现阶段的主要工作是对应用进行程序设计,把设计阶段定义的结构和各种算法转化为程序代码。,5测试阶段,分为单元测试和整体测试。,单元测试,也称为单体测试,是对每一个程序模块所进行的功能测试。,整体测试,首先测试各模块(或子系统)间的联接,然后测试整个应用系统是否能满足用户的需求描述。,6维护阶段,维护阶段是整个软件周期中一个最为“漫长”的阶段。,维护阶段的主要工作包括:,对系统潜在的错误进行检测和改正;,注意
5、:每一次维护可能又是一个较小的应用开发过程。,不断地面对用户的新要求以及为适应新环境对系统进行改进与增强。,7关于“合适”系统的讨论,评价一个系统是否“合适”,有以下两条基本准则:,准则一、所实现的系统应能解决所给的问题,也即满足功能性的需求。,这不仅仅是设计与实现阶段的任务,而且更要仰仗需求描述的准确性以及分析阶段对问题域的建模等。,准则二、可用性达到使用户满意的程度。,可用性属于系统属性,是系统的非功能特性,包含一些非功能性需求,此类需求与问题域无关。,注意:,例如一个查询,尽管结果是正确的,但响应时间太长,用 户不满意就会产生不可用的感觉。,(1)一个系统只有同时满足功能性需求和非功能性
6、需求,它才是可用的。,(2)功能性需求可由领域知识和需求描述获得;非功能性需求由域用户与专家协商得到。,(3)交互能力强的模型或者原型系统都可以使用户及时体验未来的系统,从而能帮助系统开发人员更好地了解上述两种需求。,3.2 用况驱动的、迭代式的、增量的开发方法概述,软件开发过程(Software development process):,是软件系统的创建、提交和维护等相关活动的组织方法。,UML没有定义一个标准的开发过程,UML的作者也承认健壮的建模语言和开发过程两者都很重要。,目前流行的开发过程(方法):用况驱动的、迭代式的、增量的开发方法。它是对很普通的那些推荐的过程和模型(Recom
7、mended Process and Model, RPM )所做的描述。,高层步骤,计划和细化(Plan and Elaborate) 制定计划、定义需求、创建原型等。,构造(Build) 进行系统(模型)的构建。包含:分析、设计、实现和测试等活动。,实施(Deploy) 最终实现系统并投入使用。,从高层上看,提交一个应用系统的过程应包括以下阶段:,2. 迭代开发方法概述,(1)方法的要点和优点,在经过一个初步的计划和细化阶段后,开发进入由一系列开发周期组成的系统构造阶段。所以迭代主要发生在构造阶段。,迭代开发的生命周期是基于对一个系统进行连续的扩充和精化,其要点如下:,软件开发过程要经历若
8、干个开发周期,每个周期都包含:分析、设计、实现和测试等活动。,要点,2. 迭代开发方法概述(续),软件开发过程要经历若干个开发周期,每个周期都包含:分析、设计、实现和测试等活动。,2. 迭代开发方法概述(续),在每个开发周期中,通过增加新的功能使系统得以扩充(增量)。,每个开发周期只针对比较小的一部分需求(一般是以用况为单位),它要经历分析、设计、实现和测试等活动。每个开发周期完成后,系统都获得一定程度的扩充。,开发周期一般是以用况为单位来组织的。,软件开发过程要经历若干个开发周期,每个周期都包含:分析、设计、实现和测试等活动。,2. 迭代开发方法概述(续),优点,因为每个开发周期只针对比较小
9、的一部分需求,规模适中,所以就比较好地解决了因为一个开发过程太复杂而使开发人员无从下手的问题。,因为每个周期只快速实现系统的一小部分,所以在开发过程的早期就能够获得反馈信息。,3. 确定开发周期的时间盒,每个开发周期都采用一种实用的策略为该开发周期加上一个时间盒,也即给开发周期限定时间,开发周期中的所有工作都必须在这个时间内完成。,经验表明:一个比较合适的时间盒是二个星期到二个月。,如果时间短了,将很难完成任务;反之,难以处理开发周期中可能遇到的各种困难,并且得到反馈信息的时间将拖后。,4.用况和迭代开发周期,(1) 用况驱动,迭代开发周期是通过用况来组织的。一个开发周期的任务是实现一个或多个
10、用况,或用况的简化版本(当完整的用况复杂到一个开发周期处理不了时,这是普遍采用的方法)。,(2) 划分用况的层次,4.用况和迭代开发周期(续),用况(use case)是对业务过程所包含的一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者有价值而且可观察的结果。用况是通过协作实现的。,划分用况的策略是,首先从问题域和高层服务中抽 取出那些对系统核心体系结构影响最大的用况以及那些具有高风险的关键用况,这些用况有的可以视为高层用况。,高层用况应当在较早的开发周期中得到处理。,5.计划和细化阶段概述,(1)计划和细化阶段的主要工作,一个项目的计划和细化阶段的主要工作包括:,初期概念的形成;
11、,为做出各种项目选择所进行的调查研究;,需求的规格化描述等。,()计划和细化阶段的活动样例,(3)计划和细化阶段所创建的制品,计划 时间进度表、资源规划、预算等等。初步调查报告 目标、选择、业务需求。需求规格说明 关于需求的声明型陈述。术语表 术语字典(包括概念名)和相关信息,例如约束和规则。原型 所创建的原型系统,用于对问题、高风险因素和需求的辅助理解。用况图 展示所有的用况及用况之间的关系。概念模型草案 一个初期的初略的概念模型,用来帮助开发人员理解领域中的词汇,特别是与用况和需求说明有关的词汇。,(3)计划和细化阶段所创建的制品(续),本阶段的制品可以按活动样例图所给的线性顺序创建,但某
12、些制品却是可以并行创建的,例如概念模型、术语表、用况及用况图等。,计划 时间进度表、资源规划、预算等等。初步调查报告 目标、选择、业务需求。需求规格说明 关于需求的声明型陈述。术语表 术语字典(包括概念名)和相关信息,例如约束和规则。原型 所创建的原型系统,用于对问题、高风险因素和需求的辅助理解。用况图 展示所有的用况及用况之间的关系。概念模型草案 一个初期的初略的概念模型,用来帮助开发人员理解领域中的词汇,特别是与用况和需求说明有关的词汇。,(4) 制品样例终端销售系统(POST)的用况和用况图,用况: 购买商品 参与者:顾客(发起者)、出纳员 类型: 主要的 描述: 顾客带着所购买的商品来
13、到付款处,出纳员记录商品信息并接受付款。付款后,顾客带着商品离开。,用况: 启动系统 参与者:管理员 类型: 主要的 描述: 管理员接通一个POST终端电源,为出纳员使用终端做准备。管理员检查时间和日期的正确性,检查完成后,系统处于就绪状态,以备出纳员使用。,POST的高层用况样例,POST系统的部分高层用况图,(5) 制品样例终端销售系统的初始概念模型,6. 构造阶段开发周期概述,(1) 构造阶段的主要工作和目标,一个项目的构造阶段包括一系列重复的开发周期,每一个开发周期的主要活动包括:精化计划、同步制品、分析、设计、实现、测试等。在这些开发周期中,系统得到了扩展和完善。,构造阶段的最终目标
14、是得到一个能正确符合需求的软件系统。,(2) 开发周期中分析活动的样例和主要制品,(3) 开发周期中设计活动的样例和主要制品,a.与交互图并行 b.顺序可变的,3.3 系统分析面临的主要问题,系统分析过程中,可能遇到的问题来自于方方面面,不胜枚举。,下面将要讨论的只是一些极具一般性的问题,例如:,(1)如何应对需求的不断变化,(2)应用的复杂性过载,(3)系统维护的艰巨性等等,(1)如何应对需求的不断变化 (2)应用的复杂性过载 (3)系统维护的艰巨性等等,3.3 系统分析面临的主要问题(续),以上问题主要来源于以下几个方面:,其一、软件的应用环境和需求的多样化;,其二、开发人员对应用领域的理
15、解水平有限;,其三、开发人员和用户之间缺乏有效的交流手段和方法。,上述问题是无论采用何种分析方法都可能会遇到的,区别在于好的方法能更有效地解决这些问题。,经验告诉我们,面向对象方法在解决这些带有普遍性的问题上,技高一筹。,1. 问题域和系统责任的理解问题,1)问题域(problem domain),问题域是指特定应用系统的应用领域,即在现实世界中由该系统进行处理的业务范围。,问题域由问题组成,问题是人们用概念表达出来的对信息系统的需求。,“概念就是一个想法、事物或者对象”。,问题域的确定是经历了由现实世界到观念世界的抽象,它是观念世界的三个组成部分之一,其它两部分是实体域和概念域。,系统分析通
16、常都是由问题陈述(用况驱动)开始的(依赖于问题陈述),面向对象分析方法通过问题陈述使得分析人员能够发现存在于系统中的各种原始对象,显然,正确地理解和确定问题域至关重要。,2)系统责任(system responsibilities),系统责任是指系统应该具备的职能,也即系统能做什么。,尽管系统责任主要侧重于从功能(职能)方面加深对系统的理解,但它总是和系统中的具体的人、具体的事有关的,也即和系统中的具体对象有关,所以问题域和系统责任存在某些重叠。,3)理解问题域和系统责任的重要性,对问题域和系统责任的理解,给出问题域的准确、透彻的描述,这是能否成功地开发一个系统的首要前提和先决条件,同时也是系
17、统分析的最大难点之一,原因如下:,系统分析员多半不是领域专家,而领域专家多半不是计算机行家;,分析人员对问题域的理解比领域工作人员要更加深入和准确,也即需要较高层次上的抽象;,计算机应用系统并不是人工系统的简单模拟,因此,在日常运作上应该高出人工系统一筹;,应用环境和系统需求的多样化、复杂化、系统规模庞大等问题对分析阶段的压力超过系统开发的其他阶段。,3)理解问题域和系统责任的重要性(续),2. 交流的问题,系统分析人员在进行系统分析时,需要经常进行人与人之间的各种交流。,通过交流可以获取领域知识、加深对需求的理解,同时也让领域人员理解和评价分析结果。,分析阶段的交流包括以下几种形式和内容:,
18、分析人员与用户及领域专家的交流和再交流;,(1)交流的意义,(2)交流的形式和内容,这种交流有助于分析人员了解用户需求和理解问题域中的每个问题,另一方面可以让用户和领域专家理解分析结果并对其进行检验和评价。,分析人员之间的交流,有助于统一认识、协调一致,整合分析结果。,与设计人员的交流,与管理人员的交流,这属于阶段转移的工作交接问题。,包括工作审核、认可、进度检查、计划调整等。,(3)影响交流顺畅的原因,交流问题是一个“面向人的”问题,存在着很多非技术因素,这是难点所在。,交流问题也有技术因素存在,这就是:有关人员需要一种共同的思维方法和一种便于交流的共同语言,该语言包括系统模型、术语、表示符
19、号、文档格式等(例如UML );,(4)采用面向对象分析方法可以比较好地解决交流问题,这是因为面向对象分析方法可以用直观的、可视化程度较高的模型来建立分析人员与用户及领域专家之间的桥梁,以利于交流的畅通无阻。,3需求的不断变化,1)需求的变化可能会发生在系统开发的各个阶段。,2)需求变化所带来的问题,无论需求变化发生在哪个阶段,都将引起一系列的修改,这势必加大工作量、延长开发周期、增加系统维护的复杂性;,导致系统的整体性、适应性、可靠性和健壮性都受到影响。,3)引起需求变化的主要因素,问题域本身在系统开发过程中发生变化,例如规模扩大、管理策略与模式处于逐步完善或改变过程中等等,这属于不可避免的
20、客观原因。,用户因素 ,这是最主要的因素;,由于用户在初期阶段的重视程度不够、本身对需求不甚明确、要求不完全、不适当,因而势必会在开发的各个阶段经常提出一些补充甚至更改早期提出的需求。,竞争因素;,技术支持,技术支持的改变可能会引起需求的调整。,经费的增减会引起系统规模的扩大或缩小。,经费因素;,比如说某些应用在技术支持不够强大的情况下,有些需求会受到压抑,一旦技术支持完善后,就必须重新考虑这种需求实现的可能性。,4)如何应对需求的不断变化,需求的变化在系统开发过程中是司空见惯的,问题是如何有效地应对这一不可避免的现象?,(1)冻结需求法,但这毕竟只是权宜之计而决非万全之策,因为将来还必须面对
21、新的变化。,传统的开发方法只能采用在某一特定时刻冻结需求变化的办法来对付它,以求得阶段性的稳定。,通过上述排序可以看出:对象是系统中最稳定的部分。,面向对象方法就是利用这一事实,以对象作为构成系统的基本单位,把容易变化的操作和属性封装在对象中,抽象和封装提高了对需求变化的弹性适应。,当需求发生变化时,系统中最容易变化的部分是功能部分,其次是与外部系统或设备的接口部分,再次是描述问题域事物的数据部分;最后才是对象。,(2)以系统中最稳定的部分作为系统的基本单位,4软件复用的要求,这里强调的是分析结果和设计结果的重用,它属于中粒度重用,比小粒度的代码重用更具有显著的效果。,重用并不能简单地产生的,
22、必须通过对即时应用之外的思考和进行更多的一般化设计的规划才能得到。,(1)设计重用模块会增加项目开发成本。,(2)紧张的项目开发周期(截止期限)可能意味着不能实现重用。,(3)缺乏商业上可利用的对象库。没有这种在实际项目中开发出来的类库和组件库,重用的好处就得不到充分的体现与发挥。,3.4 面向对象系统分析的任务和目的,1任务,面向对象系统分析的主要任务是:,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识;,找出与问题域及系统责任有关的类及对象 ;,定义这些类和对象的属性和操作,以及它们之间所形成的结构,静态联系和动态联系。,简而言之,确定系统中的对象,描述对象的
23、静态特征和动态特征,找出对象之间的各种关系以及对象的行为约束,是面向对象分析的主要任务。,2目的(目标),建立一个符合用户需求并能够直接反映问题域和系统责任的系统模型和相关文档。,3. 面向对象分析的基本原则,面向对象系统分析过程中应遵循以下五个基本原则 :,1)一般化和具体化相结合的原则,一般化方法的核心是抽象,抽象主要强调实体的本质和内在属性,忽略一些无关紧要的细节,使得我们可以在实现对象之前将重点放在理解对象是什么和做什么。也即确定对象的意义和行为。,抽象包括数据抽象和过程抽象:,数据抽象将数据对象及作用在其上的操作描述成具有封装特征的对象,是分析的核心,是建立系统结构的基础。,过程抽象
24、为对象的相互作用提供依据。,具体化是与一般化相反的分析过程,是指在问题的细化过程中,给对象逐步加入必要细节使特定对象的个性明朗化。,遵循一般化和具体化相结合的原则,为提高系统的通用性、稳定性,增强适应能力以及系统内部的重用提供了根本的保证。,2)构造和分解相结合的原则,构造是指用基本对象组装复杂对象的过程;,分解是指对大粒度对象进行精化从而完成系统模型的细化过程。,3)封装的原则,封装强调对象的独立性和不可分割性以及内部实现细节的隐蔽,它有助于最大限度地减少由于需求的改变而对整个系统所造成的影响。,4)相关的原则,相关是指系统中各个对象之间存在的各种关联以及部分和整体的关系 。,关联是对象协作
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 面向 对象 系统分析 概述 PPT
