1、第3章.需求工程过程,需求工程过程 需求工程过程的活动 需求工程过程的并发和迭代性 实践方法的应用 需求工程过程实例分析 需求工程过程与软件工程过程,1. 需求工程过程,过程是一组相关活动的集成,通过这些活动的执行,可以完成一项任务或者达到一个目标。 需求工程过程是系统开发当中需求开发活动的集成,它的模版是产生一个能够在用户环境下解决用户业务问题的系统方案 需求工程过程可能会表现出极大的差异,但是除了少数情况之外,主要的需求工程活动是比较固定的,1. 需求工程过程,1. 需求工程过程,主要内容,需求工程过程 需求工程过程的活动 需求工程过程的并发和迭代性 实践方法的应用 需求工程过程实例分析
2、需求工程过程与软件工程过程,2. 需求工程过程的活动,需求获取 需求获取是从人、文档或者环境当中获取需求的过程 需求工程师必须要利用各种方法和技术来“发现”需求 需求获取和需求分析是交织在一起的,2. 需求工程过程的活动,需求获取子活动 收集背景资料 定义项目前景和范围 选择信息的来源 选择获取方法,执行获取 记录获取结果,2. 需求工程过程的活动,需求分析 建模来整合各种信息,以使得人们更好的理解问题 为问题定义出一个需求集合,这个集合能够为问题界定一个有效的解决方案 检查需求当中存在的错误、遗漏、不一致等各种缺陷,并加以修正,2. 需求工程过程的活动,需求分析子活动 背景分析 业务分析(问
3、题分析、目标分析、涉众分析),确定系统边界 需求建模 需求细化 确定优先级 需求协商,2. 需求工程过程的活动,需求规格说明 获取的需求需要被编写成文档,主要目的是为了在系统涉众之间交流需求信息 业务需求被写入项目前景和范围文档 用户需求被写入用户需求文档(或者用例文档) 系统需求被写入需求规格说明 需求规格说明 子活动 定制文档模版 编写文档,2. 需求工程过程的活动,需求验证 确保需求规格说明文档能正确、准确的反映用户的意图 确保文档的高质量 文档内每条需求都正确、准确的反映了用户的意图; 文档记录的需求集在整体上具有完整性和一致性; 文档的组织方式和需求的书写方式具有可读性和可修改性 需
4、求验证子活动 执行验证 问题修正,2. 需求工程过程的活动,需求管理 保证需求作用在整个软件的产品生命周期中的持续、稳定和有效发挥 需求管理子活动 建立和维护需求基线集 建立需求跟踪信息 进行变更控制,主要内容,需求工程过程 需求工程过程的活动 需求工程过程的并发和迭代性 实践方法的应用 需求工程过程实例分析 需求工程过程与软件工程过程,3.需求工程过程的并发和迭代性 需求开发中的分析模型复杂度,3.需求工程过程的并发和迭代性,Framing Requirements Work as Learning,3.需求工程过程的并发和迭代性 迭代的需求开发过程模型,3.需求工程过程的并发和迭代性 需求
5、开发活动的并发性,主要内容,需求工程过程 需求工程过程的活动 需求工程过程的并发和迭代性 实践方法的应用 需求工程过程实例分析 需求工程过程与软件工程过程,4. 实践方法的应用,个人才智实践方法知识体系 需求工程师需要为组织或项目选择、定制和应用一些有效的实践方法 见教材表3-1,需求分析,主要内容,需求工程过程 需求工程过程的活动 需求工程过程的并发和迭代性 实践方法的应用 需求工程过程实例分析 需求工程过程与软件工程过程,需求工程过程实例,螺旋RE,需求工程过程实例,依赖原型方法的需求开发过程,需求工程过程实例,HP 需求过程,需求工程过程实例,Practices-Based,需求工程过程
6、实例 Agile RE,面对面的交流胜过写规格说明文档; 迭代式需求工程; 将需求划分优先级做到极限; 通过持续规划管理需求变更; 原型法; 测试驱动开发; 用户评审会议与验收测试。,需求工程过程实例 Agile RE,需求工程过程实例 RUP,主要内容,需求工程过程 需求工程过程的活动 需求工程过程的并发和迭代性 实践方法的应用 需求工程过程实例分析 需求工程过程与软件工程过程,6. 需求工程过程与软件工程过程,软件的问题域比较成熟和易于明确化,并且需求也比较稳定 不利于用户的有效参与,6. 需求工程过程与软件工程过程,软件的问题域比较复杂,但是业务非常成熟而且需求比较稳定 不利于用户的有效
7、参与,6. 需求工程过程与软件工程过程,问题域极其复杂或者需求不稳定 更好的应对需求的改变 提高用户的有效参与度 使得开发工作的协同和管理工作变得困难,6. 需求工程过程与软件工程过程,问题域不成熟,业务活动仍然在不断发展和改变 能够很好的解决各种不确定性 提高了需求工程阶段的成本,而且易于发生各种原型风险,6. 需求工程过程与软件工程过程,需求工程过程更应该是软件工程过程的一部分,而不是独立出来作为单独部分发现相比于需求方法本身的好坏,需求方法与软件开发方法的适配性更会影响项目的成败。这也就是说,需求开发方法与软件开发方法是否适配,比结果需求的好坏更能影响项目的成败 相比于应用领域的熟练性,
8、一个项目管理者有效管理需求的能力更加重要; 没有必要在项目一开始就建立完备的需求,更好的方式在项目后续的阶段中逐步完善需求;,Software Process Model in Practices, 2003,需求工程过程为什么要适应软件工程过程?,“需求工程”是正性活动 , 2006,表3-4 需求工程过程对软件开发的影响效果及路径, 2005 需求对后续的影响 改进对细节的理解,改进对特征间依赖及复杂性的理解 建设精力浪费 看不见的好处:提升沟通 看不见的好处: 帮助决策 估算 变更管理,思考题,1. 除了需求开发的四个活动和需求管理活动之外,需求工程当中还有没有需要执行的活动?如果有的话
9、,它们是哪些活动?给出你的理由。 2. 需求开发过程具有迭代特性,但是不是所有项目的需求开发过程都必须是迭代完成的?如果不是,请给出举例和理由。 3. 需求开发的迭代特性与软件开发过程的迭代式开发有什么关系?它们之间会互相影响吗?如果会,那么有哪些影响? 4. 需求工程细节知识的实践性对不同项目的需求开发过程的差异性有没有影响?如果有,请说明影响是什么。如果没有,请说明是哪些因素产生了不同项目的需求开发过程的差异性。,本章小结,需求工程有着属于它自己的生命周期模型,存在着针对需求开发的需求工程过程 需求工程过程拥有一些常见的需求工程活动:需求获取、需求分析、需求规格说明、需求验证和需求管理 需求开发活动是互相交织、并发、迭代和递增 的 需求工程过程的成功执行需要应用很多的有效实践方法 在实践中,需求工程过程的差异性是非常大的 因为处于前端,需求工程对后续软件开发活动的影响是非常深入的,课堂延续,1、UML介绍(各一个组,10分钟,请先做准备) 历史 人物 简介 平台 2、第一次上机作业讲评,