软件需求分析的任务和过程结构化分析方法原型化方法数据及数据库需求软件需求分析的任务深入描述软件的功能和性能确定软件设计的约束和软件同其它系统元素的接口细节定义软件的其它有效性需求需求分析研究的对象是软件项目的用户要求准确地表达被接受的用户要求确定被开发软件系统的系统元素将功能和信息结构分配到这些系统元素中需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。目标系统当前系统物理模型逻辑模型模型化抽象化物理模型逻辑模型具体化实例化理解需求表达需求导出怎么做做什么通常软件开发项目是要实现目标系统的物理模型目标系统的具体物理模型是由它的逻辑模型经实例化,即具体到某个业务领域而得到的需求获取技术需求获取技术包括两方面的工作:建立获取用户要求的方法的框架;支持和监控需求获取的过程的机制。获取用户需求的主要方法是调查研究。①了解系统的需求软件开发是系统开发的一部分,仔细分析研究系统的需求规格说明,对软件的需求获取是很有必要的。②市场调查了解市场对待开发软件有什么样的要求;了解市场上有无与待开发软件类似的系统③访问用户和用户领域的专家把从用户那里得到的信息作为重要的原始资料进行分析;访问用户领域的专家所得到的信息将有助于对用户需求的理解。④考察现场了解用户实际的操作环境、操作过程和操作要求。对照用户提交的问题陈述,对用户需求可以有更全面、更细致的认识。调查研究方式有:发调查表;召开调查会;向用户领域的专家个别咨询;实地考察,跟踪现场业务流程;查阅与待开发系统有关的资料;使用各种调查工具等。需求分析的过程(1)问题识别从系统的角度来理解软件并评审软件范围是否恰当确定对目标系统的综合要求,即软件的需求提出这些需求实现条件,以及需求应达到的标准软件的需求包括:功能需求性能需求环境需求可靠性需求安全保密要求用户界面需求资源使用需求成本消耗需求开发进度需求预先估计以后系统可能达到的目标问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺利地对问题进行分析。(2)分析与综合从信息流和信息结构出发,逐步细化所有的软件功能,找出系统各元素之间的关联、接口特性和设计上的约束,分析它们是否满足功能要求,是否合理。剔除其不合理的部分,增加其需要部分。最终综合成系统的解决方案,给出目标系统的详细逻辑模型。常用的分析方法面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD)面向对象的分析方法(OOA)等(3)编制需求分析阶段的文档软件需求说明书数据要求说明书初步的用户手册修改、完善与确定软件开发实施计划(4)需求分析评审系统定义的目标是否与用户的要求一致;系统需求分析阶段提供的文档资料是否齐全;文档中的所有描述是否完整、清晰、准确反映用户要求;与所有其它系统成分的重要接口是否都已经描述;被开发项目的数据流与数据结构是否足够,确定;所有图表是否清楚,在不补充说明时能否理解;主要功能是否已包括在规定的软件范围之内,是否都已充分说明;设计的约束条件或限制条件是否符合实际;开发的技术风险是什么;是否考虑过软件需求的其它方案;是否考虑过将来可能会提出的软件需求;是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;需求分析流程软件需求分析的原则⑴需要能够表达和理解问题的信息域和功能域信息域应包括信息流:数据和控制通过一个系统时的变化方式。两个功能之间的数据/控制传递就确定了功能间的接口。信息内容:单个数据或控制对象,它们构成了某个更大的由软件变换生成的信息的集合。信息结构:各种数据和控制项的内部组织。⑵以层次化的方式对问题进行分解和不断细化软件的功能域和信息域都能做进一步的分解。这种分解可以是同一层次上的,称为横向分解;也可以是多层次的纵向分解。纵向分解横向分解⑶要给出系统的逻辑视图和物理视图软件需求的逻辑视图给出的是软件要达到的功能和要处理的数据之间的关系,而不是实现的细节。软件需求的逻辑描述是软件设计的基础。软件需求的物理视图给出的是处理功能和数据结构的实际表现形式,这往往是由设备本身决定的。软件需求规格说明的原则从现实中分离功能,即描述要“做什么”而不是“怎样实现”要求使用面向处理的规格说明语言(或称系统定义语言)如果被开发软件只是一个大系统中的一个元素,那么整个大系统也包括在规格说明的描述之中规格说明必须包括系统运行环境规格说明必须是一个认识模型规格说明必须是可操作的规格说明必须容许不完备性并允许扩充规格说明必须局部化和松散耦合软件需求方法需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成大多数的需求分析方法是由信息驱动的信息域具有三种属性:信息流、信息内容和信息结构。结构化分析方法结构化分析方法是一种建模技术在模型的核心是数据词典,它描述了所有的在目标系统中使用的和生成的数据对象。围绕着这个核心的有三种图:实体—关系图(ERD)描述数据对象及数据对象之间的关系;数据流图(DFD)描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能);状态—迁移图(STD)描述系统对外部事件如何响应,如何动作。ERD用于数据建模,DFD用于功能建模,STD用于行为建模。结构化分析的分析模型实体—关系图状态—迁移图数据流图数据对象描述加工规格说明数据字典控制规格说明分析模型的三个视图数据建模和对象描述功能建模和数据流图基本加工逻辑说明行为建模数据词典数据建模数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。数据对象是需被目标系统所理解的复合信息的表示。它具有若干不同特征或属性的信息。数据对象可以是外部实体,事物,角色,行为或事件,组织单位,地点或结构。数据对象只封装了数据,没有包含作用于这些数据上的操作。属性定义了数据对象的特征。它可用来:为数据对象的实例命名;描述这个实例;建立对另一个数据对象的另一个实例的引用。为了唯一地标识数据对象的某一个实例,定义数据对象中的一个属性或几个属性为关键码(key),书写为_id,例如在“学生”数据对象中用“学号”做关键码,它可唯一地标识一个“学生”数据对象中的实例。关系各个数据对象的实例之间有关联。如一个学生“张鹏”选修两门课程“软件工程”与“计算机网络”,学生与课程的实例通过“选修”关联起来。实例的关联有三种:一对一(1:1);一对多(1:m);多对多(n:m)。这种实例的关联称为“基数”。基数表明了“重复性”。如1位教师带学生班的30位同学,就是1:m的关系。但也有1位教师带0位同学的情形,所以实例关联有是“可选”还是“必须”之分。用“O”表示关系是可选的,用“│”表示关系必须出现1次。这表明了关系的“参与性”。E-R图(Entity-RelationshipDiagram)在需求分析阶段描述数据对象和它们之间的关系,使用了E-R图。教师学生管带基数:一位教师基数:多位学生参与度:必须参与度:可选E-R图中表示实体关联的符号如下:XY一个X与一个Y相关联一个X与一个或多个Y相关联XY一个X与零个或一个Y相关联XY一个X与零个,一个或多个Y相关联XY一个X与一个Y或Z相关联XYZ一个X与一个Y与Z相关联XYZ在E-R图中,每个方框表示数据对象或属性,方框之间的连线表示数据对象之间,或对象与属性之间的关联。出现在连线上的短竖线可以看成是“1”,而圆圈隐含表示“0”。例如,在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。用E-R图描述它们之间的关联,得下图。其中,学生与课程是多对多的关联,教师与课程的关联是0/1对多。学生教师课程由于“多对多”的关联在计算机表达时有困难,引入“选课”对象作为关联对象,可将“多对多”的关联改为两个“一对多”的关联。学生课程选课学号姓名性别出生年月籍贯……数据对象表进一步,要确定属性。例如,学生具有学号、姓名、性别、出生年月、专业(其它略)等属性;课程具有课程号、课程名、学分、学时数等属性;教师具有职工号、姓名、年龄、职称等属性。为每一个数据对象建立数据对象表,描述其属性,如此可得“教学”数据模型。教学数据模型学号姓名专业性别……学生职工号姓名专业职称年龄教师课程号课程名学分学时……课程学号课程号成绩选课功能建模和数据流最初,结构化分析方法仅讨论数据流建模。目标系统被表示成如图所示的数据变换流程图。系统的功能体现在核心的数据变换中。外部实体外部实体外部实体外部实体目标系统输入信息输入信息输出信息输出信息功能建模的思想功能建模就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。根据DeMarco的论述,功能模型使用了数据流图来表达系统内数据的运动情况,而数据流的变换则用结构化英语、判定表与判定树来描述。数据流图数据流图中的主要图形元素数据加工(数据变换)数据源点或终点(外部实体)数据流数据存储文件描述银行取款过程的数据流图数据流与数据加工之间的关系数据流图的层次结构为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统分层的数据流图在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。结构化分析方法功能建模的步骤商店业务处理系统这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能数据流图绘制步骤首先确定系统的输入和输出根据商店业务,画出顶层数据流图,以反映最主要业务处理流程经过分析,商店业务处理的主要功能应当有销售、采购、会计三大项。主要数据流输入的源点和输出终点是顾客和供应商。然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图第一层数据流图加细每一个加工框销售细化采购细化检查和修改数据流图的原则数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡可以在数据流图中加入物质流,帮助用户理解数据流图图上每个元素都必须有名字数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要数据流基本加工逻辑说明对数据流图的每一个基本加工,必须有一个基本加工逻辑说明基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则加工逻辑说明必须描述实现加工的策略而不是实现加工的细节加工逻辑说明中包含的信息应是充足的,完备的,有用的,无冗余的用于写加工逻辑说明的工具结构化英语判定表判定树(1)结构化英语结构化英语的词汇表由英语命令动词数据词典中定义的名字有限的自定义词逻辑关系词IF_THEN_ELSE、CASE_OF、WHILE_DO、REPEAT_UNTIL等组成。是一种介于自然语言和形式化语言之间的语言语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示其基本控制结构有三种:简单陈述句结构:避免复合语句;重复结构:while_do或repeat_until结构。判定结构:if_the