《需求工程——软件建模与分析》阅读笔记02
相信做软件的都知道,需求获取是一件非常困难的事,建民老师说他们做项目的时候,拎着电脑包去做需求调研,里面工作的人一看就嫌弃的表情,他们那些人又来了,同样,在跟对方经理聊天的过程中,对方也经常会打断谈话去处理一些别的事,但对于做一个项目,偏偏需求分析是至关重要的一环,在需求分析的过程中,我们经常会遇到各种各样想象不到的问题。所以了解这些困难对更好地了解需求获取活动的复杂性有重要意义。本书中介绍了几种常见的困难:
1.用户和开发人员的背景不同,立场不同,因此会存在交流困难。要解决这个问题,就要求开发人员在开展需求获取之初,尽力去研究应用的背景,理解组织的业务状况,形成一个能够和用户进行有效沟通的粗略的知识框架;
2.普遍用户缺乏概括性、综合性的表述能力。为解决这个困难,要求开发人员在与用户接触之前就先行确定获取的内容主题,然后设计具体的应用环境和场景条件,让用户在执行细节业务的场景中来描述问题和表达愿望;
3.用户存在认知困境。要解决这类问题,开发者就需要利用各种有效的需求获取方法和技巧,引导用户去发现用户尚未形成明确认知的知识;
4.用户越俎代庖。要解决用户越俎代庖带来的困难,就要求开发者在需求获取的过程中,注意保持业务领域和解决方案的区分界限。而且越俎代庖式需求的出现,往往意味着用户还拥有一些重要的隐藏需求没有被发现,开发者就应该分析用户的深层目的,找到隐藏在背后的需求;
5.缺乏用户参与。要解决缺乏用户参与的困难,就要求开发者在进行需求获取时,能够对系统的用户以及用户的替代源等相关涉众进行分析,了解他们的特征、类别、任务、取向等,并在需求获取中采取对策避免用户参与不足现象的发生。通过这几个问题的分析,了解到了需求获取过程中的困难,并且也学到了一些解决方法,应该会对以后的学习工作有帮助。
我们在需求获取活动至少要做到:1.研究应用背景,建立初始的知识框架。2.根据获取的需要,采用必要的获取方法和技巧。3.先行确定获取的内容和主题,设定场景。4.分析用户的高(深)层目标,理解用户的意图。5.进行涉众分析,针对涉众的特点开展工作。这是非常重要的!本来需求调研就不是一件简单的事,经常遭到对方的不理不睬,所以之前我们一定要做好充分的准备。
项目的业务目标是系统的业务需求。根据系统的高层解决方案和系统特性,可以定义系统的上下文环境,建立系统的边界。软件系统的涉众可以定义为:所有能够影响软件系统的实现,或者会被实现后的软件系统所影响的个人和团队。软件系统中常见的涉众类别有:用户、客户、开发者、管理者、领域专家、政府力量、市场力量。
需求获取方法包括面谈、原型和观察与文档审查:1. 面谈:就是在需求获取活动发生在需求工程师和用户之间的面对面的会见,它是一种使用问答格式,具有特定目的的直接会话。之后书中介绍了面谈中的问题,准备面谈的主要工作,面谈的阶段,面谈的后续工作,面谈的类别,面谈的优点和局限性,群体面谈以及和面谈相关的其他需求获取方法;原型:是在软件开发中被广泛使用的一种工具,在软件开发过程中的各个阶段,包括需求开发,都会使用不同类型的原型来达到不同的目的。之后书中介绍了原型的类别,2. 原型方法,原型方法的风险。3.观察与文档审查:用户专心于完成自己的工作,而且不需要同步地向需求工程师解释自己的工作;需求工程师则置于一旁,他们很少会打断用户的工作,同时通过观察用户的行为形成对相关信息的学习和认知。文档审查的主要获取对象包括相关产品的需求规格说明、硬数据和客户的需求文档。
以上三种需求获取方法给我们以后在工作中提供了方法,不至于犯不必要的错误。书中对于每一种方法都进行了详细的介绍,还说明了优缺点以及适用情况,对我们有极大的好处。
在了解面谈、原型、观察和文档审查等需求获取方法的同时,还需要懂得怎样将整个系统的需求获取行为有效地组织起来。需求获取的常见模型驱动方法有:1.面向目标的方法。2.基于场景的方法。3.基于用例的方法。书中详细介绍了这三种方法,使我们更清楚地了解了这三种常用的方法,在以后的需求工程中就有方法可循了。