第6章 面向对象的需求分析文档格式.docx
- 文档编号:20741928
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:88.33KB
第6章 面向对象的需求分析文档格式.docx
《第6章 面向对象的需求分析文档格式.docx》由会员分享,可在线阅读,更多相关《第6章 面向对象的需求分析文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
状态是由对象在特定时刻的属性值所确定;
行为是一个具体的对象,所有能做的事件,在分析中建模为操作,在设计中建模为方法。
(3)类
类是具有相同(或相似)属性和操作的对象的集合,类是对象的抽象,而对象是类的具体化。
即对象是类的实例,类是对象的模板。
这是对象与类之间的本质关系。
类可以构成层次结构,相对上层的是超类(superclass),相对下层的是子类(subclass)。
超类也称基类,子类也称派生类。
子类在继承超类的属性和操作的同时可以拥有自己的特有的属性和操作。
(4)封装
封装的观点是一个重要的概念。
严格地说,操纵对象的惟一方法只有通过操作,对于对象的任何请求都必须由其操作来进行处理。
这就是封装,即隐藏对象的数据结构。
封装将外部接口与内部实现分离开来,用户不必知道行为实现的细节,只须用消息来访问该对象。
(5)继承
继承性是共享类、子类和对象中的方法和数据的机制。
当类A不但具有类B的属性,而且还具有自己独特属性时,这时称类A继承了类B,继承关系常称“即是”(isakindof)关系。
子类继承了超类的所有特征,即子类继承超类的属性、操作、关系和约束。
继承具有传递性,类的层次结构的一个重要特点是继承性。
继承分为单重继承和多重继承两类。
如果一个类至多只能有一个超类,这种继承方式称为单重或简单继承,单重继承是树型结构。
如果一个类可以直接继承多个类,这种继承方式称为多重继承,多重继承是网状结构。
(6)多态性
多态即一个名字可具有多种语义。
即在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而,不同层次中的每个类却各自按自己的需要实现这个行为,并得到不同的结果。
同一个操作(方法)、函数或过程可以用不同类型的参数调用实现不同的结果。
在面向对象的语言中,都有实现多态性的机制。
多态性机制不仅增加了面向对象软件系统的灵活性、可理解性和可维护性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。
封装、继承和多态是面向对象的“三大支柱”,是面向对象的三个核心观点。
(7)消息和方法
消息用来请求执行某一处理或回答某些信息的要求。
对象间的通信是通过消息传递来实现的。
在面向对象程序设计中,程序的执行是靠在对象间传递消息来完成的。
方法是类中操作的实现过程。
一个方法包含方法名、参数和方法体。
对象的内部信息是隐蔽的,对象间只能通过消息来连接,而对象私有的数据是用它的方法访问的。
(8)关系
在一个面向对象的软件系统中,对象不是孤立存在的,对象和对象之间只有通过相互发消息,才能组成一个实际的软件系统。
在开发软件过程中,分析与设计的一部分工作是标识和定义这些关系,对象只有在已经定义好关系后才能进行相互之间的通信。
在UML中,对象与对象之间的关系用一条直线来表示,常常表示为有箭头的直线,代表方向性、可导航性。
对象之间的关系往往反映出系统的业务规则,这也正是模型所要表达的信息。
对象与对象之间有下面几种关系:
一对一关系、一对多关系、多对多关系。
3.面向对象的软件开发
面向对象的系统是从事物角度而不是从操作或功能角度来思考问题,运行的系统由一组彼此交互的对象构成,这些对象维护自己的局部状态并提供对这些状态信息的操作。
从软件工程的角度看,整个软件开发过程始终贯彻一个面向对象的策略,包括:
⑴面向对象的分析
面向对象的分析是建立应用领域的面向对象模型。
识别出的对象或类反映应用领域相关的一些实体及操作。
⑵面向对象的设计
面向对象的设计是建立软件系统的面向对象模型,借助于类库、网络、组件、软件包、构架和框架等已有的实施实现识别出的需求。
⑶面向对象的程序设计
面向对象的程序设计是使用面向对象的程序设计语言来实现软件设计。
面向对象的程序设计语言支持对象的直接实现和提供定义对象类的方法。
当使用面向对象的方法来开发软件时,软件的生命周期阶段之间的划分没有明确的界限。
使用面向对象方法开发软件时,对象一开始就进入了软件生命周期,人们在分析阶段将对象提取出来,在设计阶段对其进行设计,在实现阶段对其进行编码。
这样,面向对象方法有一个完整的步骤,阶段与阶段之间的转变比结构化方法要平缓,从而减小了开发过程中阶段之间转化带来的错误数量,开发出的软件系统也便于维护。
6.1.2统一建模语言(UnifiedModelingLanguage)—UML
建模是软件开发中用到的基本工具之一。
UML(统一建模语言,UnifiedModelingLanguage)是用于系统的可视化建模语言,是对模型表示的符号系统,它不是系统的建模方法,但它能够与现有所有方法一起使用,已经成为当今面向对象软件开发中建模广泛使用的标准。
1.UML的含义
UML统一了几种不同的领域。
⑴软件开发生命期。
UML提供了从需求到实现贯穿整个软件开发生命期的可视化建模语法。
⑵应用领域。
UML已被用于从关键实时嵌入式系统到管理决策支持系统中任何事物的建模。
⑶实现语言和平台。
UML中立于语言和平台。
它对纯OO语言具有极好的支持,对于混合OO语言同样有效。
⑷开发过程。
尽管UML和UP(统一过程)及其变体可能是OO系统的首选开发过程,但UML可以支持很多其他的软件工程过程。
2.UML结构
UML的结构包括:
(1)构造块:
是基本的UML建模元素、关系和图。
物件是指建模元素本身。
关系把物件联系在一起,说明两个或多个物件是如何语义相关的。
关系有:
关联、依赖、泛化、实现,这四种关系是UML模型中可以包含的基本关系事物,它们也有变体。
图是UML模型的视图,它们展现物件与关系的集合,是UML中最重要的部分。
UML中一共有九种不同类型的图,分别是类图、组件图、部署图、对象图、用例图、顺序图、协作图、状态图和活动图。
这些图可分为两类,一类是为系统静态结构建模的,另一类是为系统的动态行为建模的。
用例图明确定义了计算机系统使用的场合。
用例定义了系统用户与系统本身的交互,它封装了系统所有行为和活动者之间的交互,也定义了系统与外部世界的信息交流。
活动图是一种建模事件流的方式,描述活动以及活动之间的控制流。
这类图能够在业务建模中描述业务中的工作流,在系统分析中确定用例的行为,在设计中确定系统复杂部分的详细操作。
状态图在设计阶段使用得最为普遍。
它可以描述一些对象在其生命周期内状态之间的转换。
顺序图是具有活动流的重要的设计图,它从时间的角度描述系统内部对象之间的交互。
协作图是顺序图的一种扩充形式,它是从对象分布协作角度,即从空间的角度描述对象之间的协作关系。
对象类图是系统的内部联系图,经常称为静态模型。
组件把计算机系统的元素组成了更大的单位。
系统由组件构成。
在每一个组件中,包含了许多在别处定义的对象。
然后,组件被组合在一起,共同形成了一个完整的系统。
(2)公共机制:
达到特定目标的公共UML方法。
UML具有四种公共机制,它们一致地应用在语言当中。
它们描述了达到对象建模目的的四种策略,它们在UML的不同语境中被反复运用。
规格说明:
UML模型至少有两种维度:
图形维度,它允许我们使用图和图标可视化模型;
文本维度,它由各种建模元素的规格说明所组成。
规格说明是元素语义的文本描述。
修饰:
当需要在图上显示更多信息时,UML物件可以添加许多修饰。
公共分类:
公共分类描述认识世界的特殊方法。
扩展机制:
UML是开放的,它整合了三种简单的扩展机制,分别是:
约束、构造型和标记值。
(3)构架:
系统构架的UML视图。
UML定义了系统的四个不同的视图:
逻辑视图、进程视图、实现视图和部署视图。
这些视图都被用例视图集成到一起。
逻辑视图:
捕获问题域的词汇,作为类和对象的集合。
重点是展示对象和类是如何组成系统和实现所需系统的行为的。
进程视图:
建模系统中可执行线程和进程作为活动类。
其实,它是逻辑视图面向进程的变体,包含所有相同的制品。
实现视图:
对组成基于系统的物理代码的文件和组件进行建模。
它展示组件之间的依赖,展示组件的配置管理。
部署视图:
建模把组件物理地部署到一组物理的、可计算节点上,如计算机和外设上。
它允许我们建模横跨分布式系统节点上的组件的分布。
用例视图:
所有其他视图都是从用例视图派生而来,该视图把系统的基本需求捕获为一组用例并提供构造其他视图的基础。
3.基于UML的软件开发过程
⑴统一软件开发过程(UP)
统一软件开发过程是一个源于UML作者的工业标准软件工程过程。
UP是“用例和风险驱动”的,用例定义为提供有意义的独立的功能模块。
UP是“以构架为中心”的。
用例包含了功能和形式。
功能从用例模型中得来,形式则由构架规定。
构架是应用系统概括的、全面的结构,用例的实现必须符合结构。
构架和用例模型必须并行开发。
UP是“迭代和增量的”的。
UP把项目分成了四个阶段。
项目从开始阶段,经由细化阶段和构造阶段,到移交阶段,由此软件产品完成交付。
在每个迭代中,有五个核心工作流。
⑵极限编程(XP)
极限编程方法的目的在于将形式、文档和建模的量降低到最小程度,因此,有时候极限编程方法也作为轻型方法的一种,在许多方法中脱颖而出。
XP从“情节描述”(stories)的集合开始,在情节描述上达成了共识后,实现情节描述的开发人员还要给每一个情节描述制定测试计划。
这些测试计划要经过用户的认可。
接下来,开发人员给出了符合测试计划的功能实现代码。
在实现之后XP有一个额外的步骤,叫做重构。
重构的目标是改善整个系统的性能,用多种规则来重新构建代码。
重构保持了测试阶段定义的功能,目标在于提高应用的性能和可维护性。
⑶快速应用开发(RAD)
快速应用开发(RAD)一词包含了多种开发方法。
使用能够快速构建软件工具的一种频繁、递增式的软件交付是其核心主题。
RAD提出了将风险最小化,并且尽可能增大成功交付可能性的项目管理方法。
这种方法被广泛称为动态系统开发方法DSDM(DynamicSystemDevelopmentMethod)。
DSDM包括了可行性研究、业务研究、功能模型迭代、设计构建迭代和实现。
可行性研究是一个很短的阶段,用以决定项目是否适合以及DSDM方法是否可用。
业务研究也是很短的一个阶段,给出了系统主要功能性和非功能性需求的大体轮廓,并且决定了构架的基线。
功能迭代和设计构建阶段从要构建什么、制定构建进度、构建以及测试的一系列步骤中得出了功能需求。
这实际上是一系列阶段,每一个迭代都为系统增加了新的功能。
实现是把经过测试的产品移到了运行环境中。
在每一个设计和构建迭代,或者许多次的迭代后都可以进行实现。
4.基于UML的软件开发阶段
任何软件开发过程都要经历需求分析、系统分析、设计、实现、测试、部署和维护阶段,教材采用自由派观点,不明确指定采用什么样的软件开发过程,而注重怎样通过这些阶段来开展工作。
需求分析的目的是决定系统中各种项目相关者的需要和期望,形成关于系统“应该做什么”的描述。
需求有功能需求和非功能需求,描述用能被所有项目相关者理解的语言。
系统分析的目的是定义计算机系统的行为,以及怎样与业务环境交互,用能够被开发人员理解的术语来描述。
形成系统“需要做什么”的描述。
设计的目的是定义系统将如何运作,以及对开发和部署来说,如何把系统分解成可管理的部分,产生一个系统构架的概要,并且建立基于该构架的用例图。
实现产生以组件构成的系统,把系统新的部分整合到系统先前已构成的部分中,并根据设计阶段生成的说明书测试这些组件。
测试确保开发的系统能够在功能和非功能方面满足已说明的需求。
测试为开发小组提供产品质量上的反馈,使他们做出修改。
维护保持系统功能使之与需求保持一致。
在维护系统的较小变化与扩展系统的新开发之间需要有良好的区分。
6.1.3基于UML的需求分析
需求分析是决定系统中各种项目相关者的需要和期望,形成关于系统“应该做什么”的描述以及怎样来支持业务环境的分析活动。
需求分析的基础是业务环境,只有理解业务环境才能获得系统的需求,才能使获得的需求更好地支持问题域的业务活动。
1.业务建模
业务建模(BusinessModeling)是以软件模型方式描述企业管理和业务所涉及的对象和要素以及它们的属性、行为和彼此关系,业务建模强调以体系的方式来理解、设计和构架企业信息系统。
业务建模是需求分析中最初始的阶段,也是整个项目的初始阶段。
在业务建模阶段,不但要保证需求的技术无关性,还要保证需求不要深入细节。
业务建模内容包括:
⑴建立业务架构。
⑵业务过程分析。
⑶建立业务对象模型。
⑷建立业务建模文档。
2.需求分析
有了对业务环境的理解,就可以获取系统的需求。
需求包括:
⑴功能性需求:
系统应该提供什么功能。
⑵非功能需求:
系统的特定特性或者约束,是指那些不直接与系统具体功能相关的一类需求。
6.2重点难点学习提示
本章的学习目的是使学生建立起面向对象软件开发的基本概念和掌握面向对象需求分析的基本工具和方法,面向对象软件开发方法与传统的软件开发不同,它是将一个实际问题看成是一个或几个对象的集合。
读者应对以下几个重点、难点问题进行深入的学习,切实掌握好面向对象软件工程的基本概念和方法。
1.面向对象技术的引入
随着计算机应用范围扩大,软件系统日趋复杂,特别是图形界面的交互式软件广泛使用,传统的软件设计方法有明显的不足,具体表现在以下几个方面:
⑴功能和数据分离的设计结构与现实世界的环境并不相符,同人们认识世界的思维也不一致,导致对现实世界的认识与软件系统的开发之间往往存在着理解上的鸿沟,需要进行映射与转换。
⑵结构化技术不能解决软件产品的规模越变越大的问题。
⑶开发出的软件往往难以维护。
因为每个函数都必须知道数据结构的细节,而许多数据结构之间的差别可能很细微,这会使得函数中充满了与功能无关的条件和判断语句,大大降低了程序的可读性。
⑷自顶向下分解功能的方法极大地限制了软件的可复用性,往往开发软件系统时,几乎从零开始,这样会导致大量重复性工作。
⑸开发的软件产品复杂度高。
使用结构化方法设计的产品在本质上是一个单元,导致开发出的软件产品复杂度高,这也是结构化设计用于大型产品设计时不甚成功的原因之一。
传统的软件设计方法将数据和行为分开来考虑,实际上,数据和行为是同一个问题的两个方面,数据项不能改变,除非对它进行操作;
而没有相关数据的行为同样毫无意义。
所以,需要一种技术来同等对待数据和行为——这种技术就是面向对象技术。
2.对象和面向对象方法
⑴面向对象技术
面向对象技术是一个非常实用而强有力的软件开发方法。
它的特征是:
方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。
从生存期的一个阶段到下一个阶段的高度连续性,即生存期后一阶段的成果只是对前一阶段成果的补充和修改。
把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。
E.Yourdon将面向对象方法的基本要点概括为以下四点:
①数据的抽象,即类与子类的概念及相互关系。
②数据以及对它的操作的一体化,即封装的概念与方法。
③属性与操作由父类向子类传递,即继承的概念与方法。
④客观事物之间的相互关系用统一的、消息传递的方法来描述。
⑵对象、类和实例、消息的概念。
对象是一个封装了数据和操作的实体,可以是物理的,如一个家具或桌子。
也可以是概念上的,如一个开发项目。
对象是构成现实世界的一个独立的单位,具有自己的静态特征(用数据描述)和动态特征(行为或具有的功能)。
把具有相同特征和行为的对象归在一起就形成了类。
类称为某些对象的模板,抽象地描述了属于该类的全部对象的属性和操作。
属于某个类的对象叫做该类的实例。
消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。
发送给一个对象的消息定义了一个操作名和一个参数表(可能是空的),并指定某一个对象。
由一个对象接收的消息则调用消息中指定的操作,并将传递过来的实际参数与参数表中相应的形式参数结合起来。
接收对象对消息的处理可能会改变对象中的状态,即改变接收对象的属性,并发送一个消息给自己或另一个对象。
⑶继承性、封装性和多态性的概念。
继承性是面向对象方法的一个主要特征,是现代软件工程中的一个重要概念,软件的可重用性、程序成分的可重用性都是通过继承类中的属性和操作而实现的。
利用继承性,在定义一个新的对象时,只需指明它具有哪些类定义以外的新的特性,即说明其个性,而不必定义新对象的全部特性。
封装性也是面向对象方法的一个重要特征。
把对象定义为封装了数据和操作的实体,含义是将对象的各种独立的外部特征与内部细节分开,亦即对象的具体数据结构和各种操作实现的细节对于对象外的一切是隐藏的。
多态性是指相同的操作或函数、过程作用于多种类型的对象上并获得不同结果。
不同的对象,收到同一消息产生完全不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。
这样就增强了操作的透明性、可理解性和可维护性。
多态性增强了软件的灵活性和重用性。
允许用更为明确、易懂的方式去建立通用软件。
多态性与继承性相结合使软件具有更广泛的重用性和可扩充性。
3.统一建模语言UML
⑴什么是UML统一建模语言。
UML(统一建模语言,UnifiedModelingLanguage)是用于系统的可视化建模语言,它不是系统的建模方法,但它能够与现有所有方法一起使用。
在UML中用9种不同的视图来表示一个系统,分别是类图、组件图、部署图、对象图、用例图、顺序图、协作图、状态图和活动图。
这些视图从不同的侧面描述系统。
⑵UML的结构。
①构造块:
这些是基本的UML建模元素、关系和图。
②公共机制:
③构架:
⑶基于UML的软件开发过程。
①统一软件开发过程(UP)。
统一软件开发过程是Jacobson,Booch和Rumbaugh的共同成就,他们3人是UML发展的主要倡导者。
统一软件开发过程定义了参与开发的人员、开发活动、产品和工作流的一个框架。
统一软件开发过程是“用例和风险驱动”的、是“以构架为中心”的、是“迭代和增量”的,把项目分成了四个阶段进行。
②极限编程(XP)。
极限编程方法的目的是将形式、文档和建模的量降低到最小程度。
极限编程方法从情节描述的集合开始,在情节描述上达成了共识后,实现情节描述的开发人员给每一个情节描述制定测试计划,并经用户的认可。
接着,开发人员给出符合测试计划的功能实现代码。
在实现之后极限编程方法有一个额外的步骤,叫做重构,重构的目标是改善整个系统的性能,用多种规则来重新构建代码。
极限编程方法的使用也需要与实际的需求相适应。
③快速应用开发(RAD)。
快速应用开发包含了多种开发方法。
快速应用开发提出了将风险最小化,并且尽可能增大成功交付可能性的项目管理方法。
⑷基于UML的软件开发阶段。
教材采用自由派观点,不明确指定采用什么样的软件开发过程,而注重怎样通过这些阶段来开展工作。
基于UML的软件开发可以分为需求分析、系统分析、设计、实现、测试和维护几个阶段。
4.基于UML的需求分析
需求分析是确定系统中各种项目相关者的需要和期望,形成关于系统“应该做什么”的描述以及怎样来支持业务环境的分析活动。
需求有功能需求和非功能需求。
需求分析首先进行环境的业务活动分析,接着确定哪些业务活动需要计算机系统支持,然后进行用例建模,最后对所识别的用例、角色进行定义。
⑴业务建模。
业务建模是以软件模型方式描述企业管理和业务所涉及的对象和要素以及它们的属性、行为和彼此关系,业务建模强调以体系的方式来理解、设计和构架企业信息系统。
业务建模时间的跨度在不同的项目中有很大差别的,同时需求又是技术无关的。
业务建模的过程是:
首先,关注业务的全局,确定系统将要用于什么业务领域;
其次,对识别的业务进行描述定义。
采用业务构架图描述业务范围内的整体业务活动,给出业务领域的宏观结构,对业务过程的分析确定业务的具体流程。
⑵功能需求和非功能需求。
UML的用例模型支持功能性需求,但没有提供非功能需求建模的方法,因此,可以在对用例定义的过程中加入非功能性需求。
6.3典型问题分析和解答
6.3.1对象及面向对象典型问题分析
【例1】类常常被看做是一个抽象数据类型的实现,更合适的是把类看做是某种(A)的一个模型。
事实上,类是单个的(B)语义单元。
类的用户能够操纵的操作叫做类的(C)。
类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。
类的实现常常包括了其它类的实例,这些实例(D)被其它对象存取,包括同一个类的其它实例。
类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。
类,就它是一个数据值的聚合的意义上来看,与Pascal中的记录或C中的结构类似,但又有差别。
类扩展了通常的记录语义,可提供各种级别的(E)。
类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。
供选择的答案:
A.①功能②概念
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 面向对象的需求分析 面向 对象 需求 分析