`
isiqi
  • 浏览: 16467183 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多
一、概述
据权威部门统计,目前软件的成功率约为25%,75%的软件是失败的。在这75%的失败中,约有50%以上的软件是由于需求的原因造成的。作为软件的设计和开发人员常抱怨用户需求不明确,需求常处于变更状态。新的需求往往在开发阶段才被用户提出。造成软件的完成日期不断的迟后。
一般的软件企业,往往只口头上注重用户需求。但由于没有科学的管理方法,实际上他们描述的用户需求是杂乱无章的,只言片语的。不能有效地和系统设计、开发保持同步最后开发出来的软件产品和实际有很大的差异。导致软件的失败。有证据表明,在需求阶段修正错误的工作量,是在系统设计阶段修正错误的1/10;是在开发阶段修正错误的1/100,是在发布产品阶段修正错误的1/1000。当然这是对大型系统而言,对于不同的系统,随系统的复杂程度这个比率会有所不同。
用户的需求的增加具有渐进的、增量的特点。随着需求分析人员和用户逐渐深入的交流,用户在不断地整理、规范自己的需求。需求分析人员须牢记的是用户不可能一下子给出一个完整、清晰、规范的用户需求。需求分析人员需从与用户的交流中,不断地挖掘,并加以整理,才能得到想要的需求。
需求分析一般来说需要有一个需求分析的团队,如用户代表、系统分析人员、开发人员、需求管理人员等,他们的分工不同各有侧重点。对于小型或中型项目人员可以兼任。
基于上述原因,需要从理论上规范用户需求的收集和整理。本文结合系统建模,给出了需求分析的一般性方法。它如下的包含了两个方面:
1、技术层面
给出需求分析的系统框架,它包含了需求的项目、参与需求分析的用户、用户对于需求的可操作权限(安全性)等。
2、操作层面
给出了需求收集、整理、分析的一般性方法。
其中介绍了系统建模和需求分析间的相互关系,最后介绍了目前几种流行的需求分析产品及它们的特点。

二、需求分析的基本概念
需求分析的目的是完整、准确地描述用户的需求,跟踪用户需求的变化,将用户的需求准确地反映到系统的分析和设计中,并使系统的分析、设计和用户的需求保持一致。
需求分析的特点是需求的完整性、一致性和可追溯性。
完整性:是准确、全面的描述用户的需求。
一致性:是通过分析整理,剔除用户需求矛盾的方面,规范用户需求。
可追溯性:有两个方面的含义,整理和规范的需求,其一,需要不断的和用户进一步交流,保持和用户最新的需求一致;其二,和系统分析(设计)保持一致。
因此在需求分析之前我们必须建立需求分析技术层面的基本框架,从技术上保证需求分析的要求,在此基础上我们进行的需求分析才能满足项目对需求分析的要求。

三、需求分析的系统架构
本节描述的是进行需求分析之前,如何在技术层面上建立需求分析的系统架构。

需求分析需要采用需求分析的软件。上图简要描述了需求分析软件的架构。需求分析软件一般采用C/S的结构,需求分析人员作为客户对服务器进行操作,操作主要由四个方面:系统管理(含用户的创建和授权,定义项目的术语表等)、项目视图(涉及项目的相关操作)、需求类型视图(涉及需求类型的相关操作)、需求视图(涉及需求的相关操作)。
项目包含一个或多个需求类型,需求类型包含一个或多个需求。里程碑是特定版本的需求的集合(需求分析软件含有简单的配置管理的功能),它作为软件产品的功能依据。自动文档生成是通过文档模版将里程碑的需求,自动生成相关文档。
3.1 项目
项目在总体上定义了一个应用和系统所涉及到的需求及需求涉及的范围。它包含了在需求分析过程中参与需求分析的人员、需求类型、包含于需求类型中的需求。此外它还包含了如下信息:
项目的相关信息(如创建人员)
项目的里程碑
外部的可追溯性
安全性框架等。
3.2 用户/用户组
用户是指参与需求分析的人员,一般由软件产品的最终用户、软件开发人员、系统设计员、测试人员等组成。在需求分析产品中用户包含用户的基本描述和联系方式(如电子邮件)等,目前大多数需求分析产品还含有消息通讯的机制(类似于QQ),及时地将需求的变化告知相关的需求分析人员。
用户组是指具有相同操作权限的一个或多个用户。用户组可以被指定到特定的项目或需求(用户组中的用户对此具有相应得操作权限)。
3.3 安全性
安全性是指在需求分析过程中,用户对需求的操作权限。安全性防止未授权的用户对关键性需求的操作。安全性是用户/用户组与需求之间的一种关系。
一般来说安全性有三个方面的含义:
系统管理
系统维护(系统数据备份等)、用户管理、用户组管理等。
安全性框架
定义用户的基本操作权限。这种操作权限和具体的项目、项目需求无关。如一个用户添加的需求只能由这个用户自己删除等。安全性框架又可以分为两类:
存取级别(Access Level)创建、查看、维护需求。
删除级别(Delete Level)删除需求。
特定需求的安全性
建立用户/用户组与特定需求的关联,以确定此用户/用户组对需求的操作权限。
3.4 需求类型/需求
需求类型通常是以功能划分的较高层次的需求,如用户界面。需求是所要构建的系统或应用所要满足要求的说明,需求可以由业务规则、处理流程、人员的组织结构获得。需求包含于需求类型之中。需求类型/需求一般是用文字描述的,此外还可以通过需求的属性、外部文件来描述需求。
3.5 属性
属性用来描述需求相关特性,属性一般可分为两类。
系统属性:描述需求的系统特点,如需求是否被确认等。
自定义属性:由用户自定义用来描述需求的属性。如描述人员的电话号码等。
3.6需求网格
需求网格是一组相关的需求用网格的形式表示,主要用于需求的分析。一般来说可以定义显示的方式,如针对某个用户显示他所创建的需求、针对某类功能显示相关的需求等等。
3.7 需求映射
考虑这样的背景,在一个实时系统中,数字信号的采集与传输在不同的控制系统中均使用相同的实现方式,它们的需求也相同。在这种情况下我们可以采用需求映射的技术,需求映射是在不同的项目中使用相同的需求。

在图中有三个项目,项目A中的需求R3被共享出来,项目B中的R3的需求映射到项目A中的需求R3。
3.8 可追溯性(Traceability)
可追溯性是需求的一致性表现形式。它主要包含以下几个方面的含义:
保持和用户要求的同步
必须牢记的是用户需求是不断变化的。需求分析需要适应需求的不断变化。
保持需求之间的完整和一致
用户从各个层面提出的需求,往往含有相当多的矛盾,需求分析的一个重要的方面是要消除这些矛盾,规范用户的需求。此外需求之间的依赖性也可以通过可追溯性来表示。
保持需求和系统设计间的同步
在大多数项目中,需求分析和系统设计没有的必然联系,这种情况造成的后果是软件产品和实际的需求相差甚远。例如采用手工的方法,可以使需求与系统设计保持一致。但这种方法是不安全的,因为没有相应的机制来强制相关人员遵守规则。所以必须从技术层面来保证需求和设计的一致,目前大多数的需求分析工具均有和系统设计工具保持同步的插件,如Borland的CaliberRM、IBM的ROSE、Telelogic的DOORS等。
3.9 报告(Report)
报告可以理解是需求的视图,从不同的层次来描述需求,报告可根据需要进行过滤,如针对某一需求类型的报告、针对不明确需求的报告等。报告一般可以分为:
细节报告
描述需求的细节。
状态报告
描述需求的状态,需求的状态可分为接受、不明确、拒绝等。
责任报告
参加需求分析的人员对其负责的需求产生的报告。
3.10 讨论
讨论是在需求分析过程中,需求分析团队成员之间的一种协作机制。这种机制可使相关人员就需求的定义、描述、状态、优先级、一致性、完整性等进行讨论,得出正确的结论。
讨论一般来说分两个级别,项目级别、需求级别。
3.11 文档引用
一个需求的描述可能需要外部的文档,文档引用是用外部文件来描述相关需求的附加信息。目前需求分析产品支持最多的文档类型是MS WORD,此外根据产品的不同,还支持Excel、图像文件、HTML、及OLE等。
3.12 里程碑(BaseLine)
需求是不断变化的,软件产品根据不断变化的需求有不同的版本,每一个版本的软件除了软件自身的BUG外,就是满足新增加的需求,而软件产品需要其实现的功能具有稳定性。里程碑就是需求分析过程的一个阶段结果,这个阶段结果是固定不变的。
3.13 文档的自动生成
参与软件开发的人都有这样的体会,在软件产品完成之前很难给出软件的各种文档,就是给出了相应的文档,文档之间也有各种各样的矛盾。这是需求、设计、开发缺乏同步的表现。
如果我们在软件的开发过程中,严格遵循软件的开发规范,采用相应得软件工程工具,上述情况就可以避免。
在需求分析中,需求分析产品均可以自动根据分析的结果生成相应得文档,文档的格式可以有MS Word、PowerPoint、HTML等。这里我们主要介绍一下Office Word文档的生成方式。
在自动生成文档之前,我们需要定义文档模版。根据所要生成文档的格式和需求分析软件的相关命令,在Office Word创建文档模版。文档模版创建好之后,在需求分析软件中选择里程碑,自动生成出Office Word文档。
四、需求的收集和整理
需求分析是从用户的角度描述用户的数据、活动、地点(位置)、人员组织、计划、业务逻辑(业务目标)等相关信息的一个过程,它涉及到如何收集用户的需求,以及如何将这些需求规范化等方面。需求分析的第一步工作是界定需求的边界,主要描述项目的、项目的业务要求、项目所要满足的基本特性等。
在第三节中我们简要描述了如何从技术层面上使需求分析的过程规范化,本节主要阐述如何进行需求的收集和整理。
4.1 数据
数据是指需求涉及的相关静态信息。在需求分析过程中,数据是从用户的角度来描述的;在系统设计过程中,数据用面向对象的方法进行整理和规范,最终形成Class Diagram。
4.2 活动
活动是项目要满足的业务逻辑和规则。它至少有二个层次:
基本目标
简要描述业务逻辑和规则。
功能描述
描述活动执行的过程,以及在执行过程中涉及到的相关资源、活动之间的关联、依赖性、约束性等。
考虑到需求分析和系统设计的一致性。活动在系统设计阶段,可采用用例来表示,通过序列图、活动图、以及状态图来进行细化。
4.3 人员组织
描述用户人员组织结构。如企业领导、部门、部门人员、相关客户信息等。
4.4 地点(位置)
描述需求和地点、位置相关的系统设计中网络、分布式计算的前置条件。
五、需求分析软件
目前流行的需求分析软件有IBM公司的RequisitePro、Telelogic公司的DOORS、Borland公司的CaliberRM。这些软件均能满足本文中描述的对需求分析功能上的要求,但各有特点,RequisitePro和大多数系统设计软件有较好的结合,目前的版本对Office 2003的支持不够。DOORS在实时系统的需求分析中有良好的表现。CaliberRM对Office有很好的支持,中文的问题也解决得很好,支持Office 2003的版本。
六、结论
需求具有渐进的,不断变化的特点。需求分析是一个需求分析团队的工作,在需求分析理论的指导下需要采用需求分析的商业化产品,这样才能保持需求和设计的同步,没有这种同步,需求分析不会有太大的实际意义。
大多数系统设计产品如Rose、Together、Tau、Rhapsody(实时系统的系统设计工具)等,具有部分的需求分析功能,严格意义上它们不是需求分析的产品。但他们均有和需求分析产品的接口。
一般说来软件项目涉及到的很多方面,如需求分析、配置/变更管理、系统设计/建模、测试等。本文只是简要描述了作者对需求分析的一些体会。
分享到:
评论

相关推荐

    用户需求分析方法

    本文将基于给定的标题、描述、标签以及部分内容,深入探讨用户需求分析的核心概念、作用以及常用的分析方法。 ### 一、用户需求分析概览 用户需求分析是在系统设计之前和设计开发过程中,对用户需求进行的调查与...

    需求分析方法资料集合

    5. **软件项目如何进行需求分析**:此主题可能探讨了需求分析的具体步骤,如创建需求文档(BRD)、绘制用例图、制定需求矩阵等。同时,可能涉及版本控制和变更管理,确保需求在整个项目生命周期中的准确性和一致性。...

    软件需求分析方法创新研究.docx

    本文旨在探讨软件需求分析方法创新的途径及实践,以提高软件需求分析的质量和效率。我们引入了三种创新方法:功能需求分析、行为需求分析和业务需求分析。功能需求分析通过深入挖掘用户需求,将功能需求细化到模块...

    需求分析过程、方法和实践

    本文将深入探讨需求分析的过程、方法和实践,旨在揭示各个环节中可能遇到的问题及其解决策略。 一、需求分析过程 1. 识别需求:这是需求分析的起点,通常通过与客户或利益相关者的沟通来完成。这一步需要明确业务...

    软件工程-需求分析的概念,方法,步骤,工具

    本文将深入探讨“软件工程-需求分析”的概念、方法、步骤以及所使用的工具,旨在为软件开发人员提供全面的理解和实践指导。 **一、需求分析的概念** 需求分析是软件开发的第一个正式阶段,它是对用户需求进行收集...

    需求分析理论——介绍

    本篇文章将深入探讨需求分析理论及其在软件开发中的重要性。 首先,我们需要理解什么是需求分析。简单来说,需求分析是通过收集、分析和记录用户对软件系统的需求,以便制定出满足这些需求的解决方案的过程。它涉及...

    软件工程(数据字典、数据流图、需求分析).pdf

    本资料主要探讨了三个核心概念:数据字典、数据流图和需求分析。 1. 数据字典 (Data Dictionary) 数据字典是系统设计中的一个重要工具,它提供了对系统中所有数据元素的详细描述。在例子中,数据字典包含数据流条目...

    软件项目的需求分析

    本文将详细探讨软件需求分析的概念、重要性、层次结构、内容以及如何获取、分析、编写、验证需求规格说明,并管理需求变更。 首先,软件需求可以分为业务需求、用户需求和系统需求三个层次。业务需求通常来自于组织...

    需求分析师培训课件Section01

    在敏捷环境中,需求通常是迭代和增量式的,因此需求分析师需要掌握敏捷方法(如Scrum、Kanban)下的需求管理策略,如敏捷 backlog的维护、迭代规划等。 最后,课程可能会探讨软技能的培养,如冲突解决、谈判技巧,...

    -需求分析方法论.pdf

    本文主要探讨了需求分析的方法论,旨在帮助IT中心更好地理解和执行需求分析任务。 首先,需求分析的初衷是尊重需求方的自主权,但同时也需要IT中心提供必要的支持和指导。在需求方的项目管理和分析能力不足的情况下...

    UI界面设计的需求分析方法.doc

    为了解决这个问题,本文讨论了一种界面需求分析的方法,意在探讨研究如何完成针对系统所有用户的界面需求定义,从而开发为用户所接受的界面。该方法的目的在于帮助设计人员快速明确用户的界面需求,让用户充分参与到...

    软件需求分析方法总结

    本文将深入探讨“软件需求分析方法”,并结合“vchome_req.CHM”文档,解析其中可能包含的需求获取和管理策略。 需求分析的主要目标是理解用户需求,确保软件产品能够满足其业务目标。以下是一些常用的需求分析方法...

    需求分析与系统设计 第3版

    《需求分析与系统设计》第三版是一本深入探讨软件工程中关键步骤——需求分析与系统设计的权威著作。这本书详细阐述了如何有效地理解和提取用户需求,以及如何将这些需求转化为可实施的系统设计方案。在软件开发过程...

    需求分析技术文档及工作方法

    本文将深入探讨需求分析技术文档的制作以及有效的工作方法。 首先,我们要理解需求分析的重要性。需求分析是收集、理解并记录用户或客户对软件系统期望功能和性能的过程。通过这个阶段,我们可以识别出项目的目标、...

    xuqiufenxi.rar_考试系统_考试系统 需求分析_考试系统需求分析_软件需求分析_需求分析

    本文将深入探讨“考试系统需求分析”,帮助读者理解这一重要环节,以及如何进行有效的软件需求分析。 一、考试系统的需求分析 考试系统需求分析是对考试系统功能、性能、用户界面、安全性等方面的全面描述和理解,...

    04 论软件需求分析方法和工具的选用——IC行业内部的CAD应用.doc

    本文聚焦于集成电路(IC)设计领域的软件项目,探讨了软件需求分析的方法与工具选用,特别是在计算机辅助设计(CAD)应用背景下的实践。文章通过一个具体的案例,即一个用于辅助电路设计的软件开发项目,详细介绍了...

    软件设计需求分析的方法

    4. **需求分析方法和技巧**: - 吸收和同化用户需求,用商业化策略解决需求与实现的矛盾。 - 使用结构化语言和图形工具(如流程图、决策表、矩阵)清晰描述功能,确保无歧义性和可追踪性。 - 需求应具备可验证性...

    软件需求分析方法.pdf

    根据给定的文件内容,我们可以深入探讨软件需求分析的理论、目标以及具体组成部分。 首先,软件需求分析理论涉及到将复杂的应用软件分解为一系列功能域,每个功能域又由多个问题组成,这些问题对应于软件中的具体...

    软件测试需求分析与定义方法

    通过以上方法,我们可以更有效地进行软件测试需求分析与定义,确保测试工作的针对性和有效性。记住,软件测试的目标是尽早发现并修复缺陷,因此从需求阶段开始介入是提高测试效率和质量的关键。同时,良好的需求管理...

Global site tag (gtag.js) - Google Analytics