所以我们到这一步相当于就介绍了结构化的需求分析和结构化的设计。
那个结构化的这个方法我们来做一下总结,结构化方法的世界观是什么?
它看待事情的基本观点是,一切的系统都是由信息流构成的,大家看对吧?
我们的那个整个的顶层的数据流图对吧,就是说都是由信息流来构成的。
那么其中包括了一些必要的数据变换, 那每个信息流呢都有自己的起点-数据源,都有自己的归宿-数据潭,
有驱动信息流这个流动的这样加工,对吧?这个加工 对这个输入流进行处理,马上"啪",再扔出来一个这个输出数据流,所以
整个的这样一个大千世界都被看做是一个通过加工 来把流动的信息流来组织起来抽象的这样的一个模型。
所以这个里面我们就要来看说,整个的这样一个信息处理, 它表现为信息的流动,那么我们怎么对它
这样的一种世界观来去分析问题呢? 首先我们来看一下,我们采用了一些
基本的原则,比如说自顶向下,功能分解,对吧? 自顶向下功能分解的原则在我们的
结构化的需求分析里面,对吧?顶层数据流图往下层,往零层,往一层
的这个分解的时候,实际上都是对功能进行分解,对加工进行分解,从某种角度进行分解- ,对吧?
那这里面我们再来看一下我们虽然很多也采用了数据抽象,
也采用了过程抽象,也可以叫功能抽象还有模块化,
因为模块化和自顶向下功能分解都能理解,那什么叫过程抽象? 我举一个简单的例子,大家能够理解对吧?
开门对吧,我这个开 是一个动作,我这个开实际上包括可我走到这个门前,对吧?
这一步骤,我按了一下这个把锁,我再出去了。
我觉得这个,整个这几个动作连在一起
我实际上是用了开这样的一个动词去 概括了,这就是一个过程抽象。
实际上它暗含了一系列 明确的可控的这个步骤或者是操作。
那么数据抽象我们来想一想数据抽象这个门,对吧?
我们说开门嘛,这个,那这个门大家看,它既有
这个相当于,门就相当于组织结构,同时有门则相当于一个开启的方向,对吧?
同时,门整个采用什么样的材料去这个相当于制成的,包括们的宽度,高度等等,所以这些
都是作为一个门,这样的一个数据抽象给它概括了。
但是细节你是,这个相当于内部相当于去进行的,内部相当于去细化的。
所以在这里面我们来看一下,这个过程抽象和这个数据抽象我们 能映射到结构化的分析里面有什么?
结构化的设计里有什么?我们来看一下。
否则 你就学了,说老师讲了数据抽象,老师讲了过程抽象,是什么?不知道。
结构化的需求分析里面,我们大家来想一想。
数据流和数据存储属于什么? 属于功能抽象还是属于数据抽象? 数据抽象,对吧。
数据流和数据存储,那在这里面的加工或者叫变换,它属于什么?
过程抽象,对吧,它只是一个名字命名了,实际上内部的内涵,它是有限的什么? 操作步来构成的。
那么在这个里面我们来看一下那结构化的设计里面, 我们结构化的设计里面主要是体现了什么?
这个功能这样一个抽象,我们说的模块,对吧,每个模块,整个。
那模块内的整个的相应的要处理数据结构实际上属于什么?数据抽象的这样的一个概念, 所以这些大家有一个映射。
那模块化我的原则,为什么要系统实现模块化?
就是希望实现了什么?做到模块的的高内聚低耦合模块的功能独立,这样的话模块
能够为未来的服用,提供相应的这样一个基础或者支持,同时也帮助我们
把复杂的事物去什么?去这个通过模块化去给它什么?
简化它的什么?处理的工作量,对吧?
那么另一个就是结构化的这个方法,它是一种系统化的软件系统建模方法,它从测试的角度结-
构化的方法呢, 它也是一种特定的建立的验证和确认这样的一个
这个标尺的这样的一个方法学,所以结构化的方法可以分为需求分析层、 设计层和实现层。
比如说我们用这个相当于用 Pascal 或者说是 C 语言对吧,就可以
去来编程去实现我们的结构化的这样的一些什么?详细设计的这样的一个代码,对吧?只是说- 选择某种编程语言。
去把详细设计的那样的一个设计方案给它这个翻译了,解释成这个机器可执行的这样的代码。
所以结构化的方法希望实现问题空间和解空间的自顶向下的这样的一个映射。
那这个方法自顶向下,过程抽象,数据抽象,模块基本原则,
这是原则,同时呢相当于符号,对吧,结构化的需求分析,结构化的设计都有相应的这样一个- 符号和表示过程。
那另一个就是说它也提供了控制信息组织复杂性的机制。
比如说我们的逐层分解的这样的一个机制,我们说的数据,上层数据打包的这样一个机制,对- 吧?我们想一想
都是帮助我们来控制信息的组织的这种复杂性。
但是这里面,结构化的分析方法和设计方法大家感觉到它们的术语空间一致吗?
不一致,对吧?结构化的分析,术语空间是有五个,对吧。
数据源,数据潭,数据流,加工对吧?那个数据存储,那结构化的
设计里面就变成了模块对吧,以及模块之间的调用关系,所以这里面整个是不一致的。
所以在这里面,我们结构化的这个方法,存在的问题
我们来捕捉到底存在什么样的问题呢?因为在这里面,结构化设计里面,它是以过程数据等 这个相当于来去分析大千世界中的事物。
所以,过程和数据正是客观事物特别易变的性质。
所以你用易变的性质对这样的事物进行建模,它肯定是有它的什么? 有它的弱点,所以就是说造成了牵一发而动全身。
所以大家看, 我这个数据结构一变,相当于整个其他的这个东西相当于全都什么?
全都相应的变化,包括一个模块相当于,这个相当于变了整个可能,跟其他的模块相当于
全都有相应的这样的一个影响,因为它不是一个完全的这样的一个功能,独立的。
所以这个里面,就是说 解的结构没有保持原系统的结构,也就是说结构化的设计没有保持结构化的
分析的这样的原来的一个,结构化的分析也没有保持问题域中相当于应该原始问题的这样的一- 个特点。
所以造成了在逐步的转换的过程中,转换的困难,维护的困难,验证的困难。
所以结构化的这个,虽然这个相当于在 六七十年代起到了一个特别重要的作用,但是大家看现在来说
分析方法还是面向对象分析方法,更什么?更流行对吧,所以它更符合
人们认知大千世界的这样的一些特点。