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

下载本文档

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

文档简介

第3章 软件需求分析,3.1软件需求分析的基本概念3.2分析建模3.3结构化分析(SA)方法 3.4数据流图3.5数据词典3.6加工逻辑说明 3.7系统行为建模3.8原型化分析方法3.9需求分析文档3.10案例分析图书馆管理系统,教学提示:本章介绍软件需求分析的雪球分析的有关知识, 主要包括需求分析的内容、任务、步骤、方法、 需求分析文档的书写格式和用户手册的书写格式 等几个方面的内容。 教学目标:掌握可行性分析的有关知识,主要主要包括需求 分析的内容、任务、步骤;掌握SA方法、OOA方 法、原型化方法;掌握需求分析文档的书写格式 和用户手册的书写格式,掌握与上述内容相关的 知识。,3.1软件需求分析的基本概念,需求分析是要决“做什么,不做什么”。不论是为客户做软件项目还是为自己做软件产品,都要进行需求分析。需求分析是软件生命期中重要的一步,也是决定性的一步。在可行性分析阶段,对开发新系统的基本思想和过程进行初步分析和论证,对系统的基本功能、性能及开发时间的限制,人员安排、投资情况等做出了客观的分析。在需求分析阶段,要对经过可行性分析所确定的系统目标和功能作进一步的详细论述,确定系统“做什么?”的问题。,3.1.1软件需求分析的任务,软件需求分析关系到软件系统开发的成败,是决定软件产品质量的关键。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。要在可行性分析的基础上,进一步确定用户的需求。需求分析的基本任务是:要准确地定义新系统的目标,为了满足用户需求,回答系统必须“做什么”的问题。获得需求规格说明书。,为了更加准确地描述需求分析的任务,Boehm 给出软件需求的定义。 研究一种无二义性的表达工具,它能为用户和软件人员双方都接受,并能够把“需求”严格地、形式地表达出来。 对于大、中型的软件系统,很难直接对它进行分析设计,人们经常借助模型来分析设计系统。模型是现实世界中的某些事物的一种抽象表示,抽象的含义是抽取事物的本质特性,忽略事物的其他次要因素。因此,模型既反映事物的原型,又不等于该原型。模型是理解、分析、开发或改造事物原型的一种常用手段。例如,建造大楼前常先做大楼的模型,以便在大楼动工前就能使人们对未来的大楼有一个十分清晰的感性认识,显然,大楼模型还可以用来改进大楼的设计方案。,由于需求分析方法不同,描述形式不同。图2.1 描述了需求分析一般的实现步骤。,第一步,获得当前系统的物理模型。物理模型是对当前系统的真实写照,可能是一个由人工操作的过程,也可能是一个已有的但需要改进的计算机系统。首先是要对现行系统进行分析、理解,了解它的组织情况、数据流向、输入输出,资源利用情况等,在分析的基础上画出它的物理模型。第二步,抽象出当前系统的逻辑模型。逻辑模型是在物理模型的基础上,去掉一些次要的因素,建立起反映系统本质的逻辑模型。第三步,建立目标系统的逻辑模型。通过分析目标系统与当前系统在逻辑上的区别,建立符合用户需求的目标系统的逻辑模型。第四步,补充目标系统的逻辑模型。对目标系统进行补充完善,将一些次要的因素补充进去,例如出错处理。,根据上述分析得知,需求分析的具体任务是:,(1)确定系统的综合要求确定系统功能要求这是最主要的需求,确定系统必须完成的所有功能。确定系统性能要求应就具体系统而定,例如可靠性、联机系统的响应时间、存储容量、安全性能等。确定系统运行要求主要是对系统运行时的环境要求;如系统软件、数据库管理系统、外存和数据通信接口等。将来可能提出的要求对将来可能提出的扩充及修改做预准备。,(2)分析系统的数据要求 软件系统本质上是信息处理系统,因此,必须考虑.数据 (需要哪些数据、数据间联系、数据性质、结构)数据处理 (处理的类型、处理的逻辑功能)(3)导出系统的逻辑模型通常系统的逻辑模型用DFD图来描述。(4)修正系统的开发计划通过需求对系统的成本及进度有了更精确的估算,可进一步修改开发计划。,3.1.2需求分析的过程,需求分析阶段的工作,可以分为四步,如图3-1所示。1问题识别 定义问题双方确定问题的综合需求。这些需求包括功能需求(最主要的需求)、性能需求、环境需求和用户界面需求,另外还有可靠性、安全性、保密性、可移植性和可维护性等方面的需求。(1) 功能需求。所开发的软件必须具备什么样的功能, 这是最重要的。,(2) 性能需求。待开发的软件的技术性能指标,如存储容量、运行时间等限制。(3) 环境需求。软件运行时所需要的软、硬件(如机型、 外投、操作系统和数据库管理系统等)的要求。(4) 用户界面需求。人机交互方式、输入输出数据格式等。另外还有可靠性、安全性、保密性、可移植性和可维护性等方面的需求,这些需求一般通过双方交流、调查研究来获取, 并害到共同的理解,2分析与综合导出软件的逻辑模型,分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细分软件功能,划分成各个子功能。这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成分,并用图文结合的形式,建立起新系统的逻辑模型。,3编写文档编写文档的步骤如下.(1) 编写“需求说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。(2) 编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。(3) 编写确认测试计划,作为今后确认和验收的依据。(4) 修改完善项目开发计划。在需求分析阶段对开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。4分析评审 作为需求分析阶段工作的复查手段,应该对功能的正确性、完整性和清晰性,以及其他需求给予评价。,3.1.3 需求分析为什么困难,有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。 1. 客户说不清楚需求 有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求;有些客户心里非常清楚想要什么,但却说不明白;如果客户本身就懂软件开发,能把需求说得清清楚楚,这样的需求分析将会非常轻松、愉快;如果客户全不懂软件,但信任软件开发方,需求也容易得到,分析人员可以引导客户,先阐述常规的需求,再由客户否定不需要的,最终确定客户真正的需求;最不容易做的需求就是用户似懂非懂,却又提出不切实际的需求。,2. 需求自身经常变动,软件的需求经常会发生变化,让我们先接受“需求会变动”这个事实吧,免得在需求变动时惊慌失措。明白“需求会变动”这个道理后,在进行需求分析时就要尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求,以便在进行系统设计时,将软件的核心建筑在稳定的需求上。3. 分析人员或客户理解有误 客户表达的需求,不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致开发人员返工。所以分析人员写好需求说明书后,要请客户方的各个代表验证。如果问题很复杂,双方都不太明白,就有必要请开发人员快速构造软件的原型,双方再次论证需求说明书是否正确,3.2 分析建模,3.2.1应该分析什么 需求分析不像侦探推理那样从蛛丝马迹着手。应该先了解宏观的问题,再了解细节的问题,如图3-2所示。,图3-2 进行需求分析时要了解的内容,上一节讲了需求分析的困难,本节要知难而进。主要围绕两个核心问题开展需求分析:(1)应该分析什么?(2)通过什么方式去分析?,一个软件系统(记为 S)的涉及面可能很广,可以按不同的问题域(记为D)分类,每个问题域对应于一个软件子系统。 S = D1,D2,D3, Dn 问题域Di 由若干个问题(记为P)组成,每个问题对应于子系统中的一个软构件。 Di = P1,P2,P3, Pm 问题Pj有若干个行为(或功能,记为F),每个行为对应于软构件中的接口。 Pj = F1,F2,F3, Fk ,按图3-2结构写成的需求说明书,对于那些只想了解宏观需求的领导和需要了解细节的技术员都合适。在写需求说明书时还应该注意两个问题. (1)最好为每个需求注释“为什么”,这样可让程序员了解需求的本质,以便选用最合适的技术来实现此需求。 (2)需求说明不可有二义性,更不能前后相矛盾。如果有二义性或前后相矛盾,则要重新分析此需求。,3.2.2 通过什么方式去分析,(1)直接与客户交谈。 分析人员一般以个别访谈或小组会议的方式与用户进行初步沟通。访谈有一定的步骤:第一步确定访谈人选;第二步确定访谈的目标;第三步确定要访谈的问题;第四步准备访谈;第五步进行访谈;第六步将访谈的结果整理成文档;第七步对访谈进行评价。(2)观察用户的工作流程可以看到工人是如何实施一些常规的任务。可以选者跟踪一些有代表性的实际流程,例如输入源文档或输出报表等。(3)联合应用程序开发。联合应用程序开发(Joint Aplication Development, JAD)是一种流行的事实发现技术,使得用户作为一个积极的参与者参与开发过程。JAD小组通常有一个项目领导,他需要有很强的人际交往能力和组织能力;有一个或几个用户代表;有一个或几个成员,创建文档、记录结果和决策。,3.2.3 需求分析方法,不同的开发方法,需求分析的方法也有所不同,常见的分析方法有四种:(1)功能分析方法将系统看作若干功能模块的集合,每个功能又可以分 解为若干子功能,子功能还可继续分解。分解的结果 已经是系统的雏形。(2)结构化分析方法是一种以数据、数据的封闭性为基础,从问题空间到 某种表示的映射方法,由数据流图表示。,(3)信息建模法是从数据的角度对现实世界建立模型的。大型信息系统通常十分复杂,很难直接对它进行分析设计,人们经常借助模型来设计分析系统。模型是开发过程中的一个不可缺少的工具。信息系统包括数据处理、事务管理和决策支持。信息系统可以看成是由一系列有序的模型构成的,这些有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型,所谓有序是指这些模型是分别在系统的不同开发阶段、不同开发层次上建立的。建立信息系统常用的工具是ER图。(4)面向对象的分析方法面向对象的分析方法(OOA)的关键是识别问题域内的对象,分析它们之间的关系,并建立起三类模型:对象模型、动态模型和功能模型。,3.3 结构化分析(SA)方法,结构化开发方法(Structured Developing Method)是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD法)及结构化程序设计方法(SP法)构成的。1SA法的基本原理结构化分析(Structured Analysis,简称SA法)方法是面向数据流的需求分析方法,是70 年代末由Yourdon, Constaintine 及DeMarco等人提出和发展起来的。SA法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。它适合于分析大型的数据处理系统,特别是企事业管理系统。,结构化分析方法的基本思想是“分解”和“抽象”。,(1)分解。是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。如图3-3所示。顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。(2)抽象。分解可以分层进行,即先考虑问题本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用本质的属性表示一个子系统的方法就是“抽象”。,图3-3 自顶向下逐层分解的示意图,2SA 法的步骤,建立当前系统的“具体模型” 系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD图描述出来。这样的表达与当前系统完全对应,因此用户容易理解。抽象出当前系统的逻辑模型 分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD图描述的当前系统的“具体模型”。建立目标系统的逻辑模型 分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”(修改后的DFD图)。 为了对目标系统作完整的描述,还需要考虑人机界面和其它一些问题。,3SA法的描述工具 SA法的描述工具有三种:分层的数据流图、数据词典、描述加工逻辑的结构化语言、判定表或判定树。4. SA法分析模型的元素 分析模型必须达到三个主要目标:(1)描述客户的需求;(2)建立创建软件设计的基础;(3)定义在软件完成后可以被确认的一组需求。 分析模型的核心是“数据字典”,它包含了软件使用或生产的所有数据对象描述的中心库。围绕着这个核心有三种图,“实体关系图”(ERD)描述数据对象间的关系,ERD是用来进行数据建模活动的记号,,在ERD中出现的每个数据对象的属性可以使用“数据对象描述”来描述;“数据流图”(DFD)服务于两个目的:(1)指明数据在系统中移动时如何被变换;(2)描述对数据流进行变换的功能(和子功能)。DFD提供了附加的信息,它们可以被用于信息域的分析,并作为功能建模的基础,在DFD中出现的每个功能的描述包含在“加工规约” (PSPEC)中;“状态变迁图”(STD)指明作为外部事件的结果,系统将如何动作,为此,STD表示了系统的各种行为模式(称为“状态”)以及在状态间进行变迁的方式,STD是行为建模的基础。关于软件控制方面的附加信息包含在“控制规约”(CSPEC)中。,3.4数据流图,当信息在软件中移动时,它会被一系列变换所修改。“数据流图”(Data Flow Diagram, DFD)是描述信息流和当数据从输入移动到输出时被应用的变换的图形化技术。数据流图也叫“泡泡图”。数据流图是描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。在需求分析阶段,我们建立的数据流图,是采用结构化分析方法的基本思想获得的分层细化的数据流图。,1. 数据流图的组成,数据流图是由四要素组成的。分别是外部实体(也就是数据的源点或终点)、处理、数据流和数据存储。外部实体是软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称为外部实体。一般只出现在数据流图的顶层图中。如顾客、工人、单位或另一个系统等。加工也称为数据处理,它对数据流进行某些操作或变换。每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应有编号。如一系列程序、单个程序或程序的一部分。,数据流是数据在系统内传播的路径,由一组固定的数据项组成。除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。如:信件、票据等。数据存储指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可理解为写入文件或查询文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。如可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等。,2. 数据流图的符号,数据流图中的符号主要包括基本符号和附加符号。 (1) 基本符号,如图3-4所示。,(2) 附加符号,如图3-5所示。* 表示数据流之间是“与”的关系。+ 表示数据流之间是“或”的关系。表示只能从中选一个(互斥关系)。,图3-5 数据流图附加符号,3. 数据流图的画法,例1.画出图书预定系统的DFD图。现有一个图书预定系统,接收由顾客发来的订单,并对订单进行验证,验证过程是根据图书目录检查订单的正确性,同时根据顾客档案确定是新顾客还是老顾客,是否有信誉。经过验证的正确订单,暂存放在待处理的订单文件中。对订单进行成批处理,根据出版社档案,将订单按照出版社进行分类汇总,并保存订单存根,然后将汇总订单发往各出版社。画图步骤: (1) 确定外部实体(顾客、出版社)及输入、输出数据流(订单、出版社订单)。 (2) 确定分解顶层的加工(验证订单、汇总订单)。 (3) 确定使用的文件(图书目录文件、顾客档案等5个文件)。 (4) 用数据流将各部分连接起来,形成数据封闭。,特别要注意的是:数据流图不是传统的流程图或框图,数据流也不是控制流。数据流图是从数据的角度来描述一个系统,而框图则是从对数据进行加工的工作人员的角度来描述系统。数据流图中的箭头是数据流,而框图中的箭头则是控制流,控制流表达的是程序执行的次序。,图3-6 图书预定系统的DFD图,如果系统规模较大,仅用一个DFD 图难以描述,会使得系统变得复杂,且难以理解。为了降低系统的复杂性,采取“逐层分解”的技术,画分层的DFD图。如图3-7所示。画分层DFD图的一般原则是:“先全局后局部,先整体后细节,先抽象后具体”。通常将这种分层的DFD图,分为顶层、中间层、底层。顶层图说明了系统的边界,即系统的输入和输出数据流,顶层图只有一张。底层图由一些不能再分解的加工组成,这些加工都已足够简单,称为基本加工。在顶层和底层之间的是中间层。中间层的数据流图描述了某个加工的分解,而它的组成部分又要进一步分解。 画各层DFD图时,应“由外向内”。,图3-7 分层数据流图,在画分层数据流图时,首先遇到的问题就是应该如何分解?不能够一下子把一个加工分解成它所有的基本加工,一张图中画出过多的加工是使人难以理解的,但是如果每次只是将一个加工分解成两个或三个加工,又可能需要分解过多的层次,也会影响系统的可理解性。一个加工每次分解成多少个子加工才合适呢?根据经验“最多不要超过7个”。统计结果证明,人们能有效地同时处理7个或7个以下的问题,但当问题多于7个时,处理效果就会下降。当然也不能机械地应用,关键是要使数据流图易于理解。同时还应考虑分解应自然,概念上要合理、清晰;只要不影响数据流图的“易理解性”,可以适当地多分解成几部分,这样分层图的层数就可少些。一般来说,在上层可以分解得快些,而在中、下层则应分解得慢些,因为上层是一些综合性的描述,“易理解性”相对地说不太重要。,下面我们以一个实例来说明画分层DFD图的方法。 画分层DFD图的具体步骤. 先确定系统范围,画出顶层的DFD图。 逐层分解顶层DFD图,获得若干中间层DFD图。 画出底层的DFD图。 例2 假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据;零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。,首先从问题描述中提取数据流图的四种成分。数据流图有四种成分:源点或终点、处理、数据存储和数据流。因此,画出上述定货系统的数据流图可采用以下步骤。源点和终点:源点是仓库管理员;终点是采购员处理:生成报表;处理事务数据流和数据存储:订货报表和事务是两个数据流,库存量和库存量临界值是隐含数据流订货数据存储在数据表中。表3-1总结了上面分析的结果,其中加星号标记的是在问题描述中隐含的成分。,一旦把数据流图的四种成分都分离出来以后,就可以着手画数据流图了。任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。对于上述的定货系统可以画出如图3-10所示的基本系统模型。,图3-10 定货系统的基本系统模型(突出表明了数据的源点和终点),从基本系统模型高层抽象层次开始画数据流图是一个好办法。在这个高层次的数据流图上是否列出了所有给定的数据源点/终点是一目了然的,因此它是很有价值的通信工具。如图3-11所示。,图3-11 定货系统的功能级数据流图,图3-12 把处理事务的功能进一步分解后的数据流图,4. 分层DFD 图的改进,1)画分层DFD 图的基本原则数据守恒与数据封闭原则所谓数据守恒是指加工的输入输出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。或者说一个加工至少有一个输入数据流,一个输出数据流。加工分解的原则自然性:概念上合理、清晰;均匀性:将一个问题分解成大小均匀的几个部分;分解度:一般每一个加工每次分解最多不要超过个子加工,应分解到基本加工为止。子图与父图的“平衡”父图中某个加工的输入输出数据流应该同相应的子图的输入输出相同(相对应),分层数据流图的这种特点称为子图与父图“平衡”。,分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的总貌,底层画出了系统所有的细部,而中间层则给出了从抽象到具体的逐步过渡。,例1 考察下图中子父图的平衡,图3-13 父图与子图的平衡,显然,图3-13(a)中子图与父图不平衡。子图是父图中加工2的分解,加工2有输入数据流R和M,输出数据流T,而子图则只有一个输入数据流N,却有两个输出数据流T与S。图3-13中,子图是父图中加工4的分解,虽然表面上加工4只有一个输入数据流“订货单”,而子图却有三个输入数据流,但是如果“订货单”是由“客户”、“帐号”和“数量”三部分组成,即有如下数据条目:订货单 =客户+帐号+数量,则子、父图平衡。,合理使用文件当文件作为某些加工之间的交界面时,文件必须画出来,一旦文件作为数据流图中的一个独立成份画出来了,那么它同其它成份之间的联系也应同时表达出来。理解一个问题要经过从不正确到正确,从不确切到确切的过程,需求分析的过程总是要不断反复的,一次就成功的可能性是很小的,对复杂的系统尤其如此,因此,系统分析员应随时准备对数据流图进行修改和完善,与用户取得共识,获得无二义性的需求,才能获得更正确清晰的需求说明,使得设计、编程等阶段能够顺利进行,这样做是必须和值得的。,2)分层DFD图的改进,DFD图必须经过反复修改,才能获得最终的目标系统的逻辑(目标系统的DFD图)改进的原则与画分层DFD图的基本原则是一致的,可从以下方面考虑DFD图的改进。检查数据流的正确性检查数据守恒,子图、父图的平衡,以及文件使用是否合理。特别注意输入/出文件的数据流。改进DFD图的易理解性主要包括简化加工之间的联系(加工间的数据流越少,独立性越强,易理解性越好),改进分解的均匀性,适当命名(各成分名称无二义性,准确、具体)。,3.5 数据词典,分层数据流图只是表达了系统的“分解”,为了完整地描述这个系统,还需借助“数据词典”(data dictionary)和“加工逻辑”对图中的每个数据和加工给出解释。数据字典是为了描述在结构化分析过程中定义的对象的内容而使用的一种半形式化的工具。是分析阶段的交流工具;包含控制信息;数据库设计的基础。数据字典是所有与系统相关的数据元素的有组织的列表,并且包含了对这些数据元素的精确、严格的定义,从而使得用户和系统分析员双方对输入、输出、存储的成分甚至中间计算结果有共同的理解。简而言之,数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。对数据流图中包含的所有元素的定义的集合构成了数据词典。不同工具中数据字典的形式不同,它有四类条目:数据流、数据项、文件及基本加工。 ,虽然可以使用自然语言描述由数据元素组成数据的关系,但是为了清晰简洁起见,建议采用下列符号。 意思是等价于(或定义为); 意思是和(即,连接两个分量); 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“”号分开供选择的分量,如:A|B ; 意思是重复(即,重复花括弧内的分量)如:1A5 ;() 意思是可选(即,圆括弧里的分量可有可无)如:(A) 。 常常使用上限和下限进一步注释表示重复的花括弧。一种注释方法是在开括弧的左边用上角标和下角标分别表明重复的上限和下限;另一种注释方法是在开括弧左侧标明重复的下限,在闭括弧的右侧标明重复的上限。例如和1A5含义相同。,1. 数据流条目给出了DFD图中数据流的定义,通常列出该数据流的各组成数据项。例如,数据流“乘客名单”由若干“乘客姓名”、“单位名”和“等级”组成,则词典中的“乘客名单”条目是: 乘客名单乘客姓名单位名等级 报名单姓名单位名年龄性别课程名2. 文件条目给出某个文件的定义,通常是列出文件记录的组成数据流(字段)。例如,某销售系统的订单文件.订单文件订单编号顾客名称产品名称订货数量交货日期,4. 加工条目加工条目就是“加工说明”。一般应单独列出。例1“发票”数据流的数据字典,3. 数据项条目给出某个数据单项的定义,通常是该数据项的值类型、允许值等。例如: 账号=0000099999 存款期=1|3|5 (单位.年),例2“文件名”数据流的数据字典,例3“书费合计”数据项的数据字典,3.6 加工逻辑说明,对数据流图中每一个基本加工都必须有一个加工小说明,给出这个加工的精确描述。小说明中应精确地描述加工的激发条件、加工逻辑、优先级、执行频率和出错处理等。加工逻辑是其中最基本的部分,是指用户对这个加工的逻辑要求。对基本加工说明有三种描述方式.:结构化语言、判定表、判定树。,1. 结构化语言,结构化语言是介于自然语言(英语或汉语)和形式语言之间的一种半形式语言,它是自然语言的一个受限制的子集。自然语言容易理解,但容易产生二义性,而形式化语言精确、无二义性,却难理解,不易掌握。结构化语言则综合二者的优点,在自然语言的基础上加上一些约束;一般分为两层结构:外层语法较具体,为控制结构(顺序、选择、循环),内层较灵活,表达“做什么”。特点:简单、易学、少二义性,但不好处理组合条件。 例如:外层可为以下结构. 顺序结构 选择结构 IFTHEN-ELSE; CASE-OF-ENDCASE; 循环结构 WHILE-DO; REPEAT-UNTIL,例1“确定能否供货”的加工逻辑.根据库存记录。IF 订单项目的数量 该项目库存量的临界值 THEN 可供货处理 ELSE 此订单缺货,登录,待进货后再处理ENDIF 由上例可以看出结构化语言具有如下特点:简单,易学,少二义性。不好处理组合条件。2. 判定表 判定表常用来描述一些不易用语言表达清楚或需要很大篇幅才能用语言表达清楚的加工。判定表是一种二维的表格,常用于较复杂的组合条件(与结构化语言比较),通常由四部分组成。,条件框条件定义。操作框操作的定义。条件条目各条件的取值及组合。操作条目在各条件组合下所组合的操作。,图3-14 判定表的组成,判定表的特点:可处理较复杂的组合条件,但不易理解,不易输入计算机。,条件框,操作框,条件条目,操作条目,判定表应用举例:,例3一个图书销售系统,其中一加工为“优先处理”,条件是:顾客的营业额大于1000元,同时必须信誉好,或者虽然信誉不好,但是20年以上的老主顾。 分析:共有3个判定条件,有8种可能的组合情况(图a)。对图a 化简后,得到图b。,图 a,Y-满足条件 N-不满足条件 X-选中判定的结论,化简后,图 b,3. 判定树,特点:描述一般组合条件较清晰。不易输入计算机。 例4以图书销售系统的处理为例,其判定树如图2.17 所示,例5. 计算个体与国营用户的不同折扣量。,3.7 系统行为建模,在对系统进行需求分析时,不仅要建立系统的逻辑模型,还要建立出系统的行为模型,也就是对系统进行动态分析。常用的动态需求分析方法有状态迁移图、时序图、Petri网等。本节将介绍状态迁移图和Petri网的基本概念。3.7.1 状态图状态迁移图,简称状态图,描绘系统的状态及引起系统状态转换的事件,还指明了作为特定事件的结果系统将作哪些动作。状态:是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式,它规定了系统对事件的响应方式。在状态迁移图中,用圆角矩形表示可得到的系统状态。,初始状态:简称初态,系统启动时进入的状态。在状态迁移图中,用空心圆圈“ ”表示系统的初始状态。最终状态:简称终态,系统运行结束时到达的状态。在状态迁移图中,用圆内加一个黑点“”表示系统的状态。状态迁移:一个状态向另一个状态转换。用箭头表示从一种状态向另一种状态的迁移。事件:是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转换到另一个状态的外界事件的抽象。在箭头上写上导致迁移的信号或事件的名字。,例1. 复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。请用状态迁移图描绘复印机的行为。,3.7.2 Petri网,Petri网的思想是由C.A.Petri提出来的。在硬件和软件系统的开发中,它适用于描述与分析相互独立、协同操作的处理系统。在软件需求分析与设计阶段都可以使用Petri网。 1基本概念 Petri网简称PNG(petri net graph),是一种有向图,Petri 网由四种元素构成,结点与迁移的输入、输出。它有两种结点: 位置(place)。符号为圆圈“”,可用来表示系统的状态,也可解释为使事件工作的条件,或使之工作的要求。如图3-18,一组位置P为P1, P2, P3, P4, P5。 迁移(transition)。符号为短直线“”或“|”,可用来表示系统中的事件。如图3-18中,一组迁移T为t1, t2, t3, t4。,图中的有向边表示对迁移的输入,或由迁移的输出。符号“|” 表示事件发生的前提,即对迁移(事件)的输入。符号“|” 表示事件的结果,即由迁移(事件)的输出。通常把迁移的启动称为激发,它是迁移的输出,只有当作为输入的所有位置的条件都满足时才能引起激发。,图3-18 PNG,图3-19 加了标记的PNG,如图3-18,给出了一个PNG 的例子,它表示了一个处于静态状态的系统。只给出系统中各个状态通过迁移而表示出来的相互关系。通过Petri 网的执行才能完成系统及其行为的完整模型。,为了描述系统的一种动态的行为,引入了标记(token,也称为令牌)的概念。图3-19表示加了标记的Petri网。在图3-19中,表示位置P3与P5的圆圈中间点了一个黑点,称之为标记。标记在位置上的出现表明了处理要求的到来。,当激发产生的结果有几个时,将随机地选择一个结果输出,并把作为结果的位置状态加上标记。标记在PNG中的游动,就出现了“状态的迁移”。在图3-19中,P3与P5上都出现了标记,标明这两个状态都有了处理要求,亦即迁移(事件)t3 激发的两个前提都已具备,迁移t3激发。作为执行的结果,位置P3与P5上的标记移去,标记迁移到了位置P4上,如图3-20所示。,图3-20 标记的迁移,2建立Petri网的方法,(1)确定系统的独立成分,主要指确定位置;(2)确定这些成分动作的前提和结果(迁移);(3)根据条件,确定成分之间的相互关系,建立Petri 网;(4)通过建立可达树,对Petri网进行分析,确定系统的特性;(5)根据需要重复上述(1)(4)步,修改模型,直到满意为止。 软件需求分析的工作,是软件开发人员与用户密切配合,充分交换意见,达到对需求分析一致的意见。作为开发人员一方,进行需求工作的主要是是系统分析员和系统工程师等,他们处于用户和高级程序员之间,负责沟通用户和开发人员的认识和见解,起着桥梁作用,是需求分析的主要角色。,3.8 原型化分析方法,传统软件开发方法中往往需要等待漫长的开发时间才能得到目标软件的最初版本。由于软件研制的各个阶段各种错误和偏差积累,用户常常会对目标软件提出许多修改意见,甚至全盘否定,导致开发失败,这无疑会造成人力、物力和财力上巨大浪费。为了防止这种情况的发生,降低开发风险,在需求分析阶段常常采用原型化方法。快速原型开发模型通过快速构建起一个可运行的原型系统,让用户试用原型并收集用户反馈意见,获取用户的真实需求的方法。快速原型模型有两种,一种就是在与用户交流之前就已经建立起来的原型系统,将这个系统拿给用户看,让用户说出自己所要的系统与这个系统功能上的主要区别。这种快速原型叫做抛弃型。还有一种叫做进化型,这种快速原型是先与用户交流,获得一定的用户的需求,然后快速地搭建起一个原型系统,交给用户看,用户从这个系统出发,找出这个系统与他心目中的系统的区别,开发人员从而获得更多的需求信息,进一步修改系统,以满足用户的需求。,3.8.1 原型化方法的基本思想,在软件开发的早期,快速建立目标软件系统原型,让用户对原型进行评估同时提出修改意见。当原型几经改进最终确认后,它将由软件设计和编码阶段进化成软件产品;或者设计和编码人员遵循原型所确立的外部特征实现软件产品。原型范型可以是封闭结束的或开放结束的,封闭结束的方法经常称为丢弃型原型方法,使用该方法,原型仅仅粗略展示需求,然后原型被丢弃,再使用不同的范型来开发软件。开放结束的方法称为演化型原型方法,使用原型作为继续进入设计和构造的分析活动的第一部分,软件的原型是最终系统的第一次演化。在选择封闭结束的或开放结束的方法之前,有必要确定是否将要建造的系统是否适合于原型方法。,3.8.2 原型方法和工具,为了使软件原型方法有效,必须快速地开发原型以使得客户可以评估结果和建议做修改,为了导出快速原型,三个基本的方法和工具类是可用的:第四代技术、可复用软件构件、形式化规约和原型环境。1)第四代技术第四代技术(4GT)包括广泛的数据库查询和报表语言、程序和应用软件生成器以及其他非常高级的非过程语言。因为4GT使得软件工程师能够快速地生成可执行代码,因此,它们是理想的快速原型工具。,2)快速原型方法是使用一组现存的软件构件来装配,而不是构造原型。一个软件构件可以是数据结构(或数据库)或软件体系结构构件(即程序)或过程构件(即模块),在每种情形中,必须设计软件构件以使得它可以在不知道其内部工作细节的条件下被复用。应该注意,现存的软件产品可以被用作“新的、改进的”竞争性产品的原型,在某种意义下,这也是一种软件原型复用的形式。3)形式化规约和原型环境。在过去几十年里,已经开发了一系列形式化规约语言和工具,它们是自然语言规约技术的替代品。今天,这些形式化语言的开发者正在开发交互式的环境,该环境(1)使得分析员能够交互地创建基于语言的系统或软件规约;(2)激活自动工具将基于语言的规约翻译为可执行代码;(3)使得客户能够使用原型可执行代码去精化形式化需求。,3.8.3采用原型化方法的步骤,确定采用原型化方法之后,分析人员要遵循以下步骤.(1) 快速分析 快速确定软件系统的基本要求,确定原型所要体现的特性,主要包括:总体结构、功能、性能、用户界面等内容。(2) 构造原型 根据基本规格说明,忽略细节,只考虑主要特性,快速构造一个可运行的系统。有三类原型:用户界面原型、功能原型、性能原型。(3) 运行和评价原型用户试用原型并与开发者之间频繁交流,发现问题,目的是验证原型的正确性。(4) 修正与改进 对原型进行修改,增删。,3.9需求分析文档,需求说明书是需求分析阶段最重要的技术文档之一。它提供了用户与开发人员对开发软件的共同理解,其作用相当于用户与开发单位之间的技术合同,是今后各阶段设计工作的基础,也是本阶段评审和测试阶段确认与验收的依据。需求说明书的主要内容如下。3.9.1软件需求说明书的编写提示 1引言1.1编写目的说明编写这份软件需求说明书的目的,指出预期的读者。1.2背景 说明:a待开发的软件系统的名称;b本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;,1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。1.4参考资料列出用得着的参考资料,如:a本项目的经核准的计划任务书或合同、上级机关的批文;b属于本项目的其他已发表的文件;c本文件中各处引用的文件、资料、包括所要用到的软件开发标准。 列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。,2任务概述 2.1目标叙述该项软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。解释被开发软件与其他有关软件之间的关系。如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。2.2用户的特点列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使甩频度。这些是软件设计工作的重要约束。2.3假定和约束列出进行本软件开发工作的假定和约束,例如经费限制、开发期限等。,3需求规定,3.1对功能的规定用列表的方式(例如IPO表即输入、处理、输出表的形式),逐项定量和定性地叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出,说明软件应支持的终端数和应支持的并行操作的用户数。3.2对性能的规定3.2.1精度 说明对该软件的输入、输出数据精度的要求,可能包括传输过程中的精度。3.2.2时间特性要求说明对于该软件的时间特性要求,如对:a响应时间;b更新处理时间;,c数据的转换和传送时间;d.解题时间; 等的要求。3.2.3灵活性说明对该软件的灵活性的要求,即当需求发生某些变化时,该软件对这些变化的适应能力,如:a. 操作方式上的变化;b. 运行环境的变化;c. 同其他软件的接口的变化;d. 精度和有效时限的变化;e. 计划的变化或改进。 对于为了提供这些灵活性而进行的专门设计的部分应该加以标明。,3.3输入输出要求解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。3.4数据管理能力要求说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。 3.5故障处理要求列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。3.6其他专门要求如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。,4运行环境规定,4.1设备列出运行该软件所需要的硬设备。说明其中的新型设备及其专门功能,包括: a处理器型号及内存容量; b外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量; c输入及输出设备的型号和数量,联机或脱机; d数据通信设备的型号和数量; e功能键及其他专用硬件。4.2支持软件 列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。4.3 接口说明该软件同其他软件之间的接口、数据通信协议等。4.4控制说明控制该软件的运行的方法和控制信号,并说明这些控制信号的来源。,3.9.2用户手册的编写提示,1引言 1.1编写目的说明编写这份用户手册的目的,指出预期的读者。1.2背景说明: a.这份用户手册所描述的软件系统的名称; b.该软件项目的任务提出者、开发者、用户(或首批用户)及安装此软件的计算中心。1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。1.4参考资料 列出有用的参考资料,如:,a.项目的经核准的计划任务书或合同、上级机关的批文; b.属于本项目的其他已发表文件; c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够取得这些文件资料的来源。2用途2.1功能结合本软件的开发目的逐项地说明本软件所具有各项功能以及它们的极限范围。2.2性能2.2.1精度 逐项说明对各项输入数据的精度要求和本软件输出数据达到的精度,包括传输中的精度要求。,2.2.2时间特性 定量地说明本软件的时间特性,如响应时间、更新处理时间、数据传输、转换时间、计算时间等。2.2.3灵活性 说明本软件所具有的灵活性,即当用户需求(如对操作方式、运行环境、结果精度、时间特性等的要求)有某些变化时,本软件的适应能力。2.3 安全保密说明本软件在安全、保密方面的设计考虑和实际达到的能力。3运行环境3.1 硬设备列出为运行本软件所要求的硬设备的最小配置,如:a. 处理机的型号、内存容量;b. 所要求的外存储器、媒体、记录格式、设备的型号和台数、联机脱机;c. I/O设备(联机脱机);d. 数据传输设备和转换设备的型号、台数。,3.2支持软件说明为运行本软件所需要的支持软件,如: a操作系统的名称、版本号; b程序语言的编译汇编系统的名称和版本号; c数据库管理系统的名称和版本号; d其他支持软件。3.3数据结构 列出为支持本软件的运行所需要的数据库或数据文卷。4使用过程 在本章,首先用图表的形式说明软件的功能同系统的输入源机构、输出接收机构之间的关系。,4. 1安装与初始化,一步一步地说明为使用本软件而需进行的安装与初始化过程,包括程序的存储形式、安装与初始化过程中的全部操作命令、系统对这些命令的反应与答复。表征安装工作完成的测试实例等。如果有的话,还应说明安装

温馨提示

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

最新文档

评论

0/150

提交评论