软件需求分析与建模_第1页
软件需求分析与建模_第2页
软件需求分析与建模_第3页
软件需求分析与建模_第4页
软件需求分析与建模_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章软件工程过程模型,2020/5/11,结束,返回,瀑布模型(waterfallmodel)定义部分开发部分维护部分,图2.7瀑布模型,引言,2020/5/12,结束,返回,第3章软件需求分析与建模,3.1需求分析,3.2数据建模,3.3功能建模,3.4行为建模,3.6结构化需求分析的若干技术,3.5数据字典,3.7验证软件需求,第3章软件需求分析与建模,2020/5/13,结束,返回,【难点、重点】,本章的学习重点在于理解软件需求的概念和重要性,熟悉需求开发和需求管理的基本思想和主要活动,掌握结构化的分析方法;,难点是怎样在实际的软件项目中灵活运用这些思想和方法。,第3章软件需求分析与建模,2020/5/14,结束,返回,【学习目的】,本章介绍需求分析的意义、概念和方法,了解结构化分析方法和需求管理的关键活动;要求学会运用实体关系图、数据流图和状态控制图进行结构化分析建模,能够编写软件需求规格说明书。,第3章软件工程过程模型,2020/5/15,结束,返回,软件需求分析的目的,待开发项目的可行性分析的基础上,建立目标系统的逻辑模型,需求分析,输入,输出,图3.1需求分析的目的,第3章软件需求分析与建模,2020/5/16,结束,返回,3.1软件需求分析,3.1.1需求分析的任务,3.1.2需求分析的步骤,3.1.3需求分析的原则,第3章软件需求分析与建模,2020/5/17,结束,返回,3.1软件需求分析,3.1.1需求分析的任务,(1)需求分析的主要任务,设计阶段的依据,需求分析阶段,软件规格说明书,生成、提交,作为,就是要通过软件开发人员与用户的交流和讨论,准确地获取用户对系统的具体要求,见图1.11。,理解需求,图3.2,(1)软件定义时期,软件定义部分又可划分为问题定义、可行性研究和需求分析三个阶段。,软件定义时期,需求分析,可行性研究,问题定义,系统分析报告,可行性分析报告初步项目计划,需求规格说明书,1.3软件生存期(softwarelifecycle),要解决的问题是什么,是否有可行的解决办法,目标系统必须做什么,图1.11,第1章软件工程引论,任务,任务,任务,撰写,撰写,撰写,进入下一时期,第3章软件需求分析与建模,2020/5/19,结束,返回,3.1.1需求分析的任务,由于需求分析研究的对象是用户对开发项目的要求,在实现这一阶段任务时必须要注意两个问题。,(2)需求分析研究的对象,需求分析员软件设计人员,用户,交流的难题,留下隐患,系统模型,花时搞清需求,建好模型,图3.3,问题一,问题二,第4章软件需求分析与建模,2020/5/110,结束,返回,图3.4需求分析类型,(3)系统的需求分类,业务需求反映了组织机构或客户对系统或产品高层次的目标要求,它们在项目视图与范围文档中予以说明。,用户需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。,功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。主要说明了待开发系统在功能上实际应做些什么,是用户最主要的需求。通常包括系统的输入、系统能完成的功能、系统的输出及其他反应。,非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。主要包括:过程需求(如交付需求、实现方法需求等)产品需求(如可靠性需求、可移植性需求、安全保密性需求)外部需求(如法规需求、费用需求等)等。,第3章软件需求分析与建模,2020/5/111,结束,返回,3.1软件需求分析,3.1.2需求分析的步骤,需求获取需求分析需求建模编写需求文档需求验证,第3章软件需求分析与建模,2020/5/112,结束,返回,3.1.2需求分析的步骤,需求分析阶段的工作,大致可分为如下几个步骤进行:,阅读描述系统需求的用户文档;对相关软件、技术的市场调查;对管理部门、用户的访问咨询;对工作现场的实际考察等。,(1)获取用户的需求,软件开发人员只有通过认真细致的调查研究,才能获得进行系统分析的原始资料。需求信息的获取可来源于:,第3章软件需求分析与建模,2020/5/113,结束,返回,3.1.2需求分析的步骤,(2)需求分析对于获取的原始需求,软件开发人员需要根据掌握的专业知识,运用抽象的逻辑思维,找出需求间的内在联系和矛盾,去除需求中不合理和非本质的部分,确定软件系统的真正需求。,(3)需求建模对于确定的系统需求,软件开发人员要通过现有的需求分析方法及工具对其进行清晰、准确的描述,建立无二义性的、完整的系统逻辑模型。,第3章软件需求分析与建模,2020/5/114,结束,返回,3.1.2需求分析的步骤,(4)书写需求说明书需求阶段应提交的主要文档包括需求规格说明书、初步的用户手册和修正后的开发计划。其中,需求规格说明书是对分析阶段主要成果的综合描述,是该阶段最重要的技术文档。,第3章软件需求分析与建模,2020/5/115,结束,返回,3.1.2需求分析的步骤,(5)需求复审为了保证软件开发的质量,对需求分析阶段的工作要按照严格的规范进行复审,从不同的技术角度对该阶段工作做出综合性的评价。复审即要有用户参加,也要有管理部门和软件开发人员参加。,第3章软件需求分析与建模,2020/5/116,结束,返回,3.1软件需求分析,3.1.3需求分析的原则,目前存在着许多需求分析的方法,虽然各种方法都有其独特的描述方法,但不论采用何种方法,需求分析都必须遵循以下基本原则:,(1)能够表达和理解问题的数据域和功能域所有软件开发的最终目的都是为了解决数据处理的问题,数据处理的本质就是将一种形式的数据转换成另一种形式的数据。需求分析阶段必须明确系统中应具备的每一个加工、加工的处理对象和由加工所引起的数据形式的变化。,第3章软件需求分析与建模,2020/5/117,结束,返回,3.1.3需求分析的原则,(2)分解为了便于问题的解决和实现,在需求分析过程中需要对于原本复杂的问题按照某种合适的方式进行分解(对功能域和数据域均可)。使系统的理解和实现变得较为容易。,第3章软件需求分析与建模,2020/5/118,结束,返回,(3)能够给出系统的逻辑表示和物理表示系统需求的逻辑表示用于指明系统所要达到的功能要求和需要处理的数据,不涉及实现的细节。系统需求的物理表示用于指明处理功能和数据结构的实际表现形式,通常由系统中的设备决定。,3.1.3需求分析的原则,第3章软件需求分析与建模,2020/5/119,结束,返回,3.1软件需求分析,3.1.4需求分析的方法,结构化分析(SA),面向对象分析(OOA),实体关系图,数据流图,状态转换图,数据建模,功能建模,动态建模,分析建模方法,进行,进行,进行,结构化分析(SA,StructureAnalysis),面向对象分析(OOA,ObjectOrientedAnalysis),图3.5需求分析方法,第3章软件需求分析与建模,2020/5/120,结束,返回,3.1软件需求分析,3.1.5需求分析模型,需求分析产生的模型使人们可以更好地理解将要建造的系统,它有助于系统分析员理解系统的信息、功能和行为,成为确定需求规格说明完整性、一致性和精确性的重要依据,奠定了软件设计的基础。,第3章软件需求分析与建模,2020/5/121,结束,返回,3.1软件需求分析,3.1.5需求分析模型,结构化分析导出的分析模型包括数据模型、功能模型和行为模型。该模型以“数据字典”为核心,描述了软件使用的所有数据对象,围绕这个核心的是“实体关系图”、“数据流图”和“状态转换图”。具体形式如下图所示:,第3章软件需求分析与建模,2020/5/122,结束,返回,3.1软件需求分析,3.1.5需求分析模型,图3.6需求分析模型,实体关系图(ER,EntityRelation):数据建模的基础,描述数据对象及其关系;,数据流图(DFD,DataFlowDiagram):功能建模的基础,描述数据怎样转换以及转换的功能;,状态转换图(ST,StatusTranformtion)行为建模的基础,表示系统的各种行为状态以及状态间的转换方式。;,第3章软件需求分析与建模,2020/5/123,结束,返回,3.2数据建摸,3.2.1实体关系图,3.2.2方框层次图,3.2.3Warnier图,第3章软件需求分析与建模,2020/5/124,结束,返回,3.2数据建摸,(1)数据模型包括三种基本元素:数据对象属性关系它们对理解问题的信息域提供了基础。,3.2.1实体关系图,数据对象表示具有不同属性的事物,ER用带有标记的矩形来表示。,关系表示数据对象之间的相互连接,ER用直线连接相关联的数据对象,并在直线上用带标记的菱形框来表示关系。,属性也称性质,指数据对象某一方面的特征,ER用带有标记的椭圆来表示。,第3章软件需求分析与建模,2020/5/125,结束,返回,3.2数据建摸,3.2.1实体关系图,属性,(2)ER图中的基本符号,连接,图3.7ER图的符号,第3章软件需求分析与建模,2020/5/126,结束,返回,3.2.1实体关系图,两个数据对象之间有以下三种关联,ER在数据对象之间的连线上用数字或字母表示:一对一(1:1):对象A的一个实例只能关联到对象B的一个实例,对象B的一个实例也只能关联到对象A的一个实例.,对象A,对象B,丈夫,妻子,关系,夫妻,1,1,1,1,图3.8一对一关系,第3章软件需求分析与建模,2020/5/127,结束,返回,3.2.1实体关系图,一对多(1:N):对象A的一个实例可以关联到对象B的一个或多个实例,而对象B的一个实例只能关联到对象A的一个实例,如一个母亲可以有多个孩子,而一个孩子只能有一个母亲。,对象A,对象B,母亲,孩子,关系,母子,1,n,1,n,图3.9一对多关系,第3章软件需求分析与建模,2020/5/128,结束,返回,3.2.1实体关系图,多对多(M:N):对象A的一个实例可以关联到对象B的一个或多个实例,同时对象B的一个实例也可以关联到对象A的一个或多个实例,如一个叔叔可以有多个侄子,一个侄子也可以有多个叔叔。,对象A,对象B,叔叔,侄子,关系,叔侄,m,n,m,n,图3.10多对多关系,第3章软件需求分析与建模,2020/5/129,结束,返回,学生选课ER图,图3.11,第3章软件需求分析与建模,2020/5/130,结束,返回,工资计算系统ER图,图3.12,第3章软件需求分析与建模,2020/5/131,结束,返回,3.2数据建摸,3.2.2方框层次图,层次方框图也是数据建模的图形工具层次方框图通过树型结构的一系列多层次的矩形框描述复杂数据的层次结构。,树型结构顶端的矩形框只有一个,用于代表完整的数据结构。下面各层的矩形框是对完整数据结构的逐步分解和细化得到的数据子集;底层的矩形框代表组成该数据结构的基本元素,是数据的最小单位,不可再分割。,第3章软件需求分析与建模,2020/5/132,结束,返回,3.2数据建摸,3.2.2方框层次图,层次方框图非常适合描述自顶向下的需求分析方法中数据的层次关系。系统分析员可以从对顶层信息的分类开始,沿着层次图中的每条路径逐步细化,直到确定了数据结构的全部细节为止。,第3章软件需求分析与建模,2020/5/133,结束,返回,3.2数据建摸,3.2.2方框层次图,例如,某单位职工的实发工资由应发工资和扣款两部分组成,每部分又可进一步细分。如应发工资又可分为基本工资和奖金;基本工资又可分为国家工资、津贴、补贴;奖金也可分为出勤奖和业绩奖;津贴和补贴还可以再进一步地细分。实发工资的层次方框图如下图所示。,第3章软件需求分析与建模,2020/5/134,结束,返回,图3.13职工工资的层次方框图,第3章软件需求分析与建模,2020/5/135,结束,返回,3.2数据建摸,3.2.3Warnier图,Warnier图是法国科学家Warnier提出的另一种描述数据层次结构的图形工具。与层次方框图类似,Warnier图也采用了树型结构表示数据,但与层次方框图相比,Warnier图对数据的描绘手段更加丰富。,第3章软件需求分析与建模,2020/5/136,结束,返回,3.2.3Warnier图,在Warnier图中,使用大括号来区分数据结构的层次。一个大括号内的所有名字都属于同一类信息;异或符号“”用于表明一类信息或一个数据元素在一定条件下出现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个。在一个名字下面或右边的圆括号中出现的数字指明了这个名字所代表的信息类或数据元素在该数据结构中重复出现的次数。,第3章软件需求分析与建模,2020/5/137,结束,返回,3.2.3Warnier图,例如,某计算机公司的一种软件产品要么是系统软件,要么是应用软件;系统软件中有k1种操作系统、k2种编译程序,此外还有工具软件;工具软件进一步又可划分为编辑程序、测试工具和辅助设计工具,它们各自的数量分别为j1、j2和j3。描绘这种软件产品的Warnier图如图4.14所示。,第3章软件需求分析与建模,2020/5/138,结束,返回,3.2.3Warnier图,图4.14描绘一种软件产品的Warnier图,第3章软件需求分析与建模,2020/5/139,结束,返回,练习题-实体关系图,图3.15某学校教学管理ER图,第3章软件需求分析与建模,2020/5/140,结束,返回,小结,作业P571,5,需求分析的任务,需求分析的步骤,需求分析的原则,实体关系图,方框层次图,Warnier图,需求分析的方法,需求分析模型,第3章系统工程基础与可行性研究,2020/5/141,结束,返回,软件定义时期,需求分析,可行性研究,问题定义,系统分析报告,可行性分析报告初步项目计划,需求规格说明书,要解决的问题是什么,是否有可行的解决办法,目标系统必须做什么,任务,任务,任务,撰写,撰写,撰写,图1.11软件定义,软件定义部分又可划分为问题定义、可行性研究和需求分析三个阶段。,软件定义部分,第3章软件需求分析与建模,2020/5/142,结束,返回,3.1软件需求分析,3.1.5需求分析模型,图3.6需求分析模型,实体关系图(ER,EntityRelation):数据建模的基础,描述数据对象及其关系;,实体关系图,方框层次图,Warnier图,第3章软件需求分析与建模,2020/5/143,结束,返回,3.3功能建模,【本节知识点】数据流图功能建模,第3章软件需求分析与建模,2020/5/144,结束,返回,3.3功能建模,数据流图(DFD,DataFlowDiagram)是结构化分析的基本工具,它描述了信息流和数据转换,通过对加工进行分解可以得到数据流图。,3.3.1数据流图概念,数据流图,功能模型,创建,第3章软件需求分析与建模,2020/5/145,结束,返回,3.3功能建模,DFD有四种元素,其基本符号如下图所示:,3.3.2数据流图符号,外部实体:与系统进行交互,但系统不对其进行加工和处理的实体,用带标记的矩形表示;,加工:对数据进行的变换和处理,用带标记的圆圈表示;,数据流:在数据加工之间或数据存储和数据加工之间进行流动的数据,用带标记的箭头表示;,数据存储:在系统中需要存储的实体,用带标记的双实线表示。,第3章软件需求分析与建模,2020/5/146,结束,返回,3.3.3基本系统模型,第0层DFD称为基本系统模型,可以将整个软件系统表示为一个具有输入和输出的黑匣子,用一个圆圈表示。,图3.16系统的顶层数据流图,第4章软件需求分析与建模,2020/5/147,结束,返回,3.3.4数据流与加工之间的关系,表3.1加工中常见关系的符号表示,第3章软件需求分析与建模,2020/5/148,结束,返回,3.3功能建模,3.3.5数据流模型的创建,通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。,顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的“原子加工”;中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。,第3章软件需求分析与建模,2020/5/149,结束,返回,3.3.5数据流模型的创建,(1)建立数据流图的步骤,第0层DFD将整个系统表示成一个加工;确定并标记主要的输入和输出;分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工;标记所有加工和箭头;重复步骤和,直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。,第3章软件需求分析与建模,2020/5/150,结束,返回,3.3.5数据流模型的创建,(2)建立数据流图的说明,绘制第0层DFD的时候,将整个系统看成一个加工,然后找出作用于该加工的外部实体,以及相应的数据输入和输出。绘制下一层数据流图时,细化第0层的加工,从而描述系统的主要功能。继续进行分解,直到所有的加工只执行一个简单的操作为止。,第3章软件需求分析与建模,2020/5/151,结束,返回,3.3功能建模,3.3.5数据流模型的创建,图3.17工资计算系统的顶层(0层)数据流图,(3)建立顶层数据流图系统基本模型,第3章软件需求分析与建模,2020/5/152,结束,返回,3.3.5数据流模型的创建,(4)分层细化,上一层DFD中的每一个圆圈可以进一步扩展成一个独立的数据流图,以揭示系统中程序的细节部分。,第3章软件需求分析与建模,2020/5/153,结束,返回,3.3.5数据流模型的创建,图3.18“自顶向下,逐步分解”过程示意图,第3章软件需求分析与建模,2020/5/154,结束,返回,3.3.5数据流模型的创建,这种循序渐进的细化过程可以继续进行,直到最低层的图仅描述原子过程操作为止。每一层数据流图必须与它上一层数据流图保持平衡和一致,因此,子图的所有输入输出流要与其父图相匹配。,(5)注意的问题,第3章软件需求分析与建模,2020/5/155,结束,返回,3.3.5数据流模型的创建,图3.19工资计算系统第一层数据流图,(6)实例分层细化,例:工资计算系统,2,3,第3章软件需求分析与建模,2020/5/156,结束,返回,图3.20工资计算系统的第二层数据流图(a)“计算工资”子数据流图;(b)“工资转存”子数据流图,实例分层细化,第3章软件需求分析与建模,2020/5/157,结束,返回,图3.21工资计算系统的第三层数据流图,实例分层细化,第3章软件需求分析与建模,2020/5/158,结束,返回,实例分层细化,建立数据流模型要遵循以下的原则:(1)每个加工至少应有一个输入数据流(反映被处理数据的来源)和一个输出数据流(反映加工的结果)。,3.3.6建立数据流模型的原则,(2)数据流图中各构成元素的名称必须具有明确的含义且能够代表对应元素的内容或功能。,(3)对数据流图中某个加工进行细化生成的下层数据流图,称为其上层图的子图。应保证分层数据流图中任意对应的父图和子图的输入/输出数据保持一致。,图3.17工资计算系统的顶层(0层)数据流图,图3.19工资计算系统第一层数据流图,2,3,第3章软件需求分析与建模,2020/5/159,结束,返回,实例分层细化,(4)在数据流图中,应按照层次给每个加工编号,用于表明该加工所处的层次及上、下层的父图与子图的关系。编号的规则为:顶层加工不用编号;第二层加工的编号为1,2,n;第三层加工的编号为1.1,1.2,2.1,n.1,n.2,等,依次类推。,(5)在父图中不要出现子图中涉及的局部数据存储文件。通常除底层数据流图中需标明所有数据存储外,为了保持画面的整洁,各中间层数据流图只需显示处于加工之间的接口文件即可。,3.3.6建立数据流模型的原则,图3.19工资计算系统第一层数据流图,2,3,第3章软件需求分析与建模,2020/5/160,结束,返回,实例分层细化,(6)数据流图只能由四种基本符号组成,是实际业务流程的客观映象,用于说明系统应该“做什么”,而不需要指明系统“如何做”。,(7)数据流图的分解速度应保持适中。通常一个加工每次可分解为2-4个子加工,最多不要超过七个,因为过快的分解会增加用户对系统模型理解的难度。,(8)为了便于数据流图在计算机上的输入和输出,免去画斜线、弧线、圆等符号的麻烦,数据流图还有另一套表示符号,如表4.2所示。,3.3.6建立数据流模型的原则,第3章软件需求分析与建模,2020/5/161,结束,返回,实例分层细化,表3.2数据流图的另一套表示符号,3.3.7数据流图的另一套表示符号,第3章软件需求分析与建模,2020/5/162,结束,返回,实例分层细化,练习题:试画你开发的系统的数据流图。,3.3功能建模,(1)建立数据流图的步骤,(2)建立数据流模型的原则,本节小结:,第3章软件需求分析与建模,2020/5/163,结束,返回,3.4行为建模,【本节知识点】状态转换图行为建模,第3章软件需求分析与建模,2020/5/164,结束,返回,状态转换图通过描述状态以及导致系统改变状态的事件来表示系统的行为,它没有表示出系统所执行的处理,只表示了处理结果可能的状态转换。,3.4.1状态转换图,(1)状态转换图的概念,第3章软件需求分析与建模,2020/5/165,结束,返回,ST(ST,StatusTranformtion)用带标记的圆圈或矩形表示状态,用箭头表示从一种状态到另一种状态的变换,箭头上的文本标记表示引起变换的条件。,3.4.1状态转换图,(2)状态转换图符号,第3章软件需求分析与建模,2020/5/166,结束,返回,例如,在操作系统中,当存在多个申请占用CPU运行的进程(进程是分配CPU的最小处理单位)时,系统将按照某种调度策略为各个进程分配CPU。此时,进程的状态可能有三种:就绪、运行和等待。就绪:等待分配CPU;运行:占用CPU进行相应的处理;挂起:放弃CPU的使用。,3.4.1状态转换图,(3)实例,第3章软件需求分析与建模,2020/5/167,结束,返回,3.4.1状态转换图,导致系统状态发生迁移的事件有四种:t1、t2、t3、t4,分述如下:t1:因I/O等事件的发生而要求中断;t2:中断事件已经处理完毕;t3:分配CPU;t4:已用完分配的CPU时间。,在上面描述的情况下,有关CPU分配的进程的状态迁移图如图3.22(a)所示。,第3章软件需求分析与建模,2020/5/168,结束,返回,3.4.2状态迁移表,状态迁移图还可以表示为等价的表格形式,这样的表格称为状态迁移表。状态迁移表的列由所有的系统状态组成,行由引起状态迁移的所有信号或事件组成,表格中第i行第j列的元素是从状态Sj因发生事件ti而会迁移到的状态。与图3.22(a)等价的状态迁移表如表3.3所示。在表中,S1代表就绪状态;S2代表运行状态;S3代表挂起状态。,第3章软件需求分析与建模,2020/5/169,结束,返回,表3.3进程的状态迁移表,3.4.2状态迁移表,导致系统状态发生迁移的事件有四种:t1、t2、t3、t4,分述如下:t1:因I/O等事件的发生而要求中断;t2:中断事件已经处理完毕;t3:分配CPU;t4:已用完分配的CPU时间。,第3章软件需求分析与建模,2020/5/170,结束,返回,如果状态转换图所描述的系统比较复杂,则可以采用状态图的分层表示法。例如对图4.22(a)所示的状态图中的大状态S1进行细化,就得到了图4.22(b)所示的下层状态迁移图。,如果在状态迁移图,一个状态由于某个事件而导致的下一个状态可能会有多个,可在状态迁移图中引入判断框和处理框,如图4.22(c)中所示的状态迁移图就是采用这种方法对图4.22(a)的变形。,3.4.3状态迁移图,第3章软件需求分析与建模,2020/5/171,结束,返回,3.4.3状态迁移图,图3.22状态迁移图举例(a)状态迁移图;(b)细化后的状态迁移图;(c)状态迁移图的变形,第3章软件需求分析与建模,2020/5/172,结束,返回,3.5数据字典,【本节知识点】数据字典结构化语言、判断树和判断表,第3章软件需求分析与建模,2020/5/173,结束,返回,数据字典描述数据流图的数据存储、数据加工(最底层加工)和数据流,它记录的主要内容有:基本信息:名字、别名、描述;定义:数据长度、数据类型、数据结构;使用特点:取值范围、使用频率、使用方式等;控制信息:来源、用户、引用程序、读写权限等;其他说明:,3.5数据字典,3.5.1数据字典的描述,第3章软件需求分析与建模,2020/5/174,结束,返回,在数据字典中,数据元素的定义可以是基本元素及其组合,数据进行自顶向下地分解,直到不需要进一步解释且参与人员都清楚其含义为止。,3.5.1数据字典的描述,第3章软件需求分析与建模,2020/5/175,结束,返回,数据组合有三种方式:顺序:以确定的次序连接多个数据项;选择:从多个数据项中选取一个;重复:将某个数据项重复多次。为了能够对数据流中的各组成成分进行准确的定义,在数据字典中使用了多种具有特定意义的符号,如下:,3.5.1数据字典的描述,第3章软件需求分析与建模,2020/5/176,结束,返回,表3.5数据字典中的基本符号及含义,3.5.1数据字典的描述,第3章软件需求分析与建模,2020/5/177,结束,返回,3.5.2数据字典中的条目及说明格式,数据字典是关于数据流图中各种成分详细定义的信息集合,可将其按照说明对象的类型划分为四类条目,分别为数据流条目、数据项条目、数据文件条目和数据加工条目。,为了便于软件开发人员方便地查找所需的条目,应按照一定的顺序对数据字典中的不同条目进行排列。下面分别对各类条目的内容及说明格式进行介绍。,第3章软件需求分析与建模,2020/5/178,结束,返回,3.5.2数据字典中的条目及说明格式,数据流在数据流图中主要用于说明数据结构在系统中的作用和流动方向,因此数据流也被称作“流动的数据结构”。数据字典中数据流条目应包括以下几项主要内容:数据流名称、数据流别名、说明、数据流来源、数据流流向、数据流组成和数据流量等。例如:工资系统中的出勤表数据流在数据字典中的条目描述为:,1.数据流条目,第3章软件需求分析与建模,2020/5/179,结束,返回,3.5.2数据字典中的条目及说明格式,表3.6出勤表数据流的描述表,第3章软件需求分析与建模,2020/5/180,结束,返回,3.5.2数据字典中的条目及说明格式,数据流图中每个数据结构都是由若干个数据项构成的,数据项是加工中的最小单位,不可再分。数据字典的数据项条目中应包含的主要内容有:数据项名称、数据项别名、说明、类型、长度、取值范围及含义等。例如:出勤表中的职工号数据项在数据字典中的条目描述为,2.数据项条目,第3章软件需求分析与建模,2020/5/181,结束,返回,3.5.2数据字典中的条目及说明格式,表3.7出勤表中的职工号数据项条目描述表,第3章软件需求分析与建模,2020/5/182,结束,返回,3.5.2数据字典中的条目及说明格式,数据文件是数据流图中数据结构的载体。数据字典的数据文件条目中应包含的主要内容有:数据文件名称、说明、数据文件组成、组织方式、存取方式、存取频率等。例如:工资系统中的职工工资档案文件在数据字典中的条目描述为:,3.数据文件条目,第3章软件需求分析与建模,2020/5/183,结束,返回,3.5.2数据字典中的条目及说明格式,表3.8职工工资档案文件描述表,第3章软件需求分析与建模,2020/5/184,结束,返回,3.5.2数据字典中的条目及说明格式,在数据流图中只简单给出了每个加工的名称,在数据字典中通过数据加工条目主要是要说明每个加工是用来“做什么”的。数据字典的数据文件条目中应包含的主要内容有:数据加工名称、加工编号、说明、输入数据流、输出数据流、加工逻辑等。例如:工资系统中的计算应发工资这个加工在数据字典中的条目描述为:,4.数据加工条目,第3章软件需求分析与建模,2020/5/185,结束,返回,表3.9计算应发工资加工描述表,第3章软件需求分析与建模,2020/5/186,结束,返回,3.5数据字典,练习题:试定义你开发的系统的数据字典。,(1)建立数据字典的概念,(2)数据字典的描述,本节小结:,第3章软件需求分析与建模,2020/5/187,结束,返回,3.5.3编写加工规格说明,加工规格说明用于描述底层数据流图的加工,包括叙述性正文、加工算法、数学方程、表或图表等,它可以成为编写软件需求规格说明的第一步,并为加工的程序设计提供指南。通常,加工规格说明采用结构化语言、判断树和判断表等进行描述。,第3章软件需求分析与建模,2020/5/188,结束,返回,3.5.3编写加工规格说明,结构化语言是一种介于自然语言和形式化语言之间的半形式化语言,例如,上面对计算应发工资条目中加工逻辑的描述就是采用的结构化语言。它是在自然语言的基础上加入了一定的限制,通过使用有限的词汇和有限的语句来较为严格地描述加工逻辑。描述时可以使用的词汇包括:数据字典中定义的名字、基本控制结构中的关键词、自然语言中具有明确意义的动词和少量的自定义词汇等。尽量不使用形容词或副词,可以使用一些简单的算术或逻辑运算符。,1.结构化语言,第3章软件需求分析与建模,2020/5/189,结束,返回,3.5.3编写加工规格说明,(1)顺序结构:由自然语言中的简单祈使语句序列构成。(2)选择结构:通常采用IFTHENELSEENDIF和CASEOFENDCASE结构。(3)循环结构:通常采用DOWHILEENDDO和REPEATUNTIL结构。,结构化语言中的三种基本结构的描述方法如下:,第3章软件需求分析与建模,2020/5/190,结束,返回,3.5.3编写加工规格说明,当某一加工的实现需要同时依赖多个逻辑条件的取值时,对加工逻辑的描述就会变得较为复杂,很难采用结构化语言清楚地将其描述出来,而采用判定表则能够完整且清晰地表达复杂的条件组合与由此产生的动作之间的对应关系。判定表通常由用双线分隔开的四个部分构成:左上部用于列出所有相关的条件;左下部用于列出所有可能产生的动作;右上部用于列出所有可能的条件组合;右下部用于列出在各种组合条件下需要进行的动作。,2.判定表,第3章软件需求分析与建模,2020/5/191,结束,返回,3.5.3编写加工规格说明,下面以描述某单位工资档案管理系统中“职务津贴计算”加工逻辑为例说明判定表的写法。由于篇幅限制,在下面的例子中假定职工的职称只分为助工、工程师和高工三种,对应的判定表见表3.10。,通常把表中任意一个条件组合的特定取值及其相应要执行的动作称为规则。判定表的一般格式如下所示。,第3章软件需求分析与建模,2020/5/192,结束,返回,3.5.3编写加工规格说明,表3.10“职务津贴计算”判定表,第3章软件需求分析与建模,2020/5/193,结束,返回,3.5.3编写加工规格说明,要生成上面的判定表,具体的步骤如下:(1)确定规则的个数。例子中有三个条件,每个条件有三种取值,故规则个数为33=9。(2)列出所有的条件和动作。(3)列出所有的条件组合。(4)填写每种条件组合下对应的动作。(5)若表中存在不同规则对应相同动作且其条件组合存在某种关系时,需要对表进行必要的化简。,第3章软件需求分析与建模,2020/5/194,结束,返回,3.5.3编写加工规格说明,判定树是判定表的图形表示,它与判定表的作用大致相同,但比判定表更加直观,更易于理解和掌握。例如,图3.23是采用判定树对“基本奖金计算”加工逻辑的描述。,3.判定树,第3章软件需求分析与建模,2020/5/195,结束,返回,3.5.3编写加工规格说明,图3.23“基本奖金计算”判定树,第3章软件需求分析与建模,2020/5/196,结束,返回,3.6结构化分析过程,结构化分析(SA,StructureAnalysis)过程实质上就是创建数据模型、功能模型和行为模型,其中数据建模的工具是实体关系图,功能建模的工具是数据流图,行为建模的工具是状态转换图,另外使用数据字典定义系统的所有数据项。,第3章软件需求分析与建模,2020/5/197,结束,返回,3.6结构化分析过程,为了理解和学会使用这些建模工具,我们结合一个“学生成绩管理系统”的实例讲解整个分析过程,并给出部分实体关系图、数据流图、状态转换图和数据字典。,第3章软件需求分析与建模,2020/5/198,结束,返回,3.6结构化分析过程,下面列出用户对学生成绩管理系统的要求:教务人员录入学生信息、课程信息和成绩信息;学生可以随时查询自己所选课程的成绩;由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取。,第3章软件需求分析与建模,2020/5/199,结束,返回,3.6结构化分析过程,(1)在需求收集的过程中,要求客户列出应用软件或业务过程涉及到的事物,将其演化成数据对象;(2)一次考虑一个对象,分析员和客户定义这个对象和其他对象之间是否存在连接;(3)如果存在连接,应创建一个或多个关系;(4)对每一个关系,确定其关联类型;,数据建模步骤,第3章软件需求分析与建模,2020/5/1100,结束,返回,3.6结构化分析过程,(5)重复步骤(2)到步骤(4),直到定义了所有关系。(6)定义每个实体的属性;(7)形式化并复审实体关系图;(8)重复步骤(1)到(7),直到数据建模完成。,数据建模步骤,第3章软件需求分析与建模,2020/5/1101,结束,返回,3.6结构化分析过程,实例分析:学生成绩管理系统实体:学生、课程、成绩。实体属性定义:学生:学号、姓名、性别、院系、专业、入学年月课程:课程编号、课程名称、课程学时,课程学分、课程描述成绩:学号、课程编号、分数、考核日期,3.6.1创建实体关系图,第3章软件需求分析与建模,2020/5/1102,结束,返回,3.6结构化分析过程,3.6.1创建实体关系图,显然,学生、课程和成绩都是系统的实体,并且可以初步定义它们的属性。教务人员虽然是系统的用户,但其信息与系统处理无关,因此不用作为实体。由于成绩信息包含了选课信息,因此选课信息不用单独记录。因此系统的实体是学生、课程和成绩。,第3章软件需求分析与建模,2020/5/1103,结束,返回,3.6结构化分析过程,我们分析这些实体之间的关联关系:从实际情况得知,一个学生可以选多门课程,一门课程也可以有多个学生选修,但每个学生选一门课程必须有一个成绩。根据上述分析,我们得到如图所示的实体关系图:,3.6.1创建实体关系图,第3章软件需求分析与建模,2020/5/1104,结束,返回,3.6结构化分析过程,实体关系图:,图1学生选课E-R简图,第3章软件需求分析与建模,2020/5/1105,结束,返回,3.6结构化分析过程,实体关系图:,学生,课程,选课,学号,院系,入学日期,课名,学时,课程号,学分,姓名,性别,n,m,专业,成绩,课号,分数,学号,考试日期,描述,1,图2学生选课E-R图,第3章软件需求分析与建模,2020/5/1106,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,通常,数据流图是分层绘制的,整个过程反映了自顶向下进行功能分解和细化的分析过程。顶层(也称第0层)DFD用于表示系统的开发范围,以及该系统与周围环境的数据交换关系;最底层DFD代表了那些不可进一步分解的“原子加工”;中间层DFD是对上一层父图的细化,其中的每一个加工可以继续细化,中间层次的多少由系统的复杂程度决定。,第3章软件需求分析与建模,2020/5/1107,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,(1)第0层DFD将整个系统表示成一个加工;(2)确定并标记主要的输入和输出;(3)分离出下一层中的加工、数据对象和存储,并对其进行细化,一次细化一个加工;(4)标记所有加工和箭头;(5)重复步骤(3)和(4),直到所有的加工只执行一个简单的操作,可以很容易地用程序实现。,第3章软件需求分析与建模,2020/5/1108,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,绘制第0层DFD的时候,将整个系统看成一个加工,然后找出作用于该加工的外部实体,以及相应的数据输入和输出。绘制下一层数据流图时,细化第0层的加工,从而描述系统的主要功能。继续进行分解,直到所有的加工只执行一个简单的操作为止。,第3章软件需求分析与建模,2020/5/1109,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,实例分析:学生成绩管理系统第0层DFD图教务人员维护学生信息和课程信息,并登录学生的选课成绩;学生查询自己的成绩单。,第3章软件需求分析与建模,2020/5/1110,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,对于“学生成绩管理系统”而言,整个系统就是一个加工“学生成绩管理”。“教务人员”是数据的源点,“学生”是数据的终点。教务人员需要录入学生信息、课程信息和成绩,说明“学生信息”、“课程信息”和“成绩”是数据流;同样,“查询请求”和“查询结果”也是数据流。根据上述分析,得到如图所示的第0层DFD图。,第3章软件需求分析与建模,2020/5/1111,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,图3学生成绩管理系统第0层DFD图,第3章软件需求分析与建模,2020/5/1112,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,第1层DFD图对第0层DFD图中的加工“学生成绩管理”展开得知,“学生信息”是教务人员需要录入的一个信息,因此加入一个加工“录入学生信息”,同样得到“录入课程信息”、“登记成绩”两个加工。另外,数据流“查询请求”和“查询结果”应该由加工“查询成绩”来完成。,第3章软件需求分析与建模,2020/5/1113,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,这样,我们用“录入学生信息”、“录入课程信息”、“登记学生成绩”和“查询学生成绩”四个加工代替第0层的“学生成绩管理”,同时增加这些数据流对应的数据存储,即“学生”、“课程”和“成绩”,最后得到如图所示的第1层DFD图。,第3章软件需求分析与建模,2020/5/1114,结束,返回,3.6.2创建数据流模型,图4学生成绩管理系统第1层DFD图,学生信息,课程信息,成绩,学生信息,课程信息,成绩信息,表,表,表,第3章软件需求分析与建模,2020/5/1115,结束,返回,3.6结构化分析过程,3.6.2创建数据流模型,第2层DFD图为了继续进行分解,我们分析第1层DF中的加工“查询学生成绩”。学生查询成绩时需要提供合法性检查,因此,“查询学生成绩”可以分解为“合法性检查”和“查询成绩”两个处理步骤,从而形成第2层DFD,如下图所示:,第3章软件需求分析与建模,2020/5/1116,结束,返回,3.6.2创建数据流模型,图5学生成绩管理系统第2层DFD图,第4章软件需求分析与建模,2020/5/1117,结束,返回,3.6.2创建数据流模型,根据以上实例和经验,绘制数据流图应当遵循以下原则:(1)分层时,子图的输入、输出数据流必须和父图中相应加工的输入、输出数据流一致;(2)加工的编号应该唯一且具有层次性;(3)加工不应该只有输入或只有输出,通常既有输入又有输出;,第4章软件需求分析与建模,2020/5/1118,结束,返回,3.6.2创建数据流模型,(4)数据流图不应反映处理的顺序;(5)加工之间应通过数据存储进行通信,避免从一个加工直接流到另一个加工;(6)数据应通过加工进行流动,避免从一个数据存储直接流到另一个数据存储;(7)数据流图中所有元素的命名应当对客户有意义,且与业务相关;(8)不要在一个图中绘制7个以上的加工,否则难于绘制和理解。,第3章软件需求分析与建模,2020/5/1119,结束,返回,3.6.3创建数据字典,数据字典以下列出学生成绩管理系统的部分数据字典条目:,第3章软件需求分析与建模,2020/5/1120,结束,返回,3.6.3创建数据字典,第3章软件需求分析与建模,2020/5/1121,结束,返回,3.6.3创建数据字典,第3章软件需求分析与建模,2020/5/1122,结束,返回,3.6.3创建数据字典,第3章软件需求分析与建模,2020/5/1123,结束,返回,3.6.3创建数据字典,第3章软件需求分析与建模,2020/5/1124,结束,返回,3.6.4创建行为模型,通常来说,行为建模用于实时系统。实时系统中可能存在许多脚本,很多实体需要进行状态划分和描述状态转换图。在事务系统中,系统行为相对简单,只有某些行为较复杂的实体才需要建立其状态转换图。,第3章软件需求分析与建模,2020/5/1125,结束,返回,3.6.4创建行为模型,(1)分析外部事件,所谓外部事件是指外部实体与系统的一次交互。(2)分析事件的响应者,该响应者为了响应该事件要进行怎样的活动,这种活动又会激发哪些事件等。(3)根据事件和活动划分实体的状态,考虑发生怎样的事件使该实体进入这个状态,怎样的事件使该实体从这个状态转换到另一状态等。,第3章软件需求分析与建模,2020/5/1126,结束,返回,3.6.4创建行为模型,实例分析:学生成绩管理系统在“学生成绩管理”系统中,学生成绩信息必须采取安全措施,我们采取登录方法避免非法使用系统。这样,该系统存在“登录”、“正常”和“出错”等状态的转换,如下图所示:,第3章软件需求分析与建模,2020/5/1127,结束,返回,3.6.4创建行为模型,图6学生成绩管理系统登录ST图,第3章软件需求分析与建模,2020/5/1128,结束,返回,3.6.4创建行为模型,学生启动系统之后,系统处于“登录”状态。在这种状态下,学生可以进行登录或取消登录。如果取消登录,系统直接退出;如果登录失败,系统进入“出错处理”状态,在显示错误信息后,又重新回到“登录”状态;如果登录成功,系统进入正常状态,即显示操作界面,等待学生查询,学生可以多次查询不同课程的成绩,直到学生选择退出为止。,第3章软件需求分析与建模,2020/5/1129,结束,返回,3.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论