第3章结构化分析与设计课件.ppt
第第3章章 结构化分析与设计结构化分析与设计1软件工程3.1 概述概述3.1.1 结构化分析与设计的由来结构化分析与设计的由来 1.瀑布模型的首次实践瀑布模型的首次实践 结构化分析结构化分析(SA,Structured Analysis)与结构化设计与结构化设计(SD,Structured Design)是是瀑布模型的首次实践。瀑布模型的首次实践。2软件工程 2.SA 与与 SD 的流程的流程结构化分析结构化分析(工具工具:DFD、PSPEC)分析模型分析模型(分层分层DFD图图)+SRS结构化设计结构化设计(工具工具:SC图图)初始设计模型初始设计模型(初始初始SC图图)最终设计模型最终设计模型(最终最终SC图图)注:注:DFD:数据流图(:数据流图(Data Flow Diagram)PSPEC:加工说明(:加工说明(Process SPECification)SRS:软件需求规格说明书:软件需求规格说明书(Software Requirement Specification)SC:结构图(:结构图(Structure Chart)3软件工程3.基本任务与指导思想基本任务与指导思想(1)结构化分析结构化分析SA有两个主要任务有两个主要任务:建立分析模型建立分析模型 通过对问题及其环境的理解、分析和综合,通过对问题及其环境的理解、分析和综合,建立分析模型。该模型包括问题所涉及的信息建立分析模型。该模型包括问题所涉及的信息流、功能、性能、用户界面及设计约束等,它流、功能、性能、用户界面及设计约束等,它是形成需求说明书、进行软件设计的基础。是形成需求说明书、进行软件设计的基础。4软件工程 编写编写需求需求规格规格说明书说明书(SRS)在完全弄清用户对软件系统的确切要求的基在完全弄清用户对软件系统的确切要求的基础上,用础上,用“需求规格说明书需求规格说明书”(SRS)把用户)把用户的需求表达出来。的需求表达出来。需求需求规格规格说明书为开发人员和用户提供软件说明书为开发人员和用户提供软件开发完成时质量评价的依据开发完成时质量评价的依据。SRS应该具有准确性;应该具有准确性;SRS应该防止二义性;应该防止二义性;SRS应该直观、易读、易于修改。应该直观、易读、易于修改。5软件工程 SA的主要指导思想的主要指导思想 抽象与分解抽象与分解 (Abstraction and decomposition)抽象抽象(Abstraction)是控制复杂性的基本策是控制复杂性的基本策略之一。在软件工程中,从系统定义到实现,略之一。在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。在软件需求分析阶段,象化过程的一次细化。在软件需求分析阶段,在最高抽象级别上,用在最高抽象级别上,用“做什么做什么”来描述问题。来描述问题。然后不断具体化(分解)。抽象的层次愈低,然后不断具体化(分解)。抽象的层次愈低,呈现的细节愈多。呈现的细节愈多。6软件工程(2)结构化设计结构化设计软件设计分两个阶段完成软件设计分两个阶段完成:软件设计软件设计=总体设计总体设计+详细设计详细设计 总体设计又称概要设计,进行总体设计又称概要设计,进行总体结构设计总体结构设计和系统接口设计,和系统接口设计,把用数据流图(把用数据流图(DFD)表示的)表示的系统分析模型转换为用结构图(系统分析模型转换为用结构图(SC)表示的系)表示的系统结构模型。统结构模型。详细设计用以确定各个软件组件详细设计用以确定各个软件组件(模块模块)的操的操作作(算法算法)和和数据结构数据结构。7软件工程 SC 图分两步完成:图分两步完成:初始设计模型初始设计模型(初始初始SC图图)最终设计模型最终设计模型(最终最终SC图图)初始初始SC图图 总体设计总体设计 最终最终SC图图 软件设计软件设计 详细设计详细设计:完成模块说明完成模块说明软件设计的指导思想软件设计的指导思想分解与细化分解与细化 采用采用“自顶向下、逐步细化自顶向下、逐步细化(Top-Down Stepwise Refinement)”的开发方法。的开发方法。8软件工程3.1.2 SA模型的组成与描述模型的组成与描述例例3.1 教材销售系统教材销售系统第第一一步步:通通过过对对现现实实环环境境的的调调查查研研究究,获获取取当当前前系系统统的的具体模型具体模型(物理模型物理模型)。学学生生图图3.1 学生购买教材的当前系统模型学生购买教材的当前系统模型(物理模型物理模型)购书购书申请申请张张秘书秘书购书购书发票发票王王会计会计购书购书证明证明李李出纳出纳领书领书单单赵赵保管保管学学生生书书9软件工程学学生生图图3.2 学生购买教材的逻辑模型(当前系统)学生购买教材的逻辑模型(当前系统)购书购书单单审查审查有效性有效性购书购书发票发票开开发票发票有效有效购书单购书单开领开领书单书单领书领书单单发书发书学学生生书书第二步:分析需求,第二步:分析需求,建立建立系统分析模型系统分析模型(逻辑模逻辑模型型),包括,包括当前系统和目标系统的逻辑模型当前系统和目标系统的逻辑模型。10软件工程学学生生图图3.3 目标系统的逻辑模型目标系统的逻辑模型购书购书单单审查并审查并开发票开发票发票发票开开领书单领书单领书单领书单发书发书学学生生书书11软件工程第三步:第三步:编写需求规格说明书编写需求规格说明书。第四步:第四步:验证需求,完善和补充对目标系统的验证需求,完善和补充对目标系统的描述描述。学学生生图图3.4 改进了的目标系统逻辑模型改进了的目标系统逻辑模型购书单购书单审查并审查并开发票开发票发票发票开开领书单领书单领书单领书单学学生生无效书单无效书单12软件工程软件开发是要实现软件开发是要实现目标系统的物理模型目标系统的物理模型。需求分析的。需求分析的任务就是借助于任务就是借助于当前系统的逻辑模型导出目标系统的当前系统的逻辑模型导出目标系统的逻辑模型逻辑模型,解决目标系统,解决目标系统“做什么做什么”的问题。的问题。目标系统目标系统当前系统当前系统物理模型物理模型逻辑模型逻辑模型模型化模型化抽象化抽象化物理模型物理模型逻辑模型逻辑模型具体化具体化实例化实例化导导出出怎么做怎么做做什么做什么13软件工程图图3.5 SA3.5 SA模型的组成模型的组成实体联系图实体联系图(E-R图图)状态状态变换变换图图 (STD)数据流图数据流图数据流图数据流图(DFD)(DFD)数据对象说明数据对象说明加工说明加工说明数据数据字典字典 DD控制说明控制说明1.SA模型的组成模型的组成14软件工程早期的(早期的(传统的)结构化分析传统的)结构化分析模型是模型是面向数面向数据流据流的,采用的,采用“自顶向下、逐层分解自顶向下、逐层分解”的分的分析策略,以数据字典(析策略,以数据字典(DD,Data Dictionary)、数据流图(数据流图(DFD,Data Flow Diagram)、和加、和加工说明(工说明(PSPEC,Process SPECification)为主为主要工具,建立系统的逻辑模型(功能建模)。要工具,建立系统的逻辑模型(功能建模)。15软件工程扩充后的结构化分析模型,将建模技术扩展扩充后的结构化分析模型,将建模技术扩展到数据建模和行为建模,以数据字典(到数据建模和行为建模,以数据字典(DD,Data Dictionary)、实体、实体-联系图联系图(Entity-Relation Diagram,E-R图图)、状态、状态-迁移图迁移图(State Transform Diagram,STD)等为工具,等为工具,从不同视点建立系统的分析模型。从不同视点建立系统的分析模型。本课程主要讲述传统的结构化分析模型本课程主要讲述传统的结构化分析模型16软件工程2.SA模型的描述工具模型的描述工具传统的传统的结构化分析采用结构化分析采用3种描述工具种描述工具:数据流图数据流图(DFD)、数据字典数据字典(DD)和和 加加工规格说明工规格说明(PSPEC)。17软件工程(1)数据流图数据流图(DFD)组成符号组成符号(数据流图中的数据流图中的 4 种图形元素种图形元素)加工加工(Prosess):对数据流进行操作或变换。对数据流进行操作或变换。数据源点或终点数据源点或终点(又称又称外部实体外部实体:系统外的:系统外的人员或组织人员或组织)数据流数据流(Data Flow):数据在系统内传播的路径。数据在系统内传播的路径。数据文件数据文件(Data File 或或Data Store):文件与加文件与加工之间的数据流可以不命名;从文件流出的工之间的数据流可以不命名;从文件流出的数据流表示读文件或查询文件;数据流表示读文件或查询文件;流向文件的流向文件的数据流表示写文件或修改文件。数据流表示写文件或修改文件。18软件工程审查并审查并开发票开发票1开开领书单领书单2学学生生学学生生教材存量表教材存量表购书单购书单无效书单无效书单发票发票领书单领书单各班各班学生用书表学生用书表图图3.7 教材销售系统的数据流图教材销售系统的数据流图19软件工程 DFD的性质的性质 DFD 不能表示控制结构,如选择结构不能表示控制结构,如选择结构或循环结构。或循环结构。在需求分析中在需求分析中,常常用一组常常用一组DFD图由粗图由粗到细地表示不同级别上的功能模型,称之到细地表示不同级别上的功能模型,称之为分层数据流图。为分层数据流图。20软件工程(2)数据字典数据字典(DD)数据字典的作用数据字典的作用:对软件系统中的每个对软件系统中的每个数据规定一个定义条目,以保持数据在数据规定一个定义条目,以保持数据在系统中的一致性。系统中的一致性。数据字典数据字典中主要包括以下三类条目中主要包括以下三类条目:数据流、数据流、数据文件数据文件 和和 数据项数据项。21软件工程数据字典定义式中的符号数据字典定义式中的符号 符符 号号 含含 义义 举举 例例 定义为定义为 与与 x=ab.|.或或 x=a|b.或或 m.n 重复重复 x=a,x=3a8(.)可选可选 x=(a).连结符连结符 x=1.9*注释注释 综合的例综合的例:x=a|b +c+(d)22软件工程数据流数据流(条目条目):给出给出DFD中数据流的定义,列中数据流的定义,列出数据流的各组成数据项出数据流的各组成数据项,通常写成公式的形状。通常写成公式的形状。例例3.3 发票学号发票学号+姓名姓名+书号书号+单价单价+数量数量+总价总价+书费合计书费合计 对较长和较复杂的数据流对较长和较复杂的数据流,可分层次描述,使可分层次描述,使条目更清楚。如上述数据流条目更清楚。如上述数据流“发票发票”可表示为:可表示为:发票发票(学号学号)姓名发票行书费合计姓名发票行书费合计发票行书号发票行书号+单价单价+数量数量+总价总价23软件工程数据文件数据文件(条目条目):对数据文件的定义。对数据文件的定义。例例3.4文件名:各班学生用书表文件名:各班学生用书表组成组成:系编号专业和班编号年级系编号专业和班编号年级+书号书号 也可写成公式的形状,如:也可写成公式的形状,如:各班学生用书表各班学生用书表=系编号专业和班编号年系编号专业和班编号年级级+书号书号24软件工程数据项数据项(条目条目):包含在数据流或数据文件中的包含在数据流或数据文件中的数据项,一般都应在字典中设置相应的条目。数据项,一般都应在字典中设置相应的条目。例如:例如:系编号系编号=2数字数字2 *二位数字,如二位数字,如01,12*年级年级=F/M/J/S *F:一年级一年级(Freshman);M:二年级二年级(sophoMore);J:三年级(三年级(Junior););S:四年级四年级(Senior)*25软件工程(3)加工规格说明加工规格说明:(Process SPECification,PSPEC)对数据流图的每一个基本加工,必须有一个对数据流图的每一个基本加工,必须有一个加工说明加工说明,其主要内容如下所示其主要内容如下所示:(1)加工名加工名;(2)加工编号加工编号;(3)输入数据流;输入数据流;(4)输出数据流;输出数据流;(5)加工逻辑加工逻辑;(6)执行频率。执行频率。其中最重要的是加工逻辑。其中最重要的是加工逻辑。26软件工程加工逻辑描述基本加工如何把输入数加工逻辑描述基本加工如何把输入数据流变换为输出数据流的加工策略,而据流变换为输出数据流的加工策略,而不需描述实现加工的细节。不需描述实现加工的细节。加工逻辑通常采用加工逻辑通常采用结构化语言结构化语言(Structured Langauge)、)、判定表判定表(Decision Table)、或或 判定树判定树(Decision Tree)作为描述工具。作为描述工具。27软件工程结构化语言结构化语言(Structured Language)是一种介于自然语言和形式化语言之间的语言。是一种介于自然语言和形式化语言之间的语言。结构化语言可使用顺序、选择、循环等控制结结构化语言可使用顺序、选择、循环等控制结构,其中选择和循环结构可分为内外二层,外层构,其中选择和循环结构可分为内外二层,外层有严格的语法,内层语法比较灵活,可以用自然有严格的语法,内层语法比较灵活,可以用自然语言来表示。语言来表示。结构化语言的三种基本控制结构:结构化语言的三种基本控制结构:顺序结构顺序结构选择结构:选择结构:if_then_else 或或 switch_do ;循环结构:循环结构:while_do 或或 for_do 或或 do_while 。28软件工程例例3.6 售书系统中售书系统中“审查并开发票审查并开发票”的加工逻辑的加工逻辑对购书单上的的每一个书号对购书单上的的每一个书号if (学生用书表中无此书号学生用书表中无此书号)then 把书号写到出错通知上把书号写到出错通知上else 按书号检索按书号检索“教材存量表教材存量表”,获得该书的单价和库存获得该书的单价和库存量量 if (库存量库存量10000 10000 10000 10000 10000 10000 10000 10000预收贷款预收贷款 50%50%50%50%50%50%50%50%月薪月薪10001000100010001000100010001000奖金率奖金率8%8%5%5%6%6%4%4%鼓励奖鼓励奖50030030020035软件工程判定树判定树(Decision Tree)判定树也是用来表达加工逻辑的一判定树也是用来表达加工逻辑的一种工具。有时它比判定表更直观。种工具。有时它比判定表更直观。36软件工程 推销推销金额金额 预收货款预收货款 推销员工资推销员工资 奖金率奖金率 1000 8%+5001000 8%+500 50%50%1000 8%1000 8%10000 10000 1000 5%+3001000 5%+300 50%50%1000 5%1000 5%推销奖金策略推销奖金策略 1000 6%+3001000 6%+300 50%50%1000 6%1000 6%1000010000 1000 4%+200 1000 4%+200 50%50%1000 4%1000 4%图图3.10 3.10 判定树的示例判定树的示例37软件工程(思考题思考题)下面是货运收费策略:计算铁路运费时,若下面是货运收费策略:计算铁路运费时,若收件地点在本省以内,快件每公斤收件地点在本省以内,快件每公斤1.5元,慢件元,慢件每公斤每公斤1元。若收件地点在外省,快件每公斤元。若收件地点在外省,快件每公斤2元,慢件每公斤元,慢件每公斤1.5元。请分别用判定表和判定元。请分别用判定表和判定树表示。树表示。38软件工程(1)判定表判定表(货运收费策略货运收费策略)决策规则号决策规则号1234收件地点收件地点本省本省本省本省外省外省外省外省货运类型货运类型快件快件慢件慢件快件快件慢件慢件每公斤每公斤1.0 元元每公斤每公斤1.5 元元每公斤每公斤2.0 元元39软件工程(2)判定树判定树货运收费货运收费策略策略本省本省快件快件每公斤每公斤1.5元元外省外省货运类型货运类型收件地点收件地点运费运费慢件慢件每公斤每公斤1 元元快件快件每公斤每公斤2 元元慢件慢件每公斤每公斤1.5元元40软件工程3.1.3 SD模型的组成与描述模型的组成与描述 1.SD模型的组成模型的组成过程设计过程设计接口设计接口设计体系结构设计体系结构设计(SC图图)数据设计数据设计图图3.11 SD模型的组成模型的组成41软件工程2.SD模型的描述工具模型的描述工具体系结构设计是用来确定软件结构的,其描述工具体系结构设计是用来确定软件结构的,其描述工具为结构图(为结构图(Structure Chart),简称简称SC图图。(1)SC图的组成符号图的组成符号:SD方法约定方法约定:(1)用矩形框表示模块用矩形框表示模块;(2)用箭头或直线表示模块间的调用关系用箭头或直线表示模块间的调用关系;(3)在调用线的两旁用短箭头表示传入和传出模块的在调用线的两旁用短箭头表示传入和传出模块的数据流。数据流。ABCX,YZZ42软件工程传入模块传入模块XY传出模块传出模块YX变换模块变换模块XY控制模块控制模块XXYYSC图中允许使用的图中允许使用的6种模块种模块源模块源模块X漏模块漏模块X(a)(b)(c)(d)(e)(f)43软件工程(a)传入模块传入模块 从下属模块取得数据,经过某从下属模块取得数据,经过某些处理些处理,再将其传送给上级模块。它传送的数再将其传送给上级模块。它传送的数据流叫做逻辑输入流。据流叫做逻辑输入流。(b)传出模块传出模块 从上级模块获得数据,进行某从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出流。据流叫做逻辑输出流。(c)变换模块变换模块 它从上级模块取得数据,进行它从上级模块取得数据,进行特定的处理,转换成其它形式特定的处理,转换成其它形式,再传送回上级再传送回上级模块。模块。44软件工程(d)源模块源模块 处于传入部分的始端,它不调用处于传入部分的始端,它不调用其它模块。它传送的数据流叫做物理输入流。其它模块。它传送的数据流叫做物理输入流。(e)漏漏(终终)模块模块 处于传出部分的末端,它不处于传出部分的末端,它不调用其它模块。它传送的数据流叫做物理输出调用其它模块。它传送的数据流叫做物理输出流。流。(f)控制模块控制模块 对所有下属模块进行协调和管对所有下属模块进行协调和管理的模块。它只调用其它模块,不受其它模块理的模块。它只调用其它模块,不受其它模块调用。调用。45软件工程(2)SC图中的模块调用图中的模块调用(a)简单调用简单调用 A B CX,YZZ46软件工程(b)选择调用选择调用:用菱型符号表示。用菱型符号表示。(c)循环调用循环调用:用叠加在调用线始端的环形表示。用叠加在调用线始端的环形表示。A BCA BCD(a)选择调用示意图选择调用示意图(b)循环调用示意图循环调用示意图47软件工程 画画SC图的注意事项图的注意事项(1)同名的模块在同名的模块在SC图中仅出现一次图中仅出现一次;(2)模块之间的调用关系只能从上而下,模块之间的调用关系只能从上而下,因而模块间的调用关系可以用直线表示因而模块间的调用关系可以用直线表示;(3)同一层模块的调用次序同一层模块的调用次序,习惯上自左习惯上自左到右。到右。48软件工程3.2 结构化系统分析结构化系统分析(SA,Structured Analysis)结构化分析结构化分析就是使用就是使用 DFD、DD、结构化语言、结构化语言、判定表和判定树等工具,来建立一种称为结构判定表和判定树等工具,来建立一种称为结构化说明书(即需求规格说明书)的目标文档。化说明书(即需求规格说明书)的目标文档。结构化分析的基本步骤是:结构化分析的基本步骤是:(1)自顶向下对系统进行功能分解自顶向下对系统进行功能分解,画出分层画出分层的的DFD图图;(2)编制编制 DD 和和 PSPEC;(3)写出写出SRS(需求规格说明书)需求规格说明书)。49软件工程3.2.1 画画分层数据流图分层数据流图 大型复杂的软件系统,其大型复杂的软件系统,其DFD可能含有数百乃可能含有数百乃至数千个加工,不可能一次将它们画完整。至数千个加工,不可能一次将它们画完整。正确的做法是:从系统的基本模型(把整个系正确的做法是:从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。统看成一个加工)开始,逐层地对系统进行分解。每分解一次,系统的加工数量就增多一些,加工每分解一次,系统的加工数量就增多一些,加工的功能也更具体一些。继续重复这种分解,直到的功能也更具体一些。继续重复这种分解,直到所有的加工都足够简单为止。所有的加工都足够简单为止。不需再分解的加工称为不需再分解的加工称为“基本加工基本加工”。上述分解方法称为上述分解方法称为“自顶向下、逐步细化自顶向下、逐步细化”(Top-Down Stepwise Refinement)。)。50软件工程分层的数据流图分层的数据流图分层的数据流图分层的数据流图51软件工程数据流图绘制步骤数据流图绘制步骤(1)画系统的顶层图画系统的顶层图:顶层图顶层图表示系统与外部实体之间的数据交换表示系统与外部实体之间的数据交换关系。关系。顶层图顶层图只包含一个加工只包含一个加工(加工名即为系统名加工名即为系统名);顶层图描述顶层图描述系统与外部实体之间的数据流系统与外部实体之间的数据流;顶层图只有一张。顶层图只有一张。52软件工程(2)画系统的内部:画系统的内部:第二层第二层DFD图(有些教科书上称为层图):图(有些教科书上称为层图):分解顶层图为若干个加工,系统有几个功能,分解顶层图为若干个加工,系统有几个功能,就分解为几个加工;就分解为几个加工;描述加工与外部实体之间、加工与数据文件描述加工与外部实体之间、加工与数据文件之间、加工与加工之间的数据流。之间、加工与加工之间的数据流。第二层图只有一张第二层图只有一张,图中的加工号为图中的加工号为“,,n”。53软件工程 画更下层数据流图(第画更下层数据流图(第3层图、第层图、第4层图、层图、.)时,则分解上层图中的加工,直到)时,则分解上层图中的加工,直到图中尚未分解的加工都足够简单为止。子图中尚未分解的加工都足够简单为止。子图号就是父图中被分解的加工号;子图中图号就是父图中被分解的加工号;子图中加工号由图号、小数点和序号组成。加工号由图号、小数点和序号组成。54软件工程例例3.8 教材购销系统教材购销系统,功能如下:功能如下:(1)根据教学计划,向学生供应所需的教材。根据教学计划,向学生供应所需的教材。系统接受学生的购书单,检验购书单。若教材库存系统接受学生的购书单,检验购书单。若教材库存量充足,进行售书处理,即修改教材存量表,给学生量充足,进行售书处理,即修改教材存量表,给学生开发票和领书单,学生凭单到书库领书;开发票和领书单,学生凭单到书库领书;若教材库存量不足,对脱销的教材进行缺书登记。若教材库存量不足,对脱销的教材进行缺书登记。(2)根据缺书登记表采购所缺的教材,通知学生补购。根据缺书登记表采购所缺的教材,通知学生补购。按缺书登记表进行汇总,并按出版社统计缺书,将按缺书登记表进行汇总,并按出版社统计缺书,将缺书单发给书库保管员,以便采购。缺书单发给书库保管员,以便采购。待购教材到货后待购教材到货后,根据书库保管员发来的进书通知单根据书库保管员发来的进书通知单进行缺书销售,即修改教材存量表,并从缺书登记表进行缺书销售,即修改教材存量表,并从缺书登记表中取出缺书单进行售书处理。中取出缺书单进行售书处理。55软件工程例例3.8 教材购销系统教材购销系统,功能如下:功能如下:(1)根据教学计划,向学生供应所需的教材。根据教学计划,向学生供应所需的教材。系统接受学生的购书单,检验购书单。若教材库存系统接受学生的购书单,检验购书单。若教材库存量充足,进行售书处理,即修改教材存量表,给学生量充足,进行售书处理,即修改教材存量表,给学生开发票和领书单,学生凭单到书库领书;开发票和领书单,学生凭单到书库领书;若教材库存量不足,对脱销的教材进行缺书登记。若教材库存量不足,对脱销的教材进行缺书登记。(2)根据缺书登记表采购所缺的教材,通知学生补购。根据缺书登记表采购所缺的教材,通知学生补购。按缺书登记表进行汇总,并按出版社统计缺书,将按缺书登记表进行汇总,并按出版社统计缺书,将缺书单发给书库保管员,以便采购。缺书单发给书库保管员,以便采购。待购教材到货后待购教材到货后,根据书库保管员发来的进书通知单根据书库保管员发来的进书通知单进行缺书销售,即修改教材存量表,并从缺书登记表进行缺书销售,即修改教材存量表,并从缺书登记表中取出缺书单进行售书处理。中取出缺书单进行售书处理。56软件工程教材教材购销购销系统系统书库书库保管员保管员学学生生购书单购书单领书单领书单缺书单缺书单进书通知进书通知图图3.14 顶层图顶层图 (p52)57软件工程(p52)1销售销售2采购采购学学生生书书库库保保管管员员进书通知进书通知教材存量表教材存量表缺书登记表缺书登记表购书单购书单领书单领书单缺书单缺书单进书通知进书通知图图3.15 第二层图第二层图58软件工程1.1审查审查有效性有效性1.2购书数量购书数量审核审核进书通知进书通知F1教材存量表教材存量表F2 缺书登记表缺书登记表购书单购书单领书单领书单F3 学生用书表学生用书表暂缺书单暂缺书单图图3.16 第三层图第三层图:图图1 销售子系统销售子系统1.6产生补产生补售书单售书单1.5登记缺书登记缺书1.4登记售书和登记售书和打印领书单打印领书单F4 售书登记表售书登记表发票发票有效购有效购书单书单补售书单补售书单59软件工程图图3.17 第三层第三层DFD采购子系统采购子系统.修改教材修改教材库存和待库存和待购量购量.按书号按书号汇总缺书汇总缺书.按出版社按出版社统计缺书统计缺书缺书登记表缺书登记表 教材存量表教材存量表 待购教材表待购教材表 教材一览表教材一览表 进书通知进书通知 进书通知进书通知 缺书单缺书单 60软件工程3.2.2 编写数据定义编写数据定义(数据字典数据字典)与加工说明与加工说明最底层的最底层的DFD图包含了系统的全部数据和加图包含了系统的全部数据和加工。在底层图中,从数据的终点开始,沿着工。在底层图中,从数据的终点开始,沿着DFD图一步步向数据源点回溯,较易看清数据图一步步向数据源点回溯,较易看清数据流中每一个数据项的来龙去脉,也易于搞清每流中每一个数据项的来龙去脉,也易于搞清每个数据文件的组成以及各个加工的加工策略。个数据文件的组成以及各个加工的加工策略。61软件工程例如,图例如,图3.163.16中,中,“领书单领书单”是主要输出数据流,按:是主要输出数据流,按:领书单领书单 发票发票 有效购书单有效购书单 购书单购书单的次序回溯,可以得到各数据流、数据文件以及加工说的次序回溯,可以得到各数据流、数据文件以及加工说明的定义,如:明的定义,如:领书单领书单 学号学号 +姓名姓名 +书号书号+数量数量 发票学号发票学号+姓名姓名+书号书号+单价单价+数量数量+总价总价+书费合计书费合计有效购书单学号有效购书单学号 +姓名姓名 +书号书号+数量数量 教材存量表教材存量表 书号书号+单价单价+数量数量 62软件工程3.2.3 需求分析的复审需求分析的复审(Requirement Review)需求分析的文档完成后,应由用户、系统分析需求分析的文档完成后,应由用户、系统分析员、设计人员等组成的复审小组进行复审。复审员、设计人员等组成的复审小组进行复审。复审的重点是文档的完整性、易改性和易读性,尽可的重点是文档的完整性、易改性和易读性,尽可能多地发现文档中存在的矛盾、冗余和遗漏。能多地发现文档中存在的矛盾、冗余和遗漏。以下是几个注意点:以下是几个注意点:63软件工程(1)注意注意DFD图的加工编号图的加工编号:在数据流图中,需按层给加工编号。编号表在数据流图中,需按层给加工编号。编号表明该加工所处的层次及上下层的父子关系。明该加工所处的层次及上下层的父子关系。顶层图中的加工不编号。顶层图中的加工不编号。第二层图中的加工编号为第二层图中的加工编号为:,n。第三层图中的加工编号为第三层图中的加工编号为:1.1,1.2,;2.1,2.2,;n.1,n.2,等,等,以此类推。以此类推。64软件工程(2)不论加工、数据文件和数据流,都不论加工、数据文件和数据流,都应该命名(应该命名(文件与加工之间的数据流可文件与加工之间的数据流可以不命名以不命名)。)。(3)每个加工必须既有输入流,又有输每个加工必须既有输入流,又有输出流。一个加工的输出流不应与输入流出流。一个加工的输出流不应与输入流同名。同名。65软件工程(4)父图和子图的平衡:父图和子图的平衡:父图父图(中某个加工中某个加工)和和(相应的相应的)子图的输入子图的输入流和输出流流和输出流(在数量和名称上在数量和名称上)应分别保持一应分别保持一致,称为父图和子图的平衡。致,称为父图和子图的平衡。(若父图的一个数据流对应子图中的几个(若父图的一个数据流对应子图中的几个数据流,而组成这些数据流的数据项全体正数据流,而组成这些数据流的数据项全体正好是父图中的这个数据流,也算是平衡的。)好是父图中的这个数据流,也算是平衡的。)66软件工程1.31.31.3.11.3.11.3.21.3.21.3.31.3.3发票发票领书单领书单学生姓名学生姓名书费总价书费总价领书单领书单(a)父图父图父图和子图平衡的示意图父图和子图平衡的示意图(b)子图子图(发票发票=学生姓名学生姓名+书费总价书费总价)67软件工程(5)分解的速度宜均匀:分解的速度宜均匀:同一图中的各个加工,分解的步子应同一图中的各个加工,分解的步子应大致均匀,保持同步扩展。每一加工每大致均匀,保持同步扩展。每一加工每次可分为次可分为24个加工,最多不超过个加工,最多不超过7个。个。68软件工程(第(第3章章 补充习题)补充习题)17.某银行储蓄系统功能是某银行储蓄系统功能是:将储户填写的存款单或取将储户填写的存款单或取款单输入系统。款单输入系统。如果是存款,系统将储户的存款信如果是存款,系统将储户的存款信息(姓名、住址、存款日期、存款类型、存款金额、息(姓名、住址、存款日期、存款类型、存款金额、利率等)记录在帐户文件中,并打印存款清单给储利率等)记录在帐户文件中,并打印存款清单给储户;如果是取款,系统先查询帐户文件,并打印取户;如果是取款,系统先查询帐户文件,并打印取款清单给储户。款清单给储户。(1)画出该问题数据流图的画出该问题数据流图的顶层图顶层图 和和 第二层图。第二层图。(2)以公式的形式建立数据流条目以公式的形式建立数据流条目“存款单存款单”。69软件工程(第(第3章补充习题)章补充习题)17.某银行储蓄系统功能是某银行储蓄系统功能是:将储户填写的存款单或将储户填写的存款单或取款单输入系统。取款单输入系统。如果是存款,系统将储户的存款如果是存款,系统将储户的存款信息(姓名、住址、存款日期、存款类型、存款金信息(姓名、住址、存款日期、存款类型、存款金额、利率等)记录在帐户文件中,并打印存款清单额、利率等)记录在帐户文件中,并打印存款清单给储户;如果是取款,系统先查询帐户文件,并打给储户;如果是取款,系统先查询帐户文件,并打印取款清单给储户。印取款清单给储户。(1)画出该问题数据流图的画出该问题数据流图的顶层图顶层图 和和 第二层图。第二层图。(2)以公式的形式建立数据流条目以公式的形式建立数据流条目“存款单存款单”。70软件工程3.3 结构化系统设计结构化系统设计(SD,Structured Design)3.3.1 SD概述概述 1.面向数据流的设计面向数据流的设计和面向数据结构的设计和面向数据结构的设计 按照出发点的不同按照出发点的不同,传统的软件设计又可分为传统的软件设计又可分为面向数据流的设计和面向数据结构的设计两大面向数据流的设计和面向数据结构的设计两大类。前者以结构化设计(类。前者以结构化设计(Structured Design,SD)为主要代表,后者以为主要代表,后者以Jackson方法为主要代表。方法为主要代表。71软件工程 在面向数据流的方法中在面向数据流的方法中,数据流是考数据流是考虑一切问题的出发点。在分析阶段,用虑一切问题的出发点。在分析阶段,用数据流图来表示系统的逻辑模型;在设数据流图来表示系统的逻辑模型;在设计阶段,按照数据流图的不同类型计阶段,按照数据流图的不同类型(变变换型或事务型换型或事务型)将它们转换为相应的软将它们转换为相应的软件结构图。件结构图。72软件工程 Jackson方法以数据结构作为分析与设方法以数据结构作为分析与设计的基础计的基础,认为算法的结构在很大程度认为算法的结构在很大程度上依赖于它要处理的问题的数据结构上依赖于它要处理的问题的数据结构,因此可以由该问题的数据结构导出它的因此可以由该问题的数据结构导出它的程序结构。面向数据结构的设计方法主程序结构。面向数据结构的设计方法主要用于小型数据处理系统的开发要用于小型数据处理系统的开发,一般一般情况下也适合于在详细设计阶段使用情况下也适合于在详细设计阶段使用.73软件工程2.2.从分析模型导出设计模型从分析模型导出设计模型数据字典数据字典数数据据流流图图实实体体关关系系图图状态迁移图状态迁移图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计(SC)(SC)数据设计数据设计74软件工程3.3.2 SD的步骤的步骤:从从DFD图到图到SC图图1.数据流图的类型数据流图的类型:有两种形式,即:有两种形式,即:变换型变换型(Transform Flow)和和 事务型事务型(Transaction Flow)。75软件工程(1)变换型结构变换型结构(Transform Flow)变换型结构由三部分组成变换型结构由三部分组成:传入路径传入路径(Afferent Path)、)、变换中心变换中心(Transform Center)和)和传出路径传出路径(Efferent Path)。流经这)。流经这3个部分的数据流分别称为:传入流、变换流个部分的数据流分别称为:传入流、变换流和传出流。和传出流。变换中心的任务是:通过计算或处理,把系变换中心的任务是:通过计算或处理,把系统的传入流变换为传出流。统的传入流变换为传出流。传入路径传入路径变换中心变换中心传出路径传出路径传入流传入流变换流变换流传出流传出流76软件工程ABCaPRWQUVDEbcrwdevup传入部分传入部分变换中心变换中心传出部分传出部分图图3.23 变换型结构的模型变换型结构的模型77软件工程(2)事务型结构事务型结构(Transaction Flow)事务型结构由至少一条事务型结构由至少一条接收路径接收路径(Receive Path)、一、一个个事务中心事务中心(Transaction Center)和和若干条动作路径若干条动作路径(Action Path)组成。当外部信息沿着接收路径进入系组成。当外部信息沿着接收路径进入系统后统后,经过事务中心处理,获得某一个特定值,并据此经过事务中心处理,获得某一个特定值,并据此启动某一动作路径的操作。示意图如下:启动某一动作路径的操作。示意图如下:事务事务中心中心接收路径接收路径动作路径动作路径图图3.21 事务型结构的基本模型事务型结构的基本模型78软件工程2.SD方法的步骤方法的步骤 SD方法规定了下列方法规定了下列4个步骤个步骤:(1)重审数据流图,必要时可再次进行修改或细化;重审数据流图,必要时可再次进行修改或细化;(2)鉴别数据流图的结构特征,确定它是属于变换型还鉴别数据流图的结构特征,确定它是属于变换型还是事务型;是事务型;(3)按照