首页 百科知识 用户需求的分析和定义

用户需求的分析和定义

时间:2022-10-09 百科知识 版权反馈
【摘要】:需求分析方法选择的好坏会最终影响需求分析的质量。访谈及实地调研法是一种最原始的需求分析方法,有时也是最有用的方法。结构化分析方法的核心思想是“自顶向下,逐步细化”,因为,人类认识事物的过程总是经历从不了解到了解,从了解到熟悉的渐进过程,所有问题的细节不是能立即捕获的,而是需要逐层地分解、逐步揭示,因此,该思想贯穿软件工程结构化方法学的始终,可谓之软件工程学的经典思想。

3.1.4 需求分析的方法

需求分析的方法很多,分析人员可以结合项目的实际情况、用户的参与情况以及分析人员自身素质选择最合适的需求分析方法。需求分析方法选择的好坏会最终影响需求分析的质量。

一、访谈及实地调研法

访谈及实地调研法是一种最原始的需求分析方法,有时也是最有用的方法。软件分析人员需要获取描述软件需求的第一手信息,就必须要深入用户的工作环境,与用户进行面对面地沟通,甚至是直接参与到用户的生产作业过程中,获取实际业务过程中的操作流程,并及时与用户就需求进行验证和确认。因此,无论通过哪种方式,它们都是保障软件分析人员正确获取需求的重要手段。本方法又可分为正式访谈和非正式访谈。

在正式访谈过程中,软件分析员给出准备好的问题,由用户一一作答,如对“学生信息管理系统”进行访谈方式的需求分析时,作为软件分析人员可以给出如下几个问题:

(1)每名学生包括如学号、姓名、性别等在内的哪些基本信息?

(2)学校的学生数量是多少?

(3)学生选修的课程有哪些?

(4)每门课程的考核方式是什么?

(5)成绩的评定是等级制还是百分制?

这种访谈方式过于呆板、封闭,所有问题均由软件分析人员设计,一旦其考虑问题不全面,就会遗漏某些需求的描述,且用户是完全被动地参与到访谈过程中的,没有很好地激发用户参与需求分析的热情,因此,最终获取的需求可能还需反复加工,或继续与用户沟通、确认甚至借助原型方可形成最后的需求分析结果。

故在访谈中更常用的是非正式访谈,在此种需求分析过程中,软件分析人员会站在一个更高的层次提出多个开放性的问题,由用户根据自己的工作生产经验自由发挥,如对“学生信息管理系统”进行非正式访谈时,更有经验的软件分析人员会提出如下几个开放性问题:

(1)学生的信息管理主要包括哪些方面?

(2)当前学生信息管理存在的问题是什么?

(3)你希望用软件来管理学生信息可以解决当前的哪些问题?

(4)学生信息检索的主要流程是什么?

这种方式的访谈很轻松、开放,它鼓励用户根据在实际工作中的切身体会说出自己对目标软件需求的理解,因此,用户完全主动地参与到需求分析的过程中了,他们在需求分析中的主体地位得到了确认,而他们也会更加积极地配合软件分析人员的需求分析工作。最终的需求分析结果也能非常客观地还原目标软件在用户脑海中的理解,有助于最后采用多种形式化的工具加以表达。

在访谈法实施的后期,软件分析人员还可邀请用户对某些关键需求进行“情景分析”,以确认其对该类关键需求的正确理解。“情景分析”在某种程度上演示了目标系统的行为,从而便于用户理解,它使用户在需求分析过程中始终扮演主动性角色,通过演示目标软件的工作行为,软件分析人员既可以确认已经获取的需求,又能得到一些意外的收获——用户提出的、分析人员却忽视了的重要需求,可谓一举两得!

例如,假设目标系统是一个为肥胖患者制订减肥计划的软件。采用“情景分析”技术由用户扮演软件进行如下的情景演示:软件在接受了某个肥胖患者的姓名、年龄、性别、身高、体重、腰围及其他基本数据后,经过数据分析可以为该患者制订一份饮食菜单。但作为用户公司的饮食专家会审查这些菜单,然后指出某些菜单对于有特殊饮食需求的患者(如高血压、糖尿病、素食者)是不适合的(假设这段情节被软件分析人员忽视了,但用户在演示软件行为时会提出)。因此,软件分析人员立刻认识到目标软件在制订菜单之前还应该先询问患者的特殊饮食需求,这样就进一步完善了需求的描述。

二、结构化分析方法(Structured Analysis,简称SA)

结构化分析方法就是面向数据流的自顶向下求精法。它分析的主要对象是可行性分析阶段已经得到的描述目标软件的高层逻辑模型,即高层的数据流图和数据字典。在可行性分析阶段,软件分析人员为了获取对目标软件的初步认识,需要通过建立高层逻辑模型,以准确地把握可行性评价的对象,确定软件开发是否可行。而在需求分析阶段,软件分析人员则需要了解有关软件更多、更底层的细节,所以,此时软件分析人员就必须对高层的逻辑模型进行分层、细化、求精,得到描述软件需求的对应细化的多层逻辑模型,这就是非常著名的结构化分析方法,在软件工程中也称为SA方法。

结构化分析方法的核心思想是“自顶向下,逐步细化”,因为,人类认识事物的过程总是经历从不了解到了解,从了解到熟悉的渐进过程,所有问题的细节不是能立即捕获的,而是需要逐层地分解、逐步揭示,因此,该思想贯穿软件工程结构化方法学的始终,可谓之软件工程学的经典思想。

结构化分析方法的核心是采用数据流图(Data Flow Diagram)分层地来描述软件在不同抽象层次的逻辑表示,然后在软件设计中将软件划分为若干程序模块,并相互组织在一起完成所需要的软件功能。该方法是本教材重点阐述的软件工程方法学,它也是面向对象、面向团队等需求分析方法的重要基础。

三、面向对象的分析方法(Object-oriented Analysis,即OOA)

面向对象方法学的出发点是尽可能模拟人类习惯的思维方式,即客观世界是由各种对象组成,任何事物都可被视为对象,复杂对象由多个简单对象所构成。而对象需要许多属性描述它的各方面特点,例如,“学生”对象包括“姓名”“学号”“性别”等属性。此外,对象在与其他对象发生通信时,会触发一些施加于对象之上的行为或服务,例如,当某名“学生”选择由某名“教师”指导其毕业设计之后,即触发“教师”对象的“指导毕业设计”行为。故在软件工程学之中,软件设计人员将具有大量相同属性和行为的对象抽象成“类”,实现信息的封装,同时对外部与之发生关联的其他类提供消息接口,为对象之间的消息传递提供方便,最后,考虑系统的可重用性、可维护性,软件分析人员还需抽取并设计出类之间的继承关系,用一个深度合理的层次结构来表达整个软件系统的类模型。

在完成静态模型设计之后,面向对象方法学还需借助时序图、活动图、状态转换图、协作图等来完成目标软件系统的动态模型设计。此外,设计人员还需借助用例模型、数据流图模型完成对目标软件系统的功能模型的设计。

故面向对象方法学的核心是由静态模型、动态模型和功能模型组成。所有的分析与设计工作均围绕它们展开。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈