结构化方法
- 结构化分析
- 结构化分析模型
- 数据流图
- 结构化分析过程
- 需求规格说明书
- 需求验证
- 结构化设计
- 总体设计
- 体系结构设计
- 接口设计
- 数据设计
- 详细设计
- 详细设计工具
- 软件设计规约
结构化分析
结构化方法是一种特定的软件开发方法学。
结构化方法就软件需求分析而言,即:系统化地使用问题域术语,给出该问题的模型(即“系统必须做什么”的一个估算)。从问题域映射(分析)到需求,得到该系统的概念模型或称系统的需求规约
需求分析的目标
对需求陈述进行分析,解决其中的歧义、不一致等问题,以系统化的形式表达用户的需求,即给出问题的形式化或半形式化的描述(称为系统的概念模型,或系统的需求规约或需求规格说明)。作为开发人员和客户间技术契约的基础,并作为而后开发活动的一个基本输入。
实现软件需求分析的目标对方法学的需求
- 提供一组术语(符号),指导需求抽象中需要关注的主要。方面,并用于表达分析中所使用的信息。这些术语形成一个特定的抽象层,即需求层。
- 依据这些术语所形成的“空间”,给出表达模型的工具,支持表达系统功能形态。
- 给出过程指导,以支持系统化地使用相关信息建造系统模型。
结构化分析模型
数据流图
数据流图(Data Flow Diagram):简称DFD,是表达系统功能模型的工具。它是一种描述数据变换的图形工具,从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。它包含的元素可以是数据流、数据存储、加工、数据源和数据潭等。它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。
数据流图也称为气泡图。DFD是系统设计自上而下方法中使用的一种设计工具。
一个抽象层是由一组确定的术语定义的,为支持需求分析中有关要使用的那些信息的表达,结构化分析方法给出了以下五个术语/符号:
其中:
- 数据流、数据存储–支持数据抽象,
加工–支持过程/功能的抽象,用于表达系统
内涵. - 数据源、数据潭一支持系统边界抽象, 用
于表达系统外延. - 是完备的。
数据字典
用于定义数据流和数据存储的结构,并给出构成所给出的数据流和数据存储的各数据项的基本数据类型。
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。简而言之,数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。
数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。
逻辑操作符
操作符 | 含义描述 |
---|---|
= | 等价于(定义为) |
+ | 与(顺序结构) |
{} | 重复(循环结构) |
[|] | 或(选择结构) |
() | 任选 |
m…n | 界域 |
判定表或判定树
定义加工小说明,描述加工“做什么”,即加工逻辑,也包括其它- -些与加工
有关的信息,如执行条件、优先级、执行频率、出错处理
等。
- 结构化自然语言,适用于加工的输入数据和输出数据之间的逻辑关系比较简单的加工描述
- 判定表,适用于加工的输入数据和输出数据之间的逻辑关系比较复杂的加工描述。
- 判定树,适用于加工的输入数据和输出数据之间的逻辑关系比较复杂的加工描述。
结构化分析过程
- 建立系统的功能模型——使用的工具为数据流图DFD
首先:建立系统环境图(顶层数据流图),确定系统边界
继而:自顶向下,逐步求精,建立系统的层次数据流图 - 建立数据字典——使用的工具为结构符:+、|、{ }等
定义数据流
定义数据存储
定义数据项 - 给出加工小说明:集中描述一个加工,“做什么”,即加工逻辑,也包括其它一-些与加工有关的信息,如执行条件、优先级、执行频率、出错处理等。
描述一个加工,一般遵循如下模版:
- 加工编号:给出加工编号
- 加工名:给给出该加工的标识
- 输入流:给给出该加工的所有输入数据流
- 输出流:给给出该加工的所有输出数据流
- 加工逻辑:给采用结构化自然语言或判定表或判定树等工具,给出该加工输入数据和输出数据之间的关系
建模中应注意的问题
结构化分析方法是一-种半形式化的规约方法,给出了一组特定的术语表和标准化的表达格式-数据流图,在表达,上均必须遵循一些约定,即应以一种准确和一致方式使用之。
例如:
- 加工:其标识应使用领域术语,采用动宾结构;
必须有输入和输出; - 数据流:其标识应使用领域术语,采用名词或名词短语;
特别,应注意模型平衡问题和信息组织的复杂性控制问题,
模型平衡
- 父图和子图的边界—致问题,即它们应有相同的边界;
- 数据流图中的数据流与数据字典的一-致问题,即每个数据流和数据存储必须在数据字典中予以定义数据流图中的“叶”加工(最低层)与小说明的一致问题,即必须给出“叶”加工的说明
- 小说明和数据流图的图形表示一-致问题,即在小说明中必须说明“输入数据流"如何使用,必须说明如何产生“输出数据流";必须说明如何选取、使用、修改“数据存储’
信息组织复杂性控制
- 上层数据可以“打包”,上、下层的数据流对应关系在数据字典中给出,但包内数据流的性质(输入、输出)必须一致。
- 一幅图中的图元个数应控制在7+/-2以内
- 与每一加工相关的数据流的数目应适中(与层次有关)
- 分析数据内容,确定是否所有的输入信息都用于
产生输出信息; - 分析加工,确定一个加工所产生的输出,是否都
能由该加工的输入信息导出
需求规格说明书
XXX系统需求规格说明书
1.引言1.1编写目的说明编写本需求规格说明书的目的1.2背景说明(1)给出待开发的软件产品的名称;(2)说明本项目的提出者、开发者及用户;(3)说明该软件产品将做什么,如有必要,说明不做什么1.3术语定义1.4参考文献
2.概述2.1功能概述,叙述待开发软件产品将完成的主要功能。2.2约束叙述对系统设计产生影响的限制条件,并对下一节中所述的某些特殊需求提供理由,如管理模式、硬件限制、安全等。
3.数据流图与数据字典及加工说明3.1数据流图3.1.1数据流图1(1)画出该数据流图(2)加工说明(3)数据流说明3.2数据字典3.2.1文件说明3.2.2数据项说明
4.接口4.1用户接口4.2硬件接口4.3软件接口
5.性能需求5.1精度逐项说明对各项输入数据和输出数据达到的精度5.2时间特征定量说明本软件的时间特征,如响应时间更新处理时间、5.3灵活性说明本软件所具有的灵活性,即当用户需求有某些变化时(如操作方式、运行环境、时间特征等),本软件的适应能力。
6.属性6.1可使用性规定某些需求,如检验点、恢复方式和重启动性,以确保软件可使用。6.2保密性规定保护软件的要素6.3可维护性6.4可移植性
7.其他需求7.1数据库7.2操作7.3故障及处理
需求验证
有关SRS ( Software Requirements Specification)内容方面:
- 正确性:指的是SRS中陈述的每个需求都表达了将要构造的系统的某个要求。
- 无二义性:指的是SRS中陈述的每个需求都只有一种解释。
- 完整性:若一个SRS具有以下三个特性,则它是完整的:
未来系统所做的任何事情都包含在SRS的陈述中;
未来系统响应所有可能的输入(包括有效和无效);
SRS中没有被标识为“待定”的内容。 - 可验证性:SRS中陈述的每个需求都是可验证的一即当且仅当存在一一个有限代价的过程(人工或机器可以检查构造的软件产品是否符合用户的需求。
任何二义性必然导致不可验证性
任何不可度量的量,如“通常”或“时常”等
任何等同于停机问题的需求是不能被验证的,如“程序将不
进入一个无限循环”等同于停机问题,因而是不可验证的。 - 一致性:SRS中陈述的需求没有与以前的文档发生冲突;SRS中陈述的各个需求之,间没有发生冲突。
- 可理解性:有关SRS格式与风格方面
- 可修改性:指的是SRS的结构和风格使任何对需求的必要修改都易于完整、一致的进行。
- 可被跟踪性:指的是SRS中的每个需求的出处都是清楚的,这意味着SRS中包含对前期支持文档的引用表。
- 可跟踪性:指的是SRS的书写方式有助于对其中陈述的每个
需求进行引用。 - 设计无关性:指的是SRS不暗示特定的软件结构和算法。
- 注释:向开发机构提供了每个需求是否重要的指导意见。
如: E (Essential)、D (Desirable)或0 (Opti onal)。
结构化设计
定义:一种软件开发活动,定义实现需求规约所需的软件结构
结构化软件设计是一种面向数据流的方法
目标是建立系统软件模型、建立软件体系结构和详细处理算法、产生设计规格说明书
设计目标:依据需求规约,在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法,产生设计规格说明书.
即:要回答如何解决问题一给出软件解决方案
结构化设计分为:
- 总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。包括体系结构设计、接口设计、数据设计。
- 详细设计:详细描述模块。包括模块和内部设计(算法和数据结构)。
启发规则是软件结构设计优化准则,软件概要设计的任务就是软件结构的设计,为了提高设计的质量,必须根据软件设计原理设计软件,利用启发规则优化软件结构。
- 改进软件结构提高模块独立性
- 模块规模适中
- 适当控制深度、宽度、扇出、扇入
- 模块的作用域应该在控制域之内
- 力争降低模块接口的复杂程度
- 设计单入口单出口的模块7.模块功能可预测
总体设计
实现软件设计的目标对结构化设计方法的需求
(1)提供可体现“原理/原则”的一组术语(符号),形成一个特定的抽象层,用于表达设计中所使用的部件。
(2)依据术语所形成的“空间”,给出表达软件模型工具。
(3)给出设计的过程指导。
体系结构设计
定义软件模块及其之间的关系,从分析模型(如数据流图)导出。
模块: 一种可独立标识的软件成分。
调用: 模块间的一种关系,某一模块依赖其他模块实现其功能
模块化基本原则:高内聚,低耦合
模块结构图(MSD):表达软件系统的静态结构。
总体设计分为三个阶段:
- 第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。根据穿越系统边界的数据流初步确定系统与外部的接口。
- 第二阶段:精化设计。依据模块“高内聚低耦合”的原则,精化初始的模块结构图,并设计其中的全局数据结构和每一模块的接口。
- 第三阶段:设计复审阶段,对前两个阶段得到的高层软件结构进行复审,必要时还可能需要对软件结构做一些精化工作。
变换设计:复审并精化需求模型;确定输入、变换、输出三部分的边界;系统模块结构图;自顶向下,逐步求精。
接口设计
包括外部接口设计和内部接口设计:
- 外部接口设计依据分析模型中的顶层数据流图
- 外部接口包括:
用户界面
目标系统与其他硬件设备、软件系统的外部接口; - 内部接口是指系统内部各种元素之间的接口。
接口设计
模块或软件构件间的接口设计;软件与其他软硬件系统之间的接口设计;软件与人(用户)之间的交互设计。
系统的接口设计(包括用户界面设计及与其他系统的接口设计)是由穿过系统边界的数据流定义的。在最终的系统中,数据流将成为用户界面中的表单、报表或与其他系统进行交互的文件或通信。
数据设计
根据数据字典来确定软件涉及的文件系统的结构及数据库的表结构
确定使用的数据库:关系型;非关系型。
确定数据结构
详细设计
定义每一个模块,确定数据结构和操作,产生详细设计文档
详细设计工具
伪代码
程序流程图
PAD图
N-S图
判定表和判定树
软件设计规约
软件设计规约对软件的组织或其组成部分的内部结构的描述,满足系统需求规约所指定的全部功能及性能要求。
1.引信1.1编写目的说明编写本软件设计说明书的目的。1.2背景说明(1)给出待开发的软件产品的名称;(2)说明本项目的提出者、开发者及用户;(3)说明该软件产品将做什么,如有必要,说明不做什么。,1.3术语定义列出本文档中所用的专门术语的定义和外文首字母组词的原词组。.1.4参考资料列出本文档中所引用的全部资料,包括标题、文档编号、版本号、出版日期及出版单位等,必要时注明资料来源。
2.总体设计2.1需求规定说明对本软件的主要输入、输出、处理的功能及性能要求。2.2运行环境简要说明对本软件运行的软件、硬件环境和支持环境的要求。2.3处理流程说明本软件的处理流程,尽量使用图、文、表的形式。2.4软件结构在DFD图的基础_上,用模块结构图来说明各层模块的划分及其相互关系,划分原则上应细到程序级(即程序单元),每个单元必须执行单独一个功能(即单元不能再分了)。
3.运行设计3.1运行模块的组合说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块的组合,说明每种运行所经历的内部模块和支持软件。3.2运行控制说明各运行控制方式、方法和具体的操作步骤。
4.系统出错处理,4.1出错信息简要说明每种可能的出错或故障情况出现时,系统输出信息的格式和含义。4.2出错处理方法及补救措施说明故障出现后可采取的措施,包括:(1) 后备技术。当原始系统数据万一失时启用的副本的建立和启动的技术,如周期性的信息转储;(2)性能降级。使用另一个效率稍低的系统或方法(如手工操作、数据的人工记录等),以求得到所需结果的某些部分;(3)恢复和再启动。用建立恢复点等技术,使软件再开始运行。
5.模块设计说明以填写模块说明表的形式,对每个模块给出下述内容:(1)模块的一般说明,包括名称、编号、设计者、所在文件、所在库、调用本模块的模块名和本模块调用的其他模块名;(2)功能概述; (3)处理描述,使用伪码描述本模块的算法、计算公式及步骤;(4)引用格式;(5)返回值;(6)内部接口,说明本软件内部各模块间的接口关系(7)外部接口(8)用户接口
附:模块说明表