结构化需求分析方法
- 格式:docx
- 大小:195.49 KB
- 文档页数:14
结构化分析(SA)方法结构化开发方法(Structured Developing Method)是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。
结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成的。
结构化分析(Structured Analysis,简称SA 法)方法是面向数据流的需求分析方法,是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
它适合于分析大型的数据处理系统,特别是企事业管理系统。
SA 法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
1 SA 法概述1.SA 法的基本思想结构化分析(Structured Analysis,简称SA 法)是面向数据流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
结构化分析方法的基本思想是“分解”和“抽象”。
分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。
图4 是自顶向下逐层分解的示意图。
顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个自系统的方法就是“抽象”。
2.SA 法的步骤⑴建立当前系统的“具体模型”;系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。
这样的表达与当前系统完全对应,因此用户容易理解。
⑵抽象出当前系统的逻辑模型;分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。
精品文档)方法结构化分析(SA是现有的软件开发方法(Structured Developing Method)结构化开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。
结构化开发方法(SP 及结构化程序设计方法法)(SA法)、结构化设计方法(SD 由结构化分析方法构成的。
法)方法是面向数据流的需求分法)结构化分析(Structured Analysis,简称SA等人提出和发及DeMarco 70 年代末由Yourdon,Constaintine 析方法,是特别是企事业管理它适合于分析大型的数据处理系统,展,并得到广泛的应用。
系统。
法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,SA 自顶向下逐层分解,描绘出满足功能要求的软件模型。
法概述1 SA1.SA 法的基本思想是面向数据流的需求分析方)简称SA 法结构化分析(Structured Analysis,并得等人提出和发展,Yourdon,Constaintine 年代由及DeMarco 70法,是到广泛的应用。
结构化分析方法的基本思想是“分解”和“抽象”。
.精品文档可分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,以把大问题分解成若干小问题,然后分别解决。
是自顶向下逐层分解的示意图。
顶层抽象地描述了整个系统,底层具图4体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以这种用最本质的属性表示一个自直至涉及到最详细的内容,后再逐层添加细节,系统的方法就是“抽象”。
2.SA 法的步骤;⑴建立当前系统的“具体模型”图描系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 述出来。
这样的表达与当前系统完全对应,因此用户容易理解。
;⑵抽象出当前系统的逻辑模型.精品文档分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用图描述的当前系统的“逻辑模型”。
结构化分析方法结构化分析方法一、需求分析与需求分析方法需求阶段是软件开发的关键阶段。
需求分析的任务:准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么;用《需求规格说明书》规范的形式准确地表达用户的需求。
需求分析阶段的工作(四方面):◆需求获取:确定系统各方面需求;全面地提炼出系统的功能性与非功能性需求。
◆需求分析:对获取的需求分析和综合,给出系统解决方案和逻辑模型。
◆编写需求规格说明书:为用户、设计人员的交流提供方便,还可作为控制软件开发进程的依据。
◆需求审评:复审需求分析阶段的工作,验证需求文档的一致性、可行性等。
1、需求获取的目的清楚地理解所要解决的问题、完整地获取用户需求。
2、需求获取的内容用户需求分类:(1)功能性需求定义了系统做什么(描述系统必须支持的功能和过程)。
(2)非功能性需求(技术需求)定义了系统工作时的特性(描述操作环境和性能目标)。
3、需求分析的步骤4、需求分析过程示意(1)通过对现实环境的调查,获得当前系统的物理模型。
(2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型。
(3)分析当前系统与目标系统的差别,建立目标系统的逻辑模型。
5、需求分析的方法结构化分析(传统建模方法)、面向对象分析。
二、结构化分析方法1、结构化分析方法(Structure Analysis---SA)(1)定义是面向数据流进行需求分析的方法,采用自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
(2)结构化分析的主要步骤通过对用户的调查,以软件的需求为线索,获取当前系统的具体模型;去掉具体模型中非本质因素,抽象出当前系统的逻辑模型;根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型;完善目标系统并补充细节,写出目标系统的软件需求规格说明。
2、结构化分析方法使用的常用工具(1)数据流图(DFD—Data Flow Diagram )①作用从数据传递和加工的角度,在需求分析阶段以图形的方式描述数据流从输入到输出的移动变换过程,为系统建立逻辑模型。
2。
2需求分析需求分析是通过开发人员的分析概括,抽象为完整的需求定义,再形成一系列文档的过程。
2.2.1需求分析的目的与意义需求分析是一个非常重要的过程,它完成的好坏直接影响后续软件开发的质量。
有效的需求分析通常都具有一定的难度.需求分析不仅仅是属于软件开发生命周期早期的一项工作,而且还应该贯穿于整个生命周期中,它应该随着项目的深入而不断地变化。
此外,为了方便后续的评审和测试等工作,需求的描述应该尽量做到:具体、详细、可以测量和可以实现,并且基于时间。
2。
2.2需求分析的步骤2-3所示。
需求涉及的方面:在功能方面,需求包括系统要做什么,相对于原系统目标系统需要进行哪些修改,目标用户有哪些,以及不同用户需要通过系统完成何种操作等。
在性能方面,需求包括用户对于系统执行速度、响应时间、吞吐量和并发度等指标的要求。
在运行环境方面,需求包括目标系统对于网络设置、硬件设备、温度和湿度等周围环境的要求,以及对操作系统、数据库和浏览器等软件配置的要求。
在界面方面,需求涉及数据的输入/输出格式的限制及方式、数据的存储介质和显示器的分辨率要求等问题。
1。
获取需求,识别问题开发人员从功能、性能、界面和运行环境等多个方面识别目标系统要解决哪些问题,要满足哪些限制条件,这个过程就是对需求的获取。
开发人员通过调查研究,要理解当前系统的工作模型和用户对新系统的设想与要求.遗漏需求是最难修订的需求错误。
获取需求是需求分析的基础.为了能有效地获取需求,开发人员应该采取科学的需求获取方法。
在实践中,获取需求的方法有很多种,比如,问卷调查、访谈、实地操作、建立原型和研究资料等。
问卷调查法是采用调查问卷的形式来进行需求分析的一种方法。
通过对用户填写的调查问卷进行汇总、统计和分析,开发人员便可以得到一些有用的信息。
采用这种方法时,调查问卷的设计很重要。
一般在设计调查问卷时,要合理地控制开放式问题和封闭式问题的比例.开放式问题的回答不受限制,自由灵活,能够激发用户的思维,使他们能尽可能地阐述自己的真实想法.但是,对开放式问题进行汇总和分析的工作会比较复杂。
结构化分析(SA)方法结构化开发方法(Structured Developing Method)就是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点就是快速、自然与方便。
结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成的。
结构化分析(Structured Analysis,简称SA 法)方法就是面向数据流的需求分析方法,就是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出与发展,并得到广泛的应用。
它适合于分析大型的数据处理系统,特别就是企事业管理系统。
SA 法也就是一种建模的活动,主要就是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
1 SA 法概述1、SA 法的基本思想结构化分析(Structured Analysis,简称SA 法)就是面向数据流的需求分析方法,就是70年代由Yourdon,Constaintine 及DeMarco 等人提出与发展,并得到广泛的应用。
结构化分析方法的基本思想就是“分解”与“抽象”。
分解:就是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。
图4 就是自顶向下逐层分解的示意图。
顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层就是从抽象到具体的逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个自系统的方法就就是“抽象”。
2、SA 法的步骤⑴建立当前系统的“具体模型”;系统的“具体模型”就就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。
这样的表达与当前系统完全对应,因此用户容易理解。
⑵抽象出当前系统的逻辑模型;分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。
结构化分需求分析结构化简单说,就是把一个问题拆解成一个个能解决的部分;拿需求分析举例,当下面的需求该做的时候:比如有一个业务部门提了一个数据需求,提取某个数据指标,按照需求的框架来说:一个需求包含背景、场景、解决的问题,比如需求的背景是有个客户需要查看这个数据,需求的场景这里分为了两个部分,一个部分是业务同学的场景是客户提出要数据的时候,另一个部分是客户什么时候有要数据需求,举个例子,比如客户每个月月底做周报的时候需要用到这个数据,需求解决的问题也分为两个部分,一部分是业务同学满足客户的需求,另一部分客户满足了自身的汇报需求;当从背景、场景、解决的问题这三个方向寻找答案的时候,会得出很多的解决方案:从背景的角度上分析:能否让这个需求的背景不成立,直接把数据指标面向客户;从场景的角度上分析:把不舒服的场景转换为舒服的场景,业务角度上的场景是客户要数据,能否转换为定时给客户发送数据指标;客户角度上的场景是写周报的时候要用到,能否转换为把这个指标变为客户时刻关注的指标;从解决的问题角度上分析:如果问题可以消除,最好是消除,如采用把数据指标面向客户,那么业务侧的这个问题也就不存在了;如果问题无法消除,则应减少解决问题的步骤,简化流程,客户提供数据的这一页如果数据指标固定,可否改为一键下载报表去替代手工填写;总结解决方案:(1)把数据指标做成功能,直接面向客户;(2)定时发送数据指标给到客户;(3)研发周报或报表功能;(4)人工数据库拉数据,业务侧发送;初步方案总结好后,接下来就是方案的可行性判断:基于上述的需求和方案,可行性判断主要在于两方面,一方面是价值,一方面是成本;从价值角度来说有三个方面:(1)需求本身:需求刚需程度(高、中、低)、用户使用频次(高、中、低);(2)方案本身:服务模式(重、中、轻)、是否可规模化(难、中、易);(3)价值本身:付费意愿(难、中、易)、付费价格(高、中、低);从成本角度来说有两个方面:(1)研发成本:研发成本(高、中、低)、维护成本(高、中、低);(2)业务成本:人力成本(高、中、低);把总结出的五个方案代入可行性判断的五个方面中,就可以得出最优方案,如果感觉上述的可行性判断过于定性,也可以采用定量的方式,如为需求、方案、价值、研发、业务基于团队或公司的诉求给予不同的权重,如需求(0.3)、方案(0.1)、价值(0.3)、研发成本(0.2)、业务成本(0.1),在为每个方面下属的要素赋予分数,如需求刚需程度中的高赋予5分、中赋予3、低赋予1分、研发成本中的高赋予1分、中赋予3分、低赋予5分,再通过权重乘以数值就会得出一个分数,分数越高价值越大。
结构化分析(SA)方法结构化开发方法(Structured Developing Method)就是现有得软件开发方法中最成熟,应用最广泛得方法,主要特点就是快速、自然与方便。
结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成得。
结构化分析(Structured Analysis,简称SA 法)方法就是面向数据流得需求分析方法,就是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出与发展,并得到广泛得应用。
它适合于分析大型得数据处理系统,特别就是企事业管理系统。
SA 法也就是一种建模得活动,主要就是根据软件内部得数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求得软件模型。
1 SA 法概述1、SA 法得基本思想结构化分析(Structured Analysis,简称SA 法)就是面向数据流得需求分析方法,就是70年代由Yourdon,Constaintine 及DeMarco 等人提出与发展,并得到广泛得应用。
结构化分析方法得基本思想就是“分解”与“抽象”。
分解:就是指对于一个复杂得系统,为了将复杂性降低到可以掌握得程度,可以把大问题分解成若干小问题,然后分别解决。
图4 就是自顶向下逐层分解得示意图。
顶层抽象地描述了整个系统,底层具体地画出了系统得每一个细节,而中间层就是从抽象到具体得逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质得属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细得内容,这种用最本质得属性表示一个自系统得方法就就是“抽象”。
2、SA 法得步骤⑴建立当前系统得“具体模型”;系统得“具体模型”就就是现实环境得忠实写照,即将当前系统用DFD 图描述出来。
这样得表达与当前系统完全对应,因此用户容易理解。
⑵抽象出当前系统得逻辑模型;分析系统得“具体模型”,抽象出其本质得因素,排除次要因素,获得用DFD 图描述得当前系统得“逻辑模型”。
结构化分析(SA)方法结构化开发方法(Structured Developing Method)是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。
结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成的。
结构化分析(Structured Analysis,简称SA 法)方法是面向数据流的需求分析方法,是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
它适合于分析大型的数据处理系统,特别是企事业管理系统。
SA 法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
1 SA 法概述1.SA 法的基本思想结构化分析(Structured Analysis,简称SA 法)是面向数据流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
结构化分析方法的基本思想是“分解”和“抽象”。
分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。
图4 是自顶向下逐层分解的示意图。
顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个自系统的方法就是“抽象”。
2.SA 法的步骤⑴建立当前系统的“具体模型”;系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。
这样的表达与当前系统完全对应,因此用户容易理解。
⑵抽象出当前系统的逻辑模型;分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。
第三章结构化方法第三章:结构化方法3.1结构化需求分析一种面向数据流进行软件需求分析策略:自顶向下逐层分解A 三大挑战1、问题空间解释;2、人与人之间的通信;3、需求的变化性B 应对三大挑战1、提供方便通信的机制;2、鼓励需求分析人员使用问题空间的术语思考问题;3、提供定义系统边界的方法;4、提供支持抽象的基本机制;5为需求分析人员提供多种可供选择的方案;6提供特定的技术,适应需求的变化。
3.1.1基本术语数据流图:用于表示系统逻辑模型的工具,它以图形的方式描绘数据在系统中流动和处理过程反应系统逻辑功能1、数据流用于表达着分析中所要使用的、用于表达“客体”的信息。
用箭头表示2、加工用于表达在分析中所使用的、用于表达“处理”的信息。
用椭圆表示3、数据存储用于表达着分析中所要使用的、用于表达“结构化客体”的信息。
用平行线表示4、数据源与数据潭数据源是数据流的起点:数据潭是数据流的归宿地。
用矩形表示3.1.2系统功能模型表示需求分析的首要任务是建立系统功能模型,为此结构化分析方法给出了一种表达功能模型的工具,即数据流图,简称DFD3.1.3建模过程1、建立系统环境图,确定系统语境2、自顶向下,逐步求精,建立系统的层次数据流图“父图”生成“子图”1、将“父图”的每一层按其功能分解为若干个子加工。
2、将“父图”的输入流和输出流“分派”到相关的子加工。
3、在各加工之间建立合理的关联,必要时引入数据存储,使之形成一个有机的整体。
3、定义数据字典目标:依据数据系统的数据流图,定义其中包含的所有数据流和数据存储的数据结构,直到给出构成以上数据的各数据项的基本数据类型4、描述加工1、结构化自然语言结构化自然语言是介于形式语言和自然语言之间的一种语言,它虽然没有形式语言那样严格,但具有自然语言简单易懂的特点,同时又避免了自然语言结构松散的缺点。
2、判定表判定表是用于描述加工的一种工具,通常用来描述一些不易用自然语言表达清楚或需要很大篇幅才能表达清楚的加工。
结构化分析(SA)方法结构化开发方法(Structured Developing Method)是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。
结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成的。
结构化分析(Structured Analysis,简称SA 法)方法是面向数据流的需求分析方法,是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
它适合于分析大型的数据处理系统,特别是企事业管理系统。
SA 法也是一种建模的活动,主要是根据软件部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
1 SA 法概述1.SA 法的基本思想结构化分析(Structured Analysis,简称SA 法)是面向数据流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
结构化分析方法的基本思想是“分解”和“抽象”。
分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。
图4 是自顶向下逐层分解的示意图。
顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的容,这种用最本质的属性表示一个自系统的方法就是“抽象”。
2.SA 法的步骤⑴建立当前系统的“具体模型”;系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。
这样的表达与当前系统完全对应,因此用户容易理解。
⑵抽象出当前系统的逻辑模型;分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。
2.2需求分析需求分析是通过开发人员的分析概括,抽象为完整的需求定义,再形成一系列文档的过程。
2.2.1需求分析的目的与意义需求分析是一个非常重要的过程,它完成的好坏直接影响后续软件开发的质量。
有效的需求分析通常都具有一定的难度。
需求分析不仅仅是属于软件开发生命周期早期的一项工作,而且还应该贯穿于整个生命周期中,它应该随着项目的深入而不断地变化。
此外,为了方便后续的评审和测试等工作,需求的描述应该尽量做到:具体、详细、可以测量和可以实现,并且基于时间。
2.2.2需求分析的步骤2-3所示。
图2-3需求分析的步骤需求涉及的方面:在功能方面,需求包括系统要做什么,相对于原系统目标系统需要进行哪些修改,目标用户有哪些,以及不同用户需要通过系统完成何种操作等。
在性能方面,需求包括用户对于系统执行速度、响应时间、吞吐量和并发度等指标的要求。
在运行环境方面,需求包括目标系统对于网络设置、硬件设备、温度和湿度等周围环境的要求,以及对操作系统、数据库和浏览器等软件配置的要求。
在界面方面,需求涉及数据的输入/输出格式的限制及方式、数据的存储介质和显示器的分辨率要求等问题。
1. 获取需求,识别问题开发人员从功能、性能、界面和运行环境等多个方面识别目标系统要解决哪些问题,要满足哪些限制条件,这个过程就是对需求的获取。
开发人员通过调查研究,要理解当前系统的工作模型和用户对新系统的设想与要求。
遗漏需求是最难修订的需求错误。
获取需求是需求分析的基础。
为了能有效地获取需求,开发人员应该采取科学的需求获取方法。
在实践中,获取需求的方法有很多种,比如,问卷调查、访谈、实地操作、建立原型和研究资料等。
问卷调查法是采用调查问卷的形式来进行需求分析的一种方法。
通过对用户填写的调查问卷进行汇总、统计和分析,开发人员便可以得到一些有用的信息。
采用这种方法时,调查问卷的设计很重要。
一般在设计调查问卷时,要合理地控制开放式问题和封闭式问题的比例。
结构化分析(SA)方法结构化开发方法(Structured Developing Method)是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。
结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成的。
结构化分析(Structured Analysis,简称SA 法)方法是面向数据流的需求分析方法,是70 年代末由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
它适合于分析大型的数据处理系统,特别是企事业管理系统。
SA 法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
1 SA 法概述1.SA 法的基本思想结构化分析(Structured Analysis,简称SA 法)是面向数据流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。
结构化分析方法的基本思想是“分解”和“抽象”。
分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。
图4 是自顶向下逐层分解的示意图。
顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。
抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个自系统的方法就是“抽象”。
2.SA 法的步骤⑴建立当前系统的“具体模型”;系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。
这样的表达与当前系统完全对应,因此用户容易理解。
⑵抽象出当前系统的逻辑模型;分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。
⑶建立目标系统的逻辑模型;分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”(修改后的DFD 图)。
⑷为了对目标系统作完整的描述,还需要考虑人机界面和其它一些问题。
3.SA 法的描述工具⑴分层的数据流图⑵数据词典⑶描述加工逻辑的结构化语言、判定表或判定树。
2 数据流图数据流图(Data Flow Diagram,简称DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。
1.数据流图的图符数据流图有以下4 种基本图形符号:箭头表示数据流,圆或椭圆表示加工。
双杠或者单杠表示数据存储,矩形框表示数据的源点或终点,即外部实体。
⑴数据流是数据在系统内传播的路径,由一组成固定的数据项组成。
除了与数据存储(文件)之间的数据流不用命名外,其余数据流都应该用名词或名词短语命名。
数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,也可以从源点流向加工或从加工流向终点。
⑵加工也称为数据处理,它对数据流进行某些操作或变换。
每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。
在分层的数据流图中,加工还应有编号。
⑶数据存储指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。
流向数据存储的数据流可理解为写入文件,或查询文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。
⑷数据源点和终点是软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称为外部实体。
一般只出现在数据流图的顶层图中。
还有一些辅助的图例:例1:画出图书预定系统的DFD 图。
现有一图书预定系统,接收由顾客发来的订单,并对订单进行验证,验证过程是根据图书目录检查订单的正确性,同时根据顾客档案确定是新顾客还是老顾客,是否有信誉。
经过验证的正确订单,暂存放在待处理的订单文件中。
对订单进行成批处理,根据出版社档案,将订单按照出版社进行分类汇总,并保存订单存根,然后将汇总订单发往各出版社。
画图步骤是:⑴首先确定外部实体(顾客、出版社)及输入、输出数据流(订单、出版社订单)。
⑵再分解顶层的加工(验证订单、汇总订单)。
⑶确定所使用的文件(图书目录文件、顾客档案等5 个文件)。
⑷用数据流将各部分连接起来,形成数据封闭。
特别要注意的是:数据流图不是传统的流程图或框图,数据流也不是控制流。
数据流图是从数据的角度来描述一个系统,而框图则是从对数据进行加工的工作人员的角度来描述系统。
数据流图中的箭头是数据流,而框图中的箭头则是控制流,控制流表达的是程序执行的次序。
下图是培训中心管理系统的数据流图,由于只有一层,因此分解的加工较多不易理解,而且如果其中某个加工较复杂,例如编号为3 的加工“付款”和编号为7 的加工“复审”仍很复杂,一时难以理解,如果不继续分解下去,直到每个加工都足够简单易于理解为止,则会影响需求分析结果的可读性。
1.画分层DFD 图的方法如图2.8 所示,如果系统规模较大,仅用一个DFD 图难以描述,会使得系统变得复杂,且难以理解。
为了降低系统的复杂性,采取“逐层分解”的技术,画分层的DFD 图。
画分层DFD 图的一般原则是:“先全局后局部,先整体后细节,先抽象后具体”。
通常将这种分层的DFD 图,分为顶层、中间层、底层。
顶层图说明了系统的边界,即系统的输入和输出数据流,顶层图只有一张。
底层图由一些不能再分解的加工组成,这些加工都已足够简单,称为基本加工。
在顶层和底层之间的是中间层。
中间层的数据流图描述了某个加工的分解,而它的组成部分又要进一步分解。
画各层DFD 图时,应“由外向内”。
画分层DFD 图的具体步骤:⑴先确定系统范围,画出顶层的DFD 图。
⑵逐层分解顶层DFD 图,获得若干中间层DFD 图。
⑶画出底层的DFD 图。
在画分层数据流图时,首先遇到的问题就是应该如何分解?不能够一下子把一个加工分解成它所有的基本加工,一张图中画出过多的加工是使人难以理解的,但是如果每次只是将一个加工分解成两个或三个加工,又可能需要分解过多的层次,也会影响系统的可理解性。
一个加工每次分解成多少个子加工才合适呢?根据经验“最多不要超过7 个”。
统计结果证明,人们能有效地同时处理7 个或7 个以下的问题,但当问题多于7 个时,处理效果就会下降。
当然也不能机械地应用,关键是要使数据流图易于理解。
同时还有几条原则可供参考:分解应自然,概念上要合理、清晰。
只要不影响数据流图的“易理解性”,可以适当地多分解成几部分,这样分层图的层数就可少些。
一般来说,在上层可以分解得快些,而在中、下层则应分解得慢些,因为上层是一些综合性的描述,“易理解性”相对地说不太重要。
下节我们以一个实例来说明画分层DFD 图的方法。
2 分层DFD 图的改进分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的总貌,底层画出了系统所有的细部,而中间层则给出了从抽象到具体的逐步过渡。
1.画分层DFD 图的基本原则⑴.数据守恒与数据封闭原则所谓数据守恒是指加工的输入输出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。
或者说一个加工至少有一个输入数据流,一个输出数据流。
⑵加工分解的原则自然性:概念上合理、清晰;均匀性:理想的分解是将一个问题分解成大小均匀的几个部分;分解度:一般每一个加工每次分解最多不要超过7个子加工,应分解到基本加工为止。
⑶子图与父图的“平衡”父图中某个加工的输入输出数据流应该同相应的子图的输入输出相同(相对应),分层数据流图的这种特点称为子图与父图“平衡”。
例1 考察下图中子父图的平衡显然,图2.13 中子图与父图不平衡。
子图是父图中加工2 的分解,加工2 有输入数据流R 和M,输出数据流T,而子图则只有一个输入数据流N,却有两个输出数据流T 与S。
图2.14 中,子图是父图中加工4 的分解,虽然表面上加工4 只有一个输入数据流“订货单”,而子图却有三个输入数据流,但是如果“订货单”是由“客户”、“帐号”和“数量”三部分组成,即有如下数据条目:订货单=客户+帐号+数量(2.2.5 数据词典),则子、父图平衡。
⑷合理使用文件当文件作为某些加工之间的交界面时,文件必须画出来,一旦文件作为数据流图中的一个独立成份画出来了,那么它同其它成份之间的联系也应同时表达出来。
理解一个问题总要经过从不正确到正确,从不确切到确切的过程,需求分析的过程总是要不断反复的,一次就成功的可能性是很小的,对复杂的系统尤其如此,因此,系统分析员应随时准备对数据流图进行修改和完善,与用户取得共识,获得无二义性的需求,才能获得更正确清晰的需求说明,使得设计、编程等阶段能够顺利进行,这样做是必须和值得的。
3.分层DFD 图的改进DFD 图必须经过反复修改,才能获得最终的目标系统的逻辑(目标系统的DFD 图)。
改进的原则与画分层DFD 图的基本原则是一致的,可从以下方面考虑DFD 图的改进:⑴检查数据流的正确性①数据守恒②子图、父图的平衡③文件使用是否合理。
特别注意输入/出文件的数据流。
⑵改进DFD 图的易理解性①简化加工之间的联系(加工间的数据流越少,独立性越强,易理解性越好)。
②改进分解的均匀性。
③适当命名(各成分名称无二义性,准确、具体)。
4.数据词典分层数据流图只是表达了系统的“分解”,为了完整地描述这个系统,还需借助“数据词典”(data dictionary)和“小说明”对图中的每个数据和加工给出解释。
对数据流图中包含的所有元素的定义的集合构成了数据词典。
它有四类条目:数据流、数据项、文件及基本加工。
在定义数据流或文件时,使用表2-1 给出的符号。
将这些条目按照一定的规则组织起来,构成数据词典。
1.数据流条目给出了DFD 中数据流的定义,通常对数据流的简单描述为列出该数据流的各组成数据项。
例:数据流“乘客名单”由若干“乘客姓名”、“单位名”和“等级”组成,则词典中的“乘客名单”条目是:乘客名单={乘客姓名+单位名+等级}又如:报名单=姓名+单位名+年龄+性别+课程名也可以对数据流进行较详细的描述,如下例:例:某查询系统中,有个名为“查询”的数据流,目前“查询”有三种类型,即“顾客状况查询”、“存货查询”和“发票存根查询”,预计至1990 年底还将增加3 至4 种其他类型的查询。
系统每天约需处理2 000 次查询,每天上午9:00—10:00 是查询的高峰,此时约有1 000 次查询。
上述信息都是“用户要求”的一部分,在分析阶段应该认真收集,并记录在词典的有关条目中,所以“查询”条目描述如下。
数据流名:查询简述:系统处理的一个命令别名:无组成:[顾客状况查询|存货查询|发票存根查询]数据量:2000 次/天峰值:每天上午9:00—l0:00 有l000 次注释:至1990 年底还将增加3 至4 种查询2.文件条目给出某个文件的定义,文件的定义通常是列出文件记录的组成数据流,还可指出文件的组织方式。