2020年3月6日广东工业大学计算机学院1软件工程SoftwareEngineering2020/3/6广东工业大学计算机学院2第4章软件需求分析本章内容:4.1需求分析4.2结构化分析4.3系统流程图4.4数据流图4.5数据字典4.6关系数据理论2020/3/6广东工业大学计算机学院34.1需求分析需求分析是软件定义时期的最后一个阶段,其基本任务是回答“系统必须做什么”这个问题。需求分析不是确定系统怎样完成工作,而是确定系统必须完成哪些工作。对目标系统提出完整、准确的具体要求。需求分析阶段结束时,要提交详细的数据流图、数据字典和算法描述。2020/3/6广东工业大学计算机学院44.1.1需求分析的特点需求分析虽处于软件开发过程的开始阶段,但它对于整个软件开发过程以及软件产品质量是至关重要的。需求分析是指开发人员要进行细致的调查分析,准确理解用户的要求。将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约的过程。2020/3/6广东工业大学计算机学院5需求分析的难点主要体现在以下几个方面:1.需求易变性用户在开始时提出一些功能需求,当对系统有一定的理解后,会提出一些需求。以后随着理解的深入而不断提出新的需求。2.问题的复杂性一方面是由用户需求所涉及的因素繁多引起的,如运行环境和系统功能等;另一方面是扩展的应用领域本身的复杂性。2020/3/6广东工业大学计算机学院63.交流障碍需求分析涉及人员较多,系统分析员要与软件系统用户、问题领域专家、需求工程师和项目管理员等进行交流。但是这些人具备不同的背景知识,处于不同的角度,扮演不同角色,造成了相互之间交流的困难。2020/3/6广东工业大学计算机学院74.不完备性和不一致性由于用户各类人员对于系统的要求所处的角度不一样,所以对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾。需求分析要消除其矛盾,形成完备及一致的定义。2020/3/6广东工业大学计算机学院8为了克服需求分析的困难,人们展开的各种研究都是围绕着需求分析的方法、自动化工具(如CASE技术)及形式化需求分析等方面进行研究。需求分析的方法在应用中已有丰富的应用经验。2020/3/6广东工业大学计算机学院94.1.2需求分析的原则为使需求分析科学化,对软件工程的分析阶段中提出了许多需求分析方法。许多软件需求分析方法都有独特的观点和表示法,但都适用下面的基本原则:(1)可以把一个复杂问题按功能进行分解并可逐层细化。(2)必须能够表达和理解问题的数据域和功能域。(3)建立模型。所谓模型就是所研究对象的一种表达形式。2020/3/6广东工业大学计算机学院104.1.3需求分析的任务需求分析的基本任务是要准确地理解旧系统,定义新系统的目标。需求分析的任务还不是确定系统怎样完成它的工作,仅仅是确定系统要完成哪些工作,也就是对系统提出完整、准确、清晰、具体的要求。这个时期的工作可以从可行性阶段的数据流图等文档出发,划分出系统必须完成的许多基本功能,研究这些功能并进一步具体化。2020/3/6广东工业大学计算机学院111.问题明确定义(1)功能需求:指所开发的软件必须具备什么样的功能。(2)性能需求:要开发软件的技术性能指标,如访问时延、存储容量、运行时间等限制。(3)环境需求:软件运行时所需要的硬件的机型、外设;软件的操作系统、开发与维护工具和数据库管理系统等要求。2020/3/6广东工业大学计算机学院12(4)用户界面需求:用户操纵界面的形式、输入/输出数据格式、数据传递的载体等。(5)系统的可靠性、安全性、可移植性和可维护性等方面的需求。2020/3/6广东工业大学计算机学院132.导出软件的逻辑模型分析人员根据前面获取的需求资料,要进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。同时对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成分。最后要用图文结合的形式,建立起新系统的逻辑模型。2020/3/6广东工业大学计算机学院143.编写文档通过分析确定了系统必须具有的功能和性能,定义了系统中的数据,描述了数据处理的主要算法。应该把分析的结果用正式的文件记录下来,作为最终软件的部分材料。编写文档的步骤如下:(1)编写“需求说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。2020/3/6广东工业大学计算机学院15(2)编写初步用户使用手册,要从用户使用系统的角度来描述系统的用户要求。(3)编写确认测试计划,作为今后确认和验收的依据。(4)修改完善项目开发计划。2020/3/6广东工业大学计算机学院164.1.4需求分析的方法需求分析就是研究问题域,产生一个满足用户需求的系统模型。这个系统模型应能正确地描述问题域和系统责任,并使后续开发阶段的有关人员能根据这个模型继续进行工作。软件分析方法比较多,其中最有影响的是功能分解法、数据流法、信息建模法和面向对象的分析。2020/3/6广东工业大学计算机学院171.功能分解方法功能分解=功能+子功能+功能接口功能分解法(functiondecomposition)以系统需要提供的功能为中心来组织系统。首先定义各种功能,然后把功能分解为子功能,同时定义功能之间的接口。2020/3/6广东工业大学计算机学院182.结构化分析方法结构化分析=数据流+数据处理(加工)+数据存储+端点+处理说明+数据字典2020/3/6广东工业大学计算机学院19结构化分析又称作数据流法(dataflowapproach)。其基本策略是跟踪数据流,即研究问题域中数据如何流动以及在各个环节上进行何种处理,从而发现数据流和加工(bubble)。结构化分析方法是一种从问题空间到某种表示的映射方法,它由数据流图表示,是结构化方法中重要的、被普遍接受的表示系统,它由数据流图和数据词典构成。2020/3/6广东工业大学计算机学院203.信息建模方法信息建模=实体(对象)+属性+关系+父类型/子类型+关联对象2020/3/6广东工业大学计算机学院21信息建模法(informationmodeling)由P.P.S.Chen在1976年提出的实体-关系法(Entity-Relationshipdesign,简称E-R方法)发展而来。1981年M.Flavin进行了改进并称之为信息建模法。1988年由S.Shlaer和S.Mellor发展为语义数据建模方法并引入了许多面向对象的特点。信息建模法的核心概念是实体和关系。该方法的基本工具是E–R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实世界中找出实体,然后再用属性来描述这些实体。2020/3/6广东工业大学计算机学院224.面向对象的分析面向对象=对象、类+结构与连接+继承+封装+消息通信以上公式仅仅表示面向对象分析方法中几项最重要的特征,全面的论述将在后面展开。简单说来,OOA的对象是对问题域中事物的完整映射,包括事物的数据特征(属性)和行为特征(服务)。2020/3/6广东工业大学计算机学院234.2结构化分析在结构化方法的发展历程上,它是随着结构化程序设计(StructuredProgramming,简称SP)方法的提出、结构化设计(StructuredDesign,简称SD)方法的出现直到结构化分析(StructuredAnalysis,简称SA)方法提出才逐渐形成的。结构化方法是分析、设计到实现都使用结构化思想的软件开发方法,实际上它由三部分组成:结构化分析、结构化设计和结构化程序设计。2020/3/6广东工业大学计算机学院241.基本思想结构化方法总的指导思想是自顶向下、逐步求精,它的两个基本原则是抽象与分解。2.特点结构化方法具有以下特点:(1)它是使用最早的开发方法,使用时间也最长。(2)它应用最广,特别适合于数据处理。(3)相应的支持工具多,发展较为成熟。2020/3/6广东工业大学计算机学院253.优点结构化方法一经问世,就显示出了它的以下几大优点:(1)简单、实用。(2)适合于瀑布模型,易为开发者掌握。(3)成功率较高,据美国1000家公司统计,该方法的成功率高达90.2%,名列第二,仅次于面向对象的方法。(4)特别适合于数据处理领域中的应用,对其他领域的应用也基本适用。2020/3/6广东工业大学计算机学院264.存在问题结构化方法存在以下一些问题:(1)对于规模大的项目,特别复杂的应用不太适应。(2)难以解决软件重用的问题。(3)难以适应需求的变化。(4)难以彻底解决维护问题。2020/3/6广东工业大学计算机学院274.2.1自顶向下逐层分解把一个复杂的问题划分成若干小问题,然后再分别解决,将问题的复杂性降低到人可以掌握的程度。分解的方法可分层进行,方法原理是先考虑问题最本质的方面,忽略细节,形成问题的高层概念。然后再逐层添加细节。即在分层过程中采用不同程度的“抽象”级别,最高层的问题最抽象,而低层的较为具体。2020/3/6广东工业大学计算机学院282020/3/6广东工业大学计算机学院29当认为某一层比较复杂时到底应该划分为多少个子系统,针对不同的系统的处理不同。划分的原则可以根据业务工作的范围、功能性质、被处理数据对象的特点。一般情况下上面一些层的划分往往按照业务类型划分的比较多,下面一些层往往按照功能的划分比较多。依照这个策略,对于任何复杂的系统,分析工作都可以有计划、有步骤及有条不紊地进行。2020/3/6广东工业大学计算机学院304.2.2结构化分析步骤要对一个系统进行结构化分析,首先要明确这一阶段的任务是要搞清楚“做什么”。为此就要对现行系统有一定了解,在此基础上修改要变化的部分而形成新系统。具体步骤如下:1.建立现行系统的物理模型通过了解现行系统的工作过程,对现行系统进行详细调查,收集资料,将看到的、听到的、收集到的信息和情况用图形或文字描述出来。也就是用一个模型来反映自己对现行系统的理解,如画系统流程图(后面介绍)。这一模型包含了许多具体因素,反映现实世界的实际情况。2020/3/6广东工业大学计算机学院312.抽象出现行系统的逻辑模型要构造新的逻辑模型就要去掉物理模型中非本质的因素(如物理因素),抽取出本质的因素。这种逻辑模型反映了现行系统“做什么”的功能。2020/3/6广东工业大学计算机学院323.建立目标系统的逻辑模型有了现行系统的逻辑模型后,就将目标系统与现行系统逻辑进行分析,比较其差别,即在现行系统的基础上决定变化的范围,把那些要改变的部分找出来,将变化的部分抽象为一个加工,这个加工的外部环境及输入输出就确定了。2020/3/6广东工业大学计算机学院334.进一步补充和优化目标系统的逻辑模型只是一个主体,为了完整地描述目标系统,还要作一些补充。补充的内容包括它所处的应用环境及它与外界环境的相互联系;说明目标系统的人机界面;说明至今尚未详细考虑的环节。如出错处理、输入/输出格式、存储容量和响应时间等性能要求与限制。2020/3/6广东工业大学计算机学院344.3系统流程图如何描述该系统的概貌,系统流程图是描述的传统工具。其基本思想是用图形符号以黑盒方式描述系统的每个部件。系统流程图表达的是系统各部件间的流动情况,不是对信息进行加工处理的控制过程。2020/3/6广东工业大学计算机学院351.系统流程图的作用系统流程图由一系列图形符号组成。这些符号在不同的文献中引用也不一样。但是都是用图形符号来表示系统中的各个元素。例如,输入和输出、人工处理、数据处理、数据库、文件和设备等。它表达了系统中各个元素之间的信息流动的情况。2020/3/6广东工业大学计算机学院362.系统流程图的符号项目小组开始工作时,制定的系统标准包括各种表示符号。2020/3/6广东工业大学计算机学院372020/3/6广东工业大学计算机学院383.系统