什么是用户需求分析为什么要做用户需求分析

什么是用户需求分析为什么要做用户需求分析,第1张

用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。当完成用户需求调查后,首先对《用户需求说明书》进行细化,对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。

例如采用Rational的Rose工具进行需求的建模分析。如果使用工具进行建模分析,对需求分析人员的要求比较高。需求定义过程中通常会出现的问题有内容失实、遗漏、含糊不清和前后描述不一致。

需求状态(Establish Requirement State),顾名思义,状态也就是一种事物或实体在某一个时刻或点所处的情况,此处要讲的需求状态是指用户需求的一种状态变换过程。

为什么要建立需求状态?在整个生命周期中,存在着几种不同的情况,在需求调查人员或系统分析人员进行需求调查时,客户存在的需求可能有多种,

对于这些需求,在开发进展的过程中,存在着以下几种情况:

有可能要取消的;

有的因为不明确而可以后延的,同时可能转化为被取消的需求;

与客户经过沟通或确认的,此处有两种情况,一类是确认双方达成共识,另一种情况是还需要再进一步沟通的。

问题一:需求分析有哪些方法 三种需求分析的方法:结构化分析方法、面向对象的分析方法、面向问题域的分析方法。

结构化的分析方法是传统的分析法,它的好处是在需求阶段可以不需要精确地定义系统,只需要根据业务框架确定系统的功能范围,以及每个功能的处理逻辑和业务规则,功能需求规格书等。因为不需要精确描述,因此描述系统的方式比较灵活多样,可以采用图表、示例图、文字等等方式来描述系统。在系统开发以前,一般还可以采用更为直观的原型系统方式和最终用户进行交流和确认,因此对业务需求的要求会低一些,业务需求阶段的周期相对容易控制;通过业务全景图,最终用户也能了解系统的功能;通过功能活动图和业务规则的描述,也可以相对精确地描述业务系统;因为没有严格的标记语言,可以采用适当的篇幅描述适当的系统。当然,这种方法的缺点也是明显的,分析人员和业务人员之间可能缺乏共同语言,机器不能识别业务需求书,在设计阶段还需要继续和用户确认一部分功能。

面向对象的分析方法的最大好处是在需求阶段,就能够非常精确地描述一个系统,采用程序语言的方式和最终用户交流(最终用户必须要熟悉这种语言),能够在项目一开始就发现很多问题,避免在开发的过程中出现需求的反复,而且在系统设计和开发阶段不需要最终用户参与。在实施上,一般可以采用场景、业务功能等方式来描述,比较适合于业务流程环节多的系统,或者软件产品的开发。但是,我们也要看到,在现实中,绝大多数的应用系统都很难在需求阶段就可以被精确地抽象化定义,所以这种方法的缺点和困难也是显而易见的:首先,用户要非常清楚地知道最终的业务系统应该是什么样,或者采用一种抽象的方式能够确定最终的应用系统;其次,因为最终用户不需要参与设计和开发阶段的工作,所以双方确定业务需求的过程也会比较长;同时,因为是精确描述,因此描述系统的语言是非常逻辑化的,一般通过某种方式可以使机器识别业务需求,采用这种方式写的业务需求是非常格式化的,一方面描述一个系统需要的信息非常多,可能使需求说明的篇幅非常长,不便于理解和阅读;另外由于通过抽象的方式来推演最终系统的运行方式,对业务人骸的要求非常高。

问题二:项目需求分析的分析方法 需求分析的方法有很多这里只强调原型化方法,其它的方法如:结构化方法,动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法)在此不讨论原型化方法是十分重要的(是软考等常考的知识点)原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性,界面的友好性或其他方面上存在缺陷建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性,技术的可行性,或考察是否满足用户的需求等如,为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型以后的目标系统就在原型系统的基础上开发原型主要有三种类型(软考考过):探索型,实验型,进化型探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。在使用原型化方法是有两种不同的策略:废弃策略,追加策略废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整,准确,一致,可靠的最终系统系统构造完成后,原来的模型系统就被废弃不用探索型和实验型属于这种策略。追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。进化型属于这种策略

问题三:如何做好需求分析,需求调研 转载以下资料供参考

从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。

狭义上理解需求分析指需求的分析、定义过程。

原因

需求分析就是分析软件用户的需求是什么。如果投入大量的人力,物力、财力、时间,开发出的软件却没人要,那所有的投入都是徒劳。如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的(相信大家都有体会)。比如:用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件。当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。

需求分析之所以重要,就因为他具有决策性、方向性、策略性的作用,他在软件开发的过程中具有举足轻重的地位,大家一定要对需求分析具有足够的重视。在一个大型软件系统的开发中,他的作用要远远大于程序设计。

任务

简言之,需求分析的任务就是解决“做什么的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。

过程

需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。

问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、 *** 作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。

分析与综合: 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。

制订规格说明书: 即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。

评审: 对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。

方法

需求分析的方法有很多,这里只强调原型化方法,其它的方法如:结构化方法、动态分析法等,从来没用过这些方法在此不讨论。

原型化方法是十分重要的,原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。

原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能。但是这个系统可能在可靠性、界面的友好性或其他方面上存在缺陷。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性、技术的可行性或考察是否满足用户的需求等。如:为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型。以后的目标系统就在原型系统的基础上开发。

原型主要有三种类型:探索型、实验型、进化型。

探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。

实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。

进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

在使用原型化方法时有两种不同的策略:废弃策略、追加策略。

废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成>>

问题四:请问常用的需求分析方法有哪些? 结构分析方法和面向对象分析法

问题五:培训需求分析的方法有哪几种 组织资源分析

如果没有确定可被利用的人力、物力和财力资源,就难以确立培训目标。组织资源分析包括对组织的金钱、时间、人力等资源的描述。一般情况下,通过对下面问题的分析,就可了解一个组织资源的大致情况。

组织特质与环境分析

组织特质与环境对培训的成功与否也起重要的影响作用。因为,当培训规划和组织的价值不一致时,培训的效果则很难保证。组织特质与环境分析主要是对组织的系统结构、文化、资讯传播情况的了解。主要包括如下内容:

系统特质指组织的输入、运作、输出、次级系统互动以及与外界环境间的交流特质,使管理者能够系统地面对组织,避免组织分析中以偏概全的缺失。

文化特质。指组织的软硬体设施、规章、制度、组织经营运作的方式、组织成员待人处事的特殊风格,使管理者能够深入了解组织,而非仅仅停留在表面。

资讯传播特质。指组织部门和成员收集、分析和传递信息的分工与运作,促使管理者了解组织信息传递和沟通的特性。

问题六:在需求分析阶段常用的图形工具有哪三种 1 需求分析是准确的理解用的需求将其转换成需求定义,然后由需求定义转换成形式化的功能规约。需求分析的困难表现在问题的复杂性、交流的障碍、不完备和不一致性、需求易变性。 2 结构化分析方法是采用自顶向下逐层分解的分析策略把一个复杂的系统分解成若干小问题然后分别解决 3 数据流即数据通过一个系统时的变化方式。输入数据首先转换成中间数据,然后转换成输出结果数据。在此期间可以从已有的数据存储(如磁盘文件或内存缓冲区)中引入附加数据。对数据进行转换是程序中应有的功能或子功能。两个转换功能之间的数据传递就确定了功能间的接口。 4 把一个功能分解成几个子功能,并确定这些子功能与父功能的接口,就属于横向分解。 5 把一个功能分解成几个子功能,并确定这些子功能与父功能的接口,就属于横向分解。但如果继续分解,把某些子功能又分解为小的子功能,某个小的子功能又分解为更小的子功能,这就属于纵向分解了。 6 数据流图是用来表示系统的功能的工具它表示系统的逻辑模型描述了数据流在系统中流动的情况它是一种功能模型。

问题七:如何做需求分析 随着技术的不断发展和用户对网站功能性的需求不断提高,如今网站项目的设计已经不能再仅仅简单地利用静态Html文件来实现,与前几年网站设计由一两名网页设计师自由的创作相比,网站项目的设计和开发越来越像一个软件工程,也越来越复杂,网站项目的设计和开发进入了需要强调流程和分工的时代,建立规范的、有效的、健壮的开发机制,才能适应用户不断变化的需要,达到预期的计划目标。

网站项目管理(WPM)的含义为Web-based Project Management,即以Web 应用程序为主要表现方式的架构来进行的项目设计及管理,这样的架构中包含了浏览器、网络和Web

服务器等关键主体,主要体现在网站设计、以浏览器为客户端的Web应用程序开发(例如信息类网站、网上商店、虚拟邮局、客户关系管理。)等项目管理中。

按照笔者的经验,网站项目管理可以分为以下l六个阶段进行控制:

1 需求分析及变更管理

2 项目模型及业务流程分析

3 系统分析及软件建模

4 界面设计、交互设计及程序开发

5 系统测试和文档编写

6 客户培训、技术支持和售后服务

需要说明的是,这些阶段虽然具有一定的延续性,但是并非完全隔断的,例如需求变更管理和测试工作、文档编写都是贯穿整个项目过程的,许多工作时交叉进行或同时进行的。

(一)如何做好需求分析及变更管理?

业务员与客户进行的沟通,撰写需求分析报告是项目展开的基础。项目是以客户的需求为中心,而不是为技术而迁就需求。

一:让客户畅所欲言,罗列出所有的需求

让用户将所有的想法尽可能的阐述清楚,并把所有的要求罗列出来,不要遗漏。这时候不应该害怕“勾引”起客户的潜在需求而增加设计开发的工作量,从而被今后客户无止境的变更拖入泥潭,直接明白地跟客户把问题和要求一条条地列出来,把条理、归纳、分析先都扔到一边去,将用户最原始、最完整的要求准确地记录下来就完成了第一步的工作。

很明显,假如客户的需求做的都不完整,随时可能会产生意想之外的变更,甚至这个变更会破坏已经做的模型及结构,那么这个项目从开始就注定了会失败;比如站点所有的功能都实现了,本地测试起来也没有什么问题了,但是你却不知道客户的系统是要承受每天100万独立IP的访问,而你原来想当然的以为了不起就是1万独立IP访问的访问流量,稍微有经验的开发人员都会明白这样的设计是个灾难,无论是应用服务器、数据库还是程序全部要重新开发!

二:透过现象分析潜在的需求

很多情况下客户并非专业人士,在他们滔滔不绝的描述中不能指望他们帮助我们整理出重点和技术难关,这需要我们去为客户进行分析、归纳和整理,尤其是客户谈的不多却又是技术上实现难度和强度很高的地方特别值得注意。

客户往往对需求的概念是非常模糊的,大多时候给出的需求都是笼统而且尺度难以控制的,这就要求业务人员在倾听了客户的详细说明以后,帮助客户进行整理和分析,同时预测客户在开发过程中变更及今后应用中可能进行修改升级的潜在需求。

比如在为客户设计办公自动化系统的时候,也许就要为客户预留将来与他们的业务单位进行交互的通道;在设计邮件系统的时候要考虑可能会需要广告管理服务器;设计网络电子商店时今后增加库存产品进销存统计分析等等;限于时间财力的考虑,客户通常能够接受分阶段实施的开发过程,在需求分析时,提早为客户设想到今后的需求变更除了使项目开发更加顺利以外,也为今后业务的进一步深入打下>>

问题八:软件需求分析的方法和工具有哪些内容 1 问卷调查法, 开发方就用户需求中的一些个性化的、需要进一步明确的需求,通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于开发方和用户方都清楚项目需求的情况。因为开发方和建设方都清楚项目的需求,则需要双方进一步沟通的需求就比较少,通过采用这种简单的问卷调查方法就能使问题得到较好的解决

2 会议讨论法 ,开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法,这种方法适合于开发方不清楚项目需求(一般开发方是刚开始做这种业务类型的工程项目)但用户方清楚项目需求的情况。因为用户清楚项目的需求,则用户能准确地表达出他们的需求,而开发方有专业的软件开发经验,对用户提供的需求一般都能准确地描述和把握

3 界面原型法 ,开发方根据自己所了解的用户需求,描画出应用系统的功能界面后与用户进行交流和沟通,通过“界面原型”这一载体,达到双方逐步明确项目需求的一种需求获取的方法。这种方法比较适合于开发方和用户方都不清楚项目需求的情况。因为开发方和用户方都不清楚项目需求,因此此时就更需要借助于一定的“载体”来加快对需求的挖掘和双方对需求理解。这种情况下,采用“可视化”的界面原型法比较可取

需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。

它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。

10月22日 10:37 尽量把客户所持的假设解释清楚,特别是那些发生冲突的部分。从字里行间去理解以明确客户没有表达清楚但又想加入的特性或特征。Gause 和Weinberg(1989)提出使用“上下文无关问题”—这是一个高层次的问题,它可以获取业务问题和可能的解决方案的全部信息。客户对这些问题的回答诸如“产品要求怎样的精确度”或“你能帮我解释一下你为什么不同意某人的回答吗?”这些回答可以更直接地认识问题,而这是封闭(close-end)问题所不能做到的。

需求获取利用了所有可用的信息来源,这些信息描述了问题域或在软件解决方案中合理的特性。一个研究表明:比起不成功的项目,一个成功的项目在开发者和客户之间采用了更多的交流方式(Kiel and Carmel 1995)。与单个客户或潜在的用户组一起座谈,对于业务软件包或信息管理系统(MIS)的应用来说是一种传统的需求来源。直接聘请用户进行获取需求的过程是为项目获得支持和买入(buy-in)的一种方式。

尽量理解用户用于表述他们需求的思维过程。充分研究用户执行任务时作出决策的过程,并提取出潜在的逻辑关系。流程图和决策树是描述这些逻辑决策途径的好方法。

在需求获取的过程中,你可能会发现对项目范围的定义存在误差,不是太大就是太小。如果范围太大,你将要收集比真正需要更多的需求,以传递足够的业务和客户的值,此时获取过程将会拖延。如果项目范围太小,那么客户将会提出很重要的但又在当前产品范围之外的需求。当前的范围太小,以致不能提供一个令人满意的产品。需求的获取将导致修改项目的范围和任务,但作出这样具有深远影响的改变,一定要小心谨慎。

正如经常所说的,需求主要是关于系统做什么,而解决方案如何实现是属于设计的范围。这样说虽然很简洁,但似乎过于简单化。需求的获取应该把重点放在“做什么”上,但在分析和设计之间还是存在一定的距离。你可以使用假设“怎么做”来分类并改善你对用户需求的理解。在需求的获取过程中,分析模型、屏幕图形和原型可以使概念表达得更加清楚,然后提供一个寻找错误和遗漏的办法。把你在需求开发阶段所形成的模型和屏幕效果看成是方便高效交流的概念性建议,而不应该看成是对设计者选择的一种限制。

需求获取讨论会中如果参与者过多,就会减慢进度。人数大致控制在5到7人是最好的。这些人包括客户、系统设计者、开发者和可视化设计者等主要工程角色。相反地,从极少的代表那里收集信息或者只听到呼声最高、最有舆论影响的用户的声音,也会造成问题。这将导致忽视特定用户类的重要的需求,或者其需求不能代表绝大多数用户的需要。最好的权衡在于选择一些授权为他们的用户类发言的产品代表者,他们也被同组用户类的其它代表所支持。

没有一个简单、清楚的信号暗示你什么时候已完成需求获取。当客户和开发者与他们的同事聊天、阅读工业和商业上的文献及在早上沐浴时思考时,他们都将对潜在产品产生新的构思。你不可能全面收集需求,但是下列的提示将会暗示你在需求获取的过程中的返回点。

1 如果用户不能想出更多的使用实例,也许你就完成了收集需求的工作。用户总是按其重要性的顺序来确定使用实例的。

2 如果用户提出新的使用实例,但你可以从其它使用实例的相关功能需求中获得这些新的使用实例,这时也许你就完成了收集需求的工作。这些新的使用实例可能是你已获取的其它使用实例的可选过程。

3 如果用户开始重复原先讨论过的问题,此时,也许你就完成了收集需求的工作。

4 如果所提出的新需求比你已确定的需求的优先级都低时,也许你就完成了收集需求的工作。

5 如果用户提出对将来产品的要求,而不是现在我们讨论的特定产品,也许你就完成了收集需求的工作。

以上知识大致上讨论需求分析应该如何做,实际上对于需求分析的方法有很多很多,已经形成了一定的理论,当然这种理论比较偏向与方法学,而方法学的应用主要还是要靠个人。所以,大家在实际应用的时候,不妨结合自己的实际,有选择性的采用一些方法,那你就是成功的。

用例在需求分析中的使用

多年来,分析者总是利用情节或经历来描述用户和软件系统的交互方式,从而获取需求(McGraw and Harbison 1997)。Ivar Jacobson(1992)把这种看法系统地阐述成用例(用例)的方法进行需求获取和建模。虽然用例来源于面向对象的开发环境,但是它也能应用在具有许多开发方法的项目中,因为用户并不关心你是怎样开发你的软件。而最重要的,用例的观点和思维过程带给需求开发的改变比起是否画正式的用例图显得更为重要。注意用户要利用系统做什么远远强于询问用户希望系统为他们做什么这一传统方法。

用例的重要功能是用画用例图的功能来鉴别和划分系统功能。它把系统分成角色(actor)和用例(用例)。角色(actor)表示系统用户能扮演的角色(role)。这些用户可能是人,可能是其他的计算机一些硬件或者甚至是其它软件系统,唯一的标准是它们必须要在被划分进用例的系统部分以外。它们必须能刺激系统部分并接收返回。用例描述了当角色给系统特定的刺激时系统的活动。这些活动被文本描述。它描述了触发用例的刺激的本质,输入和输出到其他活动者,和转换输入到输出的活动。用例文本通常也描述每一个活动在特殊的活动线时可能的错误和系统应采取的补救措施。

这样说可能会非常复杂,其实一个用例描述了系统和一个角色(actor)的交互顺序。用例被定义成系统执行的一系列动作,动作执行的结果能被指定角色察觉到。用例可以:

· 用例捕获某些用户可见的需求,实现一个具体的用户目标。

· 用例由角色激活,并提供确切的值给角色。

· 用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。在UML中,用例表示为一个椭圆。

角色是指用户在系统中所扮演的角色。其图形化的表示是一个小人。在某些组织中很可能有许多角色实例(例如有很多个销售员),但就该系统而言,他们均起着同一种作用,扮演着相同的角色,所以用一个角色表示。一个用户也可以扮演多种角色。例如,一个高级营销人员既可以是贸易经理,也可以是普通的营销人员;一个营销人员也可以是售货员。在处理角色时,应考虑其作用,而不是人或工作名称,这一点是很重要的。

我们使用不带箭头的线段将角色与用例连接到一起,表示两者之间交换信息,称之为通信联系。角色触发用例,并与用例进行信息交换。单个角色可与多个用例联系;反过来,一个用例可与多个角色联系。对同一个用例而言,不同角色有着不同的作用:他们可以从用例中取值,也可以参与到用例中。需要注意的是角色在用例图中是用类似人的图形来表示,尽管执行的,但角色未必是人。例如,角色也可以是一个外界系统,该外界系统可能需要从当前系统中获取信息,与当前系统有进行交互。

一个用例可能包括完成某项任务的许多逻辑相关任务和交互顺序。因此,一个用例是相关的用法说明的集合,并且一个说明(scenario)是用例的实例。这种关系就像是类和对象的关系。在用例中,一个说明被视为事件的普通过程(normal course),也叫作主过程,基本过程,普通流,或“满意之路” (happy path)。在描述普通过程时列出执行者和系统之间相互交互或对话的顺序。当这种交互结束时,执行者也达到了预期的目的。

在用例中的其它说明可以描述为可选过程(alternative coruse)。可选过程也可促进成功地完成任务,但它们代表了任务的细节或用于完成任务的途径的变化部分。在交互序列中,普通过程可以在一些决策点上分解成可选过程,然后再重新汇成一个普通过程。

角色类和角色实例

软件产品最终是给一些用户来使用的,而用户之间的差异是非常大的。造成差异的原因包括了对计算机的认知程度的不同,使用习惯的不同,在软件目标组织中所处的地位不同,地理位置不同,业务熟练程度不同。

不同的用户都有自己一系列的功能需求和非功能需求。对电脑熟练程度不同的人可能就会有不同的要求,熟练程度低的用户可能希望有一个友好的界面,熟练程度高的用户可能更希望有快捷键或宏的 *** 作以提高工作效率。考虑到用户的差异性,将用户分类并研究用户类的行为特征是非常有必要的。所以在做具体的需求之前,先将用户分局行为和特点进行分类,对于研究、收集用户的需求是非常有帮助的。

可以利用一个简单的表格列出一些原始的分类,然后不断的完善这个表格。确认你的分类之间没有交集。并充分描述用户分类的行为,目的,要求等。在企业分析中,比较常见的分类可能包括,供应商,客户,部门等。

就像C++中的类和对象一样,我们把分析出的用户分类称为“角色类”,把实际的用户称为“角色实例”。在得到用户分类之后,最重要的就是要选出用户代表,用户代表不仅仅是在需求阶段中参与项目,还必须对项目的全过程负责。用户代表能够代表用户分类的需求。抓住用户代表的需求就大致把握住了用户类的需求。当然,需求分析还是需要在用户中做大规模的调查的,只是要把重点放在用户代表上。

确保和用户直接进行沟通!大家有没有玩过传话的游戏,可能看过。一群人排成一列,一句话从排头挨个向后传,到最后,那句话已经是面目全非了。所以,一定要保证项目组能够直接和用户接触。

对于和用户直接沟通这一点,一般的针对特定企业的应用系统当然是不成问题,可是如果是开发行业软件,和用户直接沟通就成为一件几乎是不可能的事情。在这种情况下,一般有几种解决的办法:

做大规模的市场调查,针对你的目标市场做市场调查,并根据统计学的理论建立你的数学模型。这部分的工作效果最好,其性质有些象一些游戏公司会发布一些Demo版的游戏。可是对于一般的企业来说,这项工作费时费力,高昂的成本往往使大家知难而退。我的意见是,方法是非常好的,但是可以采用折衷的办法,例如选取有代表性的企业,为特定企业制作一个较小的版本并收集反馈意见等。这涉及到很多市场营销的内容,并不是我的专业所长,这里就不多弄斧了。

聘请行业专家,一个行业专家往往可以在项目需求方面发挥极为重要的作用。一个行业专家往往都有大量的行业经验和行业的人际关系网络。在产品的设计方面,这个行业专家提供很多宝贵的意见。在目前很多的软件的开发过程中都采用了这种方式。行业专家有两种:一种是在这个行业中有很深的资历,但是对软件技术并不熟悉;第二种是开发过同类软件的软件专家,这种人在开发同类软件过程中已经积累了大量的项目经验,并且具有软件开发的知识。这种方式是获取需求的最好的方式。 分析对比同类软件,微软在开发Office、Visual Studio的时候,也是参照了Lotus和Borland的成熟产品。这种方式的特点在于成本很低,比较适合和其他的方式配合使用。但是,要注意自己有没有触犯专利法。

需求的冲突

有的时候,虽然已经将用户分类并选出了用户代表。但是需求的来源众多,往往会发生需求之间自相矛盾的事情。需求从四面八方收集来后,人们难以解决冲突,澄清模糊之处以及协调不一致之处。某些人还要对不可避免要发生的范围问题单独作出决定。在项目的早期阶段,你必须决定谁是需求问题的决策者。如果不清楚谁有权并且有责任来作出决策,或者授权的个人不愿意或不能作出决策,那么决策者的角色将自然而然地落在开发者身上。这是一个非常糟糕的选择,因为开发者通常没有足够多的信息和观点来作出业务上的决策。

在软件项目中,谁将对需求作出决策的问题并没有统一的正确答案。分析员有时听从呼声高的或来自最高层人物的最大的需求。即便使用用户代表这一手段,必须解决来自不同用户类的相冲突的需求。通常,应尽可能由处于公司底层的人作出决策,因为他们与问题密切相关,并能得到关于这些问题的广泛信息。

如果不同的用户类有不一致的需求,那么必须决策出满足哪一类用户的需求更为重要。了解可能使用产品的客户种类的信息和他们的用法与产品的业务目标的关系如何,将有助于你决定哪一个用户类所占份额最大。

当开发者想象中的产品与客户需求冲突时,通常应该由客户作出决策。然而,不要陷到“客户总是对的”的陷阱中去,对他们百依百顺。现实中,客户并不总是对的。客户总是持有自己的观点,开发者必须理解并尊重这一观点。

用例

在具体的需求过程中,有大的用例(业务用例),也有小的用例。主要是由于用例的范围决定的。用例像是一个黑盒,它没有包括任何和实现有关或是内部的一些信息。它很容易就被用户(也包括开发者)所理解(简单的谓词短语)。如果用例不足以表达足够的信息来支持系统的开发,就有必要把用例黑盒打开,审视其内部的结构,找出黑盒内部的Actor和用例。就这样通过不断的打开黑盒,分析黑盒,再打开新的黑盒。直到整个系统可以被清晰的了解为止。

为什么要采用这种分析方法呢?计算机系统除了在与外界系统、人员有一系列的交互,在系统内部也往往存在着复杂的交互。因此,在系统建模时,除了描述系统与外界的交互,同时还要描述系统内部的交互。传统的MIS系统中,系统与外界的交互较多。典型的,如ATM取款机:存在着大量的用户与ATM,ATM与其它系统的交互。而电信领域的系统,与外界的交互较少。例如,系统的输入可能仅仅是从交换机上采集信息,然后由系统进行处理。系统的复杂逻辑包含在系统内部处理的流程上,而非与外部系统的交互。建模主要任务是表达系统内部的交互。

用例图适于表达交互,之所以上面使用了电信系统,是因为用例最早来自于Ericsson的交换机系统。当时,还是Ericsson雇员的Jacobson初步建立了用例图的概念,并于1994年提出了OOSE方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,比较适合支持商业工程和需求分析。随着用例的发展,用例被大量的用于对功能进行描述。每个用例代表了系统与外部ACTOR的交互。可以采取顺序图来表达用例的具体 *** 作程序。ACTOR用于确定系统的边界。

ACTOR、用例可以从不同的层次来描述信息。采用该原则的原因有:

1 需求并不是在项目一开始就很明确,往往是随着项目的推进,逐渐细化。

2 人的认知往往具有层次的特性。从粗到细、从一般到特殊。采用不同的层次来描述,适于认知的过程。

使用用例开发系统的一般过程

在开发过程的初始阶段,可以根据具体的项目特点,制订开发各个视图之间的关联原则,指导规范。在开发的过程中,视图的组织原则应不断进行维护、更新。

识别ACTOR来识别系统与外界交互的实体。ACTOR具有特定领域的特征,例如:交换机(采集系统)、97信息系统等。在系统层次的ACTOR确定了系统的边界。

识别用例。同ACTOR一样,用例具有不同层次。对较为概括的USECASE,需要细化。注:系统开发需要一定的规则来确定,如何来分解用例;可能基于原有系统的经验,或是参考现有资料。

当用例细化到可以被理解的层次。需要基于用例进行下一步的开发。如前面提到的,用例主要用来描述交互。因此,存在交互的实体和交互的细节。交互的实体采用类图来描述;而交互的细节,采用顺序图来描述。

当系统复杂到一定层次时,类图和顺序图可能不能足以描述其复杂程度。在该情况下,需要使用状态图来辅助阐述。状态图和顺序图之间使用事件联结在一起。它们之间的一致性问题,目前UML和ROSE没有提供解决方案。相对折衷的方法是使用事件的命名规范强制一致性。

可以说,之前说的所有的东西都是为了能够导出用例在需求中的作用。用例是从用户的角度看待系统,而不是基于程序员的角度。这样的话,用例驱动的系统能够真正做到以用户为中心,用户的任何需求都能够在系统开发链中完整的体现。用户和程序员间通过用例沟通,避免了牛头马嘴的尴尬局面。 从前,系统开发者总是通过情节来获取需求,是问用户希望系统为他做什么。在Jacobson发明了用例的概念之后,需求获取就变成问用户要利用系统做什么。这是立场不同导致的结果。用户通常并不关心系统是如何实现的(也有少数可爱的技术狂是例外)。对他们来说,更重要的是要达到他的目的。相反的,大部分的程序员的工作习惯就是考虑计算机应该如何实现用户的要求。所幸的是,用例方法能够调和双方的矛盾,因为虽然用例是来源于用户,服务于用户,但是它同样可以用于开发的流程。当系统的开发过程都是基于用例的,用用例获取需求,用用例设计,用用例编码,用用例测试的时候。这个开发过程就是用例驱动的。 用例和用例文档

《软件需求》一书中提到了几种方法来确定用例:

· 首先明确执行者和他们的角色,然后确定业务过程,在这一过程中每一个参与者都在为确定用例而努力。

· 确定系统所能反映的外部事件,然后把这些事件与参与的执行者和特定的用例联系起来。

· 以特定的说明形式表达业务过程或日常行为,从这些说明中获得用例,并确定参与到用例中的执行者,有可能从现在的功能需求说明中获得用例。如果有些需求与用例不一致,就应考虑是否真的需要它们。

用例代表了用户的需求,在你的系统中,应该直接从不同用户类的代表或至少应从代理那里收集需求。用例为表达用户需求提供了一种方法,而这一方法必须与系统的业务需求相一致。分析者和用户必须检查每一个用例,在把它们纳入需求之前决定其是否在项目所定义的范围内。基于“用例”方法进行需求获取的目的在于:描述用户需要使用系统完成的所有任务。在理论上,用例的结果集将包括所有合理的系统功能。在现实中,你不可能获得完全包容,但是比起我所知道的其它获取方法,基于用例的方法可以为你带来更好的效果。

当使用用例进行需求获取时,应避免受不成熟的细节的影响。在对切合的客户任务取得共识之前,用户能很容易地在一个报表或对话框中列出每一项的精确设计。如果这些细节都作为需求记录下来,他们会给随后的设计过程带来不必要的限制。你可能要周期性地检查需求获取,以确保用户参与者将注意力集中在与今天所讨论的话题适合的抽象层上。向他们保证在开发过程中,将会详尽阐述他们的需求。在一个逐次详细描述过程中,重复地详述需求,以确定用户目标和任务,并作为用例。然后,把任务描述成功能需求,这些功能需求可以使用户完成其任务,也可以把它们描述成非功能需求,这些非功能需求描述了系统的限制和用户对质量的期望。虽然最初的屏幕构思有助于描述你对需求的理解,但是你必须细化用户界面设计。

建立用例文档。在每一次的需求获取之后,都会生成很多未整理的需求,你必须将它们组织成用例文档。使用诸如模板的技术能够提高你的速度和需求的复用性。一个用例文档可以使用表格来组织,主要的要素包括了用例标识号、用例名称、父用例标志号、创建者、创建时间、审核者、修订记录、角色、说明、先决条件、请求结果、优先级、普通过程、可选过程、例外、非功能需求、假设、注释和问题。

虽然列举出了这么多的属性,但是实际中使用的属性这要看你的团体而定,看项目的大小而定。把大量的时间花在用例的描述上是没有意义的。用户需要的是一个软件系统,并不是一大堆的用例说明。

以上就是关于什么是用户需求分析为什么要做用户需求分析全部的内容,包括:什么是用户需求分析为什么要做用户需求分析、需求分析方法有哪些、说明需求获取的内容和来源是怎样影响到需求获取的方法选择的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9815417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存