1、第三章第三章 需求工程(需求工程(1 1)任务任务1 1 获取用户想法获取用户想法需求概述需求概述需求获取需求获取2 2我们现在有一个来自于某高校系内资料室的图书我们现在有一个来自于某高校系内资料室的图书管理的需求。这个资料室是一个新建的图书资料管理的需求。这个资料室是一个新建的图书资料室。由于一般的图书管理系统是针对具有一定规室。由于一般的图书管理系统是针对具有一定规模的图书馆设计的,所以用在目前规模较小的图模的图书馆设计的,所以用在目前规模较小的图书资料室上有些大材小用,并且也大大超出了成书资料室上有些大材小用,并且也大大超出了成本的预算。因此用户一方面希望能够有一套图书本的预算。因此用户
2、一方面希望能够有一套图书管理系统帮助图书管理员完成日常上的图书借阅管理系统帮助图书管理员完成日常上的图书借阅管理的工作,同时又能满足小型资料室规模不大管理的工作,同时又能满足小型资料室规模不大的需求。所以,该资料室希望能够根据其自身的的需求。所以,该资料室希望能够根据其自身的特点制定一套合理、有效、规范和实用的图书管特点制定一套合理、有效、规范和实用的图书管理系统,完成对图书资料集中统一的管理。理系统,完成对图书资料集中统一的管理。3 3我们希望通过对用户需求做进一步的了解,我们希望通过对用户需求做进一步的了解,明确用户当前遇到的具体问题和希望达成的明确用户当前遇到的具体问题和希望达成的目标,
3、这些信息的掌握将为后续软件开发指目标,这些信息的掌握将为后续软件开发指明方向。但是,我们到底需要获得哪方面的明方向。但是,我们到底需要获得哪方面的信息,有什么样的具体措施和方法能够帮助信息,有什么样的具体措施和方法能够帮助我们捋顺思路,更有目的性地获取这些信息我们捋顺思路,更有目的性地获取这些信息呢?呢?4 4什么是需求?什么是需求?用户解决问题或达到目标所需要的条件或权能。用户解决问题或达到目标所需要的条件或权能。系统或系统部件要满足合同、标准、规范或其他系统或系统部件要满足合同、标准、规范或其他正式规定文档所要具有的条件或权能。正式规定文档所要具有的条件或权能。反映上面两条的文档说明。反映
4、上面两条的文档说明。需求工程需求工程指系统分析人员通过细致的调研分析,准确地理指系统分析人员通过细致的调研分析,准确地理解用户的需求,将不规范的需求陈述转化为完整解用户的需求,将不规范的需求陈述转化为完整的需求定义,再将需求定义写成需求规约的过程的需求定义,再将需求定义写成需求规约的过程。需求工程包含需求开发和需求工程管理两部分。需求工程包含需求开发和需求工程管理两部分。功能需求功能需求功能需求描述系统所应提供的功能和服务,包括功能需求描述系统所应提供的功能和服务,包括系统应该提供的服务、对输入如何响应及特定条系统应该提供的服务、对输入如何响应及特定条件下系统行为的描述。件下系统行为的描述。非
5、功能需求非功能需求作为功能需求的补充,非功能需求是指那些不直作为功能需求的补充,非功能需求是指那些不直接与系统的具体功能相关的一类需求,但它们与接与系统的具体功能相关的一类需求,但它们与系统的总体特性相关,如可靠性、响应时间、存系统的总体特性相关,如可靠性、响应时间、存储空间等储空间等 。6 6非功能性需求的类型领域需求领域需求领域需求的来源不是系统的用户,而是系统应用的领域,反映了该领域需求的来源不是系统的用户,而是系统应用的领域,反映了该领域的特点。它们主要反映了应用领域的基本问题,如果这些需求领域的特点。它们主要反映了应用领域的基本问题,如果这些需求得不到满足,系统的正常运转就不可能。领
6、域需求可能是功能需求,得不到满足,系统的正常运转就不可能。领域需求可能是功能需求,也可能是非功能需求,其确定所需的领域知识。它经常采用一种应也可能是非功能需求,其确定所需的领域知识。它经常采用一种应用领域中的专门语言来描述。用领域中的专门语言来描述。业务需求业务需求反映组织机构或客户对软件高层次的目标要求,这项需求是用户高反映组织机构或客户对软件高层次的目标要求,这项需求是用户高层领导机构决定的,它确定了系统的目标规模和范围。层领导机构决定的,它确定了系统的目标规模和范围。用户需求用户需求用户使用该软件要完成的任务用户使用该软件要完成的任务系统需求系统需求容易被忽视的要求通常是为了保证整个系统
7、能够正常运行的辅助功容易被忽视的要求通常是为了保证整个系统能够正常运行的辅助功能能,用户一般不会意识到。用户一般不会意识到。软件需求各组成部分之间的关系软件需求各组成部分之间的关系建立分析模型建立分析模型分析模型是描述软件需求的一种模型,由于各个用户往分析模型是描述软件需求的一种模型,由于各个用户往往会从不同的角度阐述他们对原始问题的理解和对目标往会从不同的角度阐述他们对原始问题的理解和对目标软件的需求,因此,有必要为原始问题及其目标软件系软件的需求,因此,有必要为原始问题及其目标软件系统建立模型。统建立模型。这种模型一方面用于精确地记录用户对原始问题和目标这种模型一方面用于精确地记录用户对原
8、始问题和目标软件的描述;另一方面,它也将帮助分析人员发现用户软件的描述;另一方面,它也将帮助分析人员发现用户需求中的不一致性,排除不合理的部分,挖掘潜在的用需求中的不一致性,排除不合理的部分,挖掘潜在的用户需求。户需求。这种模型往往包含问题及其环境所涉及的信息流、处理这种模型往往包含问题及其环境所涉及的信息流、处理功能、用户界面、行为模型及设计约束等,它是形成需功能、用户界面、行为模型及设计约束等,它是形成需求说明,进行软件设计、实现的基础。求说明,进行软件设计、实现的基础。构建正式的需求文档构建正式的需求文档1111需求开发需求开发活动活动可行性研究可行性研究需求导出和分析需求导出和分析需求
9、描述需求描述需求有效性验证需求有效性验证需求管理需求管理活动活动需求变更控制需求变更控制版本控制版本控制需求跟踪需求跟踪需求状态跟踪需求状态跟踪文档文档用户需求说明书用户需求说明书产品产品(系统系统)需求规格需求规格说明书说明书文档文档需求评审报告需求评审报告需求跟踪报告需求跟踪报告需求变更控制报告需求变更控制报告需求开发过程模型需求开发过程模型1313需求开发与需求管理流程图需求规格说明书与其它开发活动之间的关系需求规格说明书与其它开发活动之间的关系需求规格说明书软件设计验收测试项目计划产品发布用户培训签订合同需求评审需求获取需求分析需求规格说明书需求审查需求工程需求规格说明书对系统开发过程
10、中其它活动的影需求规格说明书对系统开发过程中其它活动的影响响项目的开发成本、进度、资源使用量等都是以需求规项目的开发成本、进度、资源使用量等都是以需求规格说明书为依据格说明书为依据项目经理根据它制定开发计划项目经理根据它制定开发计划设计人员根据它进行系统设计设计人员根据它进行系统设计测试人员根据它编写测试计划。设计测试用例测试人员根据它编写测试计划。设计测试用例产品发布人员根据它编写产品介绍和客户文档产品发布人员根据它编写产品介绍和客户文档培训人员根据它编写培训教程培训人员根据它编写培训教程 需求获取(需求获取(requirements elicitationrequirements elic
11、itation)也称)也称为需求收集(为需求收集(requirements capturerequirements capture),它是与),它是与发现目标系统应该提供的需求相关的活动的发现目标系统应该提供的需求相关的活动的统称。对起初一系列需求的提炼和扩展的过统称。对起初一系列需求的提炼和扩展的过程就称为需求分析(程就称为需求分析(requirements analysisrequirements analysis)。)。需求获取的步骤需求获取的步骤 需求获取的方法需求获取的方法建立联合分析小组建立联合分析小组由用户、系统分析员和领域专家构成的需求收集方法由用户、系统分析员和领域专家构成的
12、需求收集方法搜集现有文档、报表等。搜集现有文档、报表等。这是最常用的方法,但必须依靠企业负责人和系统最终用户的这是最常用的方法,但必须依靠企业负责人和系统最终用户的帮助,才能获得所需文件;帮助,才能获得所需文件;座谈会。座谈会。由开发组组织用户和相关部门的经理、由开发组组织用户和相关部门的经理、ITIT技术人员以及高层管技术人员以及高层管理人员参加,目的是集中精力、缩短时间、提高搜集信息的效理人员参加,目的是集中精力、缩短时间、提高搜集信息的效率和准确度;率和准确度;访谈。访谈。对各级管理人员和工作人员要自上而下地进行访问,有针对性对各级管理人员和工作人员要自上而下地进行访问,有针对性地对细节
13、做专门访问。其优点是能够得到更多的信息,缺点是地对细节做专门访问。其优点是能够得到更多的信息,缺点是耗费时间;耗费时间;调查问卷。调查问卷。涉及调查表,对一些共性的问题进行较大范围的调查,但涉及调查表,对一些共性的问题进行较大范围的调查,但效果不一定好,效果不一定好,观察工作环境,参加业务实践;观察工作环境,参加业务实践;原型法。原型法。由于用户对系统需求的含义不甚了解,因此由系统开发人由于用户对系统需求的含义不甚了解,因此由系统开发人员为用户提供可以借鉴的模型系统,引导用户提出更加合员为用户提供可以借鉴的模型系统,引导用户提出更加合理的需求。理的需求。2020了解用户了解用户用户是一种泛称,
14、它可细分为用户是一种泛称,它可细分为“客户客户”、“最终用户最终用户”、“间接用户间接用户”(或称为关系人或称为关系人)客户:掏钱买软件的用户客户:掏钱买软件的用户最终用户:最终操作软件的用户最终用户:最终操作软件的用户间接用户:既不掏钱买软件,也不使用软件,但它可能对间接用户:既不掏钱买软件,也不使用软件,但它可能对软件产品产生很大影响。软件产品产生很大影响。分清用户的重要性分清用户的重要性项目需求工程实施中客户与分析人员、开发人员交项目需求工程实施中客户与分析人员、开发人员交流时的合法要求(权利)。流时的合法要求(权利)。要求分析人员使用符合客户语言习惯的表达要求分析人员使用符合客户语言习
15、惯的表达要求分析人员了解客户的业务及目标。要求分析人员了解客户的业务及目标。要求分析人员编写软件需求规约。要求分析人员编写软件需求规约。要求得到需求工作结果的解释说明。要求得到需求工作结果的解释说明。要求开发人员尊重客户的意见。要求开发人员尊重客户的意见。要求开发人员对需求及产品实施提供建议,拿出主意。要求开发人员对需求及产品实施提供建议,拿出主意。描述产品易使用的特性。描述产品易使用的特性。调整需求,允许重用已有的软件构件。调整需求,允许重用已有的软件构件。获得满足客户功能和质量要求的系统。获得满足客户功能和质量要求的系统。软件需求获取过程中客户有下列义务。软件需求获取过程中客户有下列义务。给分析人员讲解自己的业务。给分析人员讲解自己的业务。抽出时间清楚地说明宽完善需求。抽出时间清楚地说明宽完善需求。准确而详细地说明需求。准确而详细地说明需求。及时地做出决定。及时地做出决定。尊重开发人员的需求可行性及成本评估。尊重开发人员的需求可行性及成本评估。划分需求优先级别。划分需求优先级别。评审需求文档和原型。评审需求文档和原型。需求出现变更要马上联系。需求出现变更要马上联系。应遵照开发组织处理需求变更的过程。应遵照开发组织处理需求变更的过程。尊重开发人员采用的需求工程过程。尊重开发人员采用的需求工程过程。