一、结构化分析和设计
1.1.结构化分析(SA)
- 一种面向数据流的需求分析方法,利用图形表达用户的需求,常用工具数据流图、数据字典
- 数据流图(DFD)
- 用来描述数据流从输入到输出的变换流程
-
- DFD不同于程序流程图
- DFD可以表现大到整个系统,小到一个模块
- 分层数据流图
- 数据字典(DD)
- 对软件中的每个数据规定一个定义条目,以保持数据在系统中的一致性
- 数据项:只含一个数据,又称为数据元素
- 数据流:由多个相关数据项组成
- 数据文件(数据库)
1.2.结构化设计(SD)
- 是一种面向数据流的设计方法,以分析阶段产生的文档(数据流图、数据字典、软件需求说明书)为基础,逐步求精和模块化的过程。结构化设计通常可以分为概要设计和详细设计
- 概要设计
- 概要设计也称为结构设计或总体设计
- 概要设计的基本任务:设计软件系统结构,进行模块划分,确定每个模块的功能、接口、模块间的调用关系
- 概要设计工具:结构图、数据字典(DD)、判定树和判定表
- 详细设计:为每个模块设计其实现的细节
- 详细设计工具:
- 程序流程图
- 盒图(NS图)
- 问题分析图(PAD)
- 程序设计语言(PDL)
- 详细设计工具:
二、面向数据结构的设计
2.1.基本概念
- 根据输入/输出数据结构导出程序结构
- Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法
三、面向对象的分析与设计
3.1.基本概念
- 面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法
- 面向对象=对象(object)+类(classification)+继承(inheritance)+通信(communication with messages)
- 采用这四个概念开发的软件系统是面向对象的
3.2.对象(object)
- 对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位
- 属性(attribute)也称为状态或数据,用来描述对象的静态特征
- 操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务
- 封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的
3.3.类(class)
- 类是一组具有相同属性和相同操作的对象的集合
- 一个类中的每个对象都是这个类的一个实例(instance)
- 类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为
3.4.继承(inheritance)
- 继承是指特殊类(子类)的对象拥有其一般类(父类)的全部属性与服务
- 父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法
- 如果一个子类只有唯一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承
3.5.多态性
- 多态性(polymorphism)是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果
3.6.消息(message)
- 消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)
- 消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释执行
3.7.面向对象的优点
- 与人类习惯的思维方法一致
- 稳定性好
- 可重用性好
- 较易开发大型软件产品
- 可维护性好