需求分析实战

需求分析一般需要画 Rose 中的三种图:用例图(表达系统有哪些用户及各用户可以使用哪些功能)、活动图(表达主要业务流程)、状态图(详细表达各状态之间跳转关系)

第1步:从业务目标到特性列表

业务目标是组织或客户方的高层对未来系统的期望,最终要落实到使用这套系统的人(最终用户)实际操作中所需的功能 - 这些功能被称为“用户需求”。如果从业务目标向用户需求直接过渡的话,我们会发现中间的“跨度”过大,所以可以借助特性列表技术作为中间的“跳板”。

特性(Feature)在实践中其实有两种用法:

*  有时,我们把它看作高度概括的功能性需求,它的数量将比具体的用户需求的数量要少一个数量组。它的作用是支持从业务目标到用户需求的过渡思维:“为了达到期望的业务目标,未来系统应在大方向上具有哪些方面的特性,每个特性再有一组功能来支撑...”

*  另外一些实践者把特性当作比“功能更小的需求单位”,特性驱动开发(Feature Driven Development,FDD)方法也持这种观点;

第2步:从特性列表到用例图

所谓用户需求,就是用户希望软件系统能为他做什么,用例技术是捕获和记录用户需求的合适技术,它是以用户为中心的,用例名是用户需求最直观、最简便的反映。

从用例图中很清楚地看到,PM Tool的主要用户分为两种角色,项目成员和项目经理。有些功能是只有项目经理才能使用的,在用例图中通过“包”的方式给予清晰说明,当然,用例图辅以用例简述技术对每个用例的功能进行简要说明效果很好,在些未列出。

第3步:从用例图到用例规约

用例图并不足够。换句话说,需求分析进行到用户需求的层次并不足够,因为如果不明确定义软件系统的行为需求,我们就不知道要开发什么。基于用例技术的需求实践中, 此时应和用户一起编写用例规约。

------------------------------------------------------------------------------------------------

用例:添加项目任务

1、用例名称

添加项目任务

2、简要说明

通过此功能,项目经理可以为项目添加任务

3、事件流:

3.1 基本事件流

1) 项目经理进入“添加项目任务”界面。

2) 系统自动显示已经存在的“项目列表”。

3) 项目经理选定具体项目,并输入任务的名称、任务目标、开始日期、结束日期等基本信息。

4) 项目经理确定创建此任务。

5) 系统完成项目任务的创建。

3.2 扩展事件流

如果该任务的开展必须在特定任务完成之后进行,则项目经理可选择一个或多个任务作为“前置任务”

4、非功能需求:

操作必须方便直观

5、前置条件

身份验证:登录用户必须是项目经理身份

6、后置条件

任务被成功添加到项目,或因任务所在项目还未被创建而退出。

7、扩展点

8、优先级

高。

---------------------------------------------------------------------------------------

需求验证与需求启发

在需求分析过程中需要不断地和客户进行交流,这时客户非常希望能够看到给他带来实感的界面图甚至可执行的系统原型。而开发方最担心的问题是客户需求的不断变化,所以他们也希望能够尽早掌握客户的真正需求,并希望需求成果得到客户的确认。

为此,我们可以在需求分析期间就开始界面设计,并将界面草图等设计成果用于和客户的交流当中,这样可以增加实感、方便交流,并帮助客户“发现”他真正想要的功能。当然,界面设计的成果并不应放入《需求文档》,因为他们是设计而不是需求。

举个例子。在一开始和客户讨论“添加项目任务”这项需求时,他们未必能意识到两个需求细节:

* 他们希望为每项任务指定优先级,这样有利于承担多项任务的项目成员在时间不够时权衡取舍;

* 出于易用性的极高要求,他们要求确定任务细节的时机必须非常灵活.

后来,在界面图和可执行原型的帮助下,用户很容易地意识到了“令人不满的地方到底在哪儿”,明确提出上面二个细节,开发方也更新了“添加项目任务”的界面原型。如下图,用户只输入任务名称和所属项目就创建任务,也可以同时指定许多详细信息。

最终成果:《软件需求规格说明书》

需求分析工作的最终成果是《软件需求规格说明书》。

非功能需求的满足程度对软件项目的成功非常关键,因此,《软件需求规格说明书》必须系统地描述非功能需求的具体要求。非功能需求大致分为质量属性和约束两大类。质量属性是软件系统的整体质量品质----所谓整体品质,就是它往往和大多数功能有关,而不是仅仅表现在某个功能“内部”。至于约束性需求,它们是架构设计中必须遵循的限制,并有可能“衍生”出质量属性需求和功能需求。

一部分非功能需求来自用户。诸如性能、易用性等软件质量属性,虽然不像功能需求那样直接帮助用户达到特定目标,但并不意味着软件质量不是必需的,恰恰相反,质量属性差的软件系统大多都不会成功。还有一部分非功能需求来自开发者和升级维护人员。软件的可扩展性、可重用性、可移植性、易理解性和易测试性先进非功能需求,都属于“软件开发期质量属性”之列,它们都将影响开发和维护成本。也有一部分非功能需求来自客户组织。架构师必须充分考虑客户对上线时间的要求,预算限制,以及集成需要等非功能需求,还要特别关注客户所在领域的业务规则和业务限制。

例如,如果PM Tool很难使用,那反而增加了项目组的工作负担,不利于提高效率,因此,PM Tool必须有较高的易用性,再例如,PM Tool可对扩展性有一定要求,这也是非功能需求。

--------------------------------------------------------------------------------------------

总结与强调

本立道生。软件需求方面的知识和能力可谓软件架构师的“起跑线”,缺了“这一块”就意味着输在起跑线上。

软件架构师面对纷繁复杂的需求,必须对需求分类、需求折衷和需求变更的知识和规律有透彻的了解,从而把握大局、抓住重点,做出最合适的架构设计决策。

时间: 2024-11-15 00:07:45

需求分析实战的相关文章

MVC实战之排球计分(一)—— 需求分析与数据库设计

一.需求分析: 这个程序是排球计分程序,其业务非常简单,具体如下: 1.本程序可以选择用户身份,通过不同角度记录比赛分数. 2.不同身份记录的比赛成绩将会存储在不同的数据表(目前适合运动员和观众使用). 3.用户键入数据后,可以继续对数据进行操作(如:删除.修改.查看详情). 4,不同的身份的用户 ,不能修改非己的数据.只能修改自己的数据. 这个项目的用例图如下: 数据库设计:设计数据表之前,首先进行实体和关系的识别与确定.通过需求分析,可以观察得出,本项目的实体有:观众,运动员.(观众可以修改

【SSH项目实战】国税协同平台-28.投诉受理需求分析&CDM&PDM

我们接下来编写"投诉受理"模块的功能. 首先进行需求分析,我们来看一下我们的需求: 界面描述: 2.7.2功能说明 (1)投诉受理管理:查询用户提交的投诉信息,可以根据投诉部门(部门A/B).投诉时间段.状态进行查询.在列表信息中展示投诉标题.被投诉部门.被投诉人.投诉时间.状态(待受理.已受理.已失效).操作:其中操作栏内内容为"处理",点击"处理"则在打开的查询页面中查看具体的投诉信息并且可以多次回复投诉信息:一旦回复则说明已受理该投诉. (

在线客服系统 开发实战系列(一:需求分析及技术方案初步选型)

在这个系列的文章里,我将尝试一步一步开发一套功能完备的在线客服系统,并最终将其开源在 Git 上,欢迎关注. 鉴于水平限制,难免有所疏漏,欢迎批评指正. 文章将分为几个部分 一.需求分析及技术方案初步选型 二.技术方案选型,验证 三.底层框架设计,开发 四.服务器设计开发 五.客户端设计开发 六.Web端设计开发 在这个系列的文章中,您将了解并学习到以下技术知识: MSMQ.YUI.WebSocket.WinForms 如果这些技术对您有用,还请您 推荐 一下本文章,谢谢! 首先我们大概看看什么

开源在线客服系统开发实战(一:初步需求分析与技术选型)

(已移除参考产品链接) 在这个系列的文章里,我将尝试一步一步开发一套功能完备的在线客服系统,并将其开源在 Git 上,欢迎关注. 目前进度:开发框架初步搭建,技术验证DEMO,Git 地址随后附上,敬请关注. 鉴于水平限制,难免有所疏漏,欢迎批评指正. 文章将分为几个部分 一.需求分析及技术方案初步选型 二.技术方案选型,验证 三.底层框架设计,开发 四.服务器设计开发 五.客户端设计开发 六.Web端设计开发 在这个系列的文章中,您将了解并学习到以下技术知识: MSMQ.YUI.WebSock

DDD实战成绩管理---需求分析

需求的分析我们采用四色模型.从用户故事中找出MI,然后围绕MI找出其中的role,ppt,des.本次先对两个优先级最高的用户故事进行四色模型建模. 用户故事1建模:作为教务处老师,我要建立教学班,以便老师和学生彼此都清楚他们之间的教学关系. 该用户故事中教学班是时刻时段,代课老师和上课学生均作为参与者角色,课程在此处也作为角色参与本次教学组织.四色模型图如下图1:                                                                  

【SSH项目实战】国税协同平台-4.用户管理需求分析&CRUD方法1

上次我们完成了日志模块的配置和基础增删改查类,下面我们根据用户的需求来正式开发项目的业务模块. 下面我们主要来开发系统用户管理的模块 我们有用户的功能说明书,打开功能说明书来看看这个模块需要什么功能: 功能说明 用户管理:可以根据用户名查询系统用户:在页面中点击"新增"可以添加用户.点击删除可以批量删除选中的用户."导出"则导出所有的用户列表到excel文件中并弹出下载提示框给用户下载:"导入"将需要用户将本地的用户列表按照一定格式将excel中

【Cocos2d实战】最后一战01:基本环境和需求分析

需求和游戏内容的基本分析: 在开发一个手机游戏之前,我们要首先分析一个游戏的基本特点,包括游戏的基本角色和属性,以及游戏的基本功能,游戏的基本规则,将整个游戏的基本流程画出来.然后在对我们游戏的场景各个进行分析,找出我们游戏中的难点和重点,对其分解. 游戏的部分效果图如下: 游戏的基本流程如下: 游戏角色 1.英雄 2.怪物 游戏规则 1.横版 2.按钮操作 3.怪物分拨出现. 4.关卡式 场景 1.载入场景 2.开始场景 3.游戏主场景 4.结束场景 难点分析 1.16个关卡的实现 2.工具类

【Cocos游戏实战】功夫小子第一课需求分析概要和开发环境的基本配

第一课的视频教程在此处. 在开发一个手机游戏之前,我们要首先分析一个游戏的基本特点,包括游戏的基本角色和属性,以及游戏的基本功能,游戏的基本规则,将整个游戏的基本流程画出来. 然后在对我们游戏的核心场景进行分析,找出我们游戏中的难点和重点,对其分解. 游戏的部分效果图如下: 游戏的基本流程和分层如下: 核心场景分析: 详细的视频分析请参照此视频教程,视频教程在此处.谢谢点击啦! :)

【springmvc+mybatis项目实战】杰信商贸-3.需求分析与数据库建模

开发步骤需求:生产厂家信息维护基础表FACTORY_C 1.业务需求:a)<需求说明书>     1)描述业务功能     生产厂家模块     功能:为在购销合同模块中的货物信息和附件信息它们都有所属的生产厂家. b)<概要设计>    1)细化描述业务功能    2)以表格形式数据库表(表+字段+描述) c)生产厂家信息维护基础表FACTORY_C功能:为在购销合同模块中的货物信息和附件信息它们都有所属的生产厂家.序号 中文名称        英文名称 类型(长度)  备注1.