软件工程第02章软件项目的需求分析可行性研究1需求分析的任务2结构化分析与建模4需求规格说明书6MicrosoftOfficeVisio5需求分析的步骤3一、可行性研究1、可行性研究的任务可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说,可行性研究的目的不是解决问题,而是确定问题是否可解,是否值得去解。一般来说,可行性研究应该从以下几个方面进行:(1)技术可行性分析:使用现有技术能否实现系统(2)经济可行性分析:开发投入与经济效益(3)操作可行性分析:系统操作方式在该组织内是否可行,是否存在社会问题(4)法律可行性分析:开发过程中涉及的各种合同、侵权、责任以及其他同法律相抵触的内容存在问题的解决:引入资金、引入人员、合作最后给出问题是否可解,是否值得解决一、可行性研究2、可行性研究的步骤1)复查系统规模和目标:清晰的描述对系统目标的一切限制和约束,确保解决问题的正确性。2)研究目前正在使用的系统:通过对现有系统的文档资料的阅读、分析和研究,总结出现有系统的优点与不足,解决老系统的问题(修改、增加)。3)导出新系统的高层逻辑模型:告诉用户,系统可以做什么,而不是怎么做4)重新定义问题:定义分析问题导出模型再定义问题……5)导出和评价供选择的方案:从逻辑模型出发,导出若干较高层次的解供比较和选择。6)推荐一个方案并说明理由:从技术、经济、操作等方面进行比较,向用户推荐一个方案7)推荐行动方针一、可行性研究8)草拟开发计划•任务分解,确定负责人•进度规划•财务预算•风险分析与对策:市场、技术、政策9)书写文档提交审查进行可行性研究,需要对软件项目的开发进行宏观的把握,一般是由技术、财务、人事等多个部门组成的小组来进行的。一、可行性研究3、系统流程图在进行可行性研究时需要了解和分析现有系统,并以概括的形式表达对现有系统的认识。进入设计阶段以后应该把设想的新系统的逻辑模型转变成物理模型,因此需要描绘未来的物理系统的概貌。系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等)。系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程。1)系统流程图的功能如下:制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。系统分析员可以直接利用系统流程图画出可以实现计算机处理的部分可利用系统流程图来分析业务流程的合理性一、可行性研究2)系统流程图的符号一、可行性研究一、可行性研究3)系统流程图示例[例]用系统流程图来分析下述问题。某图书馆闭架借书流程如下:读者须先验明证件后才能进入查询室。读者在查询室内通过检书卡或利用终端检索图书数据库来查找自己所需的图书。找到所需图书并填好索书单后到服务台借书。如果所借图书还有剩余,管理员将填好借书单,从库房中取出图书交于读者。一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容一、可行性研究4、可行性研究报告主要内容二、需求分析的任务需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,准确地回答“系统必须做什么?”这个问题。虽然在可行性研究阶段已经粗略了解了用户的需求,甚至还提出了一些可行的方案,但是,可行性研究的基本目的是用较小的成本在较短的时间内确定是否存在可行的解法,因此许多细节被忽略了.需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整,准确,清晰,具体的要求。在这个阶段结束时交出的文档中应该包括详细的数据流图,数据字典和一组简明的算法描述。二、需求分析的任务由当前系统建立目标系统模型需求分析需要借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决系统做什么的问题二、需求分析的任务1、确定对系统的综合需求1)系统功能要求应该划分出系统必须完成的所有功能。2)系统性能要求如联机系统的响应时间、系统需要的存储容量以及后援存储、重新启动和安全性等方面的考虑都属于性能要求。3)运行要求这类要求集中表现为对系统运行时所处环境的要求.例如,支持系统运行的系统软件是什么,采用哪种数据库管理系统,需要什么样的外存储器和数据通信接口等。4)将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求.这样做的目的是在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行这种扩充和修改。二、需求分析的任务2、分析系统的数据要求任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响,因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务.分析系统的数据通常采用建立概念模型的方法。复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系.利用数据字典可以全面准确地定义数据,但是数据字典的缺点是不够形象直观.为了提高可理解性,常常利用图形工具辅助描绘数据结构.常用的图形工具有层次方框图和Warnier图。软件系统经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。二、需求分析的任务3、导出系统的逻辑模型综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图,数据字典和主要的处理算法描述这个逻辑模型.4、修正系统开发计划根据在分析过程中获得的对系统的更深入更具体的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划.5、开发原型系统建立原型系统作的策略主要理由如下:(1)由于人类认识能力的局限,不能预先指定所有要求;(2)在用户和系统分析员之间存在固有的通信鸿沟;(3)用户需要一个活的系统模型,以便获得实践经验;(4)在开发过程中重复和反复是必要的和不可避免的;(5)目前有快速建立原型系统的工具可供选用.三、需求分析的步骤1、调查研究分析人员同程序员研究系统数据的流程及调查用户需求或查阅可行性报告、项目开发计划报告,访问现场,获得当前系统的具体模型,以IPO(输入、处理、输出)图或DFD(数据流图)图表示。系统分析员把沿数据流图回溯过程中所划分出来的数据元素记录在数据字典中,把对算法的简明描述记录在IPO图中,并把通过分析而补充的数据流、数据存储和处理,添加到数据流图的适当位置。用户倾听和复查分析员的报告,确认分析员的认识是否正确、有无遗漏,并及时纠正和补充分析员的认识。跟踪数据流图和复查系统的逻辑模型这两个步骤实质上构成一个循环,分析员在分析过程中必须充分重视和使用数据流图、数据字典和算法工具。三、需求分析的步骤2、分析与综合分析员从数据流和数据结构出发,逐步细化所有的软件功能,找出系统各元素之间的联系、接口特性和设计上的限制,分析它们是否满足功能要求,是否合理。根据功能需求、性能需求、运行环境需求等,删除不合理部分,增加需要部分,组中综合成系统的解决方案,给出目标系统的详细逻辑模型。3、书写文档系统需求规格说明说修正开发计划4、需求分析评审三、结构化分析与建模1、关于建模所谓模型,就是为了理解事务而对事务做出的一种抽象,是对事务的一种无歧义的书面描述。软件需求分析建立起来的模型称为需求模型,分析模型实际上是一组模型,它是一种目标系统逻辑表示技术,可以由一组图形符号和组织这些符号的规则组成。利用需求模型不仅可以把知识规范的表示出来,而且可以降低问题的复杂度,便于问题的理解和设计,同时,可以使开发人员与用户之间易于交流。模型用于描述软件目标系统所有的数据信息、处理功能、用户界面及运行的外部行为等,模型并不涉及到软件的具体实现细节。常用的方法有SA建模、Jackson建模、OO建模等。三、结构化分析与建模2、结构化分析介绍结构化分析(SA:StructuredAnalysis)是基于面向数据流的分析方法之一,是具有代表性的一种需求建模方法。结构化方法的基本思想是把系统自上向下逐层分解,逐步求精,它的基本原则是抽象与分解。在结构化分析建模活动中,核心是数据字典,围绕数据字典有3个子模型,即数据模型、功能模型、行为模型。数据模型用于描述数据对象之间的关系,通常采用“实体—关系图“(ERD:Entity-RelationshipDiagram)来描述。功能模型常用数据流图(DFD:DataFlowDiagram)来描述,数据流图符号简单实用,是结构化分析技术被广泛使用的原因之一。行为模型常用状态转换图来描述,它通过描述系统的状态以及已经引起系统状态转换的事件来表示系统的行为。三、结构化分析与建模3、数据流图3.1含义:数据流图从数据传递和加工的角度,以图形方式描述数据流从输入到输出的传输变换过程。数据流图是结构化分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理功能。3.2特征:•抽象性:仅保留信息和数据存储、流动、使用以及加工的情况。•概括性:数据流图把系统对各种业务的处理过程联系起来,形成一个总体,具有概括性。•层次性三、结构化分析与建模3.3数据流图的基本图形符号三、结构化分析与建模数据流:用箭头描述,由一组固定的数据项组成,箭头方向表示数据的流向,作为数据在系统内的传输通道。加工:用圆或椭圆描述,又称数据处理,表示输入数据在此进行变换产生输出数据,以数据结构或数据内容作为加工对象。数据存储文件:用双杆描述,在数据流图中起保存数据的作用,又称数据存储或文件,可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可以理解为写入文件或查询文件,从数据存储流出的数据流可以理解为从文件读数据或得到查询结果。数据源点或终点:用方框描述,表示数据流图中要处理数据的输入来源或处理结果要送往的地方,在图中仅作为一个符号,并不需要以任何软件的形式进行设计和实现,是系统外部环境中的实体,故称外部实体。它们作为系统与系统外部环境的接口界面,在实际的问题中可能是人员、组织、其他软硬件系统等。一般只出现在分层数据流的顶层图中。三、结构化分析与建模3.4数据流与加工之间的关系图三、结构化分析与建模3.5数据流图的画法1)确定系统的输入输出由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围。2)由外向里画系统的顶层数据流图首先,将系统的输人数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。3)自顶向下逐层分解,绘出分层数据流图对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示。三、结构化分析与建模3.6示例:商店业务处理系统顶层数据流图三、结构化分析与建模第一层数据流图三、结构化分析与建模销售细化三、结构化分析与建模采购细化三、结构化分析与建模4、数据字典4.1数据字典的定义数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完成的定义与说明,是数据流程图的补充工具。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,没有数据流图数据字典也难于发挥作用。4.2数据字典的内容