1、需求分析需求分析福州大学福州大学 软件学院软件学院张舒张舒本章主要内容本章主要内容 软件需求分析的任务和过程软件需求分析的任务和过程 结构化分析方法结构化分析方法 原型化方法原型化方法 动态分析方法动态分析方法 数据及数据库需求数据及数据库需求需求(需求(Requirements)定义定义:需求是关于系统将要完成什么工作需求是关于系统将要完成什么工作(what)(what)的一段描述语句的一段描述语句,是指用户或者客户是指用户或者客户对要开发的软件系统的要求。对要开发的软件系统的要求。它们必须经过所有相关人员的认可它们必须经过所有相关人员的认可,其目的是其目的是彻底解决客户的问题。彻底解决客户
2、的问题。需求的内容在需求的内容在“问题定义问题定义”中描述(可能是招中描述(可能是招标文件)。标文件)。需求分析需求分析 指开发人员为了准确地理解和表达用指开发人员为了准确地理解和表达用户要求,进行细致的调查分析,将用户要求,进行细致的调查分析,将用户户非形式的需求陈述非形式的需求陈述转化为转化为完整的需完整的需求定义求定义,再由需求定义转换到相应的,再由需求定义转换到相应的形式功能规约形式功能规约(需求规格说明)的(需求规格说明)的过过程程。准确地回答准确地回答“系统必须做什么?系统必须做什么?”软件需求分析的目标软件需求分析的目标 确定系统的综合要求确定系统的综合要求确定系统确定系统功能、
3、性能、运行功能、性能、运行等等方面要求方面要求对对将来可能提出的要求将来可能提出的要求做准备做准备 分析系统的数据要求分析系统的数据要求 考虑数据、数据处理考虑数据、数据处理 导出系统逻辑模型导出系统逻辑模型 通常用数据流图表示通常用数据流图表示 修正系统开发计划修正系统开发计划 对系统成本、进度有更精确的估算对系统成本、进度有更精确的估算 总之,需求分析的任务就是借助于总之,需求分析的任务就是借助于当当前系统的逻辑模型前系统的逻辑模型导出导出目标系统的逻目标系统的逻辑模型辑模型,解决目标系统的,解决目标系统的“做什么做什么”的问题。的问题。需求分析的重要性需求分析的重要性 “构建一个软件系统
4、最困难的部分是确构建一个软件系统最困难的部分是确定构建什么。其他部分工作不会像这部分定构建什么。其他部分工作不会像这部分工作一样,在出错之后会如此严重的影响工作一样,在出错之后会如此严重的影响随后实现的系统,并且在以后修补竟会如随后实现的系统,并且在以后修补竟会如此的困难。此的困难。”Fred Brooks 问题:问题:对于任何项目是否一定要严格执行全面的对于任何项目是否一定要严格执行全面的需求分析呢?需求分析呢?需求分析的过程需求分析的过程(1)(1)问题识别问题识别n确定对目标系统的综合要求,即软件的确定对目标系统的综合要求,即软件的需求需求n提出这些需求实现条件,以及需求应达提出这些需求
5、实现条件,以及需求应达到的标准到的标准软件的需求包括:软件的需求包括:功能需求功能需求 性能需求性能需求 环境需求环境需求 可靠性需求可靠性需求 安全保密要求安全保密要求 用户界面需求用户界面需求 资源使用需求资源使用需求 成本消耗需求成本消耗需求 开发进度需求开发进度需求 预先估计以后预先估计以后系统可能达到系统可能达到的目标的目标问题识别的另一项工作是建立分析所需要问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺利地对问题进行的通信途径,以保证能顺利地对问题进行分析。分析。(2)(2)分析与综合分析与综合n基本思想:基本思想:n从信息流和信息结构出发,逐步细化所有的从信息流和信息
6、结构出发,逐步细化所有的软件功能,软件功能,n找出系统各元素之间的联系、接口特性和设找出系统各元素之间的联系、接口特性和设计上的约束,分析它们是否满足功能要求,计上的约束,分析它们是否满足功能要求,是否合理。是否合理。n剔除其不合理的部分,增加其需要部分,最剔除其不合理的部分,增加其需要部分,最终综合成系统的解决方案,给出目标系统的终综合成系统的解决方案,给出目标系统的详细逻辑模型。详细逻辑模型。常用的分析方法常用的分析方法 功能分析法功能分析法将系统看作若干功能模块的集合,进行子功将系统看作若干功能模块的集合,进行子功能分解,最终形成系统雏形。能分解,最终形成系统雏形。结构化分析法结构化分析
7、法面向数据流的结构化分析方法面向数据流的结构化分析方法 (SA)(SA)面向数据结构的面向数据结构的JacksonJackson方法方法 (JSD)(JSD)面向数据结构的结构化数据系统开发方法面向数据结构的结构化数据系统开发方法 (DSSD)(DSSD)常用的分析方法常用的分析方法 信息建模法信息建模法借助各种有序模型(功能、信息、数据、控制、借助各种有序模型(功能、信息、数据、控制、决策等),来分析系统。常用工具:决策等),来分析系统。常用工具:E ER R图图 面向对象的分析方法面向对象的分析方法 (OOA)(OOA)识别问题域内对象,及其之间的联系,并建立识别问题域内对象,及其之间的联
8、系,并建立模型模型(3)(3)编制需求分析阶段的文档编制需求分析阶段的文档n软件需求说明书软件需求说明书n数据要求说明书数据要求说明书n初步的用户手册初步的用户手册n修改、完善与确定软件开发实施修改、完善与确定软件开发实施计划计划(4)(4)需求分析评审需求分析评审n系统定义的目标是否与用户的要求一致系统定义的目标是否与用户的要求一致;n系统需求分析阶段提供的文档资料是否系统需求分析阶段提供的文档资料是否齐全齐全;n文档中的所有描述是否完整、清晰、准文档中的所有描述是否完整、清晰、准确反映用户要求确反映用户要求;n与所有其它系统成分的重要接口是否都与所有其它系统成分的重要接口是否都已经描述已经
9、描述;n被开发项目的数据流与数据结构是否足被开发项目的数据流与数据结构是否足够确定够确定;n所有图表是否清楚,在不补充说明时能所有图表是否清楚,在不补充说明时能否理解否理解;n主要功能是否已包括在规定的软件范围主要功能是否已包括在规定的软件范围之内,是否都已充分说明之内,是否都已充分说明;n设计的约束条件或限制条件是否符合实设计的约束条件或限制条件是否符合实际际;n开发的技术风险是什么开发的技术风险是什么;n是否考虑过软件需求的其它方案是否考虑过软件需求的其它方案;n是否考虑过将来可能会提出的软件需求是否考虑过将来可能会提出的软件需求;n是否详细制定了检验标准,它们能否对系是否详细制定了检验标
10、准,它们能否对系统定义是否成功进行确认统定义是否成功进行确认;需求分析流程需求分析流程需求分析过程的任务需求分析过程的任务 可以概括为可以概括为7个不同的活动:个不同的活动:起始起始导出导出精化精化协商协商规格说明规格说明确认确认管理管理起始起始 通常是在确定了商业要求或者发现新市场、通常是在确定了商业要求或者发现新市场、新服务时,项目才开始,新服务时,项目才开始,相关人员会进行粗略的可行性分析、并确相关人员会进行粗略的可行性分析、并确定项目范围后开始。定项目范围后开始。导出需求导出需求 看似简单:看似简单:询问客户,系统或者产品的主要目标是什么?询问客户,系统或者产品的主要目标是什么?想要实
11、现什么?想要实现什么?产品如何满足业务要求,如何用于日常工作?产品如何满足业务要求,如何用于日常工作?实则困难实则困难为何导出需求十分困难?为何导出需求十分困难?范围问题范围问题系统边界不清楚,客户或者用户的说明带有多系统边界不清楚,客户或者用户的说明带有多余的技术细节,可能混淆系统整体目标余的技术细节,可能混淆系统整体目标 理解问题理解问题用户不能完全确定需要什么,在与工程师沟通用户不能完全确定需要什么,在与工程师沟通过程中有问题。需求之间还可能存在冲突。过程中有问题。需求之间还可能存在冲突。易变问题易变问题需求随时间变化需求随时间变化可采取的解决办法可采取的解决办法 发掘需求发掘需求克服企
12、业背景对需求工程的影响克服企业背景对需求工程的影响克服方法不当对需求工程的影响。克服方法不当对需求工程的影响。克服受访谈者对需求工程的影响。克服受访谈者对需求工程的影响。克服就项目论项目对需求工程的影响。克服就项目论项目对需求工程的影响。限制需求限制需求不能头脑发热不能头脑发热认清真正的需求认清真正的需求定义需求的边界定义需求的边界 引导需求引导需求 控制需求控制需求精化精化 是一个分析建模动作,由一系列的建模和是一个分析建模动作,由一系列的建模和求精任务构成。求精任务构成。最终形成一个分析模型,定义了问题的信最终形成一个分析模型,定义了问题的信息域、功能域和行为域。息域、功能域和行为域。协商
13、协商通过协商来调解需求冲突。通过协商来调解需求冲突。规格说明规格说明可以是一份文档、一套图形化的模型等可以是一份文档、一套图形化的模型等 确认确认检查规格说明,排除不一致性、疏漏和错误检查规格说明,排除不一致性、疏漏和错误 管理管理帮助项目组在进展中标识、控制和跟踪需求及帮助项目组在进展中标识、控制和跟踪需求及其变更其变更软件需求分析的原则软件需求分析的原则需要能够表达和理解问题的信需要能够表达和理解问题的信息域和功能域息域和功能域要能以层次化的方式对问题进要能以层次化的方式对问题进行分解和不断细化行分解和不断细化要给出系统的逻辑视图和物理要给出系统的逻辑视图和物理视图视图 信息域信息域包括包
14、括数据流、数据内容和数据结数据流、数据内容和数据结构。构。数据流数据流就是数据经过系统时的变化形式,就是数据经过系统时的变化形式,输入数据先转换成中间数据,再由中间输入数据先转换成中间数据,再由中间数据转换成输出结果数据。数据转换成输出结果数据。数据内容数据内容就是数据项。就是数据项。数据结构数据结构就是各数据项的逻辑组织。就是各数据项的逻辑组织。把问题以自顶向下、逐层分解的方式分解把问题以自顶向下、逐层分解的方式分解为几个较易理解的部分,并确定各部分之为几个较易理解的部分,并确定各部分之间的接口,从而实现软件的整体功能。间的接口,从而实现软件的整体功能。在需求分析阶段,软件的功能域和信息域都
15、可在需求分析阶段,软件的功能域和信息域都可以做进一步的分解。以做进一步的分解。n逻辑视图逻辑视图给出的是系统要达到的功能给出的是系统要达到的功能和要处理的信息间的关系,而不是实和要处理的信息间的关系,而不是实现细节。现细节。n物理视图物理视图给出的是系统处理功能和数给出的是系统处理功能和数据结构的实际表示形式,这通常由设据结构的实际表示形式,这通常由设备本身所决定。备本身所决定。小结:需求分析方法小结:需求分析方法实践中,可以采取三阶段分析法:实践中,可以采取三阶段分析法:第一阶段:第一阶段:“访谈式访谈式”(Visitation)这一阶段是和具体用户方的领导层、业务层这一阶段是和具体用户方的
16、领导层、业务层人员的访谈式沟通,人员的访谈式沟通,1.主要目的是从宏观上把握用户的具体需求方主要目的是从宏观上把握用户的具体需求方向和趋势,了解现有的组织架构、业务流程、向和趋势,了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等硬件环境、软件环境、现有的运行系统等等具体情况、客观的信息。具体情况、客观的信息。第二阶段:第二阶段:“诱导式诱导式”(Inducement)在上一阶段基础上结合现有的硬件、软件实在上一阶段基础上结合现有的硬件、软件实现方案,做出简单的用户流程页面,现方案,做出简单的用户流程页面,同时结合以往的项目经验对用户采用诱导式、同时结合以往的项目经验对用户采
17、用诱导式、启发式的调研方法和手段,和用户一起探讨启发式的调研方法和手段,和用户一起探讨业务流程设计的合理性、准确性、便易性、业务流程设计的合理性、准确性、便易性、习惯性。习惯性。用户可以操作简单演示的用户可以操作简单演示的DEMO,来感受一,来感受一下整个业务流程的设计合理性、准确性等等下整个业务流程的设计合理性、准确性等等问题,及时地提出改进意见和方法。问题,及时地提出改进意见和方法。第三阶段:第三阶段:“确认式确认式”(Afirm)这一阶段是在上述两个阶段成果的基础上,这一阶段是在上述两个阶段成果的基础上,进行具体的流程细化、数据项的确认阶段,进行具体的流程细化、数据项的确认阶段,这个阶段
18、承建方必须提供原型系统和明确的这个阶段承建方必须提供原型系统和明确的业务流程报告、数据项表,并能清晰地向用业务流程报告、数据项表,并能清晰地向用户描述系统的业务流设计目标。户描述系统的业务流设计目标。用户方可以通过审查业务流程报告、数据项用户方可以通过审查业务流程报告、数据项表以及操作承建方提供的表以及操作承建方提供的DEMO系统,来提系统,来提出反馈意见,并对已经可接受的报告、文档出反馈意见,并对已经可接受的报告、文档签字确认。签字确认。软件需求分析软件需求分析n需求分析方法由对软件问题的需求分析方法由对软件问题的信息信息域域和和功能域功能域的的系统分析过程及其表系统分析过程及其表示方法示方
19、法组成组成n大多数的需求分析方法是由信息驱大多数的需求分析方法是由信息驱动的动的n信息域具有三种属性信息域具有三种属性:数据流、数据数据流、数据内容和数据结构。内容和数据结构。分析建模的方法分析建模的方法 20世纪世纪70年代,人们从早期的、非结构化年代,人们从早期的、非结构化的方法入手,首次尝试使用标准化的方法,的方法入手,首次尝试使用标准化的方法,开发并相继推出了各种开发并相继推出了各种“结构化分析结构化分析”方方法,还相继衍生出若干派生方法。法,还相继衍生出若干派生方法。20世纪世纪90年代初,面向对象分析方法才悄年代初,面向对象分析方法才悄然成形,并且同样随之出现了一批大同小然成形,并
20、且同样随之出现了一批大同小异的派生方法。异的派生方法。结构化分析结构化分析n基本思想:基本思想:n用用抽象模型的概念抽象模型的概念,按照软件内部数,按照软件内部数据传递、变换的关系,据传递、变换的关系,自顶向下逐层自顶向下逐层分解分解,直到找到满足功能要求的所有,直到找到满足功能要求的所有可实现的软件为止。可实现的软件为止。n结构化分析方法是一种结构化分析方法是一种依赖数据流图依赖数据流图的自顶向下的建模方法,的自顶向下的建模方法,n它的核心是数据流图,所以又说它是一它的核心是数据流图,所以又说它是一种面向数据流的分析方法。种面向数据流的分析方法。n结构化分析方法适合于结构化分析方法适合于数据
21、处理类型数据处理类型软件的需求分析。软件的需求分析。结构化分析方法使用工具:结构化分析方法使用工具:数据流图数据流图 数据词典数据词典 结构化英语结构化英语 判定表与判定树判定表与判定树数据流图数据流图 数据流图中的主要图形元素数据流图中的主要图形元素数据加工数据加工(数据变换数据变换)数据源点或终点数据源点或终点(外部实体外部实体)数据流数据流数据存储文件数据存储文件描述银行取款过程的数据流图描述银行取款过程的数据流图数据流与数据加工之间的关系数据流与数据加工之间的关系数据流图的层次结构数据流图的层次结构 为了表达数据处理过程的数据加工为了表达数据处理过程的数据加工情况,需要采用情况,需要采
22、用层次结构层次结构的数据流的数据流图。图。按照系统的层次结构进行按照系统的层次结构进行逐步分解逐步分解,并以分层的数据流图反映这种结构并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整关系,能清楚地表达和容易理解整个系统个系统分层的数据流图分层的数据流图n在多层数据流图中,在多层数据流图中,顶层流图顶层流图仅包仅包含含一个加工一个加工,它代表被开发系统。,它代表被开发系统。它的输入流是该系统的输入数据,它的输入流是该系统的输入数据,输出流是系统所输出数据输出流是系统所输出数据n底层流图底层流图是指其是指其加工不需再做分解加工不需再做分解的数据流图,它处在最底层的数据流图,它处在最底层
23、n中间层流图中间层流图则表示则表示对其上层父图的对其上层父图的细化细化。它的每一加工可能继续细化,。它的每一加工可能继续细化,形成子图。形成子图。结构化分析方法步骤示例结构化分析方法步骤示例 商店业务处理系统商店业务处理系统n数据流图绘制步骤数据流图绘制步骤n首先确定系统的输入和输出首先确定系统的输入和输出n根据商店业务,画出顶层数据流图,根据商店业务,画出顶层数据流图,以反映最主要业务处理流程以反映最主要业务处理流程n这个数据流图只是一个高层的系统逻辑模这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能型,它反映了目标系统要实现的功能n分析系统的主要功能:分析系统的主要功能
24、:n商店业务处理的主要功能应当有商店业务处理的主要功能应当有销销售、采购、会计售、采购、会计三大项。三大项。n主要数据流输入的源点和输出终点主要数据流输入的源点和输出终点是是顾客顾客和和供应商供应商。n然后从输入端开始,根据商店业然后从输入端开始,根据商店业务工作流程,画出数据流流经的务工作流程,画出数据流流经的各加工框,逐步画到输出端,得各加工框,逐步画到输出端,得到第一层数据流图到第一层数据流图第一层数据流图第一层数据流图加细每一个加工框加细每一个加工框 销售细化销售细化采购细化采购细化绘制数据流图的原则绘制数据流图的原则 数据流图上所有图形符号数据流图上所有图形符号只限于只限于前前述四种
25、基本图形元素述四种基本图形元素 数据流图的主图数据流图的主图必须包括必须包括前述四种前述四种基本元素,缺一不可基本元素,缺一不可 数据流图的主图上的数据流必须封数据流图的主图上的数据流必须封闭在外部实体之间闭在外部实体之间 每个加工至少有一个输入数据流和每个加工至少有一个输入数据流和一个输出数据流一个输出数据流 在数据流图中,需按层给加工框在数据流图中,需按层给加工框编号编号。编号表明该加工所处层次及上下层的亲编号表明该加工所处层次及上下层的亲子关系子关系 规定任何一个数据流子图必须与它上规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数一层的一个加工对应,两者的输入数据流和输出
26、数据流必须一致。此即据流和输出数据流必须一致。此即父父图与子图的平衡图与子图的平衡 图上每个元素都必须有名字图上每个元素都必须有名字 数据流图中不可夹带控制流数据流图中不可夹带控制流 初画时可以忽略琐碎的细节,以集中初画时可以忽略琐碎的细节,以集中精力于主要数据流精力于主要数据流如何分解加工?如何分解加工?一个加工每次分解最多不要超过一个加工每次分解最多不要超过7个个 分解要自然,概念上要合理、清晰分解要自然,概念上要合理、清晰 在不影响数据流图易理解性情况下,可以在不影响数据流图易理解性情况下,可以适当多分几个部分适当多分几个部分 上层可以分解得快些,中、下层要分解得上层可以分解得快些,中、
27、下层要分解得慢些慢些数据流图的优点数据流图的优点 自顶向下描述系统中信息的流动,结构清自顶向下描述系统中信息的流动,结构清晰,概念性强,有利于系统分析员理顺系晰,概念性强,有利于系统分析员理顺系统脉络、澄清含混的概念和逻辑。统脉络、澄清含混的概念和逻辑。数据流图的表达方式是结构化的,易于与数据流图的表达方式是结构化的,易于与常用的计算机处理相对应,容易转换为低常用的计算机处理相对应,容易转换为低级别的设计级别的设计数据流图的缺点数据流图的缺点 可能变得非常复杂,不易理解。可能变得非常复杂,不易理解。不能处理出错和意外情况。不能处理出错和意外情况。不能描述过程的控制结构(没有条件分支、不能描述过
28、程的控制结构(没有条件分支、循环、选择)。循环、选择)。数据词典数据词典 数据字典是为了描述在结构化分析过程中数据字典是为了描述在结构化分析过程中定义的对象的内容,而使用的一种半形式定义的对象的内容,而使用的一种半形式化的工具。化的工具。数据字典数据字典是描述数据信息的集合,它对数是描述数据信息的集合,它对数据流图中的各个元素进行完整的定义与说据流图中的各个元素进行完整的定义与说明,是数据流图的补充工具。明,是数据流图的补充工具。数据字典的内容数据字典的内容(1 1)数据流数据流在数据流图中,数据以数据流为单位进行传输。在数据流图中,数据以数据流为单位进行传输。主要描述该数据流的各组成部分主要
29、描述该数据流的各组成部分,包括:,包括:名字及称号。名字及称号。可能的来源和去处:外部实体,处理逻辑,数据存可能的来源和去处:外部实体,处理逻辑,数据存储。储。组成:一个数据流可能包含若干个数据结构。组成:一个数据流可能包含若干个数据结构。例如,数据流例如,数据流“乘客名单乘客名单”,由姓名、身份证、,由姓名、身份证、座位等级组成座位等级组成 乘客名单乘客名单 姓名身份证座位等级姓名身份证座位等级 (2 2)数据项)数据项数据项也称数据元素,它数据项也称数据元素,它“不可再分不可再分”,是数,是数据的最小单位。据的最小单位。主要给出每个数据单项的值类型、允许值,主要给出每个数据单项的值类型、允
30、许值,包包括:括:名称和编号。名称和编号。别名数据项另外的名称。别名数据项另外的名称。取值的范围和含义。取值的范围和含义。长度数据项包含的字符或数字的位数。长度数据项包含的字符或数字的位数。例如:例如:帐号帐号=00000=000009999999999存款期限存款期限1|3|51|3|5(3 3)文件条目)文件条目主要给出文件的定义,通常列出组成文件记主要给出文件的定义,通常列出组成文件记录的数据流录的数据流,包括:,包括:名称和编号。名称和编号。流入、流出数据流。流入数据流指出其来源,流入、流出数据流。流入数据流指出其来源,流出数据流指出其去向。流出数据流指出其去向。组成,所包含的数据项和
31、数据结构。组成,所包含的数据项和数据结构。例如:例如:订单文件订单编号顾客名称产品名称订单文件订单编号顾客名称产品名称订货数量交货日期订货数量交货日期(4 4)逻辑加工)逻辑加工主要内容包括:主要内容包括:名称和编号。名称和编号。简单描述。简单描述。输入输出。输入输出。主要功能。主要功能。1.1.加工是加工是DFDDFD的重要组成部分,一般单独的重要组成部分,一般单独进行说明进行说明。(5 5)数据结构)数据结构 数据结构是各个数据项之间的逻辑关数据结构是各个数据项之间的逻辑关系的一种描述系的一种描述。一个数据结构可以由。一个数据结构可以由若干个数据项组成,也可以由若干个若干个数据项组成,也可
32、以由若干个数据项和数据结构组成。主要内容包数据项和数据结构组成。主要内容包括:括:名称和编号名称和编号1.组成。若是一个简单的数据结构,需要组成。若是一个简单的数据结构,需要列出它所包含的数据项;若是一个嵌套列出它所包含的数据项;若是一个嵌套的数据结构,需要列出它所包含的数据的数据结构,需要列出它所包含的数据结构名称。结构名称。数据结构的描述数据结构的描述 被定义为被定义为 与与 x x=a ab b.,.,.或或 或或 x x=a a,b b .|.|.x x=a a|b b .或或 m.n m.n 重复重复 x x=a a,x x=3=3a a88(.)(.)可选可选 x x=(=(a a
33、)“.”“.”基本数据元素基本数据元素 x x=“=“a a”.连结符连结符 x x=1.9=1.9数据字典的用途数据字典的用途数据字典中所建立的一组严密一致的定义数据字典中所建立的一组严密一致的定义有助于改进工程参与人员之间的通信,消有助于改进工程参与人员之间的通信,消除许多可能的误会,避免许多麻烦的接口除许多可能的误会,避免许多麻烦的接口问题。问题。数据字典列出了使用一个给定的数据元素数据字典列出了使用一个给定的数据元素的所有程序或模块,很容易估计改变一个的所有程序或模块,很容易估计改变一个数据将产生的影响,并能对所有受影响的数据将产生的影响,并能对所有受影响的程序或模块作出相应的改变。程
34、序或模块作出相应的改变。数据字典是开发数据库的第一步。数据字典是开发数据库的第一步。存折格式存折格式存折户名所号帐号开户日性质存折户名所号帐号开户日性质(印密印密)11存取行存取行5050户名户名22字母字母2424所号所号“001”.“999”001”.“999”帐号帐号“00000001”.“99999999”00000001”.“99999999”开户日年月日开户日年月日性质性质“1”.“6”1”.“6”注:注:“1”1”表示普通户,表示普通户,“5”5”表示工资户等表示工资户等印密印密“0”0”注:印密在存折上不显示注:印密在存折上不显示存取行日期(摘要)支出存入余存取行日期(摘要)支
35、出存入余额操作复核额操作复核n对数据流图的每一个基本加工,必须有对数据流图的每一个基本加工,必须有一个基本加工逻辑说明一个基本加工逻辑说明n基本加工逻辑说明必须描述基本加工如何把基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则输入数据流变换为输出数据流的加工规则n加工逻辑说明必须描述实现加工的策略而不加工逻辑说明必须描述实现加工的策略而不是实现加工的细节是实现加工的细节n加工逻辑说明中包含的信息应是充足的,完加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的备的,有用的,无冗余的加工的逻辑说明加工的逻辑说明用于写加工逻辑说明的工具用于写加工逻辑说明的工具结构
36、化英语结构化英语u 判定表判定表u 判定树判定树(1)结构化英语)结构化英语结构化英语的词汇表由结构化英语的词汇表由 英语命令动词英语命令动词 数据词典中定义的名字数据词典中定义的名字 有限的自定义词有限的自定义词 逻辑关系词逻辑关系词 IF_THEN_ELSEIF_THEN_ELSE、CASE_OF CASE_OF、WHILE_DOWHILE_DO、REPEAT_UNTILREPEAT_UNTIL等组成。等组成。是一种介于自然语言和形式化语言之间是一种介于自然语言和形式化语言之间的语言的语言,简单、易学、少二义性。简单、易学、少二义性。语言的正文用基本控制结构进行分割,语言的正文用基本控制结
37、构进行分割,加工中的操作用自然语言短语来表示。加工中的操作用自然语言短语来表示。其基本控制结构有三种:其基本控制结构有三种:简单陈述句结构:避免复合语句。简单陈述句结构:避免复合语句。重复结构:重复结构:whilewhile_ _dodo 或或 repeatrepeat_ _until until 结构。结构。1.1.判定结构:判定结构:if_then_elseif_then_else 或或case_of case_of 结构。结构。商店业务处理系统中商店业务处理系统中“检查发货单检查发货单”if if 发货单金额超过发货单金额超过$500$500 thenthen ifif 欠款超过了欠款超
38、过了6060天天 thenthen 在偿还欠款前不予批准在偿还欠款前不予批准 elseelse (欠款未超期)(欠款未超期)发批准书,发货单发批准书,发货单 elseelse (发货单金额未超过(发货单金额未超过$500$500)ifif 欠款超过欠款超过6060天天 thenthen 发批准书,发货单及赊欠报告发批准书,发货单及赊欠报告 else else (欠款未超期)(欠款未超期)发批准书,发货单发批准书,发货单 (2)判定表)判定表 如果数据流图的加工需要依赖于多如果数据流图的加工需要依赖于多个逻辑条件的取值(组合条件),个逻辑条件的取值(组合条件),使用判定表来描述比较合适。使用判定
39、表来描述比较合适。一张判定表是一张判定表是一种二维表格,通常由四部分组成:一种二维表格,通常由四部分组成:左上部列出的是所有的条件,左上部列出的是所有的条件,左下部为所有可能的操作,左下部为所有可能的操作,右上部分表示各种条件组合的一个矩阵,右上部分表示各种条件组合的一个矩阵,右下部分是对应于每种条件组合应有的操右下部分是对应于每种条件组合应有的操作作。以以“检查发货单检查发货单”为例为例(3)判定树)判定树 判定树也是用来表达加工逻辑的一判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。种工具。有时侯它比判定表更直观。原型化方法原型化方法 在开发初期,要想得到一个完整准确的在开发
40、初期,要想得到一个完整准确的规格说明不是一件容易的事。特别是对规格说明不是一件容易的事。特别是对一些大型的软件项目。一些大型的软件项目。用户往往对系统只有一个模糊的想法,很用户往往对系统只有一个模糊的想法,很难完全准确地表达对系统的全面要求。难完全准确地表达对系统的全面要求。软件开发者对于所要解决的应用问题认识软件开发者对于所要解决的应用问题认识更是模糊不清更是模糊不清 随着开发工作向前推进,用户可能会产生随着开发工作向前推进,用户可能会产生新的要求,新的要求,或因环境变化,要求系统也能随之变化;或因环境变化,要求系统也能随之变化;开发者又可能在设计与实现的过程中遇到开发者又可能在设计与实现的
41、过程中遇到些没有预料到的实际困难,需要以改变需些没有预料到的实际困难,需要以改变需求来解脱困境。求来解脱困境。因此规格说明难以完善、需求的变更、因此规格说明难以完善、需求的变更、以及通信中的模糊和误解,都会成为软以及通信中的模糊和误解,都会成为软件开发顺利推进的障碍。件开发顺利推进的障碍。为解决这些问题,逐渐形成了软件系统为解决这些问题,逐渐形成了软件系统的的快速原型快速原型的概念。的概念。原型化方法基本思想原型化方法基本思想 花费少量代价建立一个可运行的系统,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,该方法又使用户及早获得学习的机会,该方法又称称快速原型法快速原型法。强调是
42、软件开发人员与用户不断交互,强调是软件开发人员与用户不断交互,通过原型的演进不断适应用户任务改变通过原型的演进不断适应用户任务改变的需求。的需求。软件原型的分类软件原型的分类废弃(废弃(throw awaythrow away)型:)型:先构造一个功能简单而且质量要求不高的模型系统,先构造一个功能简单而且质量要求不高的模型系统,针对这个模型系统反复进行分析和修改,从而形成比针对这个模型系统反复进行分析和修改,从而形成比较好的设计思想,据此设计出更加完整、准确、一致、较好的设计思想,据此设计出更加完整、准确、一致、可靠的最终系统。系统构造完成后,原来的模型系统可靠的最终系统。系统构造完成后,原来
43、的模型系统就被废弃不用。就被废弃不用。追加(追加(add onadd on)型:)型:先构造先构造个功能简单而且质量要求不高的模型系统,个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充、修改、作为最终系统的核心,然后通过不断地扩充、修改、逐步追加新需求,最后发展成为最终系统。逐步追加新需求,最后发展成为最终系统。建立快速原型,进行系统的分析和构建立快速原型,进行系统的分析和构造的好处:造的好处:增进软件者和用户对系统服务需求增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确性的软件需求(主要是功能
44、)明确化。化。软件原型化方法提供了一种有力的软件原型化方法提供了一种有力的学习手段。学习手段。使用原型化方法,可以容易地确定系使用原型化方法,可以容易地确定系统的功能,确认各项主要系统服务的统的功能,确认各项主要系统服务的可应用性,确认系统设计的可行性,可应用性,确认系统设计的可行性,确认系统作为产品的结果。确认系统作为产品的结果。软件原型的最终版本,有的可以原软件原型的最终版本,有的可以原封不动地成为产品,有的略加修改就封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,可以成为最终系统的一个组成部分,这样有利于建成最终系统。这样有利于建成最终系统。系统动态分析系统动态分析 一个
45、软件系统在其运行的过程中,一个软件系统在其运行的过程中,构成系统的各个元素状态都在改构成系统的各个元素状态都在改变。变。为了直观地分析系统的动作,从为了直观地分析系统的动作,从特定的视点出发描述系统的行为,特定的视点出发描述系统的行为,需要采用动态分析的方法。需要采用动态分析的方法。最常用的动态分析方法最常用的动态分析方法状态迁移图状态迁移图时序图时序图PetriPetri网网状态迁移图状态迁移图 状态迁移图是描述系统的状态如何状态迁移图是描述系统的状态如何相应外部的信号进行推移的一种图相应外部的信号进行推移的一种图形表示。形表示。圆圈圆圈“”表示可得到的系统表示可得到的系统状态状态 箭头箭头
46、“”表示从一种状态向表示从一种状态向另一种状态的另一种状态的迁移迁移。例如例如,当有多个申请占用当有多个申请占用CPUCPU运行的运行的进程时进程时,有关有关CPUCPU分配的进程的状分配的进程的状态迁移。态迁移。可得到的状态就绪,运行,等待可得到的状态就绪,运行,等待 生成的事件生成的事件t1t1,t2t2,t3t3,t4t4 t1 t1 中断事件中断事件 t2 t2 中断已处理中断已处理 t3 t3 分配分配CPUCPU t4 t4 用完用完CPUCPU时间时间状态迁移图的优点状态迁移图的优点 状态之间的关系能够直观地捕状态之间的关系能够直观地捕捉到。捉到。由于状态迁移图的单纯性,能由于状
47、态迁移图的单纯性,能够机械地分析许多情况,可很够机械地分析许多情况,可很容易地建立分析工具容易地建立分析工具在系统分析中,用在系统分析中,用时序图时序图来对比来对比在系统中处理事件的在系统中处理事件的时序时序和相应和相应的的处理时间处理时间。时序图时序图 在下图中在下图中,对于事件对于事件e,e,功能功能1 1功能功能3 3的处理时间的处理时间 总计为总计为 (T1(T1T2T2T3T3)其中功能间切换时间其中功能间切换时间0 0。采用扩充时序图可采用扩充时序图可表示进程间的通信表示进程间的通信流流,用于分析几个事用于分析几个事件的交错现象。件的交错现象。C1C1与与C2C2,R1R1与与R2
48、R2是是交错的。因此,可交错的。因此,可以做如下分析:以做如下分析:“必须设计成必须设计成HOST1 HOST1 在等待在等待C1C1的回答的回答R1R1期间要能接收从期间要能接收从HOST2HOST2发出的命令发出的命令C2C2。”Petri网网PetriPetri网已广泛地应用于硬件与网已广泛地应用于硬件与软件系统的开发中,软件系统的开发中,它适用于描述与分析相互独立、它适用于描述与分析相互独立、协同操作的处理系统,也就是并协同操作的处理系统,也就是并发执行的处理系统。发执行的处理系统。PetriPetri网简称网简称PNG(Petri Net PNG(Petri Net Graph)Gr
49、aph),是一种有向图,它有两种,是一种有向图,它有两种结点:结点:位置位置(placeplace):符号为:符号为“”,它用,它用来表示系统的状态来表示系统的状态。转移转移(transitiontransition):符号为:符号为 “”或或“|”,”,它用来表示系统中的事件。它用来表示系统中的事件。图中的有向边表示对转移的输入,图中的有向边表示对转移的输入,或由转移的输出或由转移的输出AD*标记,或称令牌标记,或称令牌(tokentoken),是表明,是表明系统当前处于什么状态的标志系统当前处于什么状态的标志数据及数据库需求数据及数据库需求 在数据词典中,强调对数据存储结构在数据词典中,强
50、调对数据存储结构的逻辑设计,并用数据结构表达数据的逻辑设计,并用数据结构表达数据项之间的逻辑关系。项之间的逻辑关系。但任何一个软件系统都可能有成千上但任何一个软件系统都可能有成千上万个数据项,仅仅描述这些数据项是万个数据项,仅仅描述这些数据项是不够的,不够的,更重要的是如何把它们以最优的方式更重要的是如何把它们以最优的方式组织起来,以满足系统对数据的要求组织起来,以满足系统对数据的要求。E-R方法方法(Entity-Relationship Approach)和实体模型和实体模型 在需求分析阶段进行数据库逻辑设计在需求分析阶段进行数据库逻辑设计过程中,使用过程中,使用E-RE-R图,可定义一个