结构化方法由结构化分析
、结构化设计
、结构化程序设计
构成,它是一种面向数据流的开发方法。
分类 | 说明 |
---|---|
结构化分析(SA) | 根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作 |
结构化设计(SD) | 根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计 |
结构化程序设计(SPD) | 使用 3 种基本控制结构构造程序,任何程序都可以由顺序、选择和重复 3 种基本控制结构构造。 |
结构化方法总的指导思想是自顶向下
、逐层分解
,它的基本原则是功能的分解与抽象
。
系统分析是一种问题求解技术,它将一个系统分解成各个组成部分,目的是研究各个部分如何工作、交互,以实现其系统目标。
系统分析的目的是为项目团队提供对触发项目的问题和需求的更全面的理解,因此强调业务问题方面,而非技术或实现方面。
系统分析的主要任务:是对现行系统进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需的资料,并提交系统方案说明书。
系统分析侧重于从业务全过程
的角度进行分析,主要内容有业务和数据的流程是否通畅、是否合理;数据、业务过程和组织管理之间的关系;原系统管理模式改革和新系统管理方法的实现是否具有可行性等。
系统分析报告,即系统方案说明书。
抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不太重要或非本质的方面。
抽象的最底层就是实现该软件的源程序代码
模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素。
模块是可组合、分解和更换的单元。
模块化:是指将一个待开发的软件分解成若干个小的简单部分一一模块,每个模块可独立地开发、测试,最后组装成完整的程序。
模块化的目的是使程序的结构清晰,容易阅读、理解、测试和修改。
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,在定义每一个模块时尽可能少地显露其内部的处理。
信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。
模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。
衡量模块独立程度的标准有两个:耦合性和内聚性。
系统总体结构设计是要根据系统分析的要求和组织的实际情况对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。
子系统结构设计的任务是确定划分后的子系统模块结构,并画出模块结构图。
模块是组成系统的基本单位,它的特点是可以组合、分解和更换。
根据功能具体化程度的不同,模块可以分为逻辑模块和物理模块。
模块的4个要素:输入和输出(外部特性)、处理功能(外部特性)、内部数据(内部特性)、程序代码(内部特性)。
模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,并不关心模块的内部。
模块结构图是结构化设计中描述系统结构的图形工具,由模块、调用、数据、控制信息和转接符号 5 种基本符号组成。
文档的多种作用:
抽象和分解是处理任何复杂问题的两个基本手段。
自顶向下的过程是分解的过程,自底向上的过程是抽象的过程。
结构化方法的分析结果:一套分层的数据流图、一本数据词典、一组小说明 (也称加工逻辑说明)、补充材料。
数据流图也称数据流程图(Data Flow Diagram,DFD),它是一种便于用户理解、分析系统数据流程的图形工具。
元素 | 图元 | |
---|---|---|
数据流 | 由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词反映数据流的含义 | |
加工 | 加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流 | |
数据存储(文件) | 用来表示暂时存储的数据,每个文件都有名字。流向文件的数据流表示写文件,流出的表示读文件 | |
外部实体 | 指存在于软件系统外的人员或组织 |
在 DFD 中,一个加工可以有多个输入数据流和多个输出数据流,此时可以加上一些扩充符号来描述多个数据流之间的关系。
星号(*) | 星号表示数据流之间存在“与”关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理:如果是输出流则表示加工结束将同时产生所有的输出数据流 |
加号 (+) | 加号表示数据流之间存在“或”关系。如果是输入流则表示其中任何一个输入数据流到达后就能进行加工处理:如果是输入流则表示加工处理的结果是至少产生其中一个输出数据流 |
异或(⊕) | 异或表示数据流之间存在“互斥”关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理: 如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的 |
每张图中加工个数大致控制在“7加减2”的范围内。
为了方便对图进行管理和查找,可以采用下列方式对 DFD 中的图和加工编号
父图与子图之间的平衡
子图内平衡
数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。其中,对加工的描述称为“小说明”,也可以称为“加工逻辑说明”
结构化设计(Structured Design,SD) 方法是一种面向数据流的设计方法,它可以与 SA 方法衔接。基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
结构化设计方法中用结构图(Structure Chart) 来描述软件系统的体系结构,指出一个软件系统由哪些模块组成,以及模块之间的调用关系。
第一步是建立一个满足软件需求规约的初始结构图,第二步是对结构图进行改进。
结构化方法本质上是一种功能分解方法。
功能模块的分解应满足自顶向下、逐步求精、信息隐蔽、高内聚低耦合等设计准则,
初始结构图往往存在一些不合理的设计(包括不合理的模块分解),因此,可根据设计准则对其进行改进。
在概要设计完成之后应书写设计规格说明,特别要为每个模块书写模块的功能、接口、约束和限制等,必要时可建立模块开发卷宗。
对设计结果及文档进行评审。
结构化设计是将结构化分析的结果 (数据流图) 映射成软件的体系结构 (结构图)。
可将数据流图分为变换型数据流图和事务型数据流图。
信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。具有这种特性的信息流称为变换流。变换流型的 DFD 可以明显地分成输入、变换 (主加工) 和输出三大部分。
信息沿着输入通路到达一个事务中心,事务中心根据输入信息 (即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。
变换分析是从变换流型的 DFD 导出程序结构图
第二级分解主要是设计中、下层模块.
建模以需求工程中确定的用户类别、可用目标、使用场景、业务环节等各类需求等为输入,产生如下 5 种主要的模型类型
内容模型给出由 WebApp 提供的全部系列内容,包括文字、图形、图像、音频和视频。
交互模型描述了用户与 WebApp 采用了哪种交互方式。交互模型由一种或多种元素构成,包括用例、顺序图、状态图、用户界面原型等。
导航模型为 WebApp 定义所有导航策略。
配置模型描述 WebApp 所在的环境和基础设施
包括:架构设计、构件设计、内容设计、导航设计、美学设计、界面设计。
模型-视图-控制器(Model-View-Controller,MVC) 结构是WebApp 基础结构模型之一,它将 WebApp 功能及信息内容分离。
WebApp 的内容结构(线性或非线性)也影响架构,因此设计内容体系结构。
内容体系结构着重于内容对象(诸如网页的组成对象) 的表现和导航的组织,通常采用线性结构、网格结构、层次结构、网络结构四种结构及其组合。
建立了 WebApp 的体系结构及其构件后,定义导航路径,使用户可以访问 WebApp 的内容和功能。
包括 4 个不同的框架活动:界面分析及建模、界面设计、界面构造和界面确认。
在进行用户界面设计时,几乎总会遇到以下 4 个问题:系统响应时间、帮助设施、错误信息处理、菜单和命令标记。
系统响应时间是指从用户开始执行动作到软件以预期的输出和动作形式给出响应这段时间。
系统响应时间包括两方面的属性:时间长度和可变性。
可变性是指相对于平均时间的偏差(最重要的响应时间特性)。
考虑帮助设施时需要在设计中解决以下问题:
出错信息和警告是指出现问题时系统反馈给用户的“坏消息”。
具备特征:
在提供命令或菜单标签交互时,必须考虑以下问题: