面向对象分析与设计课程学习之不同的分析与设计方法

来源:互联网 发布:mac预览图片快捷键 编辑:程序博客网 时间:2024/04/27 15:36

不同的分析与设计方法

一、功能分解法(function decomposition

1.以系统需要提供的功能为中心来组织系统。

2.首先定义各种功能,然后把功能分解为子功能。

3.对较大的子功能进一步分解,知道可给出明确的定义。

4.设计功能/子功能所需要的数据结构

5.定义功能/子功能之间的接口。

6.作为一种早期的建模方法,没有明确地区分分析与设计。

建模过程:

层层进行功能分解

 

功能分解法得到的系统模型

  由模块及其接口构成

 

优点与缺点:

1.直接地反映用户的需求,所以工作很容易开始。

2.不能直接地映射问题域,很难检验结果的正确性。

3.对需求变化的适应能力很差。

4.局部的错误和修改很容易产生全局性的影响。

二、结构化方法

1.结构化分析(structured analysis , SA),又称数据流法,其基本策略是跟踪数据流,即研究问题域中数据如何流动,以及在各个环节上进行何种处理,从而发现数据流和加工。得到的分析模型是数据流图(DFD),主要模型元素是数据流、加工、文件及端点,外加处理说明和数据字典。

数据流图:

 

2.结构化设计(structured design , SD),与功能分解法基本相同,基于模块的概念建立设计模型,分为概要设计和详细设计。

a) 概要设计:确定系统中包含哪些模块以及模块之间的调用关系,得到模块结构图(MSD)。

b) 详细设计:描述每个模块内部的数据结构和操作流程。

c) 结构化方法的优缺点

i. 优点:强调研究问题域,并且有严格的法则。

ii. 缺点:仍然是间接映射问题域;分析与设计的概念不一致,从分析到设计的过渡比较困难;数据流和加工的数量太多,引起分析文档的膨胀。

三、信息建模法(information modeling

1.由实体-关系法(E-R方法)发展而来。

2.核心概念是实体和关系。实体描述问题域中的事物,关系描述事物之间在数据方面的联系,都可以带有属性。

3.发展之后的方法也把实体称作对象,并使用了类型和子类型的概念,作为实体(对象)的抽象描述。

 

4.信息建模法已经很接近面向对象方法,因此有的文献也把它称为一种面向对象方法,但有一下差别:

a) 强调的重点是信息建模和状态建模,而不是对象建模

b) 实体中只有属性没有操作

c) 只有属性的继承,不支持操作的继承

d) 没有采用消息通讯

四、面向对象方法

面向对象的分析(OOA

面向对象的设计(OOD

运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统。

把问题域中的事物抽象为对象,作为系统的基本构成单位,其属性和操作刻画了事物的静态特征和动态特征——完整地刻画了问题域中事物。

用类作为对象的抽象描述,建立它们之间的继承、聚合、关联、消息等关系——如实地表达了问题域中事物之间的各种关系。

封装、继承、聚合、关联、消息通讯等原则符合人类的日常思维——使系统的复杂性得到控制。

不同的建模方法,体现于

从不同的概念出发来认识问题域

用不同的概念进行系统构造

系统对现实世界的映射方式不同

 

不同的方法对同一实例(电话安装业务系统)的不同效果

结构化分析——数据流和加工

 

问题:

不是直接映射问题域,与事物相关的数据和操作不是围绕这些事物来组织的,而是分散在数据流和加工中;

经常发生信息膨胀——模型中的多个数据流,实现中其实只是一项数据:分析模型难以与设计模型及源程序对应。

面向对象方法——对象及其关系

 

直接映射了问题域中的实际事物;能够与程序形成良好的对应。

1.什么是OOA

a) 顾名思义,面向对象的分析(OOA),就是运用面向对象方法进行系统分析。

b) 首先,OOA是分析,是软件生存周期的一个阶段,具有一般分析方法共同具有的内容、目标及策略;

c) 但是,它强调运用面向对象方法进行分析,用面向对象的概念和表示法表达分析结果。

d) 基本任务:运用面向对象的概念对问题域进行分析,将问题域中与系统责任有关的事物抽象为系统中的对象,定义这些对象的属性与操作,以及它们之间的各种关系。

e) 最终目标:建立一个满足用户需求、直接映射问题域的OOA模型。

2.什么是OOD:不同时期有不同内容和特点

a) 早期(80年代末期之前)OOD的特点

i. 不是基于OOA的,大多基于结构化分析结果(数据流图)

ii. 是OO编程方法的延伸,多数方法与编程语言有关,特别受Ada影响很大

iii. 不是纯OO的,对某些OO概念(如继承)缺少支持,掺杂一些非OO概念(如数据流、包、模块等)

iv. 不是只针对生存周期的设计阶段,OOD中的“D”——指的是DesignDevelopment,多少涉及分析问题(如识别问题域的对象),但很不彻底

v. 早期的OOD可看做现今OOA&D方法的雏形

b) 现今(90年代以后)OOD的特点:

i. 以面向对象的分析为基础,一般不依赖结构化分析。

ii. 与OOA方法共同构成一种OOA&D方法体系。OOAOOD采用一致的概念与原则,但属于软件生存周期的不同阶段,有不同的目标及策略。

iii. 较全面地体现面向对象方法的概念与原则。

iv. 大多数方法独立于编程语言,通过面向对象的分析与设计所得到的系统模型可以由不同的编程语言实现。

c)定义:面向对象的设计(OOD)就是在OOA模型基础上运用面向对象方    法进行系统设计,目标是产生一个符合具体实现条件的OOD模型。

3.OO方法的主要优点

1)软件建模面临的挑战

A.问题域和系统责任复杂性日益增长

  问题域(problem domain):被开发的系统的应用领域,即在现实世界中由这个系统进行处理的业务范围。

  系统责任(system responsibilities):所开发的系统应该具备的职能。随着硬件性能的提高和价格的下降,软件系统所面临的问题域和系统责任越来越复杂,因此系统也越来越庞大。

B.交流问题

  软件系统的开发需要各类人员之间频繁交流。领域的多样性使软件工程中的交流问题比与其他工程更为突出。

  有效的交流需要一种彼此都能理解的共同语言,否则将使彼此的思想难以沟通,很容易隐藏下许多错误。

C.需求的不断变化

  用户因素,竞争因素,经费因素……

 

D.软件复用的要求

  复用级别提高——分析与设计结果复用

  要求分析与设计模型的基本成分可以在多个系统中复用

(2)面向对象方法的优势

  A.对问题域和系统责任的复杂性具有较强的处理能力

从问题域中的实际事物出发来构造系统模型,使系统模型能直接地映射问题域;继承、封装、聚合等概念使系统的复杂性得到有效的控制。

  B.提供了便于各类相关人员交流共同语言

使用与问题域一致的概念及术语,体现人类的日常思维方式,为改进各类人员之间的交流提供了最基本的条件。

  C.对需求变化具有比较强的适应性

按封装原则把系统中最容易变化的因素隔离起来,系统的各个单元成分之间接口很少,把需求变化所引起的影响局部化。

  D.为实现分析与设计级别的软件复用提供了有力支持

OO方法的封装、继承、聚合等原则,对象的完整性、独立性以及与问题域的良好对应,使之非常有利于软件复用。

  E.贯穿软件生存周期全过程的一致性

OOA开始使用与问题域一致的概念、词汇、原则及表示法,这种一致性保持到设计、编程、测试、维护等各个阶段,对于整个软件生存周期的开发、维护及管理活动都具有重要的意义。

4.几种典型的OO方法

 

方法的异同体现于:

概念、表示法、系统模型、开发过程、可用性、技术支持等方面

Booch方法

 

 

特点:思想活跃,开拓与创新,可操作性不够强,类图与对象图并存。

Coad/Yourdon方法

 

        

特点:概念简练,过程清晰;强调概念的一致性;过程指导不够具体。

Jacobson方法(OOSE

提出use case(用况)的概念来描述用户需求

 

 

特点:通过用况描述用户需求;用交互图描述对象之间的交互;用况驱动的观点言之有过。

Rumbaugh方法(OMT

 

过程:分析(面向对象);系统设计(传统方法);对象设计(面向对象);实现

特点:概念严谨,阐述清楚;过程具体,可操作性强;包含了许多非OO的内容;提出若干扩充概念,偏于复杂。

 

0 0
原创粉丝点击