第2章-可行性研究和需求分析_第1页
第2章-可行性研究和需求分析_第2页
第2章-可行性研究和需求分析_第3页
第2章-可行性研究和需求分析_第4页
第2章-可行性研究和需求分析_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

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

文档简介

软件工程,2011.08,2.1软件的可行性研究2.2需求分析2.3系统流程图2.4数据流图2.5数据字典2.6实体-联系图(E-R图)2.7需求分析其他图形工具2.8验证软件需求,第2章可行性研究和需求分析,2.1软件的可行性研究一、问题定义的内容,首先明确:问题的背景、开发系统的现状;开发的理由和条件、开发系统的问题要求;总体要求、问题的性质、类型范围;要实现的目标、功能规模、实现目标的方案开发的条件、环境要求等等。然后写出:问题定义报告(或称系统定义报告),以供可行性分析阶段使用。,二、问题定义的步骤,在问题定义阶段,系统分析员要深入现场,阅读用户写的书面报告、听取用户对开发系统的要求、调查开发系统的背景理由。还要与用户负责人反复讨论,以澄清模糊的地方、改正不正确的地方。最后写出双方都满意的问题定义报告,并确定双方是否可继续合作的意向。,三、可行性研究的任务,可行性研究的任务是用最小的代价、在尽可能短的时间内确定问题是否能够解决。在澄清了问题定义之后,分析员首先应该导出系统的逻辑模型,然后从系统逻辑模型出发,探索出若干种可供选择的主要解法(即系统实现方案)。最后仔细研究每种解法的可行性。,研究可行性应该从下述几方面进行:(1)技术可行性:指使用现有的技术能否完成这个项目。(2)经济可行性:指通过对软件开发项目进行成本/效益估计,以确定软件系统可能带来的经济效益能否超过研制和维护此系统所需的费用。(3)操作可行性:系统的操作方式在这个用户组织内行得通吗?(4)社会因素的考虑:软件开发是否会侵犯他人、集体或国家的利益,是否违反国家的法律并可能由此而承担法律责任。,四、可行性研究的期限与成本,期限:可行性研究需要的时间长短取决于工程的规模。成本:一般说来,可行性研究的成本只是预期的工程总成本的5%10%。,五、可行性研究过程,(1)复查系统规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)重新定义问题(5)导出和评价供选择的方案(6)推荐方案和行动方针(7)草拟开发计划(8)书写文档、提交审查,人人痛恨不写文档的人,但是人人都不爱写文档,项目需求分析是一个项目的开端,也是项目建设的基石。,软件项目中40%60%的问题都是在需求分析阶段埋下的“祸根”,2.2需求分析2.2.1需求分析的重要性,需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题,而不是“怎样实现”。【分析结果】:系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。【掌握内容】:对一个软件系统来说,数据是稳定的,事务处理可能是变化的。,需求分析的原则:,(1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型。(2)必须定义软件应完成的功能域,这条准则要求建立功能模型。(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。(4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。,信息流、信息内容和信息结构,事件的状态,可用以后的状态转换图建立行为模型,分解示意图:,系统分析员在软件开发中的作用,在系统分析过程中,系统分析员除了起用户和设计人员的接口作用以外,还应充分代表用户的利益,在整个开发过程中起着关键作用。,2.2.2需求分析的任务一、确定对系统的综合要求,功能需求性能需求可靠性和可用性需求出错处理接口需求约束与环境需求逆向需求将来可能提出的要求,用户和人的因素需求文档需求数据需求资源使用需求成本消耗与进度需求安全保密需求质量保证,1、功能需求,系统做什么?系统何时做什么?系统何时及如何修改或升级?,2、性能需求,软件开发的技术性指标,例如:存储容量限制执行速度、相应时间吞吐量,3、可靠性和可用性需求可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。4、出错处理需求有选择地提出这类出错处理需求。我们的目的是开发出正确的系统,而不是用无休止的出错处理代码掩盖自己的错误。,5、接口需求接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。例如:,有来自其它系统的输入吗?到自其它系统的输出吗?对数据格式有规定吗?对数据存储介质有规定吗?,6、约束与环境需求描述在设计或实现应用系统时应遵守的限制条件,是用户或环境强加给项目的限制条件。常见的约束有:精度;开发工具和语言约束;设计约束;数据库约束;应该使用的标准;应该使用的硬件平台及现场环境等。7、逆向需求逆向需求说明软件系统不应该做什么。理论上有无限多个逆向需求,我们应该仅选取能澄清真实需求,且可消除可能发生的误解的那些逆向需求。,8、将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,但是分析将来很可能会提出来的要求。目的:在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。,9、用户或人的因素,用户类型?各种用户熟练程度?需受何种训练?用户理解、使用系统的难度?用户错误操作系统的可能性?,10、文档需求,需哪些文档?文档针对哪些读者?,11、数据需求,输入、输出数据的格式?接收、发送数据的频率?数据的准确性和精度?数据流量?数据需保持的时间?,12、资源需求,软件运行时所需的数据、软件、内存空间等资源。软件开发、维护所需的人力、支撑软件、开发设备等。,13、软件成本消耗与开发进度需求,开发有规定的时间表吗?软硬件投资有无限制?,14、安全保密要求,需对访问系统或系统信息加以控制吗?如何隔离用户之间的数据?用户程序如何与其它程序和操作系统隔离?系统备份要求?,15、质量保证,系统的可靠性要求?系统必须监测和隔离错误吗?规定系统平均出错时间?出错后,重启系统允许的时间?系统变化如何反映到设计中?维护是否包括对系统的改进?系统的可移植性?,二、分析系统的数据要求,是需求分析的一个重要任务。主要体现在:如何定义数据?数据的作用?如何用?如何表达数据间的关系?如何存储?为减少数据冗余,如何简化数据,并进行规范化?分析系统的数据要求通常采用建立数据模型的方法(见E-R关系图)。,三、导出系统的逻辑模型,通过对系统的综合要求和数据要求分析的结果可以导出系统的详细的逻辑模型,通常用以下内容描述这个逻辑模型:数据流图实体-联系图状态转换图逻辑模型组成数据字典主要的处理算法,四、修正系统开发计划,根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。,需求分析技巧:,需求的收集贯穿于整个项目过程中;解释技术,使甲方积极参与;使用用户的术语,用共同的语言进行交流;取得管理层的支持“一把手工程”;已有的文档是需求的很好来源复用已有的资源;记住今天的用户就是明天的分析者和以后的开发者。,首先,应该努力的去熟悉用户的行业,学习用户使用的术语,标准,以便能够准确的理解用户。其次避免用IT行业的术语,而采用浅显易懂的口头语言来解释IT行业中高深莫测的术语,以便用户能够很好的理解。例如:向用户解释10M带宽网络和100M带宽网络有什么区别:10M带宽的网络就像是双车道的柏油路,容易堵车,而100M带宽的网络却是二十车道的高速公路,堵车的可能性非常小。,2.2.3需求分析的步骤一、访谈,访谈是最早开始使用的获取用户需求的技术,也是迄今为止仍然广泛使用的需求分析技术。访谈有两种基本形式:正式访谈时:系统分析员将提出一些事先准备好的具体问题。非正式访谈:分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。,注意:访谈时不要使用行话,就是计算机术语。需求分析最重要的是和用户沟通。另外还要引导用户如何讲出与系统有关的业务。,不要陷到“客户总是对的”的陷阱中去,二、面向数据流自顶向下求精,【目的】:通过可行性研究中目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。【实施方法】:在实际业务中,数据决定了需要的处理和算法,是需求分析的出发点,所以重点围绕数据流中数据元素的来源、用途、去向获取需求,并进行详细细化分解。,三、快速建立软件原型,快速原型就是快速建立演示目标系统主要功能的可运行的程序。构建原型的要点:它应该实现用户看得见的功能(例如,屏幕显示或打印报表),省略目标系统的“隐含”功能(例如,修改文件)。,在实际开发软件产品时,原型的“修改试用反馈”过程可能重复多遍,才能得到符合实际系统的需求,如果修改耗时过多,势必延误软件开发时间。快速构建和修改原型的方法和工具有3种:(1)第四代技术(2)可重用的软件构件(3)形式化规格说明和原型环境,2.2.4分析建模与规格说明一、分析建模,为了更好地理解复杂事务,人们常常采用建立事务模型的方法。所谓模型,就是为了理解事务而对事务做出的一种抽象,是对事务的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。其目标如下:描述用户需要建立创建软件设计的基础定义软件完成后可被确认的一组需求,分析模型的结构,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对象,描述,分析模型的元素,数据字典(DD):模型核心(中心库)E-R图(ERD):数据流图(DFD)指明数据在系统中移动时如何被变换;描述对数据流进行变换的功能;DFD中每个功能的描述包含在加工规约(事务处理说明)。状态变迁图(STD)指明作为外部事件的结果,系统将如何动作。,数据流图,DataFlowDiagram,简称DFD图。数据流图表达数据和处理过程的关系。,二、软件需求规格说明,通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。自然语言的规格说明具有容易书写、容易理解的优点,为大多数人所欢迎和采用。见软件工程文档模版三、需求规格说明书,2.3系统流程图,【用途】:描绘物理系统的传统工具;【基本思想】:用图形符号以黑盒子形式描绘系统里面的每一个部件(程序、文件、数据库、表格、人工过程等)。注:尽管系统流程图使用的某些符号和程序流程图所用的符号相同,但:系统流程图表达的是信息在系统中各个部件之间流动的情况;程序流程图表达的是对信息进行加工处理的控制过程。,2.3.1符号,当以概括的方式抽象地描绘一个实际系统时,使用下图中列出的基本符号。当需要更具体地描绘一个物理系统时需要使用表2.1(P25)中列出的系统符号(经常使用)。利用这些符号可以把抽象处理具体化为特定的程序或手工操作等。,基本符号,表2.1系统符号,2.3.2例子,库存清单系统的系统流程图,说明:图中每个符号用黑盒子形式定义了组成系统的一个部件,然而并没有指明每个部件的具体工作过程;图中的箭头确定了信息通过系统的逻辑路径。系统流程图的习惯画法是使信息在图中从顶向下或从左向右流动。,例:图书馆借书系统流程图,2.4数据流图,数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。注意:设计数据流图时只需考虑系统必须完成的基本逻辑功能,即数据流图的基本要点是描绘“做什么”,而不考虑“怎样做”。,数据流图,数据流图示例,数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。,描述银行取款过程的数据流图,2.4.1符号,数据流图中的四种主要图形元素,数据加工(数据变换),数据源点或终点(外部实体),数据流,数据存储文件,或,或,或,内容提示:,数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。,2.4.2例子,【业务分析举例】假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。【提取数据举例】对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。【分析事务举例】零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。,例:数据流图,图2-4图书管理系统顶层图,定货系统的基本系统模型(抽象描述),定货系统的功能级数据流图(细化),编号规则:如1、2或P1,P2或1.1、1.2或P1.1、P2.1等等,把处理事务的功能进一步分解后的数据流图,2.4.3命名的可理解性,数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。【可理解性分析】与实际业务结合分别对数据流(数据存储)、处理过程、数据流的源点与终点进行命名。例如:暂存订单、库存清单、订货信息、采购员、库存管理员、供应商、产生到货通知单、产生报表等等。,2.4.4用途,【用途】:信息交流的工具,作为分析和设计的工具。【主要体现】:分析员把他对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认。【易理解性】:仅使用4种基本符号,不包含任何有关物理实现的细节,使用户都可以理解和评价它。,数据加工(数据变换)数据源点或终点(外部实体)数据流数据存储文件,数据流图应该分层,分层越细、功能越详细。(见后案例或P29实例介绍)数据流图对更详细的设计步骤也有帮助,本书第3章将讲述从数据流图出发映射出软件结构的方法面向数据流的设计方法。,图2.8这种划分自动化边界的方法暗示以批量方式更新库存清单、一次定货,图2.9另一种划分自动化边界的方法建议以联机方式更新库存清单、批量定货,案例:商店业务处理系统,第一层数据流图,加细每一个加工框销售细化,采购细化,2.5数据字典,【定义】数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。对应以后的讲解的实体或数据结构定义表。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。,哪些是动态数据?哪些是静态数据?,信息分析导出逻辑模型(数据字典),调查系统的输入、输出、保存信息明确信息的结构及各信息之间的关系调查各信息的信息量调查各种报表和文件的格式建立粗略的数据词典,定义系统中使用的数据,2.5.1数据字典的内容,数据字典由下列4类元素的定义组成:(1)数据流(2)数据流分量(即数据元素)(3)数据存储(4)处理但是,对数据处理的定义用其他工具(如IPO图或PDL)描述更方便,因此本书中数据字典将主要由对数据的定义组成,这样做可以使数据字典的内容更单纯,形式更统一。,数据元素词条描述:,在数据字典中记录数据元素的下列信息:数据元素名:名字,别名,描述等;数据元素特征:数据类型,长度,结构等;使用特点:取值范围及默认值,使用频率,使用方式输入、输出、本地,条件值等;控制信息:来源,去向,用户,使用它的程序,改变权,使用权等;分组信息:父结构,从属结构,物理位置记录、文件和数据库(即归哪个数据结构)等。,数据元素的别名就是该元素的其他等价的名字,出现别名主要有下述3个原因:(1)对于同样的数据,不同的用户使用了不同的名字;(2)一个分析员在不同时期对同一个数据使用了不同的名字;(3)两个分析员分别分析同一个数据流时,使用了不同的名字。虽然应该尽量减少出现别名,但是不能完全消除别名。,2.5.2定义数据的方法,【定义】:数据字典中的定义就是对数据自顶向下的分解。【目的】:当分解到不需要进一步定义,每个和工程有关的人也都清楚其含义的元素时,分解过程就完成了。由数据元素组成数据的方式只有下述四种基本类型(见P32表2-2):(1)顺序即以确定次序连接两个或多个分量;(2)选择即从两个或多个可能的元素中选取一个;(3)重复即把指定的分量重复零次或多次。(4)可选,2.5.3数据字典的用途,用途1:作为分析阶段的重要工具。用途2:有助于改进分析员和用户之间的通信。用途3:有助于改进在不同的开发人员或不同的开发小组之间的通信。用途4:有助于设计、实现、维护等规范统一,能避免许多麻烦的接口问题。用途5:通过数据元素的来源、去向、用途等控制信息,使程序员了解业务的构成。用途6:数据字典是开发数据库的第一步,是定义数据结构的首要来源。,2.5.4数据字典的实现,缺点:在开发大型软件系统的过程中,数据字典的规模和复杂程度迅速增加,人工维护数据字典几乎是不可能的,一般用于中小型软件系统。实现过程:采用数据字典卡片形式书写,每张卡片上保存描述一个数据的信息。每张卡片上主要应该包含下述这样一些信息:名字、别名、描述、定义、位置。注:软件设计现实中主要用数据结构定义表来实现。,数据字典定义举例:,例:学生学籍管理子系统的数据字典。数据项,以“学号”为例:数据项:学号含义说明:唯一标识每个学生别名:学生编号类型:字符型长度:8取值范围:00000000至99999999取值含义:前两位标别该学生所在年级,后六位按顺序编号与其他数据项的逻辑关系:,数据结构定义举例:,数据结构以“学生”为例“学生”是该系统中的一个核心数据结构:数据结构:学生含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组成:学号,姓名,性别,年龄,所在系,年级,数据流定义举例:,数据流“体检结果”可如下描述:数据流:体检结果说明:学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成:平均流量:高峰期流量:,数据存储定义举例:,数据存储“学生登记表”可如下描述:数据存储:学生登记表说明:记录学生的基本情况流入数据流:流出数据流:组成:数据量:每年3000张存取方式:随机存取,2.6实体-联系图(E-R图),为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型(也称为信息模型)。这是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。该模型只是描述了现实业务系统的数据关系,它是需求分析过程中系统分析员与用户非常有效的业务交互工具。数据模型主要由3种相互关联的信息组成:数据对象(实体)、属性、联系(关系)。,E-R(Entity-Relationship),一、数据对象(实体),【定义】:是对软件必须理解的复合信息的抽象。所谓复合信息是指具有一系列、多个值的不同性质或属性的事物。【举例】:数据对象可以是外部实体(例如,产生或使用信息的任何事物)、事物(例如,报表)、行为(例如,打电话)、事件(例如,响警报)、角色(例如,教师、学生)、单位(例如,会计科)、地点(例如,仓库)或结构(例如,文件)等。总之,每个实体都有一组特征或性质,称为实体的属性,一个实体可以有多个属性。,实体与实体之间是有关联的,例如,教师“教”课程,学生“学”课程,教或学的关系表示教师和课程或学生和课程之间的一种特定的连接。数据对象只封装了数据而没有对施加于数据上的操作的引用,这是数据对象与面向对象范型(参见本书第5章)中的“类”或“对象”的显著区别。,二、属性,属性定义了数据对象的性质,即属性可能的取值集合称为属性的值域。每个属性可用唯一的“标识符”来定义。实体中的关键字称为“键”,它是实体型的一个重要完整性约束,规定不同的实体不能取相同的键值。属性的需求定义来自实际业务活动。,三、联系(关系),数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型:(1)一对一联系(11)例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。(2)一对多联系(1N)例如,某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教(见下图)。,例如:学生具有学号、姓名、性别、年龄、专业(其它略)等属性;课程具有课程号、课程名、学分、学时数等属性;教师具有职工号、姓名、年龄、职称等属性。此外,学生通过学号、分数与课程和教师发生联系。如此可得教学实体模型,E-R图见下图。,某校教学管理E-R图,(3)多对多联系(MN)例如,上图中表示学生与课程间的联系(“学”)是多对多的,即一个学生可以学多门课程,而每门课程可以有多个学生来学。联系也可能有属性。例如,学生“学”某门课程所取得的成绩,既不是学生的属性也不是课程的属性。,四、实体-联系图的符号,用E-R图描绘的数据模型称为E-R模型。E-R图中包含了实体(即数据对象)、关系和属性3种基本成分,符号如下所示:,实体,联系或关系,属性,连接线,或,例:学生管理系统的基本E-R图,例:公司车队信息系统的ER模型,2.7需求分析其他图形工具一、层次方框图,层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。如:学校行政组织结构图。例如,描绘一家计算机公司全部产品的数据结构可以用下图中的层次方框图表示。,二、Warnier图,法国计算机科学家Warnier提出了表示信息层次结构的另外一种图形工具。和层次方框图类似,Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。,三、IPO图,IPO图是输入、处理、输出图的简称,它是美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。,改进的IPO图,建议使用一种改进的IPO图(也称为IPO表),这种图中包含某些附加的信息,在软件设计过程中将比原始的IPO图更有用。在需求分析阶段可以使用IPO图简略地描述系统的主要算法(即数据流图中各个处理的基本算法)。【优点】:需求分析阶段用IPO图作为描述算法。,改进的IPO图的形式,2.8验证软件需求一、从哪些方面验证软件需求的正确性,大量统计数字表明,软件系统中15%的错误起源于错误的需求。为了提高软件质量,确保软件开发成功,降低软件开发成本,目标系统需求规格确定后,必须严格验证这些需求的正确性。一般说来,应该从下述5个方面进行验证:,(1)一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。(2)完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或

温馨提示

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

评论

0/150

提交评论