1、第 6 章 软件项目需求管理 6.1 软件项目需求管理概述影响软件项目成败的因素影响软件项目成败的因素n软件开发的目标软件开发的目标按时按预算开发出满足用户真实需要的软件。按时按预算开发出满足用户真实需要的软件。n需求需求 一个软件项目的开始阶段。在软件工程中,需求分析阶段一个软件项目的开始阶段。在软件工程中,需求分析阶段是是 包括客户、用户、业务或需求分析员、开发人员、测试人员、用户包括客户、用户、业务或需求分析员、开发人员、测试人员、用户文档编写者、项目管理者和客户管理者在内的所有的风险承担者都需文档编写者、项目管理者和客户管理者在内的所有的风险承担者都需要参与的阶段。要参与的阶段。软件项
2、目需求管理概述n 需求定义需求定义l IEEE软件工程标准词汇表软件工程标准词汇表(1997年年)中将需求定义为:中将需求定义为:用户解决问题或达到目标所需的条件或权能用户解决问题或达到目标所需的条件或权能(Capability);系统或系统部件要满足合同、标准、规范或其它正式规定系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能;文档所需具有的条件或权能;一种反映上面一种反映上面(1)或或(2)所描述的条件或权能的文档说明。所描述的条件或权能的文档说明。l 软件需求包括以下几个层次:软件需求包括以下几个层次:-业务需求(业务需求(business requiremen
3、t)-用户需求(用户需求(user requirement)-功能需求(功能需求(functional requirement)-同时也包括非功能需求、软件需求规格说明(同时也包括非功能需求、软件需求规格说明(software requirements specification,SRS)等。)等。软件项目需求管理概述软件项目需求管理概述软件需求各组成部分关系软件需求各组成部分关系n 需求类型需求类型 在在UP(统一过程)中,软件需求是根据(统一过程)中,软件需求是根据FURPS+模型来分类的,其模型来分类的,其中中FURPS的含义如下:的含义如下:-Functional(功能性)(功能性)-
4、Usability(可用性)(可用性)-Reliability(可靠性)(可靠性)-Performance(性能)(性能)-Supportability(可支持性)(可支持性)-“+”是指一些辅助性的和次要的因素:是指一些辅助性的和次要的因素:-Implementation(实现)(实现)-Interface(接口)(接口)-Operations(操作)(操作)-Packaging(包装包装)-Legal(授权)(授权)软件项目需求管理概述需求过程所涉及的工作需求过程所涉及的工作6.2 需求开发和管理过程n需求工程需求工程也叫做需求过程或需求阶段,包括需求开发和需也叫做需求过程或需求阶段,包括
5、需求开发和需 求求管理。管理。n需求开发需求开发包括需求获取、需求分析、编写需求规格说明、验包括需求获取、需求分析、编写需求规格说明、验证需求四个阶段,在这四个阶段执行以下活动:证需求四个阶段,在这四个阶段执行以下活动:-确定产品所期望的用户类;确定产品所期望的用户类;-获取每个用户类的需求;获取每个用户类的需求;-了解实际用户任务和目标以及这些任务所支持的业务需求;了解实际用户任务和目标以及这些任务所支持的业务需求;-分析源于用户的信息以区别业务需求、功能需求、质量属性、业分析源于用户的信息以区别业务需求、功能需求、质量属性、业务规则,建议解决的方法和附加的信息;务规则,建议解决的方法和附加
6、的信息;-分解需求,并将需求中的一部分分配给软件组件;分解需求,并将需求中的一部分分配给软件组件;-了解相关属性的重要性;了解相关属性的重要性;-划分实施优先级;划分实施优先级;-编写需求规格说明和模型;编写需求规格说明和模型;-评审需求规格,验证对用户需求的正确理解和认识。评审需求规格,验证对用户需求的正确理解和认识。需求开发和管理过程n需求管理需求管理是一种用于查找、记录、组织和跟踪系统需求变更是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法,可用于获取、组织和记录系统需求并使客户和项目团的系统化方法,可用于获取、组织和记录系统需求并使客户和项目团队在系统需求变更上保持一致。队在系
7、统需求变更上保持一致。n有效的需求管理在于维护清晰明确的需求阐述、每种需求类型所有效的需求管理在于维护清晰明确的需求阐述、每种需求类型所适用的属性,以及与其它需求和其它项目工件之间的可追踪性。适用的属性,以及与其它需求和其它项目工件之间的可追踪性。n需求管理活动包括需求管理活动包括-定义需求基线定义需求基线-评审需求变更并评估每项需求变更对软件产品的影响从而决定是评审需求变更并评估每项需求变更对软件产品的影响从而决定是否实施它。否实施它。-以一种可控制的方式将需求变更融入当前的软件项目。以一种可控制的方式将需求变更融入当前的软件项目。-让当前的项目计划和需求保持一致。让当前的项目计划和需求保持
8、一致。-估计变更所产生的影响并在此基础上协商新的约定估计变更所产生的影响并在此基础上协商新的约定-实现通过需求可跟踪对应的设计、源代码和测试用例。实现通过需求可跟踪对应的设计、源代码和测试用例。-在整个项目过程中跟踪需求状态及其变更情况。在整个项目过程中跟踪需求状态及其变更情况。需求开发和管理过程n 需求获取需求获取 需求获取的主要目的是从宏观上把握用户的具体需求方向和需求获取的主要目的是从宏观上把握用户的具体需求方向和趋势,了解现有的组织架构、业务流程、系统环境等,对任务进趋势,了解现有的组织架构、业务流程、系统环境等,对任务进行分析、从而开发、捕获和修订用户的需求,以建立良好的沟通行分析、
9、从而开发、捕获和修订用户的需求,以建立良好的沟通渠道和方式。渠道和方式。需求获取需要执行以下活动:需求获取需要执行以下活动:-确定需求开发过程确定需求开发过程-编写项目视图和范围文档编写项目视图和范围文档-获取涉众请求获取涉众请求-选择每类用户的产品代表选择每类用户的产品代表-建立典型的以用户为核心的队伍建立典型的以用户为核心的队伍-让用户代表确定用例让用户代表确定用例-召开应用程序开发联系会议召开应用程序开发联系会议-分析用户工作流程分析用户工作流程-确定质量属性和其它非功能需求确定质量属性和其它非功能需求需求开发和管理过程n 需求分析需求分析 需求分析包括提炼、分析和仔细审查已收集到的需求
10、,为最需求分析包括提炼、分析和仔细审查已收集到的需求,为最终用户所看到的系统建立一个概念模型以确保所有的风险承担者终用户所看到的系统建立一个概念模型以确保所有的风险承担者都明白其含义并找出其中的错误、遗漏或其它不足的地方。都明白其含义并找出其中的错误、遗漏或其它不足的地方。分析用户需求应该执行以下活动:分析用户需求应该执行以下活动:绘制系统关联图绘制系统关联图创建用户接口原型创建用户接口原型分析需求可行性分析需求可行性确定需求的优先级别确定需求的优先级别为需求建立模型为需求建立模型建立数据字典建立数据字典使用质量功能调配使用质量功能调配需求开发和管理过程n 需求规格说明需求规格说明l软件需求规
11、格说明阐述一个软件系统必须提供的功能和性能软件需求规格说明阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件以及它所要考虑的限制条件,它不仅是系统测试和用户文档的它不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。基础,也是所有子系列项目规划、设计和编码的基础。l需求分析完成的标志是提交一份完整的软件需求规格说明书需求分析完成的标志是提交一份完整的软件需求规格说明书(SRS)。)。l软件需求规格说明作为产品需求的最终成果必须包括所有的软件需求规格说明作为产品需求的最终成果必须包括所有的需求。需求。l在开发人员的组织中要为编写软件需求文档定义一种标准模在开发人员
12、的组织中要为编写软件需求文档定义一种标准模板。板。需求开发和管理过程需求规格说明模板需求规格说明模板1 12 23 34 45 56 6a.a.引言引言目的目的文档约定文档约定预期的读者和阅读预期的读者和阅读建议建议产品产品的范围的范围参考文献参考文献b.b.综合描述综合描述产品产品的前景的前景产品产品的功能的功能用户类和特征用户类和特征运行运行环境环境设计和实现上的设计和实现上的限制限制假设和依赖假设和依赖附录附录c.c.外部接口需求外部接口需求 附录附录用户用户界面附录界面附录硬件接口硬件接口软件接口软件接口通信通信接口接口d.d.系统特性系统特性说明和优说明和优先级先级激励激励/响应响应
13、序列序列功能需求功能需求e.e.其它非其它非功能需求功能需求性能需求性能需求安全设施需安全设施需求求安全性需求安全性需求软件软件质量属质量属性性业务规则业务规则用户文档用户文档f.f.其它需求其它需求g.g.附件附件词汇表词汇表分析模型分析模型待确定待确定问题的列表问题的列表需求开发和管理过程n 需求验证需求验证l验证是为了确保需求说明准确、无二义性并完整地表达系验证是为了确保需求说明准确、无二义性并完整地表达系 统功能以及必要的质量特性。统功能以及必要的质量特性。l需求验证要求客户代表和开发人员共同参与,对提交后的需求验证要求客户代表和开发人员共同参与,对提交后的需求规格说明进行验证,分析需
14、求的正确性,完整性以及需求规格说明进行验证,分析需求的正确性,完整性以及可行性等等。可行性等等。l需求验证中的活动一般包括:需求验证中的活动一般包括:审查需求文档审查需求文档以需求为依据编写测试用例以需求为依据编写测试用例编写用户手册编写用户手册确定合格的标准确定合格的标准最后的签字最后的签字需求开发和管理过程n 需求变更管理需求变更管理 需求变更管理是项目管理中非常重要的一项工作。有效的需求变需求变更管理是项目管理中非常重要的一项工作。有效的需求变更管理能对变更带来的潜在影响及可能的成本费用进行评估。更管理能对变更带来的潜在影响及可能的成本费用进行评估。需求变更管理中活动一般包括:需求变更管
15、理中活动一般包括:确定需求变更控制过程确定需求变更控制过程建立需求变更控制委员会建立需求变更控制委员会进行需求变更影响分析进行需求变更影响分析建立需求基准版本和需求控制版本文档建立需求基准版本和需求控制版本文档维护需求变更的历史记录维护需求变更的历史记录跟踪每项需求的状态跟踪每项需求的状态跟踪所有受需求变更影响的工作产品跟踪所有受需求变更影响的工作产品衡量需求稳定性衡量需求稳定性需求开发和管理过程n 访谈和调研访谈和调研l和用户进行访谈和调研通常是适用于任何环境下的最重要最和用户进行访谈和调研通常是适用于任何环境下的最重要最直接的方法之一。直接的方法之一。l访谈的一个主要目标是确保访谈者的偏见
16、或主观意识不会干访谈的一个主要目标是确保访谈者的偏见或主观意识不会干扰自由的交流。扰自由的交流。l“环境无关问题环境无关问题”就是不涉及任何背景的问题。就是不涉及任何背景的问题。l通过几次这样的访谈,开发人员和系统分析员能获得一些问通过几次这样的访谈,开发人员和系统分析员能获得一些问题域中的知识,对要解决的问题有进一步的理解。题域中的知识,对要解决的问题有进一步的理解。6.3 需求获取方法n 专题讨论会专题讨论会l专题讨论会是一种可用于任何情况下的软件需求调研方法。专题讨论会是一种可用于任何情况下的软件需求调研方法。l专题讨论会的目的是鼓励软件需求调研并且在很短的时间内专题讨论会的目的是鼓励软
17、件需求调研并且在很短的时间内 对讨论的问题达成一致。对讨论的问题达成一致。l专题讨论会一般由开发团队的成员主持,主要讨论系统应具备专题讨论会一般由开发团队的成员主持,主要讨论系统应具备的特征或者评审系统特性。的特征或者评审系统特性。l专题讨论会前的准备工作是能否成功的举行会议的关键。专题讨论会前的准备工作是能否成功的举行会议的关键。需求获取方法n 脑力风暴脑力风暴l 脑力风暴是一种对于获取新观点或创造性的解决方案而言非脑力风暴是一种对于获取新观点或创造性的解决方案而言非常有用的方法。常有用的方法。l 通常,专题讨论会的一部分时间是用于进行脑力风暴,找出通常,专题讨论会的一部分时间是用于进行脑力
18、风暴,找出关于软件系统的新想法和新特征。关于软件系统的新想法和新特征。l 脑力风暴包括两个阶段:想法产生阶段和想法精化阶段。脑力风暴包括两个阶段:想法产生阶段和想法精化阶段。应用程序应用程序脑力风暴中确定的特征脑力风暴中确定的特征系统特征定义系统特征定义家用自动照明系统家用自动照明系统自动照明设置自动照明设置用户可以制定每天自动照明的时间计划,系统将用户可以制定每天自动照明的时间计划,系统将按时间计划触发照明事件按时间计划触发照明事件任务管理系统任务管理系统代理任务通知代理任务通知当用户将自己的任务代理给其他人时,系统自动当用户将自己的任务代理给其他人时,系统自动发送发送EmailEmail通
19、知将接手该任务的人通知将接手该任务的人脑力风暴中为确定的问题定义系统特征脑力风暴中为确定的问题定义系统特征需求获取方法n 场景串联场景串联l 场景串联的目的是为了尽早的从用户那里得到用户对建议场景串联的目的是为了尽早的从用户那里得到用户对建议的系统功能的意见。的系统功能的意见。l 场景串联提供了用户界面以说明系统操作流程,它容易创场景串联提供了用户界面以说明系统操作流程,它容易创建和修改,能让用户知道系统的操作方式和流程。建和修改,能让用户知道系统的操作方式和流程。l 根据与用户交互的方式,场景串联被分成三种模式:静态根据与用户交互的方式,场景串联被分成三种模式:静态的场景串联、动态的场景串联
20、以及交互的场景串联。的场景串联、动态的场景串联以及交互的场景串联。l 选择提供哪种场景串联是根据系统的复杂性和需求缺陷的选择提供哪种场景串联是根据系统的复杂性和需求缺陷的风险来确定的。风险来确定的。需求获取方法n 用例分析方法用例分析方法l 简介简介软件需求分析者利用场景或经历来描述用户和软件系统的交软件需求分析者利用场景或经历来描述用户和软件系统的交互方式,并以此来获取软件需求。互方式,并以此来获取软件需求。使用用例的分析方法来源于面向对象的思想。使用用例的分析方法来源于面向对象的思想。用例分析方法最大的特点在于面向用例,在对用例的描述中用例分析方法最大的特点在于面向用例,在对用例的描述中引
21、入了外部角色的概念。引入了外部角色的概念。l 相关技术相关技术用例需求分析常常采用用例需求分析常常采用UMLUML(Unified Modeling LanguageUnified Modeling Language,统一建模语言)技术,统一建模语言)技术,UMLUML是一种面向对象的建模语言。是一种面向对象的建模语言。6.4 需求分析建模方法n 原型分析方法原型分析方法l原型法是为了快速开发系统而推出的一种开发模式,旨在原型法是为了快速开发系统而推出的一种开发模式,旨在改进传统的结构化生命周期法的不足,缩短开发周期,减改进传统的结构化生命周期法的不足,缩短开发周期,减少开发风险。少开发风险。
22、l原型法的理念原型法的理念l对原型的基本要求对原型的基本要求l原型法进行软件需求分析的过程原型法进行软件需求分析的过程l原型法的适用范围原型法的适用范围需求分析建模方法n 结构化分析方法结构化分析方法l结构化分析方法结构化分析方法(Structured Method,结构化方法结构化方法)是强调是强调开发方法的结构合理性以及所开发开发方法的结构合理性以及所开发软件软件的结构合理性的的结构合理性的软软件开发件开发方法。方法。l结构化的分析方法的基本步骤为:结构化的分析方法的基本步骤为:需求分析需求分析业务流程分析业务流程分析数据流程分析数据流程分析编制数据字典编制数据字典l结构化分析方法的优点与
23、局限性。结构化分析方法的优点与局限性。需求分析建模方法lRational RequisiteProlBorland CaliberlRational RoselRational XDElRational ClearCase 6.5 需求管理工具本节以本节以HRMS(Human Resource Manage System)的系)的系统为例,介绍需求的开发和管理过程。统为例,介绍需求的开发和管理过程。n需求开发需求开发l需求获取需求获取6.6 案例分析需求分类需求分类编号编号系统典型需求系统典型需求功能需求功能需求(FunctionalFunctional)1 1招聘人员:用户可以通过招聘人员招
24、聘人员:用户可以通过招聘人员2 2申请职位:申请职位:WebWeb用户可以填写信息申请职位用户可以填写信息申请职位3 3查看职位申请信息:查看职位申请信息:WebWeb用户可以查看职位申请信息用户可以查看职位申请信息4 4处理职位申请:管理员可以处理职位申请处理职位申请:管理员可以处理职位申请5 5修改申请人信息:管理员可以修改申请人的信息修改申请人信息:管理员可以修改申请人的信息可用性可用性(UsabilityUsability)1 1对于熟悉公司原系统的用户新系统应易于操作对于熟悉公司原系统的用户新系统应易于操作2 2系统应支持系统应支持InternetInternet环境环境3 3系统应
25、给用户提供在线指南系统应给用户提供在线指南可靠性可靠性(ReliabilityReliability)1 1系统应该在任何时间都能工作,若是出现故障,必须系统应该在任何时间都能工作,若是出现故障,必须要在一个小时之内修复要在一个小时之内修复2 2系统应能支持用户在指定的时间备份资料系统应能支持用户在指定的时间备份资料 HRMS系统中的需求分类案例分析性能需求性能需求(PerformancePerformance)1 1管理系统必须支持公司内部员工和管理系统必须支持公司内部员工和webweb用户同时访问,并且支用户同时访问,并且支持同时在线人数不低于持同时在线人数不低于100100人人2 2系统
26、的响应时间不超过系统的响应时间不超过4 4秒秒安全性需求安全性需求(SecuritySecurity)1 1支持多用户访问系统支持多用户访问系统2 2一般用户只能查看和修改自己的信息不能看到其他人的一般用户只能查看和修改自己的信息不能看到其他人的信息信息3 3公司的下级员工不能查看上级员工的信息公司的下级员工不能查看上级员工的信息4 4公司的上级员工可以查看下级员工的信息而不能修改公司的上级员工可以查看下级员工的信息而不能修改可支持性可支持性(SupportabilSupportabilityity)1 1系统采用系统采用B/SB/S结构,用户可以通过结构,用户可以通过InternetInte
27、rnet访问系统访问系统2 2培训系统可以在所有流行的浏览器(如培训系统可以在所有流行的浏览器(如Navigation,IENavigation,IE)上正常显示上正常显示 HRMS系统中的需求分类案例分析l需求分析需求分析本项目采用原型分析方法和用例分析方法相结合来进行需求分本项目采用原型分析方法和用例分析方法相结合来进行需求分析,以用例分析方法为主,对于每个析,以用例分析方法为主,对于每个Use Case,创建用户接口说明,创建用户接口说明文档和文档和Use case报告,同时建立这个用例的原型。报告,同时建立这个用例的原型。此系统的角色定义如图所示。此系统的角色定义如图所示。Manage
28、rSuperiorDivision Manager Operation HeadEmployeeApplicantHR ManagerTraining AdministratorTraning Center AdministratorBusiness AlertHiring ManagerResource ManagerDeputy Managing DirectorManaging DirectorHMS中的角色中的角色案例分析其中各个角色描述如下:其中各个角色描述如下:角色角色1:1:员工(员工(EmployeeEmployee)角色角色2:2:雇用经理(雇用经理(Hiring Manag
29、erHiring Manager)角色角色3:3:部门经理(部门经理(Department ManagerDepartment Manager)角色角色4:4:上级(上级(SuperiorSuperior)角色角色5:5:分区经理(分区经理(Division ManagerDivision Manager)角色角色6:6:运行官(运行官(Operation HeadOperation Head)角色角色7:7:申请人(申请人(ApplicantApplicant)角色角色8:8:人力资源经理(人力资源经理(HR ManagerHR Manager)角色角色9:9:培训经理(培训经理(Train
30、ing AdministratorTraining Administrator)角色角色10:10:培训中心经理(培训中心经理(Training Center AdministratorTraining Center Administrator)案例分析用例分析 HRMS中的用例图中的用例图案例分析用例用例1 1:招聘员工(:招聘员工(Recruit EmployeeRecruit Employee)用例用例2 2:候选人分类(:候选人分类(Categorize CandidateCategorize Candidate)用例用例3 3:更新面试信息(:更新面试信息(Update Interv
31、iewUpdate Interview)用例用例4 4:确认候选人(:确认候选人(Confirm CandidateConfirm Candidate)用例用例5 5:管理申请(:管理申请(Manage RequisitionManage Requisition)用例用例6 6:记录申请者信息(:记录申请者信息(Register Applicant DataRegister Applicant Data)用例用例7 7:修改申请者信息(:修改申请者信息(Modify Applicant DataModify Applicant Data)用例用例8 8:确认申请信息(:确认申请信息(Valid
32、ate ApplicationValidate Application)案例分析l编写编写Use CaseUse Case报告报告为系统中的每个用例编写为系统中的每个用例编写Use Case报告,则系统分析与设报告,则系统分析与设计人员可以更加清晰的掌握系统架构。计人员可以更加清晰的掌握系统架构。格式如下:格式如下:Use Case Report:创建员工记录创建员工记录【简短描述简短描述】【事件流事件流】【特殊需求特殊需求】【执行前条件执行前条件】【执行后结果执行后结果】【Use case图图】【场景场景】案例分析下表描述了该用例和主角与其他下表描述了该用例和主角与其他use caseuse
33、 case的关系。的关系。HRMS中的用例图中的用例图案例分析n 需求变更管理需求变更管理 建立需求基准版本和需求控制版本文档。所有的需求文档都要建立需求基准版本和需求控制版本文档。所有的需求文档都要进行版本控制,文档要包含文档类型、名称、创建者、创建时间、进行版本控制,文档要包含文档类型、名称、创建者、创建时间、修改者、修改时间、版本号、评审人员等信息。修改者、修改时间、版本号、评审人员等信息。在开发在开发HRMS中,提交的需求文档包括用户界面说明文档、中,提交的需求文档包括用户界面说明文档、Use Case报告、报告、Glossary文档、软件开发计划、文档、软件开发计划、Use Case模型调研以及补模型调研以及补充说明。所有的文档采用统一的编号规则和命名规则。充说明。所有的文档采用统一的编号规则和命名规则。l 文档编号规则文档编号规则 系统名缩写系统名缩写“_”文档类型缩写文档类型缩写_模块名缩写模块名缩写“_”编号编号版本号(后文没有版本号(后文没有+版本号)。版本号)。l 文档命名规则文档命名规则 文档类型文档类型“_”文档名文档名“_”版本号。版本号。案例分析需求变更管理流程案例分析