本文大部分知识来自于《UML和模式应用》
什么是分析
分析(analysis)强调的是对问题和需求的调查研究,而不是解决方案。
分析主要围绕着,信息系统的使用,它具备那些功能,具备哪些抽象元素。(需求分析,对需求的调查。面向对象分析,对领域对象的调查研究)。
举例说明:需求管理软件,他有那些功能?如何使用他?
解释:分析就是在一大堆需求文档中,找到我们需要调查的对象,在使用面向对象分析过程中,找到领域对象的过程
什么是设计
设计(design)强调的是满足需求的概念上的解决方案。(在软件方面和硬件方面)。
在做设计的时候,通常排斥底层或“显而易见”的细节。
但是,设计必须最终可以实现(如代码)来标识真实和完整的设计。(面向对象设计或数据库设计)
解释:设计就是指将分析出来的对象(或者领域对象),给出一个抽象的实现描述,但是不能给出太细节,例如给出接口定义,部署试图,特定计算算法。从而达到可以指导编码开发的程度。
分析和设计区别
有益的分析和设计可以概括为:做正确的事(分析)和正确的做事(设计)。
面向对象分析和设计
面向对象的分析
Object-oriented analysis过程中,强调的是在问题领域内发现和描述对象(或概念)。
例如:分布式文件管理系统中,文件,目录,服务器,用户等对象。
面向对象的设计
Object-oriented design过程中,强调的是定义软件对象以及他们如何协作以实现需求。
例如:分布式文件管理系统中,文件的属性(name,path,attributes)
最后在实现对象程序设计过程中,实现设计出来的对象,如Java的FileInfo
最简单的需求开发设计过程说明
主要过程如下:
- 定义用例。
- 定义领域模型。
- 定义交互图。
- 定义设计类图。
定义用例
用例主要是对情节的记录。用例是需求分析中常用工具。
举例:
五子棋,同色的五个棋子在一条线上的玩家获胜。
定义领域模型
面向对象分析的结果就是领域模型。领域模型是展示重要概念或对象。
他也被成为概念对象模型(conceptual object model)
举例:
如图所示:
(Player,Go Chess pieces, Game)的关系。
分配对象职责并绘制交互图
顺序图(sequencediagram UML的一种交互图)
所有操作都是通过Game这个类交互的。在真实世界是不存在这个对象的对象的。
定义设计类图
类图。是静态类图。是用来表示相关内容。
领域模型标识的是真实世界的类,设计视图是软件类。(注意在RUP中的,逻辑视图中类,并不是软件设计中的类,反而是开发视图)。