文档介绍:软件需求分析与建模
软件工程方法与实践
主要问题
什么是软件需求?
软件需求分析有哪些过程?
如何启动分析过程?
什么是面向数据的建模?
什么是面向数据流的建模?
什么是非形式化建模、半形式化建模和形式化建模?
什么是统一建模语言(UML)?
什么是用例建模?
什么是领域模型?
软件需求分析过程
什么是软件需求?
软件需求分析有哪些过程?
如何启动分析过程?
需求规格文档有哪些内容?
需求分析有哪些技术?
一般把需求定义为“(正在构建的)系统必须符合的条件或具备的功能或能力”。电气和电子工程师学会使用的定义与此类似。 著名的需求工程设计师 Merlin Dorfman 和 Richard H. Thayer 提出了一个包容且更为精练的定义,它特指软件方面- 但不仅仅限于软件:
1、软件需求可定义为: 用户需解决某一问题或达到某一目标所需的软件功能。 2、系统或系统构件为了满足合同、规约、标准或其他正式实行的文档而必须满足或具备的软件功能。
什么是软件需求
需求工程基本任务
需求工程
需求管理
需求开发
需求获取
需求分析
需求规格说明
需求验证
变更管理
需求分析的基本任务
需求分析的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。并在在需求分析阶段结束之前,由系统分析员写出软件需求规格说明书,以书面形式准确地描述软件需求。
需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。
需求分析模型
系统实现模型
目标系统
当前系统
物理模型
逻辑模型
逻辑模型
物理模型
模型化
抽象化
实例化
具体化
理
解
需
求
表
达
需
求
导
出
做什么
怎
么
做
需求分析的主要工作
系统流程图或高层DFD图
DFD图、STD图、E-R图、用例图、类图、顺序图等
目
标
系
统
描述现实系统是如何在物理上实现的。
描述新系统的主要业务功能和用户新的需求,无论系统应如何实施。
描述新系统是如何实施的(包括技术)。
逻辑模型物理模型 (本质模型、概念模型) (实施模型、技术模型)
描述重要的业务功能,无论系统是如何实施的。
现
行
系
统
需求分析模型
软件需求曾经让我们如此狼狈
软件开发的问题分类
1、需求规格说明 4、软件和测试
2、管理客户需求 5、项目管理
3、建档 6、编码
问题的重要性依次降低
ESPITI(欧洲软件过程改进培训倡议)所作的一个调查,3800个被调查者认为,软件开发的主要问题、次要问题和不是问题的问题如图。
一半以上的人认为,软件的二个最大问题是:
1、需求规格说明
2、管理客户需求
相对而言,编码不是问题