Skip to content

需求分析方法

需求分析基础

需求分析的任务

  • 建立分析模型,达成开发者和用户对需求信息的共同理解
  • 依据共同的理解,发挥创造性创建软件系统解决方案

为何需要需求分析

在需求获取中,需求工程师一般获取的信息都是用户对现实世界的理解与描述,使用的是实际业务的表达方式,而非开发者可以立即实现的解决方案。所以需要通过需求分析来建立与用户间的共同理解,并将用户的描述转换为软件解决方案。

Screen Shot 2024-06-17 at 2.25.36 PM

需求分析的模型 重点

常见的结构化方法需求分析模型如下

模型描述
数据流图从数据传递和加工的视角来描述系统从输入到输出到功能处理过程。
实体关系图描述系统中所有数据对象及其关系,定义了系统中使用处理和产生的所有数据。

常见的面向对象方法需求分析模型如下

模型描述
用例图描述用户与系统之间的交互。从交互的角度说明了系统的边界和功能范围。
(概念)类图描述应用领域中重要概念以及概念之间的关系,捕获了系统的静态结构。
交互图 / 顺序图描述系统中一次交互的行为过程,说明了在交互中的对象协作关系。
状态图描述系统、用例或者对象在其整个生命周期中的状态变化。

抽象分解是建立模型最常用的两种手段。

面向对象分析 重点

面向对象的分析方法认为系统是对象的集合,这些对象通过相互协作来共同完成系统的整个任务。面向对象分析方法的优点在于自然性可复用性,前者指面向对象的分析方法可以与现实中的例子产生映射关系,后者指面向对象的分析方法更容易实现分析到设计的转化。

统一建模语言UML​)是面向对象分析的主要模型。它是多种技术的复合体,而非单一的技术。常见的技术即下文介绍的四种图。

面向对象分析的常见流程如下图

Screen Shot 2024-06-17 at 2.55.28 PM

用例图

用例指在系统和外部对象的交互中所执行的行为序列的描述,包括各种不同的序列和错误的序列,它们能够联合提供一种有价值的服务。系统中有些行为序列并不能单独提供价值,因此不应该算作用例,它很可能是某个用例中的一个行为序列。

用例图就是以用例为基本单位的模型。它的基本元素有四种:用例、参与者、系统边界和关系。如下表所示

种类图示说明
用例水平的椭圆代表一个用例
参与者小人同系统进行交互的抽象角色,并非真实的参与者
系统边界矩形框系统成分和系统外事物的分界线
关系直线表示参与者参与的用例

用例图的建立

细化用例时,用例粒度合适的判断标准是:用例描述了为应对一个业务事件,由一个用户发起,并在一个连续的时间段完成,且可以增加业务价值任务

用例的描述

建立用例图后需要对用例进行描述,用文本的方式来将参与者、目标、场景等信息描述出来。这些用例描述经不断演化后可以放入用例文档。

项目内容描述
ID用例的标识
名称对用例内容的精确描述,体现了用例所描述的任务
参与者描述系统的参与者和每个参与者的目标
触发条件标识启动用例的事件,可能是系统外部的事件,也可能是系统内部的事件,还可能是正常流程的第一个步骤
前置条件用例能够正常启动和工作的系统状态条件
后置条件用例执行完成后的系统状态条件
正常流程在常见和符合预期的条件下,系统与外界的行为交互序列
扩展流程用例中可能发生的其他场景
特殊需求和用例相关的其他特殊需求,尤其是非功能性需求

概念类图 / 领域模型

UML 中的类图是面向对象分析方法的核心技术,它以对象和类的概念为基础,描述它们之间的关系。注意要与设计阶段的类图相区分——类型、方法、可见性等复杂的细节都不会在概念类图上出现。

概念类图的基本元素包括对象、类、链接、关联、组合聚合、继承。如下表所示

种类图示说明
对象矩形框,内部分栏。
矩形框,内部分栏。包含重要属性
链接直线。对象之间的互相协作关系。
关联直线,中央有关联名称,两端可以标注基数;可使用有向箭头表明它是单向的关联。类之间的关系。
聚合直线,在整体的关联端使用使用空心菱形。部分与整体之间的关系。
组合直线,在整体的关联端使用使用实心菱形。聚合,并且一个部分完全属于整体。
继承直线,在父辈的继承端使用空心三角。

建立概念类图

  1. 对每个用例文本描述,尤其是场景描述,建立局部的概念类图

    • 根据用例的文本描述,识别候选类

    • 筛选候选类,确定概念类(有状态、有行为)

    • 识别关联

    • 识别重要属性

  2. 将所有用例产生的局部概念类图进行合并,建立软件系统的整体概念类图

交互图

交互图是描述对象之间协作的模型。它包括顺序图、通信图、交互概述图和时间图四种类型,其中,顺序图是最常用的一种。

顺序图将交互表示成一个二维的图表,其中纵向是向下延伸的时间轴横向是参与协作的对象。需求分析阶段的系统顺序图横向仅包含两个对象:外部参与者系统

下面是一个简单的顺序图

Screen Shot 2024-06-17 at 4.26.07 PM

顺序图的消息类型有同步消息、异步消息和返回消息;组合段类型有 opt (可选项)、 loop (循环)和 alt (多选一)等。在需求分析阶段,消息的标注用自然语言即可。

状态图

状态图可以用来描述复杂的对象协作与交互行为。UML 的状态图发展自有限状态机理论的状态转移图,和它有很大的相似性。

下面是一个简单的状态图

Screen Shot 2024-06-17 at 4.34.50 PM

结构化分析

TODO