03 面向对象的系统分析的过程为哪般?
面向对象的系统分析(OOA)是一个系统化、迭代化的过程,旨在通过抽取和整理用户需求,建立问题域的精确模型。以下是面向对象系统分析的主要步骤和过程:
一、需求收集与分析
- 收集需求:
-
通过分析需求文件、与用户协商讨论、调研现有类似系统等方式,全面获取用户需求。
-
确保需求陈述的完整性和准确性,发现并改正原始陈述中的二义性和不一致性。
- 初步分析:
-
对收集到的需求进行初步分析,理解系统的整体功能和性能要求。
-
识别问题域中的关键实体和它们之间的关系。
二、建立对象模型
对象模型是面向对象分析中最基本、最重要的模型,它描述了系统的静态结构。
- 确定对象和类:
-
对象是对数据及其处理方式的抽象,类是多个对象的共同属性和方法集合的描述。
-
从需求陈述中提取名词作为候选类,动词作为候选方法,形容词作为属性线索。
筛选出正确的类和对象,删除不正确或不必要的候选者。
- 确定对象间的关系:
-
分析对象之间的关联、聚合、继承等关系,明确对象间的相互作用和依赖。
-
使用UML(统一建模语言)中的类图来表示对象模型。
- 确定对象的属性:
-
定义对象的属性,即数据元素,确保每个对象至少包含一个属性。
-
属性取值必须适合对象类的所有实例,并考虑继承关系中的属性一致性。
三、建立动态模型和功能模型
动态模型和功能模型是对对象模型的补充,它们描述了系统的动态行为和数据变换过程。
- 动态模型:
-
描述系统的动态行为,通过时序图、协作图等展示对象的交互过程。
-
揭示对象间如何协作来完成每个具体的用例,以及单个对象的状态变化。
- 功能模型:
-
描述系统的数据变换过程,即系统如何处理输入数据并产生输出。
-
功能模型以用例模型作为输入,进一步细化系统的功能需求。
-
使用数据流图或活动图来表示功能模型。
四、反复分析与优化
面向对象分析是一个迭代的过程,需要反复分析和优化模型。
- 迭代分析:
-
在分析过程中,不断与用户沟通,获取反馈,并根据反馈调整模型。
-
反复检查模型中的不准确、不完整和错误的内容,加以扩充和更正。
- 优化模型:
-
根据系统需求和用户反馈,优化对象模型、动态模型和功能模型。
-
确保模型能够准确反映问题域的实际情况,并满足系统的功能和性能要求。
五、生成文档
分析过程完成后,需要生成相应的文档来记录分析结果。
- 软件需求规格说明:
-
描述系统的功能需求、性能需求、约束条件等,是后续设计和开发工作的基础。
-
软件需求规格说明主要由对象模型、动态模型和功能模型组成。
- 其他文档:
- 根据需要生成其他相关文档,如设计文档、测试文档等,以便后续工作的顺利进行。
综上所述,面向对象的系统分析是一个系统化、迭代化的过程,需要全面深入地理解问题域和用户的真实需求,通过不断迭代和优化模型来确保最终的系统能够满足用户需求。
面向对象系统分析案例:酒店订房系统
一、需求收集与分析
首先,需要收集并分析酒店订房系统的需求。这些需求可能包括:
-
用户能够查询不同房型的价格和可用性。
-
用户能够预订特定房型的房间,并指定入住和离店日期。
-
系统能够记录用户的预订信息,包括姓名、联系方式、预订详情等。
-
系统能够处理支付流程,确保预订的有效性。
-
管理员能够查看和管理所有预订信息,包括取消预订、更新房间状态等。
二、建立对象模型
- 确定对象和类:通过需求分析,可以识别出系统中的关键实体和它们之间的关系,从而确定对象和类。以下是一些可能的类和对象:
-
房型(RoomType):描述不同类型的房间,如单人间、双人间、套房等。
-
房间(Room):具体的房间实例,属于某个房型,具有特定的房号、状态和价格。
-
预订(Reservation):用户的预订信息,包括预订的房间、入住和离店日期、用户信息等。
-
用户(User):进行预订的顾客,具有姓名、联系方式等属性。
-
管理员(Admin):负责管理系统,具有查看和管理预订信息的权限。
-
- 确定对象间的关系:使用UML类图来表示对象模型,展示类之间的关系。例如:
-
房型(RoomType)与房间(Room)之间可能存在包含关系,即一个房型可以包含多个房间。
-
房间(Room)与预订(Reservation)之间可能存在关联关系,表示房间被预订的情况。
-
预订(Reservation)与用户(User)之间也存在关联关系,表示预订是由哪个用户发起的。
-
- 确定对象的属性:为每个类定义属性和方法。例如:
-
房型(RoomType)的属性可能包括房型名称、价格范围等;方法可能包括获取房型信息。
-
房间(Room)的属性可能包括房号、房型、状态(如空闲、已预订、入住中)等;方法可能包括更新房间状态、查询房间信息等。
-
预订(Reservation)的属性可能包括预订ID、房间ID、入住日期、离店日期、用户ID等;方法可能包括创建预订、取消预订等。
-
三、建立动态模型和功能模型
动态模型描述系统的动态行为,如用户如何与系统进行交互来预订房间。功能模型描述系统如何处理输入数据并产生输出,如用户输入预订信息后,系统如何记录这些信息并更新房间状态。
这些模型可以通过时序图、协作图、活动图等UML图表示。
四、反复分析与优化
面向对象分析是一个迭代的过程。在初步建立模型后,需要与用户和管理员进行沟通,获取反馈,并根据反馈对模型进行反复分析和优化。可能需要调整类的结构、属性和方法,以确保模型能够准确反映问题域的实际情况并满足用户需求。
五、生成文档
最后,需要生成相应的文档来记录分析结果,如软件需求规格说明书、设计文档等。这些文档将作为后续设计和开发工作的基础。
以上就是一个面向对象系统分析的具体案例——酒店订房系统。通过这个案例,我们可以看到面向对象系统分析的过程是如何通过识别对象、建立模型、定义属性和方法以及反复迭代来逐步细化系统需求的。