软件工程 第六讲 结构化分析方法

合集下载

软件工程结构化方法

软件工程结构化方法

软件工程结构化方法
软件工程结构化方法是一种将软件开发过程分解为一系列阶段和活动,并通过定义一些规范和指导原则来提高开发效率和质量的方法。

结构化方法强调将软件开发过程中的复杂问题分解为更小的、易于管理的问题,并通过逐步建立、验证和集成这些解决方案来完成软件开发任务。

软件工程结构化方法的主要特点包括:
1. 模块化:将软件系统划分为一系列相互独立的模块,每个模块具有明确定义的功能和接口,便于开发和维护。

2. 抽象化:通过对问题进行抽象和概括,将系统需求转化为易于理解和实现的形式。

3. 清晰的设计和规范:使用建模技术和工具,如结构图、数据流图等,来描述系统架构和模块之间的关系,以及数据流和处理逻辑等。

4. 逐步开发和集成:通过逐步实现和验证各个模块的功能,逐步构建完整的软件系统。

5. 验证和测试:在每个开发阶段都进行验证和测试,确保功能的正确性和质量。

6. 文档化:对软件开发过程中的设计、开发、测试和维护进行详细的记录和文档化,以便后续的维护和改进。

软件工程结构化方法可以帮助软件开发团队更好地组织和管理软件开发过程,提高开发效率、质量和可维护性。

在实际应用中,常见的软件工程结构化方法包括结构化分析与设计方法(SA/SD)、结构化系统分析与设计方法(SSADM)、实体关系建模方法(ER模型)等。

第二章-系统分析—结构化分析方法

第二章-系统分析—结构化分析方法

1、结构化方法概述

主要思想:抽象与自顶向下的逐层分解 (控制复杂性的两个基本手段)
抽象:在每个抽象层次上忽略问题的内部复杂
性,只关注整个问题与外界的联系。 个最底层的问题都足够简单为止。
分解:将问题不断分解为较小的问题,直到每

抽象:从作为整体的软件系统开始(第一层),每一 抽象层次上只关注于系统的输入输出。 分解:将系统不断分解为子系统、模块…… 随着分解层次的增加,抽象的级别越来越低,也 越接近问题的解(算法和数据结构)。
1、结构化方法概述

一种面向数据流的传统软件开发方法,以 数据流为中心构建软件的分析模型和设计 模型。
结构化分析(Structured Analysis
分为:
简称SA) 结构化设计(Structuresd Design 简称SD) 结构化程序设计(Structured Programmin 简 称SP)
A
A
Process2
A
B
Process2
Process3
C
分层数据流图的审查

检查图中是否存在错误或不合理(不理想) 的部分
一致性:分层DFD中不存在矛盾和冲突 完整性:分层DFD本身的完整性,即是否有
遗漏的数据流、加工等元素 其他需要注意的问题
(1)分层数据流图的一致性

父图与子图平衡

任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应的加 工的输入/输出数据流保持一致

数据守恒
一个加工所有输出数据流中的数据,必须能从该加工的输入数据流中 直接获得,或者能通过该加工的处理而产生 多余的数据流:加工未使用其输入数据流中的某些数据项

结构化的分析方法

结构化的分析方法
(1)这样得到的多层DFD可清晰的反映整个数据加工的真实情况; (2)对于任何一层DFD来说,称它的上层为父图,下层为子图; (3)在多层DFD中,可以把顶层DFD,中间层DFD和底层DFD区分开来;
信息系统分析与设计
16
分层DFD示意图
信息系统分析与设计
17
绘制DFD的主要原则
• • • • 明确系统边界 自顶向下,逐步扩展 合理布局 DFD只反映数据流向,逻辑加工,数据存 储,不反映任何技术细节处理方式 • DFD绘制过程,用户参与原则
可行性分析
从经济、技术、社会等方面的 因素考察所要开发的系统的可 能性和必要性。 •功能性需求; •非功能性需求;主要包括性能,如处理 速度、吞吐量、响应时间等,安全性, 可靠性… 建立一个能够满足定义所描述的 用户需求模型,包括过程建模和 信息系统分析与设计 数据建模。
需求分析
系统建模
5
系统分析阶段的主要活动
信息系统分析与设计
18
(a)
பைடு நூலகம்
顶层图
(b)
第0层图
(c)
第一层图
(d)
第二层图
信息系统分析与设计 19
A
B
A
B
重复标记1
重复标记2 重复标记1
重复标记2
X
Y
信息系统分析与设计
X
Y
20
利用重复标记缩短箭线
用户
用户
用户
信息系统分析与设计
21
绘制DFD的主要步骤
(1)确定系统的外部项,也就是数据的源点和汇点;
成分的实际意义,避免空洞的名字
• 编号 按层给加工编号,编号表明该加工处于那一层,以及上下 层父图子图的关系

《结构化分析》PPT课件

《结构化分析》PPT课件
衡量工程价值的另一项经济指标是工程的纯收入,也 就是在整个生命周期之内系统的累计经济效益(折合成现 在值)与投资之差。这相当于比较投资开发一个软件系统 和把钱存在银行中(或贷给其他企业)这两种方案的优劣 。如果纯收入为零,则工程的预期效益和在银行存款一样 ,但是开发一个系统要冒风险,因此从经济观点看这项工 程可能是不值得投资的。如果纯收入小于零,那么这项工 程显然不值得投资。

每行成本 成本(元) 人力(人
(元/行)
月)
108
90720
9.1
54
65340
11.8
72
43200
4.4
33
14850
3.1
135
148500
13.7
362610
42.1
2. 任务分解技术
首先把软件开发工程分解为若干个相对独立的任务。 再分别估计每个单独的开发任务的成本,最后累加起来 得出软件开发工程的总成本。估计每个任务的成本时, 通常先估计完成该项任务需要用的人力(以人月为单 位),再乘以每人每月的平均工资而得出每个任务的成 本。
例如,修改库存清单系统两年以后可以节省4225.12元 ,比最初的投资(5000元)还少774.88元,第三年以后将 再节省1779.45元。774.88/1779.45=0.44,因此,投资 回收期是2.44年。
投资回收期仅仅是一项经济指标,为了衡量一项开发 工程的价值,还应该考虑其他经济指标。
纯收入
例如,上述修改库存清单系统,工程的纯收入预计是
9011.94-5000=4011.94(元)
4 可行性研究过程
典型的可行性研究过程有下述八个步骤:
1. 复查系统规模和目标
5. 导出和评价供选择的解法

结构化分析方法

结构化分析方法

结构化分析方法结构化分析方法是指通过对问题、系统或者事物进行系统性的分解和分析,以便更好地理解其内在结构和运行机制的一种分析方法。

结构化分析方法在工程、管理、信息技术等领域都有着广泛的应用,能够帮助人们更好地理解和解决复杂的问题。

下面将从几个方面对结构化分析方法进行介绍和分析。

首先,结构化分析方法的基本原理是将一个复杂的系统或问题分解为若干个相对简单的部分,通过对这些部分的分析和理解,再将它们整合起来,从而得到对整体系统或问题的深入理解。

这种分解和整合的过程有助于人们更好地把握问题的本质和关键因素,从而有针对性地进行解决和改进。

其次,结构化分析方法的核心工具包括了数据流图、结构图、层次分析法等。

数据流图是一种用来描述系统功能和数据流动的图表,通过对数据流图的绘制和分析,可以清晰地了解系统的功能和数据流动情况,有助于找出系统中存在的问题和改进的空间。

结构图则是用来描述系统结构和组成部分之间的关系的图表,通过结构图的绘制和分析,可以帮助人们更好地理解系统的内在结构和组成部分之间的相互作用。

层次分析法则是一种用来处理复杂决策问题的方法,通过对问题进行层次化的分解和比较,可以帮助人们更好地进行决策和优化。

再次,结构化分析方法的应用范围非常广泛,可以应用于各种领域和行业。

在工程领域,结构化分析方法可以用来对复杂系统进行分析和设计,帮助工程师更好地理解和改进系统。

在管理领域,结构化分析方法可以用来对企业的组织结构和业务流程进行分析和优化,帮助管理者更好地管理和决策。

在信息技术领域,结构化分析方法可以用来对软件系统进行分析和设计,帮助程序员更好地理解和开发系统。

最后,结构化分析方法的优势在于可以帮助人们更好地理解和解决复杂问题,提高工作效率和质量。

但是,结构化分析方法也存在一些局限性,比如对于非线性、动态、不确定性较大的问题,结构化分析方法可能并不适用。

因此,在实际应用中,需要根据具体问题的特点和要求来选择合适的分析方法。

软件工程——结构化方法

软件工程——结构化方法

软件工程——结构化方法上世纪60年代,由于计算机计算能力和处理的问题复杂度的急速增长,爆发了众所周知的软件危机。

为了应对软件危机带来的危害,解决管理大型复杂软件的难题,学术界与工业界共同研究并提出了许多有效的软件开发方法。

而其中影响最为深远的,分支最为庞大的方法就是结构化方法。

自1967年起就涌现出了许多软件工程领域有关结构化的相关概念与方法。

如结构化程序设计,结构化分析技术,结构化设计。

本文将针对它们进行介绍以及其应用。

结构化编程结构化编程(Structured programming)是上世纪60年代迪杰斯特拉,科拉多·伯姆及朱塞佩·贾可皮尼等计算机科学家所提出的。

图灵奖得主迪杰斯特拉(Edsger Wybe Dijkstra)在1968年的一篇名称为《GOTO陈述有害论》的论文写到:最近我发现为什么使用goto语句具有灾难性的影响,而且我认为goto语句应该从所有的高级语言中废除,因为它使分析和验证程序正确性(特别是涉及循环)的任务变得复杂。

——Go To Statement Considered Harmful Edsger W.Dijkstra科拉多·伯姆于1966年5月在《Communications of the ACM》期刊发表论文,说明任何一个有goto指令的程序,可以改为完全不使用goto指令的程序。

下面来看一个例子,用于展示goto带来的差可读性。

void foo{A:...if(c==1)goto B;else goto C;B:...if(c==2) goto A;else goto C;C:...if(c==3)goto B;else goto A;}因此为了应对这些弊端,迪杰斯特拉提出了结构化程序设计。

首先他证明了任何程序都可以用以下三种流程架构所组成。

可分为循序(sequence)、选择(selection)及重复(repetition),循序是指程序正常的运行方式,运行完一个指令后,运行后面的指令。

软件工程概论参考课件ch03_2_结构化分析方法

软件工程概论参考课件ch03_2_结构化分析方法
3.2.1 结构化分析的概念 3.2.2 细化数据流图 3.2.3 数据流程图应用实例
23
3.2.3 数据流程图应用实例
某汽车配件公司设有销售、采购、仓库、会计等业 务部门。公司每天都要处理大量的销售订单业务。 当配件缺货或库存量低于保险贮备量时,就要进货。 如果暂不考虑配件公司内部的仓库和会计业务细节, 那么,配件公司的TOP图,如3-3所示。
26
(3)销售子系统第二层图——细化数据流图
27
End
28
29
合作愉快
2011
图3-1 数据流图与加工的关系
15
在调研阶段产生的高层数据流图,许多具体的细节 没有包括在里面,因此沿数据流程回溯时常常遇到 下述问题:
为了得到某个数据元素需要用到数据流图中目前还 没有的数据元素,或者得出这个数据元素需要用的 算法尚不完全清楚。为了解决这些问题,往往需要 向用户和其他有关人员请教,他们的回答会使分析 师对目标系统的认识更深入更具体,数据流图中的 更多的成分就可以被分解出来。
16
通常把分析过程中得到的有关数据元素的信息描述在 数据字典中,把对算法的简明描述记录在IPO图中 (输入/处理/输出图)。通过挖掘分解出来的数据流、 数据存贮和处理逻辑及时添加到数据流图中,这就是 细化的过程。一个原则 是:数据流程图不可能一步细化到位,需要按照概 括程度逐步细化,逐层分解。
这种用高度概括的手法,先把握主要的功能,忽略 细节,避免眉毛胡子一把抓的做法,就用到了“抽 象”的手法。
20
在研究用户业务系统的数据流程时,是以“功能” 为对象进行不同级别“抽象”的。
在数据流图的细化方面,把处理功能按抽象层次进 行逐层分解,把握好抽象的粒度,使其与层次对应。
21

软件工程 第六讲 结构化分析方法

软件工程 第六讲 结构化分析方法

什么是GOTO语句?
ห้องสมุดไป่ตู้

在以前的程序设计课程中,老师说 goto语句很重要,为什么在这里说不 那么重要呢?
简单明确的概述什么是自顶向下、逐步求 精的思想,它和自底向上的分析方法有什 么不同??




结构化设计程序的方法在软件工程提出后产生, 主要是提出取消“GOTO“语句的使用。我想问的 是在结构化中的模块之间的接口不就算是 “GOTO”语句吗? 问题一:书中104在讲到结构化程序设计(SP)中 提到的“只要三种控制结构(顺序、选择、重复) 就是能表达用一个入口和一个出口的流程图所能 表达的任何程序逻辑”该做如何理解? 问题二:该如何来理解结构化方法的指导思想 (自顶向下、逐步求精)与两个基本原则(抽象、 分解)的联系?

问题六:基本加工是靠自己的经验来确定的,还 是有一定的标准?
返回
数据流



表示数据的流向。 数据流由一组数据项组成。 命名规则和注意事项:

数据流的名字用名词或名词词组 应尽量使用现实系统中已有的名字 把现实环境中传递的一组数据中最重要的那个数据的名字作为数 据流的名字 不要把控制流作为数据流 不要使用意义空洞的名词作为数据流名,如”数据“、“信息 “等。 如果在命名时遇到困难,说明你可能对数据流的分解不恰当,应 进行重新分解。 对流进或流出文件的数据流不需标注名字。



问题P110 怎样准确的判断出父图与子图的平 衡?
父图 与子 图平 衡吗?
父图 与子 图平 衡吗?
问题


110页图8.6为什么平衡不清楚。 P110 对父图与子图的平衡的理解:图8.6中如果 不存在图8.4的情况下,那么这个父图与子图就不 符合自图的平衡了,对吗? 画数据流图中,父图与子图怎样保持平衡? P110:第(6)个注意事项第二段第一句:有时考 虑平衡可忽略一些枝节性的数据流。我对本句中 的“枝节性的数据流”不太理解,不知道什么叫 “枝节性的数据流”,枝节性的数据流有何特点?
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据源点/终点(汇点)



外部实体:系统之外的实体,包括人、物 或其他软件系统。 数据源点:给系统提供数据的外部实体。 数据终点(汇点):接收系统输出数据流 的外部实体。 2、 一个数据源点也可以是数据终点吗? (p108 8.3.1.4 ) 源点和终点(汇点)可以是同一外部实体。
返回
加工

也称为数据处理或变换或处理,是对数据处理的 单元。 加工(处理)的命名规则:



顶层的加工名就是软件项目的名字。 加工的名字最好使用动宾词组。可以用主谓词组。 不要使用意义空洞的动词作为加工名,即只有动词或 主语。 如果在命名时遇到困难,说明你可能对数据流的分解 不恰当,应进行重新分解。
数据流图的基本符号表示了什么含义?除 了4种基本图形符号还有别的图形符号吗?




111页:图8.7所表示的是与图8.2等价的DFD,那 么在实际画DFD时,我们怎样确定具体使用哪 一种符号?这两种符号有什么区别和联系? 书上给出了两种类型的数据流图,那我们在画数 据流图时应该选择哪种呢? 1、数据流图的画法有两种,哪一种比较适合我 们? 数据流图矩形里面的内容是什么含义,椭圆里 面的内容又是什么含义,矩形与椭圆之间用箭 头表示有什么联系?

什么是GOTO语句?

在以前的程序设计课程中,老师说 goto语句很重要,为什么在这里说不 那么重要呢?
简单明确的概述什么是自顶向下、逐步求 精的思想,它和自底向上的分析方法有什 么不同??




结构化设计程序的方法在软件工程提出后产生, 主要是提出取消“GOTO“语句的使用。我想问的 是在结构化中的模块之间的接口不就算是 “GOTO”语句吗? 问题一:书中104在讲到结构化程序设计(SP)中 提到的“只要三种控制结构(顺序、选择、重复) 就是能表达用一个入口和一个出口的流程图所能 表达的任何程序逻辑”该做如何理解? 问题二:该如何来理解结构化方法的指导思想 (自顶向下、逐步求精)与两个基本原则(抽象、 分解)的联系?
①结构化分析方法(SA)


结构化分析方法是一种面向数据流的需求 分析方法,适合于数据处理类型软件。 策略:自顶向下逐层分解
问题:“自顶向下逐层 分解”是不是和程序设 计一样分成模块来单独 进行开发 结构化分析为什么是自 顶向下逐层分解,那为 什么不是自底向上的分 解?
①结构化分析方法(SA)

工具:数据流图、数据字典、结构化英语 (语言)、判定表和判定树等。


结构化方法最适用于哪种软件生存周期模 型? 106页:“SA方法利用图形等半形式的描 述方式表达需求……”中“半形式的描述 方式”。

P105:2、IDEF、SA分别各指什么?
ⅰ、数据流图(DFD)(3.5)


作用:用来描述数据处理过程的。它从数据 传递和加工的角度,以图形的方式刻画数 据流从输入到输出的传输变换过程。它表 示了系统内部信息的流向,并表示了系统 的逻辑功能(做什么)。 DFD的符号体系 DFD的画法 注意事项 DFD与其他流程图的区别
8.1 概述


在p104中,提到只要有三种控制程序,就能 表达用一个入口和一个出口的流程图所能 表达的任何程序逻辑,这句话没有能够理 解。 104页:“1969年,Bohm和Jacopini首次证 明了只要三种控制结构就能表达一个入口 和一个出口的流程图所能表达的任何程序 逻辑”中“一个入口和一个出口的流程 图”。


由当前系统的逻辑模型导出目标系统的逻 辑模型
107页:在建立目标系统的逻辑模型时,分析人 员根据自己的经验,采用自顶向下的逐步求精 的分析策略,除了自顶向下的分析方法外,是 否还有其它的方法? 又如何去具体建立目标系统的逻辑模型?

(3)需求分析方法



结构化分析方法( SA) 面向对象的分析方法 形式化分析方法 问题: 软件分析方法有哪些?各种方法的 特点及其应用在哪些软件分析中更合理? SA分析对软件工程项目开发有什么联系?

④:“数据流图是SA方法中用于表示系统 逻辑模型的一种工具,它以图形的方式描 绘数据在系统中流动和处理的过程。由于 它只反映系统给必须完成的逻辑功能,所 以它是一种功能模型。”功能模型具体是 指什么呢,该如何理解?(8.3, p107)

数据流图的作用到底是什么? 如何快速简介的制作一张数据流图?
返回
问题

数据流图中的数据流有哪几种类型?

关于数据流程图的绘制,其中对于数 据流、加工等部分的命名很模糊?
DFD的符号体系

基本符号 扩充符号
返回
(i)、DFD的基本符号
实体名

实体名

实体名
数据的源点/终点 (汇点) 加工 数据流
编号 加工名

编号 加工名

编号 加工名
数据流名
文件名

编号 文件名

编号
文件名
数据存储
1
2(软设) 3(系分)
返回

P110: 第(8)个注意事项,给出了数据流 图的另一套基本符号。我不知道何时该用 原来的那一套基本符号,何时用这套基本 符号?这两套符号分别用在什么场合确定的,还 是有一定的标准?
返回
数据流



表示数据的流向。 数据流由一组数据项组成。 命名规则和注意事项:

数据流的名字用名词或名词词组 应尽量使用现实系统中已有的名字 把现实环境中传递的一组数据中最重要的那个数据的名字作为数 据流的名字 不要把控制流作为数据流 不要使用意义空洞的名词作为数据流名,如”数据“、“信息 “等。 如果在命名时遇到困难,说明你可能对数据流的分解不恰当,应 进行重新分解。 对流进或流出文件的数据流不需标注名字。

什么叫软件重用的问题?
需求分析的任务(8.2.3)

获得当前系统的物理模型
107页:“建立当前系统的物理模型时,这一模 型包含了许多具体因素”中“具体因素”指的 是什么? 建立出来的物理模型具体是什么样的?


抽象出当前系统的逻辑模型
应该怎么样去抽取当前系统的逻辑模型? 物理模型反映了系统“怎么做”的具体实现, 去掉物理模型中非本质的因素,抽取出本质的 因素,这里的非本质和该如何理解?
相关文档
最新文档