个人总结,仅供参考,欢迎加好友一起讨论
系分 - (概念)结构化方法
结构化方法贯穿整个软件工程全部,可以单独细分出来作为某个软件工程环节的技术指引
结构化方法,由结构化分析(SA,Structured Analysis)、结构化设计(SD, Structured Design)、结构化程序设计(SP,Structured Programming)组成,它是一种面向数据流的开发方法。
结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
结构化设计是根据模块独立性准则、软件结构优化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
结构化程序设计使用3种基本控制结构构造程序,任何程序都可以由顺序、选择和重复3种基本控制结构构造。
结构化方法的核心思想是"自顶向下,逐步分解"。特别适合于数据处理领域的问题,但是不适合解决大规模的、特别复杂的项目,且难以适应需求的变化。
-
开发目标清晰化
保持与用户沟通,让用户了解工作进展,校对工作方向。
-
开发工作阶段化
每个阶段完成后,要进行评审,便于项目管理与控制。
-
开发文规范化
每个阶段完成后,按照要求完成相应文档,保证系统维护工作的便利。
-
设计方法结构化
自顶向下分解,进行分析与设计。根据设计要求先编写各个功能模块,自底向上实现。
结构化方法特点:
- 程序运行效率高
- 不适合需求经常变化的系统,适合需求稳定的系统设计,比如操作系统
- 开发周期长、难以适应需求变化、很少考虑数据结构
- 容易设计,便于理解
结构化分析(SA,Structured Analysis)
面向数据流进行需求分析,适合数据处理类型的软件。
- 自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。
- 经过逐层分解,每个最低层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。
结构化分析一般包括以下工具:数据流图(Data Flow Diagram,DFD)、数据字典(Data Dictionary,DD)、结构化语言、判定表、判定树。
结构化系统分析方法从总体上来看是一种强烈依赖数据流图的自顶向下的建模方法。它不仅是需求分析技术,也是完成需求规格化的有效技术手段。
结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
结构化分析应用范围:
- 客户对他们需求十分明确
- 业务过程定义的非常好,不会经常改动
结构化设计(SD,Structured Design)
结构化设计包括体系结构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。
在结构化方法中,模块化是一个很重要的概念,它将一个待开发的软件分解成为若干个小的简单部分–模块,每个模块可以独立地开发、测试。这是一种复杂问题的"分而治之"原则,其目的是使程序的结构清晰、易于测试与修改。
结构化设计根据SA方法中的数据流图建立一个良好的模块结构图(例如SC图或软件层次方框图);运用模块化的设计原理控制系统的复杂性,即设计出模块相对独立的,模块结构图深度、宽度都适当的,单入口单出口的,单一功能的模块结构的软件结构图或软件层次方框图。此方法提供了描述软件系统的工具,提出了评价模块结构图质量的标准,即模块之间的联系越松散越好,而模块内各成分之间的联系越紧凑越好。
结构化设计的目的是使程序的结构尽可能反映要解决的问题的结构。
结构化设计的任务是把需求分析得到的数据流图(DFD)等变换为系统结构图(SC)。
结构化设计一般分为概要设计和详细设计两个阶段。概要设计也称为结构设计或总体设计,主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图。详细设计的是为软件结构图(SC)中的每 一个模块确定采用的算法,模块内数据结构,用某种选定的表达工具(如N-S图等)给出清晰的描述。
结构化程序设计(SP,Structured Programming)
结构化程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是“面向过程”方法的改进, 结构上将软件系统划分为若干功能模块, 各模块按要求单独编程, 再由各模块连接, 组合构成相应的软件系统。 该方法强调程序的结构性, 所以容易做到易读, 易懂。 该方法思路清晰, 做法规范, 深受设计者青睐。
结构化程序设计采用自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。
结构化程序设计的原则可表示为:程序 = (算法) + (数据结构)。算法是一个独立的整体,数据结构(包含数据类型与数据)也是一个独立的整体。两者分开设计,以算法(函数或过程)为主。