软件项目需求管理主要内容软件项目需求概述软件需求开发和管理软件需求规格的定义方法一、软件项目需求概述1.什么是需求需求的基本概念宽泛地讲,需求来源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细地说明了产品“必须或应当”做什么。需求的重要性FrederickBrooks在他1987年经典文章“NoSilverBullet”中阐述了需求的重要性:开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。需求是产品的根源,需求工作的优劣对产品影响最大。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。国内软件业的痼疾:人们并不清楚究竟该做什么,但却一直忙碌不停地开发。2.了解客户、最终用户、间接用户基本概念“用户”(user)是一种泛称,它可细分为“客户”(customer)、“最终用户”(theenduser)和“间接用户”(或称为关系人)。掏钱买软件的用户称为客户,而真正操作软件的用户叫最终用户。客户与最终用户可能是同一个人也可能不是同一个人。3.需求工程基本概念什么是需求工程把所有与需求直接相关的活动通称为需求工程。需求工程中的活动可分为两大类,一类属于需求开发,另一类属于需求管理。3.需求工程基本概念需求开发过程域需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产生《用户需求说明书》。需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。常见的需求分析方法有“问答分析法”和“建模分析法”两类。需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无误的产品需求,产生《需求规格说明书》。系统设计人员将依据《需求规格说明书》开展系统设计工作。需求管理过程域需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其它工作成果的一致性,并控制需求的变更。需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成共识后作出书面承诺,使需求文档具有商业合同效果。需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立与维护“需求跟踪矩阵”,确保产品依据需求文档进行开发。需求变更控制是指依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,防止需求变更失去控制而导致项目发生混乱。二、软件需求开发和管理1.需求开发的主要困难与对策知识技能问题态度问题合作关系用户说不清楚需求开发人员写不好需求文档用户经常变更需求2.如何开展需求调查准备调查执行调查《用户需求说明书》与《产品需求规格说明书》的主要区别与联系3.如何进行需求分析基本概念需求分析是指在需求开发过程中,对所获取的需求信息进行分析,及时排除错误和弥补不足,确保需求文档正确地反映用户的真实意图。“问答分析法”比较适合于用户需求调查阶段“建模分析法”比较适合于产品需求定义阶段。建模分析法建模分析方法主要有两大类:结构化分析法面向对象分析法4.什么是好的需求规格说明书正确清楚无二义性一致必要完备可实现可验证确定优先级阐述“做什么”而不是“怎么做”5.如何定义产品需求第一步:细化并分析用户需求第二步:撰写产品需求规格说明书第三步:进行需求确认软件需求说明书的参考模板案例6.需求管理:确认、跟踪、变更控制需求确认(评审和承诺)需求评审面临的困难需求承诺需求跟踪需求变更控制三、定义需求规格的方法需求规格原型方法结构化分析法面向对象的用例分析法1.原型方法定义按照用户的需要,快速形成一个操作流程界面可能只是一个框架,具体的功能没有实现,只是结果静态的操作流程,以便与用户快速就需求达成一致主要考虑系统的功能需求,很少考虑非功能需求2.结构化分析方法20世纪70年发展起来的面向数据流的方法是一种自顶向下逐步求精的分析方法根据软件内部数据传递、变换的关系进行分析的技术数据流图(DFD)数据字典(DD)系统流程图数据流图是一种描述软件系统逻辑模型的图形符号表示数据的起始点和终点表示对数据的加工处理表示数据流,箭头表示数据的流动方向表示对数据的存储表示数据的起始点和终点表示对数据的加工处理表示数据流,箭头表示数据的流动方向表示对数据的存储数据流图的层次结构为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。数据字典描述系统中涉及的每个数据,是数据描述的集合,通常配合数据流图使用,用来描述数据流图中出现的各种数据和加工.组成数据项:数据元素数据流:由数据项组成的数据流数据文件:表示对数据文件的存储数据流图需求分析实例:建立学生管理系统学管科体检科学籍科学生处学管科体检科学籍科学生管理信息系统学生处领导学生基本信息学生健康信息学生成绩学生健康情况表学生成绩单查询要求不及格人数人数统计表数据字典-数据流学生基本信息:学号十姓名学生健康信息:学号十健康情况学生成绩:学号十{课程名+成绩}查询要求:[健康查询单|平均成绩查询单l不及格人数查询]学生健康情况表:优%十良%十一般%十差%学生成绩单:学号十姓名十{课程名+成绩}+总成绩不及格人数统计表:学号十成绩十不及格总人数数据字典-文件文件文件名:基本信息组成:{学号十姓名十入学成绩十生源}组织:按学号递增顺序排列文件名:健康文件组成:{学号+姓名+健康情况}组织:按照健康情况为优、良、一般、差顺序排列文件名:成绩文件组成:{学号+姓名+平均成绩}组织:按照评剧成绩递增顺序排列加工说明加工编号2.1加工名称:学生基本信息处理输入流:合法的学生信息输出流:录入单,修改单,删除单加工逻辑:根据输入的要求,对学生基本信息进行录入、修改或删除制定出访计划开始出访组团登记出访计划表?出访团组基本情况登记表是否需要办理护照护照管理护照登记表?护照卡?申请护照签证管理结束是否临时出访计划表?申请出国护照事项表申请出国签证事项表?高检院外事局出访业务流程图计划是否落实是否是否本单位人员是否结束3.用例需求(usecase)分析用例需求分析方法采用一种面向对象的情景分析方法用例是系统向用户提供一个有价值的结果的某项功能所有的用例结合起来就构成了用例模型从用户角度出发考虑的功能需求UMLUnifiedModelingLanguage统一建模语言,是一种通用的模拟语言。Booch,Rumbaugh和Jocobson基础上发展起来的。1997年11月国际对象管理组织OMG批准将UML作为基于面向对象技术的标准建模语言。UML制定了一整套完整的面向对象的标记和处理方法。UML需求视图用例视图(UsecaseDiagram)顺序图(SequenceDiagram)状态图(StateDiagram)活动图(ActivityDiagram)用例视图用例视图主要是展示了外部行为者所观察到的系统将提交的功能.即:各类外部行为者与系统所提供的用例的连接用例(Usecase):系统所提供的功能描述角色(Actor):可能使用用例的人或者外部系统UML图符用例实例用例实例顺序图示顺序图展示了几个对象之间的动态协作关系,主要用来显示对象之间发送消息的顺序,还显示对象之间的交互,即系统执行某一特定时间点所发生的事。活动视图活动图用来描述执行工作流程中涉及的活动,展示了连续的活动流。UseCase需求分析方法综述识别出系统的Actor描述主要的Usecase实现用例视图实现顺序视图、活动视图、状态视图等需求追踪的意义问题举例:作用地位忘记实现子需求变更时不清楚要变动的地方搞不清改动的影响面有多大取消需求,设计仍然在进行追踪信息是项目管理的重要依据追踪信息是变更的重要参考是可靠过程的重要标志定义追踪关系(Links)业务需求系统需求系统测试软件需求硬件需求原理图体系结构PCB图单元设计单元测例集成测例直接追踪后向追踪前向追踪实现举例:追踪表追踪表(需求)描述编号FR1.1FR1.2应用图形显示网络拓扑结构应能使用户在图形中选择并编辑特定网元追踪表(概要设计)描述编号HD2.1HD2.1.1HD2.2HD2.3网络图形显示绘制网元鼠标点击位置判断网元属性编辑界面追踪到HD2.1HD2.1,HD2.3追踪到LD2.1,IT2.1LD2.1.1LD2.2,IT2.2LD2.3追踪注意事项显示追踪和隐式追踪尽量使用专用工具信息访问权限注意审核及时维护父子关系间接追踪关系冲突关系