1. 结构化分析的历史
结构化分析是许多结构化方法中的一部份。“结构化分析是系统分析、设计及编程技术的组合,其目的是为了处理1960至1980年代软件开发所遇到的问题,这段期间多半是用COBOL和Fortran语言开发,后来也使用C语言及BASIC,也没有将需求及设计文件化的技术。随着系统越来越大也更加复杂,信息系统的发展也变得越来越困难。”为了方便管理大而复杂的系统,演进出下列的结构化方法。
自1967年起出现了许多的结构化方法: 结构化编程:由艾兹格·迪杰斯特拉在1967年提出-《GOTO陈述有害论》。 逐步设计(Stepwise design):由尼克劳斯·维尔特在1971年提出。 1972年出现的Nassi-Shneiderman图。 1974年提出的Warnier/Orr图-“Logical Construction of Programs”。 1974年提出的HIPO-IBM的层次化输入-处理-输出图。 结构化设计:由赖瑞·康斯坦丁、爱德华·尤登及韦恩·史帝文斯在1975年提出。 杰克逊结构化程序设计:由迈克尔·安东尼·杰克逊在1975年提出。 结构化分析:约在1978年由汤姆·狄马克及尤登等人提出。 结构化分析及设计技术(SADT):由道格拉斯·T·罗斯发展。 尤登结构化方法:由爱德华·尤登提出。 结构化分析及系统规格(Structured Analysis and System Specification):由汤姆·狄马克在1979年提出。 结构化系统分析及设计方法 (SSADM):最早是由英国商务办公室在1983年提出。 以结构化分析及设计技术为基础的IDEF0,由道格拉斯·T·罗斯在1985年提出。 Hatley-Pirbhai模型:在 Derek J. Hatley及Imtiaz A. Pirbhai于1988年所着的《Strategies for Real-Time System Specification》中定义。 信息工程:约在1990年代由克莱夫·芬克尔斯坦提出,后来因詹姆斯·马丁的推广而广为人知。 依照Hay在1999年提出的定义:“信息工程是1970年代提出许多结构化技术的延伸。先由结构化编程进展到结构化设计,然后进展到结构化系统分析。这些技术使用的图也所不同:结构化设计中使用结构图,而结构化系统分析使用数据流程图。二者都可以帮助程序开发者及用户的沟通,并且提升程序分析者及设计者的纪律。1980年起开始有工具可以自动绘制这类的图面,并追踪数据字典中的内容。”在电脑辅助设计及电脑辅助制造(CAD/CAM)名词广为使用之后,上述工具的使用也称为电脑辅助软件工程(CASE)。
2. 结构化工作分析方法
结构化工作分析方法包括职位分析问卷法(PAQ)、美国劳工部工作分析程序和功能性工作分析方法。
具体来讲:
1)职位分析问卷法(PAQ)。
职位分析问卷是由麦考密克、珍纳尔和米查姆设计的。它围绕任职者进行信息收集,以对任职者从事工作需要进行的活动进行统计分析为基础。
①职位分析问卷的项目。
职位分析问卷由194个项目或者职位要素构成,这些项目可分为六个方面:信息输入、心理过程、工作输出、人际活动、工作情景与职务关系以及其他方面。
②职位分析问卷的评分标准。
PAQ给出了6个评分标准:信息使用度、耗费时间、适用性、对工作的重要程度、发生的可能性以及特殊计分。
③职位分析问卷的优缺点。
它真正的优势在于,问卷的实施者可以根据是否负有决策/沟通/社会方面的责任、是否执行熟练的技能性活动、是否伴随有相应的身体活动、是否操纵汽车/设备和是否需要对信息进行加工这五个基本维度对工作进行等级划分,对于每一项工作可以分配到一个量化的分数。职位分析问卷的不足之处在于没有对职位的特定工作活动进行描述,且可读性不强。
2)美国劳工部工作分析程序。
它是由美国劳工部所采用的工作分析方法,核心是对于每一项工作都按照任职者和信息、人、物三者之间的关系来进行等级划分。其基本程序为
①清理出任职者在信息、人、物这三个维度上有哪些基本活动,并予以归纳总结;
②根据目标职位的任职者在理论上需要哪个层次的活动,并赋予相应的分数;
③这三项的分的总和就成为此项工作的等级划分的基础。
(3)功能性工作分析方法。
功能性工作分析方法不仅仅是依据信息、人、物三方面来对工作进行分类,它还考虑以下四个因素:
①在执行工作时需要得到多大程度的指导;
②在执行工作时需要运用的推理和判断能力应达到什么程度;
③完成工作所需要具备的数字能力有多高;
④执行工作时所要求的口头及语言表达如何。
结构化分析方法(Structured Method,结构化方法)是一种软件开发方法,一般利用图形表达用户需求,强调开发方法的结构合理性以及所开发软件的结构合理性。
结构化分析方法_网络
3. 结构化分析方法的主要特点是什么
1.结构化分析方法简单、清晰,易于学习掌握和使用。2.结构化分析的实施步骤是先分析当前现实环境中已存在的人工系统,在此基础上再构思即将开发的目标系统,这符合人们认识世界改造世界的一般规律,从而大大降低了问题的复杂程度。目前一些其它的需求分析方法,在该原则上是与结构化分析相同的。3.结构化分析采用了图形描述方式,用数据流图为即将开发的系统描述了一个可见的模型,也为相同的审查和评价提供了有利的条件。从上到下把大问题分解成若干个小问题,然后分别解决工具:CASE ,MICROSOFT VISIO
4. 结构化分析方法
结构化分析方法(Structured Method,结构化方法)是一种软件开发方法,一般利用图形表达用户需求,强调开发方法的结构合理性以及所开发软件的结构合理性。
主要用于分析需求,形成需求规约结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正确的原理和技术为支撑,以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。
其基本思想主要是把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。而它的基本要点是自顶向下、逐步求精、模块化设计、结构化编码。
5. 结构化分析
“ 软件开发方法 ”的含义:软件开发过程所遵循的办法和步骤。
软件开发活动的目的:有效地得到一个运行的系统及其支持文档(程序 + 文档),并且满足有关的质量要求(功能需求 + 非功能需求)。
“ 软件开发方法学 ”的含义: 规则、方法和工具的集成 ,即支持开发也支持以后的演化过程(交付运行后,系统还会变化;或者为了改错,或为了功能的递增)。
结构化方法是一种特定的软件开发方法学/一种系统化的软件开发方法,包括:
就 软件需求分析 而言,结构化分析指的是:系统化地使用 问题域 术语,给出该 问题的模型 (即“系统必须做什么?”的一个估算)。
一个抽象层是由一组确定的术语定义的,为支持需求分析中有关要使用的那些信息的表达,结构化分析方法给出了以下五个术语/符号:
数据流图是一种描述 数据变换 的图形工具,它包含的元素可以是数据流、数据存储、加工、数据源和数据潭等。
数据字典用于定义 数据流 和 数据存储 的结构,并给出构成所给出的数据流和数据存储的各数据项的基本数据类型。
数据字典还引入了一些 逻辑操作符 来定义 数据结构 。
示例:
描述加工“做什么”,即 加工逻辑 ,也包括其它一些与加工有关的信息,如执行条件、优先级、执行频率、出错处理等。
💡 描述一个加工,一般遵循如下模版:
“结构化自然语言”适用于加工的输入数据和输出数据之间的逻辑关系比较 简单 的加工描述。
示例:
“判定表”适用于加工的输入数据和输出数据之间的逻辑关系比较 复杂 的加工描述。
判定表:
示例:
“判定树”适用于加工的输入数据和输出数据之间的逻辑关系比较 复杂 的加工描述。
示例:
💡 顶层数据流图——0层数据流图——1层数据流图——...
“设计”的定义:一种软件开发活动,定义实现需求规约所需的软件结构。
设计目标:依据需求规约,在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法,产生设计规约说明书。
即: 回答如何解决问题——给出软件解决方案 。
结构化设计分为:
在总体设计层:
第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。 根据穿越系统边界的数据流初步确定系统与外部的接口 。
第二阶段:精化设计。依据模块“高内聚低耦合”的原则,精化初始的模块结构图,并 设计其中的全局数据结构和每一模块的接口 。
第三阶段:设计复审阶段,(设计人员与综合评审团队)对前两个阶段得到的高层软件结构进行复审,必要时还可能需要对软件结构做一些精化工作。
基于 模块化 原理—— 高内聚、低耦合 ;
模块化的概念和基本原则(略)。
耦合:不同模块之间相互依赖程度的度量。
内聚:一个模块之内各成分之间相互依赖程度的度量。
启发式规则:根据设计准则,从 长期的软件开发实践中,总结出来的规则 。
接口设计的分类:
系统的接口设计(包括用户界面设计及与其他系统的接口设计)是由穿过系统边界的数据流定义的。
在最终的系统中,数据流将成为用户界面中的表单、报表或与其他系统进行交互的文件或通信。
用户界面应具有的特性:可使用性、灵活性、可靠性。
“数据设计”:在设计阶段必须对要存储的数据及其格式进行设计。
文件设计的主要工作: 根据使用要求、处理方式、存储的信息量、数据的活动性以及所提供的设备条件等确定文件类型 ,选择文件媒体,决定文件组织方法,设计文件记录格式,并估算文件的容量。
以下几种情况适合选择 文件存储 :
详细设计的任务:定义每一模块。
详细设计中主要引入了三种动作控制结构(顺序、选择、循环)的术语/符号。
结构化程序设计的概念:设计具有如下结构的程序:
优点:
PDL 不仅可以作为设计工具,而且可作为注释工具,直接插在源程序中间,以保持文档和程序的一致性,提高了文档的质量。
缺点:
优点:
对控制流程的描绘很直观,便于初学者掌握。
缺点:
优点:
优点:支持自顶向下逐步求精的结构化详细设计,并且严格限制了控制从一个处理到另一个处理的转移。
当算法中 包含多重嵌套 的条件选择时,用程序流程图、盒图、PAD图、PDL都不易清楚描述,这时可以 选择判断表来表达复杂的条件组合与应做的动作之间的对应关系 。
判定树是判定表的变种,也能清晰地表达复杂的条件组合与应做的动作之间的对应关系,形式简单,但简洁性不如判定表,数据元素的同一个值往往需要重复写多次,而且越接近树的叶断重复次数越多。
一切系统都是由信息流构成的(其中包含一些必要的数据变换),每一个信息流都有自己的起点数据源,有自己的归宿数据潭,有驱动信息流动的加工,因此所谓信息处理主要表现为 信息的流动 。
结构化方法是一种系统化的软件系统建模方法,从测试的角度看,结构化方法是一种特定的建立验证和确认所需标尺的方法学,包括 结构化分析 和 结构化设计 。
结构化方法的抽象层,包括:
紧紧围绕 自顶向下 、 过程抽象 、 数据抽象 和 模块化 等基本原理/原则,给出了: 完备的符号 、 可操作的过程 和 易于理解的表示工具 。并提供了:控制信息组织复杂性的机制,例如逐层分解,数据打包等,以支持将问题空间的一个问题映射为解空间的一个解。
6. 结构化分析方法的基本手段是什么
结构化分析方法(Structured Method,结构化方法)是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。
结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。
它的设计原则包括:
使每个模块执行一个功能(坚持功能性内聚)
每个模块用过程语句(或函数方式等)调用其他模块
模块间传送的参数作数据用
模块间共用的信息(如参数等)尽量少
基本实现手段如下:
一: 数据流图
含义
数据流图是SA方法中用于表示逻辑系统模型的一种工具,它从数据传递和加工的角度,以图形的方式来刻画数据流从输入到输出的变换过程。
(1)、元素
A、数据流。是由一组固定成分的数据组成,箭头的方向表示数据的流向,箭头的始点和终点分别代表数据流的源和目标。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有合适的名字,以反映数据流的含义。
B,外部实体。代表系统之外的实体,可以是人、物或其它系统软件,他指出数据所需要的发源地或系统所产生的数据归属地。
C,对数据进行加工处理。加工是对数据进行处理的单元,它接受一定的数据输入,对其进行处理,并产生输出。
D、数据存储。表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等。
(2) 分层数据流图
对于一个大型系统,如果在一张数据图上画出所有的数据和加工,则会使得数据流图复杂而难以理解,为了控制复杂性,结构化分析法采用数据流图分层技术。一套分层的数据流图由顶层、底层和中间层组成。
(3)保持数据守恒
(4)加工细节隐蔽
二、数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素定义的集合。数据字典是结构方法的核心。数据字典有以下几个条目:数据项条目、数据流条目、文件条目和加工条目。
三、判定表
有些加工的逻辑用语形式不容易表达清楚,而用表的形式则一目了然。如果一个加工逻辑有多个条件、多个操作,并且在不同的条件组合下执行不同的操作,就可以使用判定表来描述。
四、判定树
判定树和判定表没有本质的区别,可以用判定表表示的加工逻辑都可以用判定树来表示。
五、结构化语言
采用一种介于自然语言和形式化语言之间的结构化语言来描述加工逻辑,既可以像自然语言那样最方便,也可以像形式化语言一样能够精确描述事物,且被计算机易于处理。
六、E-R图
E-R图包含实体、关系和属性等3种成分。这三个成分来理解现实问题,接近人们的思维方式。
注意事项:
一,命名。
二,画数据流而不是控制流。
三,一般不画物质流。
四,每个加工至少有一个数据流和一个输出数据流。
五,编号
六,保持父图和子图的平衡
七,数据流图的一致性
八,提高数据流图的易懂性
7. 简述结构分析方法基本手段和基本策略
结构化分析方法的基本手段是逐层分解,而数据流图则是描述分解的基本手段.结构化分析方法能够长期被人们接受并采纳,主要是因为它有以下的特点:一、强调用户自始至终的积极参与 在系统分析阶段,用户始终积极参与,使得用户可以更多的了解新系统,并随时从业务和用户角度提出新的要求.另一方面也可使系统分析人员能更多的了解用户的要求,更深入的调查和分析管理业务,使新系统更加科学、合理.二、注重整体分析,层层落实 按系统的观点,任何事情都是相互联系的有机整体.在分析时应首先站在整体的角度,将各项具体的业务或组织融合成一整体加以考察,首先确保全局的正确,然后再层层分解进行解剖分析.三、强调系统的适应性 各种事物都是运动和变化的.同理,在进行系统分析时,要充分预料到可能会发生的变化,增强系统的适应性,以应付各种各样的变化.这些变化主要来自以下几个方面:1、系统外部环境的变化.如外部的组织机构发生了变化,将引起信息传递渠道变化;上级主管部门需要的信息发生变化,则引起输出和处理模块的变化.2、系统内部处理模式的变化.如系统内部组织机构、管理方式和工艺流程的改变,必将引起数据的收集、输入以及处理方式的变化.3、用户要求的变化.随着时间的推移、问题的深入、技术的发展,用户的要求也会随之变化.
8. 简述结构化分析方法的实现步骤
结构化分析的步骤如下:
①分析当前的情况,做出反映当前物理模型的DFD;
②推导出等价的逻辑模型的DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约.
9. 结构化分析方法
结构化分析方法(Structured Method,结构化方法)是:一种软件开发方法。
结构化设计的步骤如下:
①评审和细化数据流图;
②确定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,得到更为合理的软件结构;
⑥描述模块接口。