需求开发各阶段定义:
需求获取
需求获取是从人、文档、环境当中获取需求的过程;
这个过程包括学习和认知的过程,而学习和认知是递进的; 需求工程师必须要利用各种方法和技术来“发现”需求 ; 需求获取和需求分析是交织在一起的 ;
需求分析
检查需求当中存在的错误、遗漏、不一致等各种缺陷,并加以修正 ; 通过建模来整合各种信息,以使得人们更好的理解问题;
为问题定义出一个需求集合,这个集合能够为问题界定一个有效的解决方案;
需求规格说明
需求获取活动---收集了需求信息;
需求分析活动---建立了能够满足用户需求的软件解决方案; 将上述文档定义和文档化;
需求验证
确保需求规格说明文档能正确、准确地反映用户的意图 确保文档的高质量
需求管理
需求基线:项目经理、开发者、测试人员、顾客、维护人员
需求产生之后 ,需求的影响力贯穿于整个后续的产品生命周期,而不是单纯地存在于需求开发阶段软件规模的扩大社会/物理系统对软件越来越依赖 需求分析成为软件工程的关键逐步与软件工程分离成为一门专门的学科:需求工程
描述明确的问题域特性E; 定义良好的系统行为S ; 预期的需求R 需求工程的目的就是根据E,构建S,使得 E,S|->R 需求工程的困难之处:
(1)不存在描述明确的E;
(2)不存在确定的针对S的评估标准R;
(3) 是一个创造性的过程。 需求工程的主要工作
需求开发,确定 R
研究问题背景,描述问题域特性E
构建解系统,描述解系统行为S,使得 E,S|->R
常见的需求定义错误:
需求并没有正确反映用户的真实需求; 信息遗漏;
需求不一致;
模糊和歧义的需求; 不必要的需求
功能需求——层次性
业务需求
抽象层次最高的需求,是系统建立的战略出发点,表现为高层次的目标(Objective),它描述了组织为什么要开发系统 。 用户需求(需要极强的背景知识)
执行实际工作的用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么。 系统(级)需求
用户对系统行为的期望,一系列的系统行为联系在一起可以帮助用户完成任务,满足用户需求。
过程建模是结构化分析方法的典型技术,又称为功能分解。 主要思想:分而治之思想。
过程的执行:接收数据、进行数据转换、输出数据结果。
特点
系统是过程的集合
过程可以被分解为子过程
最终的子过程可以被映射为计算实体——函数 所有的系统都是由过程构建的
DFD(Data Flow Diagram)的基本元素 外部实体;过程;数据流;数据存储。 DFD的层次结构 上下文图 0层图
N层图(N>0
规则(过程的数据守恒)
1 过程是对数据的处理,必须有输入,也必须有输出,而且输入数据集和输出数据集应该存在差异
2 数据流是必须和过程产生关联的,它要么是过程的数据输入,要么是过程的数据输出 3 DFD当中所有的对象都应该有一个可以唯一标识自己的名称。 过程使用动词 外部实体、数据流和数据存储使用名词
抽象建模的方法: 抽象 分解 投影
常用需求分析技术: 结构化技术 面向对象技术
需求分析方法(历史): 1 传统分析
没有方法 (1950’s) 2 结构化分析
传统结构化分析 (late 1960’s), 现代结构化分析 (late 1970’s) 信息工程 (late 1980’s) 3 面向对象分析 (1990‘s)
以对象为中心,以UML(类图)为核心技术
以全面思想革新为理想,以承继结构化技术为现实
涉众:所有能够影响软件系统的实现,或者会被实现后的软件系统所影响的个人和团体。
信息系统的四种类型 : 小型系统(Small System)
组织级系统(Organization-Wide System) 战略信息系统(Strategic Information System) 组织间系统(Inter-Organizational Systems)
定量硬数据: 数据表格
统计报表
整个组织的描述文档 业务指导文档 业务备忘
发现业务需求:
每一个明确、一致的问题都意味着涉众存在一些相应的期望目标,即业务需求。
定义解决方案及系统特性:
一、确定高层次的解决方案
二、确定系统特性和解决方案的边界 三、确定解决方案的约束
需求分析常用技术:
1、分解 将大问题分解为小问题,通常是自顶而下,不断细化的过程;
2、抽象 抓住问题的本质特性,从不同抽象层次进行分析,提出解决问题的方案; 3、多视点 注意从各类开发人员和不同用户的角度考虑问题,才能获得对系统的全面完整的需求。
需求获取困难:
1 用户和开发人员的背景不同,立场不同 2 普通用户缺乏概括性、综合性的表述能力 3 用户存在认知困境 4 用户越俎代庖 5 缺乏用户参与 需求获取来源: 1 涉众
2 相关产品
3 硬数据
4 重要文档
5 相关技术标准和法规
需求获取方法:
集体获取方法 头脑风暴(Brainstorming)、专题讨论会(Workshop)、JAD等 原型
传统方法
问卷调查、面谈、硬数据分析、文档检查、需求剥离等 任务分析(Task Analysis)、协议分析(Protocol Analysis)等 认知方法
基于上下文的方法 观察、民族志(Ethnography)和话语分析(Conversation Analysis)
需求的内涵:1、每一个软件系统必有其交互的应用环境;2、每一个软件系统其作用范围有效;
共享现象:软件系统能够与问题域进行交互和相互影响的原因在于,软件系统中的某些部分对问题域中的某些部分具有模拟特性。
问题域中的某些信息能够和模型(建模产生)中的信息建立映射关系 。
这些通过映射建立的共同知识,就是问题域和解系统之间的共享现象 ,是问题域和解系统实现交互和互相影响的途径与接口。
需求概念的外延——需求的分类:功能需求 性能需求 质量属性 对外接口 约束
用例图的主要基本元素:
1 执行者(角色):是系统外部的一个人或物,它以某种方式参与了系统的执行过程。 2 用例:待开发系统的一个独立功能,由一系列动作组成。 3 用例间的关系:泛化、包含和扩展关系