需求分析和软件建模

目录

软件的发展

软件项目目标的三要素

好的需求特征

需求工程的目的

软件危机、需求错误的代价

产生不合格需求的原因有哪些

需求层次的构成

需求基础

需求的内涵

需求的定义

需求的分类

功能需求的层次性

质量属性

需求工程过程

需求工程过程的活动

并发性与迭代性

软件开发过程模型

需求规格文档

需求分析

结构化需求分析方法

过程建模

[数据流图(Data Flowing Diagram,DFD)](#数据流图(Data Flowing Diagram,DFD))

​编辑DFD构建规则

DFD的层次结构

上下文图

0层图(顶层图)

N层图

数据建模

实体关系图(ERD)

实体(Entity)

属性

标识符:

属性的分类:

关系

度数:

基数:

面向对象分析方法

面向对象基本思想

面向对象基本概念

对象

封装

消息

继承

多态性

面向对象方法目标及其实现机制

高维护性:

可复用性:

机器无关性:


软件的发展

软件项目目标的三要素

  1. 功能、性能
  2. 成本
  3. 时间

好的需求特征

  1. 可靠性
  2. 可移植性
  3. 可维护性
  4. 可配置(少编程)

需求工程的目的

  1. 解决目标系统"做什么?"的问题
  2. 准确地定义未来系统的目标,确定了为了满足用户的需求,系统必须做什么
  3. 《需求规格说明书》规范的形式准确表达了用户的需求

软件危机、需求错误的代价

  1. 浪费了资源
  2. 影响了软件的成功
  3. 降低用户的满意度
  4. 增加成本

产生不合格需求的原因有哪些

  1. 没有足够的用户参与
  2. 用户的需求不断增加,导致不可控
  3. 没有进行用户分类
  4. 需求具有二义性
  5. 需求规格说明过于精简

需求层次的构成

需求基础

需求的内涵

  1. 实体和状态构成了解决问题的基本范围,称作该问题的问题域
  2. 软件系统通过影响问题域,帮助人们解决问题,称作解系统
  3. 问题域和解系统直接交互的点叫做共享对象

需求的定义

  1. 需求是用户对现实生活中实体状态或事件的期望描述
  2. 直接需求:用户直接提出需要满足的需求(如,系统的功能)
  3. 间接需求:为了满足直接需求、或为了软件正常运行所需满足的正常功能

需求的分类

  1. 功能需求(Functional Requirement)
  2. 性能需求(Performance Requirement)
  3. 质量属性(Quality Attribute)
  4. 对外接口(External Interface)
  5. 约束
  6. 系统需求(System Requirement)

功能需求的层次性

  1. 业务需求:描述了高层次的系统解决方案
  2. 用户需求:描述了用户对系统任务的期望
  3. 系统需求:描述了系统的开发人员应该做什么(系统中应该实现什么)

质量属性

需求工程过程

过程一系列活动的集成,通过这些活动的执行,能够完成一个任务或者达成一个目标。

需求工程过程是系发中需求开发活动的集成,它的模板是通过一系列活动,生成一个在用户环境下解决用户业务问题的系统方案。

需求工程过程可能会出现较大的差异,但是在 一般情况下,需求工程过程是比较固定的。

需求工程过程的活动

并发性与迭代性

软件开发过程模型

  1. 瀑布式模型
  2. 快速原型模型
  3. 螺旋式模型

需求规格文档

需求分析

结构化需求分析方法

结构化需求分析的核心是数据。数据包括在分析、设计、实现过程中涉及到的概念、属性、术语等所有内容,并把这些内容定义在数据字典中,然后围绕数据字典进行功能/过程模型、数据模型、行为模型的建模过程。

结构化建模包括:过程建模、数据建模

过程建模

过程建模是结构化建模的核心方法:

  1. 系统是过程的集合
  2. 所有系统都是由过程构成的
  3. 过程可以分解为子过程
  4. 最终所有的子过程都可以被映射为计算实体(函数)

数据流图(Data Flowing Diagram,DFD)

是一种流行的结构化需求分析的工具,DFD描述了数据输入、数据转换、数据输出的全过程。

四种图形分别表示:

  • 数据加工过程,实现数据变换。其中要注明加工的名字。
  1. 过程,是施与数据的状态或者行为,使得数据发生变化(被转换、被储存、被分布)
  2. 可能是由软件系统控制的,也可能是人为执行的,但是重在于数据变化的效果,而不是执行者
  3. 过程可以有不同的抽象层次,能够直接对数据进行编码的叫做原始过程
  • 外部实体,即数据源或外部系统。其中要注明数据源或外部系统的名字。
  1. 外部实体是待构建系统之外的人、组织、软件系统,它们不受系统的控制,开发者不能以任何方式操纵他们
  2. 需要建模的外部实体,是与待构建系统存在数据交互的外部实体,他们是待构建系统的数据源或者数据目的地
  3. 所有外部实体联合起来就构成了软件系统的外部上下文环境
  • 数据存储,其中注明数据存储名字或编号。
  • 数据流,描述变换的加工数据及数据流方向。箭头上部要注明数据流的名字。
  1. 数据流是指数据的流动,是系统与环境或者系统内部的两个过程之间的通信形式
  2. 数据流是可以分割和组合的
  3. 数据字典和ERD图是用来更详细的描述数据流图

实例:

DFD构建规则

  1. 过程是对数据的处理,应该有输入和输出,并且输入和输出数据应该有差异
  2. 数据流一定要和过程产生关联,要么是过程的输入,要么是过程的输出
  3. 数据流图中的对象都应该有一个用来唯一标识自己的名称(过程用动词,外部实体、数据流、数据储存使用名词)

DFD的层次结构

上下文图

上下文图将整个系统看做一个过程,这个过程实现所有的系统功能,是系统功能的最高抽象

  1. 上下文图只能包含一个过程,编号为0
  2. 要包括所有与软件系统有交互的外部实体,并且描述数据流
  3. 上下文图中不会出现数据储存的实例
0层图(顶层图)
  1. 位于上下文图的下面一层,是对上下文图单一过程的细节描述,是对该单一过程的第一次功能分解
  2. 0层图是对整个系统的功能概述
  3. 0层图要被描述的简洁、清晰。需求工程师要根据系统的复杂程度来决定顶层图的抽象程度
N层图
  1. 1层图是对0层图的再一次功能分解,对N层图在进行功能分解就得到了(N+1)层图,功能分解是可以持续进行的,最终的子图都是原始DFD图
  2. 原始DFD图的扩展形式:微规格说明、数据字典
  3. 一般来说,低于0层图的子图上不会出现外部实体

数据建模

数据模型是用来描述数据的定义、结构、关系等特性的模型

说明了问题域和解系统的共享事物、对共享事物的描述、共享事物之间的关系

实体关系图(ERD)

核心是分析系统中实体、实体属性、实体间的关系

实体(Entity)
  1. 实例:系统需要收集的现实事物

  2. 实体:具有相同属性、特征的实例集合类别描述

    实体的分类:

    概念实体

    逻辑实体

    进程实体

属性
  1. 属性是用来描述实体特征的
  2. 属性可以是文字、符号、短语乃至声音
  3. 一系列属性的集合就构成了实体的一个实例

属性的数据的特征,并不是数据,属性以一种形式存在,这种存在才是数据,被称为属性的值。

标识符:
  1. 又称键(Key),用来唯一确定和标识每个实例或者属性组合
  2. 一个实例可以有很多个键,都被称为候选键(人们一般从中选择或者固定某一个键对实例进行标识,被选中的成为主键,没有选中的叫做替代键)
属性的分类:
复制代码
单值属性    多值属性

简单属性    组合属性

储存属性    导出属性
关系
  1. 关系是存在于一个实体或者多个实体间的自然业务联系
  2. 所有的关系都是隐含的双向的
  3. 关系表示的不是实体的物理连接,而是一种逻辑上的连接
度数:

参与关系的实体数量

基数:

最大基数,与关系中的其他实体实例,该实体可能参与的最大关系数量

最小基数,与关系中的其他实体实例,该实体可能参与的最小关系数量


面向对象分析方法

任何系统都可以看作一个对象,能够完成一系列目标和任务

  • 对象在完成任务目标时,会调用其他对象来完成子目标
  • 其他对象为了完成子任务,会请求将子任务划分成子子任务,并请求其他对象一起完成

对子目标的划分,将会一直持续到最后的子目标能够被映射到计算实体

  • 计算实体:对象
  • 层次关系:聚合(组合)、继承、关联
  • 组合接口:一个对象暴露在外的接口

面向对象基本思想

  • 一切都是对象
  • 对象都是独立的
  • 对象是原子性
  • 对象是可抽象的
  • 对象都有层次

面向对象基本概念

  1. 类是抽象和分类的概念(分类:将共性事物划分为一类、抽象:忽略事物的非本质特征)
  2. 数据抽象:就是将有相同特征的数据以及数据集上的操作定义为一个数据类型
  3. 过程抽象:将明确的功能定义为一个单一的实体
对象
  1. 对象是类的实例
  2. 显示生活中,具有相同属性和操作的对象属于一个类
封装

就是将类的内部属性和一些操作隐藏,只将公共的操作暴露在外

消息

消息必须发给指定的对象,消息应该有必要的请求信息

对象可以是消息的接受者,同样可以是消息的发送者

继承

类可以有子类,子类继承父类的所有属性和操作,并且子类可以添加自己的属性和操作

  • 继承允许多重性,子类可以有多个父类
  • 继承允许多层
  • 继承的本质是提高代码复用率
多态性
  • 在继承类结构时,允许定义同名操作;一个消息的响应可以执行不同的行为
  • 多态更好的体现了操作语句的一致性
  • 多态的实现机制
  1. 静态联编:在编译时就确定好访问对象的操作地址
  2. 动态联编:编译时不确定访问对象的操作地址,在运行时在根据操作对象的不同再确定

面向对象方法目标及其实现机制

高维护性:
  • 类封装了操作的一个"代码级复用"的程序模板,类的对象是系统的可构造元素
  • 采用消息机制实现操作的调用,回避了操作调用的过程性
可复用性:
  • 对象语义一致性,功能的复用依赖于对功能的理解,但是对功能的描述又是复杂多义的,没有对象语义更可能实现复用
  • 全方位复用,功能复用是代码级的,但是系统的复用不仅需要代码级的复用,还需要源程序级的复用,而继承机制就是源程序级的复用
机器无关性:
  • 类的多态绑定技术,使得能够将程序的"机器相关部分"提取出来,为程序无关性提供了基础
相关推荐
知行EDI14 小时前
汽车行业EDI教程——北美X12标准 需求分析及方案
edi·需求分析·电子数据交换·汽车行业·知行edi
打码人的日常分享3 天前
网络安全风险评估报告书模版(Word)
运维·数据库·微服务·制造·需求分析
小马哥编程3 天前
【产品经理从0到1】用户研究和需求分析
产品经理·需求分析
梯阅线条6 天前
10软件测试需求分析案例-查询学习信息
需求分析·软件测试需求分析
未定义.22111 天前
UML-饮料自助销售系统(无法找零)序列图
设计模式·流程图·状态模式·软件工程·需求分析·uml
未定义.22112 天前
UML-饮料自助销售系统(饮料已售完)序列图
设计模式·流程图·状态模式·软件工程·需求分析·uml
阿智智13 天前
IBM Rational Software Architect安装感受及使用初体验
需求分析·ibm rsa
未定义.22114 天前
UML-银行取款序列图
设计模式·流程图·软件工程·需求分析·uml
summer10816 天前
【产品】ToB产品需求分析
需求分析