
专题2需求分析.pdf
78页专题:专题: 需求分析基础需求分析基础Topic :Software Requirement Basic用工程化的方法开发软件系统用工程化的方法开发软件系统软件工程模型与方法软件需求分析本讲要点本讲要点?需求分析的任务需求分析的任务?需求获取的技术需求获取的技术?需求规格说明书需求规格说明书?需求分析的过程需求分析的过程?结构化需求分析方法结构化需求分析方法?原型化需求分析方法原型化需求分析方法软件需求的任务1.1 基本原理1.1 基本原理?开发软件系统之前,必须了解用户的期望和要求开发软件系统之前,必须了解用户的期望和要求?软件需求包含什么内容?软件需求包含什么内容??如何获得软件需求?如何获得软件需求??需求分析的重要性需求分析的重要性?软件需求是软件开发的基础和前提软件需求是软件开发的基础和前提?软件需求是最终目标软件系统验收的标准软件需求是最终目标软件系统验收的标准需求分析任务1.1 基本原理-1.1 基本原理-需求分析的任务需求分析的任务(1/2)?什么是用户需求什么是用户需求用户对 待开发的软件系统的要求或期望:用户对 待开发的软件系统的要求或期望:?功能功能?行为行为?性能性能?设计约束设计约束?其它其它需求分析任务1.1 基本原理-1.1 基本原理-需求分析的任务(1/2)需求分析的任务(1/2)?例如例如 (图书馆管理系统图书馆管理系统)–功能需求功能需求:办理读者借书证,借书/还书的(半)自动化,:办理读者借书证,借书/还书的(半)自动化,…–行为需求行为需求:在同一时刻,一本书不能既被借出,又可供借阅:在同一时刻,一本书不能既被借出,又可供借阅–性能需求性能需求:还书操作的延迟时间不超过4秒钟,:还书操作的延迟时间不超过4秒钟,…–设计约束设计约束:前台运行在:前台运行在Windows OS下,下,…–其它要求其它要求:开发时间在6个月以内,:开发时间在6个月以内,…3. 需求分析基础需求分析基础1.1 基本原理-1.1 基本原理-需求分析的任务(2/2)需求分析的任务(2/2)?需求分析的任务需求分析的任务?通过对应用问题及其环境的理解和分析通过对应用问题及其环境的理解和分析?准确准确、一致、一致和完全和完全地刻画用户需求地刻画用户需求?形成软件需求规格说明书形成软件需求规格说明书 (SRS: Software Requirement Specification)软件需求的任务1.1 基本原理1.1 基本原理?需求分析的复杂性和面临的困难需求分析的复杂性和面临的困难–片面, 不完全片面, 不完全–模糊, 不准确模糊, 不准确–不一致, 歧义不一致, 歧义–需求复杂和庞大需求复杂和庞大?因此,必须使用系统化的方法、借助于一系列行之有效的技术和工具进行软件需求分析因此,必须使用系统化的方法、借助于一系列行之有效的技术和工具进行软件需求分析软件需求的任务1.1 基本原理1.1 基本原理?IEEE软件工程标准词汇表(软件工程标准词汇表(1997)年中对需求的描述 :)年中对需求的描述 :–用户解决问题或达到目的所需的条件或能力(用户解决问题或达到目的所需的条件或能力(Capability)。
–系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力–一种能反映上面(一种能反映上面(1)或()或(2)所描述的条件或能力的文档说明所描述的条件或能力的文档说明软件需求的任务1.1 基本原理1.1 基本原理?需求规格说明书(需求规格说明书(简称简称需求说明)应具备的特性:需求说明)应具备的特性:–准确性和一致性准确性和一致性–清晰性和无二义性清晰性和无二义性–直观、易读和易于修改直观、易读和易于修改软件需求的任务1.2 需求的层次1.2 需求的层次?三个层次:三个层次:–业务需求(机构、用户对系统高层次的要求)业务需求(机构、用户对系统高层次的要求)–用户需求(用户使用产品须完成的任务、功能)用户需求(用户使用产品须完成的任务、功能)–功能需求(开发人员须实现的功能,还包括非功能需求 )功能需求(开发人员须实现的功能,还包括非功能需求 )软件需求的任务软件需求各组成部分的关系软件需求各组成部分的关系业务需求业务需求质量属性质量属性用户需求用户需求系统需求系统需求功能需求功能需求其他非功能需求其他非功能需求约束条件约束条件项目视图与范围文档项目视图与范围文档用例文档用例文档软件需求规格说明软件需求规格说明软件需求的任务1.3 需求的开发与管理需求的开发与管理?需求工程域的层次分解示意图需求工程域的层次分解示意图需求工程需求开发需求管理问题获取分析编写规格说明验证软件需求的任务需求开发活动需求开发活动?确定产品所期望的用户类确定产品所期望的用户类?获取每个用户类的需求获取每个用户类的需求?了解实际用户任务和目标以及这些任务所支持的业务需求了解实际用户任务和目标以及这些任务所支持的业务需求?分析源于用户的信息分析源于用户的信息?将系统级的需求将系统级的需求分解分解为几个子系统,并将需求中的一部份分配给软件组件为几个子系统,并将需求中的一部份分配给软件组件?了解相关质量属性的重要性了解相关质量属性的重要性?商讨实施商讨实施优先级优先级的划分的划分?将所收集的用户需求将所收集的用户需求编写编写成规格说明和模型。
成规格说明和模型评审评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚软件需求的任务需求管理活动需求管理活动?定义需求基线(迅速制定需求文档的主体)定义需求基线(迅速制定需求文档的主体)评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它以一种可控制的方式将需求变更融入到项目中以一种可控制的方式将需求变更融入到项目中使当前的项目计划与需求一致使当前的项目计划与需求一致估计变更需求所产生影响并在此基础上协商新的承诺(约定)估计变更需求所产生影响并在此基础上协商新的承诺(约定)让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪在整个项目过程中跟踪需求状态及其变更情况在整个项目过程中跟踪需求状态及其变更情况软件需求的任务需求开发与需求管理间的界限需求开发与需求管理间的界限需 求 变 更 过程分 析编 写 文 档评 审 : 商 议基 准 需 求 说 明市 场管 理客 户需 求需 求 开 发需 求 管 理当 前 基 线修 正 后 基 线需 求 变 更项 目 变 更项 目 环 境市 场客 户管 理需求获取的技术2 需求获取的技术需求获取的技术?软件开发人员要解决的问题:软件开发人员要解决的问题:–怎样获取这些需求怎样获取这些需求–整理和组织好有关需求文档,以符合行业的规范进行表达整理和组织好有关需求文档,以符合行业的规范进行表达需求获取的技术2.1 需求分析人员的组成需求分析人员的组成?系统分析员(专业技术人员)系统分析员(专业技术人员)?用户用户需求获取的技术2.2 需求的类型需求的类型?功能性需求:功能性需求:指需要计算机系统解决的问题,也就是对数据的处理要求指需要计算机系统解决的问题,也就是对数据的处理要求?非功能性需求:非功能性需求:指实际使用环境所要求的需求,往往是一些限制要求,指实际使用环境所要求的需求,往往是一些限制要求,例如:例如:性能要求,可靠性要求,安全保密要求,等等。
性能要求,可靠性要求,安全保密要求,等等需求获取的技术2.3 获取需求的途径获取需求的途径?互相学习互相学习?实地考察实地考察?收集相关资料收集相关资料?语言交流语言交流?图形表格工具图形表格工具?时间表(计划)时间表(计划)需求规格说明书3 需求规格说明书需求规格说明书3.1 需求说明的目的需求说明的目的–增进对需求的理解增进对需求的理解–软件设计的基础软件设计的基础–软件测试的根据软件测试的根据3.2 需求说明的方法需求说明的方法–采取自上而下、由粗到细、多次循环、逐步完善的方法最高层次的系统总体需求 ? 逐步分解、细化、完善)采取自上而下、由粗到细、多次循环、逐步完善的方法最高层次的系统总体需求 ? 逐步分解、细化、完善)需求规格说明书用户、需求说明、系统分析员之间的关系用户、需求说明、系统分析员之间的关系需求说明书(逻辑模型)表达或改进领会领会表达或改进用户(了解实际问题及其实际的解决方法)系统分析员(了解计算机处理过程,希望得到实际问题的抽象模型)人人需求规格说明书3.5 需求规格说明书格式需求规格说明书格式?引言:引言:对系统进行一些概要的描述;对系统进行一些概要的描述;?引用标准:引用标准:给出本需求规格说明书的有关参考标准;给出本需求规格说明书的有关参考标准;?系统及任务描述:系统及任务描述:用以描述系统中各种实体及其相应的关系,通常可用实体关系图和层次方框图来描述。
用以描述系统中各种实体及其相应的关系,通常可用实体关系图和层次方框图来描述需求规定:需求规定:对系统的功能、性能、精度以及输入、输出等具体要求作出规定对系统的功能、性能、精度以及输入、输出等具体要求作出规定需求规格说明书3.5 需求规格说明书格式需求规格说明书格式?数据描述:数据描述:描述逻辑数据模型,也就是各种数据关系和相应的处理,通常可以使用数据流图,数据词典,加工说明来描述描述逻辑数据模型,也就是各种数据关系和相应的处理,通常可以使用数据流图,数据词典,加工说明来描述功能描述:功能描述:用以描述要解决的各种问题用以描述要解决的各种问题性能描述:性能描述:描述系统性能方面的内容描述系统性能方面的内容质量保证:质量保证:描述系统各部分要求达到的质量标准描述系统各部分要求达到的质量标准其他:其他:描述其他的一些补充内容描述其他的一些补充内容签字认证:签字认证:用户和开发人员双方签字认证用户和开发人员双方签字认证需求分析过程4 需求分析的过程需求分析的过程(1/2)?需求分析过程需求分析过程?抽取现实问题的本质抽取现实问题的本质?改进和优化改进和优化?需求分析的验证需求分析的验证抽取现实问题的本质抽取现实问题的本质改进和优化改进和优化需求分析的验证需求分析的验证4 需求分析的过程需求分析的过程(2/2)需求获取方法需求获取方法对现有逻辑模型进行改进和优化对现有逻辑模型进行改进和优化需求评审需求评审需求分析过程需求分析过程4.1抽取现实问题的本质抽取现实问题的本质?针对同一问题的不同形式的处理方法针对同一问题的不同形式的处理方法现实的处理方法现实的处理方法计算机软件的处理方法计算机软件的处理方法实际问题实际问题逻辑模型逻辑模型理解和抽象设计和实现理解和抽象设计和实现需求分析过程举例举例?开发一个教材管理系统开发一个教材管理系统学生学生李秘书吴会计赵保管黄出纳学生购书实际处理流程学生购书实际处理流程学 生审 查 有效 性开 发 票发 书开 领 书单学 生学生教材管理的逻辑模型学生教材管理的逻辑模型需求分析过程4.2 改进和优化改进和优化?通过对现实环境的调查研究,获得要解决的问题的一个当前系统的具体模型(系统流程图),然后去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型(数据流程图)。
通过对现实环境的调查研究,获得要解决的问题的一个当前系统的具体模型(系统流程图),然后去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型(数据流程图)具 体 问 题 模 型当 前 系 统 逻 辑 模 型目 标 系 统 逻 辑 模 型抽 象改 进 和 优 化需求分析的过程需求分析的过程需求分析的过程需求分析的过程需求分析过程前例前例学生学生审查并开发票开领书单发书优化后的学生教材管理逻辑模型优化后的学生教材管理逻辑模型需求分析过程4.3 需求分析的验证需求分析的验证?任务任务?多方人员多方人员(用户、分析人员、设计人员等用户、分析人员、设计人员等)一起对一起对SRS进行复核和评审,以确保进行复核和评审,以确保SRS和用户手册全面、准确、一致地反映用户需求和用户手册全面、准确、一致地反映用户需求?原则原则?支持各方共同参与评审工作支持各方共同参与评审工作需求分析过程4.4 需求分析和描述技术需求分析和描述技术?建模建模?抽象抽象?问题分解问题分解?多视点多视点?快速原型快速原型需求分析过程4.4.1 需求建模需求建模(1/3)?什么是需求模型什么是需求模型?模型是对现实的刻画和简化,包含重要的要素,忽略不相关或者相对次要的因素模型是对现实的刻画和简化,包含重要的要素,忽略不相关或者相对次要的因素?需求模型详细、准确地描述了用户对目标软件系统的功能、行为、性能、 设计约束等方面的要求需求模型详细、准确地描述了用户对目标软件系统的功能、行为、性能、 设计约束等方面的要求需求分析过程4.4.1 需求建模需求建模(2/3)?为什么需要建模为什么需要建模?建模是刻画、分析和解决问题的有效途径建模是刻画、分析和解决问题的有效途径?建模可从多个视点、多个不同的抽象层次来描述用户需求,从而为需求分析的依序推进提供手段建模可从多个视点、多个不同的抽象层次来描述用户需求,从而为需求分析的依序推进提供手段?建模有助于分析人员准确、全面、系统地了解用户需求建模有助于分析人员准确、全面、系统地了解用户需求?有助于发现用户需求描述中的不一致性和模糊性有助于发现用户需求描述中的不一致性和模糊性需求分析过程4.4.1 需求建模需求建模(3/3)?注意注意?需求建模不要涉及软件的设计和实现细节需求建模不要涉及软件的设计和实现细节?需求建模方法需求建模方法?面向数据流的方法面向数据流的方法?面向对象的方法面向对象的方法需求分析过程4.4.2 问题抽象问题抽象(1/2)?什么是抽象什么是抽象?在某个层次上认识和表示事物,抽取事物的某些特性和行为在某个层次上认识和表示事物,抽取事物的某些特性和行为外表抽象外表抽象外表外表脸形脸形衣着衣着黑眼睛黑眼睛方脸方脸需求分析过程4.4.2 问题抽象问题抽象(2/2)?抽象的意义抽象的意义?有助于控制问题的复杂度有助于控制问题的复杂度?作为软件开发依序推进的重要手段作为软件开发依序推进的重要手段?有助于获取和分析问题本身所固有的一般有助于获取和分析问题本身所固有的一般—特殊关系特殊关系需求分析过程4.4.3 问题分解问题分解(1/2)整个问题整个问题子问题子问题1子问题子问题3子问题子问题2?什么是问题分解什么是问题分解?将大将大 / 复杂的问题分解为数个小复杂的问题分解为数个小 / 简单的问题,通过对小问题的解决来实现大问题的整体解决简单的问题,通过对小问题的解决来实现大问题的整体解决?问题分解应遵循高内聚问题分解应遵循高内聚/低耦合原则、自然性原则低耦合原则、自然性原则需求分析过程4.4.3 问题分解问题分解(2/2)?问题分解的意义问题分解的意义?有助于降低解决问题的复杂度有助于降低解决问题的复杂度?作为复杂问题求解的重要手段作为复杂问题求解的重要手段?获取和分析问题本身所固有的整体获取和分析问题本身所固有的整体/部分关系部分关系需求分析过程4.4.4 多视点分析多视点分析(1/2)?什么是多视点分析什么是多视点分析?从多个角度、不同的层面上分析和描述用户需求从多个角度、不同的层面上分析和描述用户需求?然后综合成为全面的需求模型然后综合成为全面的需求模型需求分析过程4.4.4 多视点分析多视点分析(2/2)?为什么需要多视点分析为什么需要多视点分析?人的认识具有片面性(瞎子摸象)人的认识具有片面性(瞎子摸象)?多视点可以帮助我们全面把握用户的需求多视点可以帮助我们全面把握用户的需求需求分析过程4.4.5 快速原型方法快速原型方法(1/2)?传统软件开发存在的问题传统软件开发存在的问题?需求分析师与用户之间没有一种直观交流媒介需求分析师与用户之间没有一种直观交流媒介?如何更为直观地评价用户需求如何更为直观地评价用户需求?用户需求不断变化?如何适应需求的变化用户需求不断变化?如何适应需求的变化?什么是软件系统的原型什么是软件系统的原型?对软件系统的主要功能和行为的直观描述对软件系统的主要功能和行为的直观描述(操作模式、过程和界面操作模式、过程和界面)需求分析过程4.4.5 快速原型方法快速原型方法(2/2)?什么是快速原型方法什么是快速原型方法?通过构建用户需求的原型来分析和描述用户需求通过构建用户需求的原型来分析和描述用户需求快速软件设计快速软件设计软件系统的原型软件系统的原型用户对原型评估用户对原型评估意见:需求意见:需求初步的用户需求初步的用户需求5 结构化需求分析方法结构化需求分析方法?建模是实现需求分析任务的好方法建模是实现需求分析任务的好方法?建模是刻画、分析和解决问题的有效途径建模是刻画、分析和解决问题的有效途径?建模可从多个视点、多个不同的抽象层次来描述用户需建模可从多个视点、多个不同的抽象层次来描述用户需求求从而为需求分析的依序推进提供手段从而为需求分析的依序推进提供手段?建模有助于分析人员准确、全面、系统地了解用户需求建模有助于分析人员准确、全面、系统地了解用户需求?有助于发现用户需求描述中的不一致性和模糊性有助于发现用户需求描述中的不一致性和模糊性?如何建立用户需求的模型?如何建立用户需求的模型?结构化需求分析方法结构化需求分析方法5.1 基本原理和思想基本原理和思想?提出一种建模方法时需考虑的问题提出一种建模方法时需考虑的问题?原理原理:用户需求的内容、结构:用户需求的内容、结构?语言语言:刻画和描述用户需求的表示机制:刻画和描述用户需求的表示机制?方法方法:建模的过程:建模的过程/步骤和规则步骤和规则结构化需求分析方法5.1.1 发展历史发展历史?结构化软件开发方法结构化软件开发方法–1970年代年代Edward Yourdon, Tom DeMarco等人提出等人提出–基本思想基本思想: 自顶向下,逐步求精自顶向下,逐步求精 , 抽象抽象/分解分解?结构化需求分析结构化需求分析?结构化软件设计结构化软件设计?结构化程序设计结构化程序设计?面向数据流分析方法面向数据流分析方法(DFD)是结构化软件开发方法之一是结构化软件开发方法之一结构化需求分析方法5.1.2 基本原理基本原理?从信息处理的角度看,软件系统的功能本质上对各种数据的加工处理以及数据在相邻处理步骤之间的流动从信息处理的角度看,软件系统的功能本质上对各种数据的加工处理以及数据在相邻处理步骤之间的流动–如何表示各种数据的加工处理如何表示各种数据的加工处理?–如何表示数据的流动如何表示数据的流动?结构化需求分析方法5.2 模型表示语言模型表示语言?数据流图数据流图?数据字典数据字典?小说明小说明(mini-specification)结构化需求分析方法5.2.1 数据流图数据流图?数据流图(Data Flow Diagram,DFD)是一种描述数据的加工转换以及它们之间的数据流动的图形工具数据流图(Data Flow Diagram,DFD)是一种描述数据的加工转换以及它们之间的数据流动的图形工具加工或变换输入输出需求规格说明书数据流图中的主要图形符号数据流图中的主要图形符号数据源点或终点数据源点或终点数据源点或终点数据源点或终点 ( ( ( (外部实体外部实体外部实体外部实体) ) ) )数据加工数据加工数据加工数据加工 ( ( ( (数据变换数据变换数据变换数据变换) ) ) )数据流数据流数据流数据流对数据的存储对数据的存储对数据的存储对数据的存储或或或或需求规格说明书DFD的附加符号的附加符号需求规格说明书5.2.2 数据字典和加工说明数据字典和加工说明?数据字典(词典):数据字典(词典):用来描述系统中所涉及的每一个数据,它是一个数据描述的集合。
用来描述系统中所涉及的每一个数据,它是一个数据描述的集合又称为又称为“数据的数据数据的数据”,通常和DFD配合使用,用来描述各种数据和加工通常和DFD配合使用,用来描述各种数据和加工有人将对加工的说明另外组成一个加工说明集合,就又形成了有人将对加工的说明另外组成一个加工说明集合,就又形成了加工说明加工说明需求规格说明书3.4 数据词典和加工说明数据词典和加工说明?在数据词典中,用数据项、数据流和数据文件来对数据进行描述:在数据词典中,用数据项、数据流和数据文件来对数据进行描述:–数据项:数据项:也称为数据元素,是表达有效信息的最基本单位也称为数据元素,是表达有效信息的最基本单位–数据流:数据流:由相关数据项组成数据流由相关数据项组成数据流–数据文件:数据文件:表示对数据的存储(外部存储器),由若干数据项按照一定的组织方式组成表示对数据的存储(外部存储器),由若干数据项按照一定的组织方式组成需求规格说明书数据词典和加工说明样表数据词典和加工说明样表别名备注:加工逻辑:组成:(数据流的组成/数据文件的组成/数据项的取值及含义)名称类型:(数据流/数据项/数据文件/加工序号)需求规格说明书数据词典中使用的关系符号数据词典中使用的关系符号注释符,表示两个*号之间的内容为对条目的注释*…,…*可选符,表示对( )中的内容可由设计员决定取舍( )重复符,表示对{ }中的内容可视需要重复使用{ }选择符,表示对[ ]中列举的值可任取其一[ ]加+等于,定义为=含义符号结构化需求分析方法数据流图示例数据流图示例 订票员订票员 订票员订票员预定预定机票机票准备准备机票机票记记帐帐订票单订票单航班目录航班目录航班号航班号 航班航班费用费用帐单机票帐单机票记帐数据记帐数据帐目帐目结构化需求分析方法数据字典示例(数据流条目)数据字典示例(数据流条目)?订票单 = 姓名 + 身份证号 + 航班日期 + 目的地 + 出发地 + 航班号订票单 = 姓名 + 身份证号 + 航班日期 + 目的地 + 出发地 + 航班号?航班 = 航班号 + 起点 + 终点 + 起飞时间+ 机型航班 = 航班号 + 起点 + 终点 + 起飞时间+ 机型?机票 = 航班号 + 目的地 + 出发地 + 姓名+ 身份证号 + 机型 + 价格 + 登机时间机票 = 航班号 + 目的地 + 出发地 + 姓名+ 身份证号 + 机型 + 价格 + 登机时间?帐目 = 姓名 + 身份证号 + 航班号 + 价格+ 订票员 + 时间帐目 = 姓名 + 身份证号 + 航班号 + 价格+ 订票员 + 时间–⋯⋯⋯⋯结构化需求分析方法数据字典示例(文件条目)数据字典示例(文件条目)?文件名:航班目录文件名:航班目录组成:{ 航班 }组成:{ 航班 }组织:按出发时间升序排列组织:按出发时间升序排列?文件名:记帐数据文件名:记帐数据组成:{ 帐目 }组成:{ 帐目 }组织:按时间升序排列组织:按时间升序排列–⋯⋯⋯⋯结构化需求分析方法5.2.3 加工说明(小说明)加工说明(小说明)?小说明准确、详细地对数据流图中的各转换的功能、性能和设计约束等进行解释和说明小说明准确、详细地对数据流图中的各转换的功能、性能和设计约束等进行解释和说明?需求分析人员通常用结构化的自然语言描述小说明需求分析人员通常用结构化的自然语言描述小说明?小说明应该尽可能简洁、清晰、易于理解小说明应该尽可能简洁、清晰、易于理解结构化需求分析方法小说明示例小说明示例 订票员订票员 订票员订票员预定预定机票机票准准备备机票机票记记帐帐订票单订票单航班目录航班目录航班号航班号 航班航班费用费用 帐帐单单机机票票记帐数记帐数据据帐目帐目?加工小说明加工小说明加工名:记帐加工名:记帐输入流:订票单、费用输入流:订票单、费用输出流:帐单输出流:帐单加工逻辑:加工逻辑:(1) 将本次订票业务记录到中心数据库将本次订票业务记录到中心数据库(2) 产生帐单产生帐单(3) 打印账单打印账单结构化需求分析方法5.3 面向数据流的建模过程面向数据流的建模过程(1 of 2)?DFD是系统中各处理子功能以及它们之间的数据流动的图形表示是系统中各处理子功能以及它们之间的数据流动的图形表示 ---- 刻划系统的功能刻划系统的功能?DFD作为对用户需求进行描述和建模的表示机制作为对用户需求进行描述和建模的表示机制?如何利用如何利用DFD进行需求分析,描述用户需求进行需求分析,描述用户需求?结构化需求分析方法5.3 面向数据流的建模过程面向数据流的建模过程(2 of 2)?面向数据流分析方法运用面向数据流分析方法运用抽象抽象和和分解分解的技术的技术?提供经验知识和规则以指导需求分析提供经验知识和规则以指导需求分析结构化需求分析方法5.3.1 建立顶级建立顶级DFD?根据待开发的软件系统与外部环境之间的相互关系定义根据待开发的软件系统与外部环境之间的相互关系定义问题 域的边界问题 域的边界,即软件系统与外界环境之间的输入输出关系,即软件系统与外界环境之间的输入输出关系?顶级数据流图仅仅描述待开发的软件系统与外部环境之间的关系,因此在顶级顶级数据流图仅仅描述待开发的软件系统与外部环境之间的关系,因此在顶级DFD中,待开发的软件系统被中,待开发的软件系统被抽象抽象描述为描述为一个处理功能一个处理功能结构化需求分析方法5.3.1 建立顶级建立顶级DFD(案例示例案例示例) 读者读者 书库管理员书库管理员 读者管理员读者管理员图书图书馆馆系统系统借阅图书命令读者管理命令书库管理命令借阅图书命令读者管理命令书库管理命令结构化需求分析方法5.3.2 自顶向下,功能分解自顶向下,功能分解?自顶向下、逐步求精;对每级数据流图中比较复杂的处理功能进行精化,生成下一级数据流图自顶向下、逐步求精;对每级数据流图中比较复杂的处理功能进行精化,生成下一级数据流图?对用户的需求描述进行语法分析对用户的需求描述进行语法分析?名词或名词短语构成名词或名词短语构成潜在潜在的数据流、数据源和外部实体的数据流、数据源和外部实体?动词构成动词构成潜在潜在的处理功能的处理功能结构化需求分析方法5.3.2 案例分析案例分析: 顶级顶级(0)DFD 读者读者 书库管理员书库管理员 读者管理员读者管理员 图书图书馆馆系统系统借阅图书命令读者管理命令书库管理命令借阅图书命令读者管理命令书库管理命令结构化需求分析方法5.3.2 案例分析案例分析: 1级级(0.1)DFD图 书借 阅图 书借 阅借 阅 图 书 命 令读 者 管 理 命 令书 库 管 理 命 令借 阅 图 书 命 令读 者 管 理 命 令书 库 管 理 命 令书 库管 理书 库管 理读 者管 理读 者管 理读 者 信 息 库读 者 信 息 库 图 书 信 息 库图 书 信 息 库 图 书 信 息读 者 信 息图 书 信 息读 者 信 息结构化需求分析方法5.3.2 案例分析案例分析: 2级级(0.1.1)DFD读者管理命令读者管理命令命令分析命令分析增加读者增加读者删除读者删除读者更改读者信息更改读者信息读者基本信息读者标识读者标识读者信息读者信息读者基本信息读者标识读者标识读者信息读者信息读者信息库读者信息库结构化需求分析方法5.3.2 案例分析案例分析: 3级级(0.1.1.1)DFD判断读者是否存在判断读者是否存在读者信息库读者信息库读者基本信息读者基本信息[不存在不存在]读者基本信息读者基本信息自动生成读者标识自动生成读者标识读者信息读者信息[已存在已存在]结构化需求分析方法5.3.2 自顶向下,功能分解自顶向下,功能分解?在分解、精化过程中在分解、精化过程中?将生成的数据流、数据存储、外部实体在数据字典中加以定义将生成的数据流、数据存储、外部实体在数据字典中加以定义?对底层转换对底层转换在小说明中进行描述在小说明中进行描述?什么是底层转换什么是底层转换??不需要进一步精化和分解不需要进一步精化和分解结构化需求分析方法5.3.2 案例分析案例分析: 数据字典数据字典?读者基本信息读者基本信息读者基本信息=名字+读者类别读者基本信息=名字+读者类别+出生日期+系别+照片+出生日期+系别+照片?读者信息读者信息读者信息=读者标识+读者基本信息读者信息=读者标识+读者基本信息?读者类别读者类别读者类别=读者类别=[ 教师教师 | 本科生本科生 | 硕士研究生硕士研究生 | 博士研究生博士研究生 ]结构化需求分析方法5.3.2 案例分析案例分析: 小说明小说明?加工名:判断读者是否存在加工名:判断读者是否存在?输入流:读者基本信息输入流:读者基本信息?输出流:存在信息,输出流:存在信息,[读者基本信息读者基本信息]?加工逻辑:加工逻辑:?判断读者信息的合法性和有效性判断读者信息的合法性和有效性?查询读者信息库,判断该读者是否已经注册查询读者信息库,判断该读者是否已经注册结构化需求分析方法5.3.3 需求分析原则需求分析原则?正确使用数据流图中的各个图形要素正确使用数据流图中的各个图形要素?每个数据流、数据源、外部实体在数据字典中均必须定义每个数据流、数据源、外部实体在数据字典中均必须定义?数据流图中最底层的转换必须在小说明中说明数据流图中最底层的转换必须在小说明中说明?父图和子图之间必须保持平衡,即父图中某一转换的输入、输出数据流和分解这个转换的子图的 输入、输出数据流必须完全一致父图和子图之间必须保持平衡,即父图中某一转换的输入、输出数据流和分解这个转换的子图的 输入、输出数据流必须完全一致?精化过程适可而止精化过程适可而止结构化需求分析方法分层的数据流图分层的数据流图结构化需求分析方法分层的数据流图例分层的数据流图例?在要建立的学生管理系统中,由学管科负责录入、修改、删除学生信息(学号、姓名);体检科负责录入学生健康信息(学号、健康情况),其中健康状况分为:优、良、一般、差;学籍科负责录入学生成绩。
学生处领导可随时查询学生基本信息,各类健康状况的百分比,平均成绩以及不及格的人数在要建立的学生管理系统中,由学管科负责录入、修改、删除学生信息(学号、姓名);体检科负责录入学生健康信息(学号、健康情况),其中健康状况分为:优、良、一般、差;学籍科负责录入学生成绩学生处领导可随时查询学生基本信息,各类健康状况的百分比,平均成绩以及不及格的人数结构化需求分析方法5.4 CASE工具工具?建模建模(数据流图数据流图, 数据字典数据字典, 小说明小说明)?模型的存储模型的存储, 显示和检索显示和检索?模型之间模型之间, 数据条目之间的一致性检查数据条目之间的一致性检查?……作业和思考题作业和思考题?作业作业?2-1、、2-12、、2-13、、2-14?思考题思考题–如果你是一名软件项目经理,你如何组织和开展需求分析工作如果你是一名软件项目经理,你如何组织和开展需求分析工作(包括人员组织、方法和技术的采用、结果的评审等包括人员组织、方法和技术的采用、结果的评审等)??–认真理解各种需求分析技术,分析各种技术的特点以及在需求分析阶段的作用认真理解各种需求分析技术,分析各种技术的特点以及在需求分析阶段的作用。
作业和思考题作业和思考题?思考题思考题–面向数据流的需求分析方法能否自然、清晰、有效地获取和刻划用户需求面向数据流的需求分析方法能否自然、清晰、有效地获取和刻划用户需求? 为什么为什么?–面向数据流的需求分析方法是如何体现抽象、问题分解、建模等需求分析技术的面向数据流的需求分析方法是如何体现抽象、问题分解、建模等需求分析技术的?结束。
