火龙果 整理
软件需求分析与建模基础空间与交易产品部-高飞 2011年1月26日
火龙果 整理
目录一 什么是需求分析
二
系统建模
三
需求分析建模实例
四
经验总结
目录一 什么是需求分析 1. 软件生命周期 2. 需求分析的定义
火龙果 整理
3. 需求分析阶段的重要性4. 需求分类
5. 需求捕获6. 需求过程定义
火龙果 整理
一、什么是需求分析?1、软件生命周期(SDLC-Software Day Light Cycle)
同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成 长、成熟、衰亡等阶段,一般称为软件生命周期。
《软件工程国家标准—计算机软件开发规范》(GB8566—88)中将软 件生命周期划分为8个阶段:
可行性研 究与计划
需求分析
概要设计
详细设计
实现(包 括单元测 试)
组织测试 (集成测 试)
确认测试
使用和维 护
火龙果 整理
一、什么是需求分析?2、需求分析的定义
是软件工程中的一个关键过程;是系统分析员进行软件功能和性能分析的依据; 是指明软件和其他系统元素的接口、是建立软 件必须满足的约束; 是软件设计师进行软件分解的基础; 是软件处理的数据模型、功能模型和行为模型; 是软件设计师翻译成数据、体系结构、界面和 过程设计的模型; 是进行质量评估的依据。
火龙果 整理
一、什么是需求分析?3、需求分析阶段的重要性
根据Standish Group对23000个项目进行的研究结果表明,28%的项目彻底失败,46%的项目超出经费预算或者超出工期,只有 约26%的项目获得成功。 而在于这些高达74%的不成功项目中,有约60%的失败是源于需 求问题。
也就是说,有近45%的项目最终因为需求的问题最终导致失败。
火龙果 整理
一、什么是需求分析?4、需求分类
业务需求:反映组织机 构或客户对系统、产品 高层次的目标要求。 用户需求:描述用户使 用产品必须要完成什么 任务。 系统需求:从系统的角 度来说明软件的需求, 它包括用特性说明的功 能需求,质量属性以及 其它非功能需求,还有 设计约束。
火龙果 整理
一、什么是需求分析?5、需求捕获
明确业务需求:业务需求是整个系统最为宏观层面的东西,也就是 “项目的目标” 。 理解业务流程: -- 若项目较大或者业务较陌生:应进行业务建模; -- 如果业务较陌生:聘请领域专家,领域培训; -- 如果术语较多,易于混淆:业务术语表; -- 无论如何,都应该建立跨部门职能流程图 。
火龙果 整理 uml
一、什么是需求分析?5、需求捕获
明确用户需求: -- What(收集什么信息) -- Where(从哪收集) -- How(如何收集)捕获技术 用户访谈 用户调查 现场观摩 文档考古 联合开发 优点 直接有效、灵活、深入 面广、可以获得更多反馈 容易建立直接的认识 能够详细、直观对数据流细节进行 分析 直接的头脑风暴,可以击破需求盲 点 缺点 占用时间长,信息面窄、较片面 不够深入,容易形式主义、失真 消耗时间长 易陷入文山书海,甚至产生误导 成本高,需要较高的控制技巧
火龙果 整理
一、什么是需求分析?6、需求过程定义组织机构 原始手工作业 流程图 表格文档
服务对象?
现实业务?
细化业务流程
输入输出流?
设计原型
逻辑关系图
可行性研究?
业务之间 的关系?
原型 用例
泳道图
是否合法、是否能实 现、设计限制、 是否存在不合理需求、 是否存在尚未提出的潜 在要求
逻辑关系 数据关系
需求阶段 分析阶段
火龙果 整理
目录二系统建模 1. 为什么要建模 2. 什么是UML
3. UML的发展历程4. 模型种类
5.谁应该建模6.如何使用UML对需求建模
火龙果 整理
二、系统建模1、为什么要建模
从建筑方面的建模谈起…
建造一个狗窝:只需备一些木料、钉子和基本工具。建造一所房子:除备一些木料、钉子和基本工具外,还要事先制订 计划,画出简图。
建造一座大厦:资金是别人的,他们会对 建筑物的规模、形状和风格作出要求。而 给出设计方案(建模) 对模型加以分析 且经常会改变想法。失败的代价太高。需 组织各种资源 要许多人员合作完成,需提供设计图和模 进行积极的管理 型供各方相互沟通。需得到合适的人员和 工具,对把建筑的概念转换为实际建筑物 的过程进行积极的管理。 奇怪的是,很多软件开发组织开始想建造一座大厦式的软件,而在动手 处理时却好像他们正在仓促地造一个狗窝!
火龙果 整理
二、系统建模1、为什么要建模
现代软件为什么要建模:现代软件的趋势是朝着更庞大,更复杂的 系统发展。应用环境是迅速变化的,要求软件系统适应迅速变化的 环境。建模允许我们通过一种分而治之的办法来处理复杂的问题, 使我们能更好地理解待开发的系统。
火龙果 整理
二、系统建模2、什么是UML
UML是一种Language(语言) UML是一种Modeling(建模)Language
UML是Unified(统一)Modeling Language是一种绘制软件蓝图的标准语言
已进入全面应用阶段的事实标准应用领域正在逐渐扩展,包括嵌入式系
统建模、业务建模、流程建 模等多个领域
火龙果 整理
二、系统建模3、UML发展历程
火龙果 整理
二、系统建模4、模型种类模型的种类 业务模型 需求模型 设计模型 数据库模型 实现模型 模型的用途 对业务过程、工作流、组织的建模 对捕获的需求进行整理和分析的工具,辅助开发人员与用户进行沟通 包含高层设计(架构模型)和详细设计模型,用于统一开发人员、沟通设计信 息 设计数据库的结构、表结构以及与应用系统的交互 用来理清软件的组成、部署方案,为安装与维护人员的工作提供指导
火龙果 整理
二、系统建模5、谁应该建模
业务模型:以领域专家为主,需求分析人员是主力,系统分析员、 架构师可参与。 需求模型:以需求分析人员为主,系统分析员是主力,领域专家提 供指导,架构师和资深开发人员参与。
设计模型:高层设计模型以架构师为主,系统分析员从需求方面提 供支持,资深开发人员从技术实现方面提供支持。详细设计模型则 以资深开发人员为主,架构师提供指导。数据库模型:以数据库开发人员为主,架构师提供指导,资深开发 人员(设计人员)予以配合。 实现模型:以资深开发人员(设计人员)为主,架构师提供总体指 导。
火龙果 整理
二、系统建模6、如何使用UML对需求建模
用例模型—组织需求
用例建模工作流 -- 识别参与者、 寻找用例 -- 描述参与者和用例的交互方式 -- 用包来组织用例和参与者(可选) -- 通过用例图表示用例模型 -- 细化用例模型、 评估用例模型
火龙果 整理
二、系统建模6、如何使用UML对需求建模
类模型—概念模型
概念模型也称为领域模型,通常把 业务建模生成的称为领域模型,而 无专门的业务建模生成的称为概念 模型 。 建立概念模型的目的是帮助开发团 队理解问题领域的各种概念、各种 名词、以及它们之间的各种关系, 它的主要表现方式就是类图。
在构建这个模型时,最主要的工作是找出相关的类,然后明确类之间 的关联关系,必要时加入一些多重性描述和业务规则约束 。
火龙果 整理
二、系统建模6、如何使用UML对需求建模
交互模型—描述事件流
在需求阶段的交互模型是一个起点,随着分析和设计工作的开展, 该模型将不断的精化和修正。 交互模型中一般只包含概念模型中的实体对象和分析模型中的边 界对象,其目标只是帮助分析人员理清整个事件流,而控制对象、 设计类的引入都将在后续阶段进行。 并非一定要为用例
模型中的所有用例构建交互模型,关键在于 “是否需要”。 可借助状态图表示一些对象状态的变迁及用户界面设计,还可以 借助活动图来理解活动与活动之间的控制流。
火龙果 整理
目录三 需求分析建模实例 1.确定业务需求 2.需求捕获
3.获得需求特性表4.建立用例模型
5.建立概念模型6.建立交互/状态模型 7.用户界面设计