`
dftwilson
  • 浏览: 23761 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

需求分析-迭代

 
阅读更多
前面我一直在反复强调这样一个观点,需求分析不是一蹴而就的,是一个反复迭代的过程。它将从第一次需求分析开始,一直持续到整个项目生命周期。为什么这样说呢?让我们一起来分析分析。

在第一次的需求分析阶段,我们在一段时期内需要与客户进行反复地讨论,这个过程往往是这样一个反复循环的过程:需求捕获->需求整理->需求验证->再需求捕获••••••

需求捕获,就是我们与客户在一起开研讨会,讨论需求的活动。客户可能会描述他们的业务流程,这时我们在纸上绘制简单的流程草图,及时地记录下来;客户在描述业务的同时,可能会反复提到一些业务名词,详细询问这些名词的含义,以及它们与其它名词的关系,用类图或者对象图绘制简单的草图;客户在描述业务的同时,还会提出今后的软件希望实现的功能,如能够展示某个报表、能够导出文件,以需求列表的形式记录下来。一个功能,在需求列表中会有多个需求,而每个需求应当能够用1、2句话,在20个字以内就可以描述清楚。需求列表是客户提出的最最原始的需求,他不掺杂任何分析设计,是我们的每项功能必须实现的内容。需求列表是需求验证以及日后的用户验收测试的依据,不论我们今后如何分析和设计这些功能,都要能如实地实现这个列表中提出的需求。(需求列表应当如何编写,将在后面的章节详细描述。)

需求整理,就是在需求研讨会后,需求分析人员对研讨内容的分析和整理的过程。首先,需求分析人员应当通过用例模型,划分整个系统的功能模块,以及各个模块的业务流程。用例模型分析是一个由粗到细的过程,这样一个过程也是符合人类认识世界的思维习惯的一个过程。最先,我们应当对整个系统绘制用例图,设计用例场景,并依次对这些用例进行用例描述、流程分析、角色分析等分析过程。当然,在整体用例分析的同时,我们还应当进行一个整体的角色分析,绘制一个角色分析图,进行一个流程分析,绘制一个流程分析图(可以是传统的流程图、UML中的行动图,甚至一个简单的示意图,等等)。

然后,我们再在整体用例图的基础上,依次对每个用例绘制用例图。每个用例图中,会更细致地划分出多个用例,并依次进行用例描述、流程分析、角色分析等分析工作。如此这般地不断细化,直到我们认为需求已经描述清楚为止。

在一个系统中,用例需要细化几次,是由这个用例的业务复杂程度决定的。对于一个简单的用例,只需要细化一次就够了;而对于比较复杂的用例,则需要细化2~3次,甚至更多。

用例分析的过程,之所以称之为分析,它掺入了很多需求分析人员对业务的理解与设计:模块如何划分、流程如何设计、业务如何转换,等等。用例分析,还需要让需求分析员与架构师、设计师等技术人员共同协作来完成,因为用例分析还包含对业务需求的技术可行性分析。只有一份可行的需求分析,才能为后续的设计开发扫清障碍,有效降低项目风险。最后,需求分析员应当将需求列表中的内容,逐一地与用例进行核对,以避免分析人员忽略用户的某项业务需求。(后面将详细描述用例模型的搭建过程。)

在用例分析的同时,需求分析人员还需要对业务中的相关事物,制作领域模型。领域模型,是对用户业务领域中相关事物、相互关系、相互行为操作的描述,它是以对象图和类图的形式表达的。需求人员对领域模型的分析,对业务理解的深度,对日后软件的设计,以及软件的功能扩展、升级演化,都起到了至关重要的作用。(后面将更加详细地讲述领域模型。)

最后,当我们完成了一系列的分析整理并形成文档以后,应当对及时地与客户进行反馈,确认我们的理解是否正确,也就是需求验证工作。需求验证工作应当贯穿整个研发周期,并且在不同时期表现出不同的形式。首先,在需求分析阶段,需求验证工作表现为对需求理解是否正确的信息反馈。需求分析人员与客户再次坐在一起,一项一项描述我们对需求的整理和理解,客户则时不时地对一些问题进行纠正,或者更加深入地加以描述。我们则认真地记录,回来整理,并等待下一次的验证。在需求分析后期,我们还可以制作一些简单的原型,更加形象地描述我们对需求的理解,会使我们与客户的沟通更加顺畅。随后的设计开发阶段,我们则应当以迭代开发的形式进行。每开发完一个迭代周期,将开发的成果与客户反馈。这样做的结果是,客户可以及时地提出我们对需求理解的偏差,或者及时提出对我们设计不满意的地方,使我们存在的问题得到及时地发现与解决。问题及时的解决,使我们修复问题的代价得以降至最小。之后,当开发进入到验收测试阶段,我们则是与客户一道,一项一项地验证我们的软件是否满足需求列表中要求的业务需求。最后,当软件迎来下一次升级开发时,我们将开启另一次轮回。

因此,需求分析就是按照这样的过程,每次多理解一些,再多理解一些,更多理解一些,逐渐深入的过程。每深入一步,我们的软件就更接近客户的满意。
分享到:
评论

相关推荐

    编程之-迭代法

    这些数值分析算法的迭代本质不仅体现了迭代法在解决复杂数学问题中的有效性,也展示了其在逼近精准结果中的重要性。 转向数据结构领域,迭代同样在其中扮演着关键角色。数组、链表、树等数据结构的遍历和操作往往...

    软件工程需求分析-可行性报告

    根据提供的文件信息,我们可以深入探讨软件工程中的需求分析及其相关概念。以下是对这些知识点的详细阐述: ### 软件工程需求分析-可行性报告 #### 需求分析概述 需求分析是软件开发生命周期中的关键阶段之一,其...

    MATLAB编写的JACOBI,G-S迭代法

    MATLAB是一种广泛应用于科学计算、数据分析和工程领域的高级编程语言,尤其在数值计算方面具有强大的功能。本资源包含MATLAB编写的JACOBI(雅可比)和Gauss-Seidel(高斯-赛德尔)迭代法实现。这两种迭代方法是求解...

    编译原理之算符优先算法-迭代法

    《编译原理之算符优先算法-迭代法详解》 在计算机科学的编译原理中,算符优先分析法是一种重要的语法分析技术,用于解决文法规则中...在实际编程中,可以根据具体需求对其进行优化和扩展,以适应各种不同的文法特性。

    Jacobi迭代法求解线性方程组以及Gauss-Seidel迭代法求解线性方程组的程序

    在数值分析领域,求解大型线性方程组是一个核心问题。当系统矩阵规模较大时,直接方法(如高斯消元法)的计算复杂度和内存需求可能会变得非常高。因此,迭代法成为了一种实用的替代方案。本文将详细讨论两种常用的...

    第2章 可行性研究及需求分析-1.pptx

    需求分析应该是一个迭代的过程,以适应市场环境的易变性和用户本身对于新系统要求的模糊性。 在需求分析中,需要确定系统的功能性需求和非功能性需求。功能需求是软件系统的最基本的需求表述,包括对系统应该提供的...

    matlab开发-迭代关闭点方法

    在现代的数据处理与分析领域,特别是在三维重建、机器人定位以及图像配准等应用中,精确的数据点匹配是至关重要的。为了实现这一目标,研究人员和工程师们开发了多种算法,其中迭代关闭点方法(Iterative Closest ...

    MATLAB- 阈值分割-迭代阈值分割+最大类间方差阈值源码.zip

    通过阅读和理解源码,我们可以学习如何在实际项目中应用这些阈值分割技术,并且可以对源码进行修改和优化以适应不同的图像和需求。 总之,"MATLAB- 阈值分割-迭代阈值分割+最大类间方差阈值源码.zip"这个资源为学习...

    软件开发流程与质量管理-迭代式开发

    2. **迭代过程**:包括需求分析、设计、编码、测试等,每个迭代结束时,交付一部分可工作的软件。 3. **里程碑管理**:设定关键节点,监控项目进度,确保各阶段目标达成。 #### 三、项目监督与进度控制 项目监督...

    平台建设项目设计开发一体化-版本迭代需求清单模板.docx

    此外,需求描述和需求提出人是需求分析的基础,他们为迭代提供了具体的目标和方向。测试人员签字则表明他们已经对新的或修改的功能进行了充分的测试,保证了产品质量。 测试类型是保证软件质量的重要环节,可能包括...

    Uml和模式应用 配套视频笔记2

    通过阅读《UML和模式应用》的配套视频笔记,我们可以深化对UML的理解,学习如何有效地应用设计模式,同时掌握如何在实际项目中进行需求分析和迭代开发。这些知识对于提升软件开发的专业素养至关重要。

    需求分析报告-软件项目

    【需求分析报告-软件项目】 需求分析报告是软件开发过程中的关键文档,它详细阐述了软件项目的目标、用户特点、系统功能与性能规定、运行...在实际操作中,需求分析报告需要不断更新和迭代,以适应项目的变化和发展。

    基于迭代化增量开发模型的高职“数据结构”课程实验设计.pdf

    迭代增量模型本质上是一种周期性的开发方法,通过重复的核心开发活动,如需求分析、数据结构/算法设计、编码实现和测试,逐步细化问题解决方案和实现功能。在软件开发的每个迭代周期中,项目的功能模块会逐步完善,...

    3_6.rar_高斯 - 赛德尔 迭代法 -- 源代

    高斯-赛德尔迭代法(Gauss-Seidel Iteration)是一种在数值分析中解决线性方程组的有效方法。在处理大型线性系统时,直接求解如高斯消元法可能会面临计算量过大和存储需求高的问题,而迭代法则提供了一种更灵活、更...

    Matlab线性方程组的迭代解法Gauss-Seidel迭代法.docx

    2. 每次迭代都需要更新所有变量,因此对于大规模问题,内存需求可能较高。 3. 收敛速度依赖于矩阵的特性,某些情况下可能很慢。 总的来说,Gauss-Seidel迭代法是解决大型线性方程组的有效工具,特别是在实际工程和...

    需求管理-需求分析文档

    ### 需求管理与需求分析文档:构建项目成功的基石 #### 一、需求管理:项目的灵魂 **需求管理**,作为项目管理的核心环节,扮演着桥梁的角色,连接着客户需求与项目实施之间的鸿沟。其本质在于理解、记录、跟踪和...

    基于.NET的需求分析和解决方案设计教程--1、商务解决方案设计

    《基于.NET的需求分析和解决方案设计教程--1、商务解决方案设计》 本文主要探讨的是如何运用Microsoft解决方案框架(MSF)进行商务解决方案的设计。MSF是一套用于设计和开发企业解决方案的模型、原则和指导方针,...

Global site tag (gtag.js) - Google Analytics