结构化方法(Structured Analysis and Structured Design,SASD)
结构化方法又称为面向功能的软件开发方法或面向数据流的软件开发方法
针对软件生存周期各个不同的阶段,有结构化分析、结构化设计和结构化编程等方法
结构化分析(Structured Analysis,SA)
SA 利用图形表达用户需求中的功能需求
使用的手段主要有数据流图(Data Flow Diagram,DFD)、数据字典、结构化语言、判定表以及判定树等
数据流图(DFD)由 4 种基本元素组成:数据流、处理/加工、数据存储和外部项
结构化分析具体的建模过程及步骤为明确目标、确定系统范围、建立顶层 DFD 图、构建第一层 DFD 分解图、开发 DFD 层次结构图、检查确认 DFD 图<br>
DFD 图需要满足规则:父图数据流必须在子图中出现;一个处理至少有一个输入流和一个输出流;一个存储必定有流入和流出;一个数据流至少有一端是处理端;模型表达的信息是全面的、完整的、正确的和一致的
数据字典(Data Dictionary)是一种标记用户可以访问的数据项和元数据的目录,是对系统中使用的所有数据元素定义的集合,包括数据项、数据结构、数据流、数据存储和处理过程
结构化设计(Structured Design,SD)
SD 是一种面向数据流的设计方法
以 SRS 和 SA阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程
SD 分为概要设计和详细设计两个阶段
概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系
概要设计使用系统结构图(Structure Chart,SC),又称为模块结构图,反映了系统的总体结构
详细设计的主要任务是为每个模块设计实现的细节
详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构
详细设计的表示工具有图形工具、表格工具和语言工具。图形有业务流图、程序流程图、问题分析图(Problem Analysis Diagram,PAD)、NS 流程图等
在 SD 中,模块是实现功能的基本单位,一般具有功能、逻辑和状态 3 个基本属性
耦合表示模块之间联系的程度
内聚表示模块内部各代码成分之间联系的紧密程度
模块分解中应遵循“高内聚、低耦合”的设计原则
结构化编程(Structured Programming,SP)
SP 通过顺序、分支和循环三种基本的控制结构可以构造出任何单入口单出口的程序
SP 强调:自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成
P 原则:程序=(算法)+(数据结构)。两者分开设计,以算法(函数或过程)为主
数据库设计(概念结构设计部分)
概念结构设计建立抽象的概念数据模型
通常采用实体-联系图(Entity Relationship Diagram,E-R 图)来表示
面向对象(Object-Oriented,OO)方法
面向对象的分析方法(Object-Oriented Analysis,OOA)
OOA 模型由 5 个层次(主题层、对象类层、结构层、属性层和服务层)和 5 个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成
OOA 的基本原则有抽象、封装、继承、分类、聚合、关联、消息通信、粒度控制和行为分析
OOA 的 5 个基本步骤:确定对象和类、确定结构、确定主题、确定属性、确定方法
面向对象设计方法(Object-Oriented Design,OOD)
在 OOD 中,数据结构和在数据结构上定义的操作算法封装在一个对象之中
类封装了信息和行为,是具有相同属性、方法和关系的对象集合的总称
类可以分为 3 种类型:
实体类,一般来说是一个名词,通常都是永久性需要存储的
控制类:是用于控制用例工作的类,控制对象(控制类的实例)通常控制其他对象或协调其他对象的行为,例如登录验证
边界类:用于封装在用例内、外流动的信息或数据流,例如窗口、通信协议、接口等
面向对象程序设计(Object-Oriented Programming,OOP)
OOP 以对象为核心,该方法认为程序由一系列对象组成
OOP 的基本特点有封装、继承和多态
封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作组装到一起
继承是指一个对象针对于另一个对象的某些独有的特点、能力进行复制或者延续
继承可以分为 4 类,分别为取代继承、包含继承、受限继承和特化继承
多态指同一操作作用于不同的对象,可以产生不同的结果
数据持久化与数据库
永久保存对象的状态,需要进行对象的持久化(Persistence),把内存中的对象保存到数据库或可永久保存的存储设备中
在多层软件设计和开发中采用持久层(Persistence Layer)专注于实现数据持久化,将对象持久化到关系数据库中,需要进行对象/关系的映射(Object/Relation Mapping,ORM)
逆向工程(Reverse Engineering)
逆向工程是通过分析已有的程序,寻求比源代码更高级的抽象表现形式(比如文档)的活动,是在不同抽象层级中进行的溯源行为
逆向工程得出的设计称为设计恢复(Design Recovery),但不一定能够抽象还原到原设计
重构(Restructuring)是在同一抽象层级中转换系统描述的活动。对逆向工程所形成的系统进行修改或重构,生成的新版本称为重构工程