如何进行软件需求分析
展开全部 1.概念需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统".百事通而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人.需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性:需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束.从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识.任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述.2.需求分析的任务开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难.目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题.对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生.近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了.相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误.事实上,需求文档在开发过程中一直起指导作用.3.需求分析过程可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示:图4-1 需求工程域的层次分解示意图需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面:确定产品所期望的用户类别.获取每个用户类的需求.了解实际用户任务和目标以及这些任务所支持的业务需求.分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息.将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件.了解相关质量属性的重要性.商讨实施优先级的划分.将所收集的用户需求编写成文档和模型.评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚.需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体).评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它.以一种可控制的方式将需求变更融入到项目中.使当前的项目计划与需求一致.估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上.让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪.在整个项目过程中跟踪需求状态及其变更情况.以...
需求分析实例
回答:海底行 神 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)。
这些用户可能是人,可能是其他的计算机一些硬件或者甚至是其它软件系统,唯一的标准是它们必须要在被划分进用例的系统部分以外。
它们必须能刺激系统部分并接收返回。
用例描述了当角色给...
怎么做需求分析(下)
Ivar Jacobson(1992)把这种看法系统地阐述成用例(用例)的方法进行需求获取和建模。
虽然用例来源于面向对象的开发环境,但是它也能应用在具有许多开发方法的项目中,因为用户并不关心你是怎样开发你的软件。
而最重要的,用例的观点和思维过程带给需求开发的改变比起是否画正式的用例图显得更为重要。
注意用户要利用系统做什么远远强于询问用户希望系统为他们做什么这一传统方法。
用例的重要功能是用画用例图的功能来鉴别和划分系统功能。
它把系统分成角色(actor)和用例(用例)。
角色(actor)表示系统用户能扮演的角色(role)。
这些用户可能是人,可能是其他的计算机一些硬件或者甚至是其它软件系统,唯一的标准是它们必须要在被划分进用例的系统部分以外。
它们必须能刺激系统部分并接收返回。
用例描述了当角色给系统特定的刺激时系统的活动。
这些活动被文本描述。
它描述了触发用例的刺激的本质,输入和输出到其他活动者,和转换输入到输出的活动。
用例文本通常也描述每一个活动在特殊的活动线时可能的错误和系统应采取的补救措施。
这样说可能会非常复杂,其实一个用例描述了系统和一个角色(actor)的交互顺序。
用例被定义成系统执行的一系列动作,动作执行的结果能被指定角色察觉到。
用例可以: 用例捕获某些用户可见的需求,实现一个具体的用户目标。
用例由角色激活,并提供确切的值给角色。
用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。
在UML中,用例表示为一个椭圆。
角色是指用户在系统中所扮演的角色。
其图形化的表示是一个小人。
在某些组织中很可能有许多角色实例(例如有很多个销售员),但就该系统而言,他们均起着同一种作用,扮演着相同的角色,所以用一个角色表示。
一个用户也可以扮演多种角色。
例如,一个高级营销人员既可以是贸易经理,也可以是普通的营销人员;一个营销人员也可以是售货员。
在处理角色时,应考虑其作用,而不是人或工作名称,这一点是很重要的。
我们使用不带箭头的线段将角色与用例连接到一起,表示两者之间交换信息,称之为通信联系。
角色触发用例,并与用例进行信息交换。
单个角色可与多个用例联系;反过来,一个用例可与多个角色联系。
对同一个用例而言,不同角色有着不同的作用:他们可以从用例中取值,也可以参与到用例中。
需要注意的是角色在用例图中是用类似人的图形来表示,尽管执行的,但角色未必是人。
例如,角色也可以是一个外界系统,该外界系统可能需要从当前系统中获取信息,与当前系统有进行交互。
一个用例可能包括完成某项任务的许多逻辑相关任务和交互顺序。
因此,一个用例是相关的用法说明的集合,并且一个说明(scenario)是用例的实例。
这种关系就像是类和对象的关系。
在用例中,一个说明被视为事件的普通过程(normal course),也叫作主过程,基本过程,普通流,或“满意之路” (happy path)。
在描述普通过程时列出执行者和系统之间相互交互或对话的顺序。
当这种交互结束时,执行者也达到了预期的目的。
在用例中的其它说明可以描述为可选过程(alternative coruse)。
可选过程也可促进成功地完成任务,但它们代表了任务的细节或用于完成任务的途径的变化部分。
在交互序列中,普通过程可以在一些决策点上分解成可选过程,然后再重新汇成一个普通过程。
角色类和角色实例 软件产品最终是给一些用户来使用的,而用户之间的差异是非常大的。
造成差异的原因包括了对计算机的认知程度的不同,使用习惯的不同,在软件目标组织中所处的地位不同,地理位置不同,业务熟练程度不同。
不同的用户都有自己一系列的功能需求和非功能需求。
对电脑熟练程度不同的人可能就会有不同的要求,熟练程度低的用户可能希望有一个友好的界面,熟练程度高的用户可能更希望有快捷键或宏的操作以提高工作效率。
考虑到用户的差异性,将用户分类并研究用户类的行为特征是非常有必要的。
所以在做具体的需求之前,先将用户分局行为和特点进行分类,对于研究、收集用户的需求是非常有帮助的。
可以利用一个简单的表格列出一些原始的分类,然后不断的完善这个表格。
确认你的分类之间没有交集。
并充分描述用户分类的行为,目的,要求等。
在企业分析中,比较常见的分类可能包括,供应商,客户,部门等。
就像C++中的类和对象一样,我们把分析出的用户分类称为“角色类”,把实际的用户称为“角色实例”。
在得到用户分类之后,最重要的就是要选出用户代表,用户代表不仅仅是在需求阶段中参与项目,还必须对项目的全过程负责。
用户代表能够代表用户分类的需求。
抓住用户代表的需求就大致把握住了用户类的需求。
当然,需求分析还是需要在用户中做大规模的调查的,只是要把重点放在用户代表上。
确保和用户直接进行沟通!大家有没有玩过传话的游戏,可能看过。
一群人排成一列,一句话从排头挨个向后传,到最后,那句话已经是面目全非了。
所以,一定要保证项目组能够直接和用户接触。
对于和用户直接沟通这一点,一般的针对特定企业的应用系统当然是不成问题,可是如果是开...
我们应当怎样做需求分析:功能角色分析与用例图
在我们进行一系列需求调研工作的同时,我们的需求分析工作也开始启动了。
需求调研与需求分析工作应当是相辅相伴共同进行的。
每次参加完需求调研回到公司,我们就应当对需求调研的成果进行一次需求分析。
当下一次开始进行需求调研时,我们应当首先将上次需求分析的结果与客户进行确认,同时对需求分析中提出的疑问交给客户予以解答。
这就是一个需求捕获->需求整理->需求验证->再需求捕获的过程。
但是,当我们经过一番忙碌,将需求中的第一手资料从调研现场捕获回来以后,我们应当怎样进行分析呢?不少团队对此都比较迷茫,没有一个统一和有效的方法,往往采用想到哪里做到哪里的方式。
一些问题想到了就做了,没有想到则忽略掉了。
实际上,需求分析不应当是太公钓鱼,而应当是拉网排查。
任何一个疏忽都可能对项目研发带来风险。
因此,我们应当采用一套成熟而完整的分析方法,稳步而有序地完成这部分工作。
不同类型的软件项目其分析方法可能存在差异,但一般来说,信息化管理类软件项目通常从这几个方面着手分析:功能角色分析、业务流程分析与业务领域分析。
需求分析不是一项一蹴而就就可以完成的工作,它需要一个长期的过程,而这个过程是一个由粗到细的过程,它体现了人类认识事物的客观规律。
在需求分析的初期,我们对需求的认识往往是整体的、宏观的,随着分析工作的逐渐深入,一步步细化。
按照这个思路,我们对需求的分析,首先应当从功能角色分析开始。
所谓功能角色分析,就是从一个外部用户的视角分析整个软件系统能够提供的功能,以及这些功能到底是提供给哪些角色使用。
对一个系统进行功能和角色方面的梳理和分析,可以采用的比较主流的方法之一就是绘制用例图。
用例图是UML的4+1视图中的一种,准确地说就是那个“+1”。
用例图是贯穿整个面向对象分析/设计(OOA/D)的核心视图,它描述的是系统到底为用户提供了哪些功能,以及到底是哪些用户在使用这些功能,是沟通用户与技术人员的桥梁。
运用用例视图对业务需求进行分析、抽象、整理、提炼,进而形成抽象模型的过程称之为用例建模,而这个模型就是用例模型。
一般地,在一个用例图中通常有三种元素:参与者(Actor)、用例(Use Case)与系统边界(Boundary)。
用例描述的是系统为用户提供的功能,也就是系统能为用户做什么,通常被绘制成一个椭圆;参与者,我认为称为角色更加合适,也就是系统为哪些类型的用户提供服务,他们都各自承担哪些不同的职责,通常被绘制成一个小人儿;最后是系统边界,也就是系统是对现实世界哪个范围的内容进行的模拟,它涉及到软件设计的工作范围与工作量,通常被绘制成一个方框。
但是,通常情况下系统边界只是一个概念而不用真正绘制出来,因为被绘制成用例的必然是系统内部的功能,被绘制成参与者的必然是系统外部事物。
从这个意义上讲,用例图中的参与者不仅包括人,还包括那些外部系统和自动触发器。
根据这样一个思路,我以往常常将外部系统和自动触发器绘制成一个小人,这常常令客户感到困惑。
随后我改变了思路,将外部系统和自动触发器绘制成另一种表达形式——类元符号表示法,并在构造型上标注为Actor。
上图是一个考核系统中一个子模块的用例图。
图中的用例就是这个系统提供给用户的各项功能。
注意,这里仅仅是在罗列功能而不表示它们之间诸如流程调用等相互关系,这是一些初学者常常犯的毛病。
参与者与用例通过实线关联起来,代表的是一种使用关系。
箭头代表的是一种导航,即动作施与的方向。
在这个用例图中,普通用户执行查询操作,查询系统提供的“预警监控单项查询”、“预警监控汇总查询”等查询报表;每日自动触发器触发自动考核功能,自动考核功能从“税收征管系统”这样一个外部系统中采集数据。
图中考核管理员和执法人员代表的是两个完全不同的角色,但他们在这个图中体现的是一些共有的特性,即对这堆报表的查询,因此被绘制成继承自普通用户。
继承是参与者间唯一的关系,代表继承者拥有被继承者所有的功能与权限。
除了参与者以外,用例与用例直接也存在着一些类型的关系,这我们在后面详细讲述。
在绘制用例图时一个值得思考的细节是,用例是怎样通过分析获得的。
这个问题,在一些客户对信息化管理比较有经验的项目中不存在问题,因为在客户提供给我们的需求文档中就清晰地划分出了一项一项的功能。
这些功能可能会在日后的需求分析工作中有所调整,但它从整体上形成了一个雏形,成为我们进行用例分析进而形成用例的依据。
但当我们面对的是一些对信息化管理没有经验的客户,情况就有些不妙了。
在这种情况下,通常客户只能给我们一些管理目标、基本想法,其它的调研工作就需要我们自己去做了。
这时,我给大家的建议是,首先从组织机构上划分清楚系统涉及哪些部门、哪些科室,然后在这个基础上划分出来这些部门这各个科室的人员都扮演哪些不同职能的角色,以及完成哪些业务操作。
系统中的一个功能,在一般情况下是组织机构中某个(或多个)角色,为该机构某项业务流程完成的某个操作,并且这个...
如何做需求分析
一、 我们应当如何做需求分析需求分析不是一蹴而就的,它应当贯穿整个开发周期,不断的分析确认的过程。
这就是敏捷开发倡导的需求反馈。
敏捷开发认为,需求分析阶段不可能解决所有的需求问题,因此在设计、开发、测试,直到最终交付客户,这整个过程都应当不停地用开发的成果与客户交流,及时获得反馈。
只有这样才能及时纠正需求理解的偏差,保证项目的成功。
二、我们应当怎样做需求调研1.初识。
我们对客户提出的需求进行深入理解以后,运用我们专业知识,提出比客户的原始需求更加合理、可操作的解决方案,让客户感觉你说的正是他们想要的。
如果能够这样,客户不仅能够欣然接收你提出的方案,而且会感觉你非常专业,你在客户心目中的形象也会无形中提高,使你有更多的机会提出有利于开发的可行方案,降低开发的风险。
这毫无疑问会形成一个良性循环,但要做到这一点并不容易,毫无疑问,在与客户接触初期的表现起到了极其关键的作用。
(1)高层领导关心的是宏观的目标,因此软件研发目标、宏观统计报表、决策支持功能,我们应该怎样做需求分析,应当与高层领导谈。
(2)中层领导关心的是具体的效益,即软件给各个部门信息化管理方面带来的效益,因此,中层领导是各项业务流程、功能模块的需求决策者。
他们关心功能的定义、业务流转的衔接、查询报表的设计,但不太关心一些具体的操作,以及一些具体业务流程的细节。
(3)基层人员是每一项业务流程的操作者,也是软件今后真正的使用者。
他们是真正了解你所要开发的软件的业务需求的领域专家,是你进行需求调研的重点对象。
但是,基层人员往往受到自身视野的局限,可能只清楚自己工作涉及的十分狭小的一个范围,因此我们需要努力寻找那些业务涉及面广,经验丰富,又有一定大局观的真正的专家。
另外 ,他们就是软件今后真正的使用者,让他们参加,会让他们成为今后软件推行的忠实支持者,对其他操作人员的指导者,益处多多。
而他们关心的则是每项操作的细节。
俗话说:万事开头难。
如果你在项目开始的时候总感觉千头万绪不知如何着手,在这里我给大家的三点建议:1)树立良好的职业威信;2)进行详细角色分析,将与会各方代表对号入座;3)从宏观上制订目标与方案。
随后的工作,就是与各方代码建立联系,逐一拜访他们,将需求调研工作一步一步进行下去。
2.拜访。
需求调研不是一蹴而就的事情,是一件持续数月甚至数年的工作(假如项目还有后期维护) 。
在这漫长的时间里,我们需要依靠客户这个群体的帮助,一步一步掌握真实可靠的业务需求 。
不仅如此,技术这东西总有不如意甚至实现不了的地方,我们需要客户的理解与包容,这都需要有良好的客户关系。
尽管如此,我们也不能总是期望客户中的所有人都能与我们合作,很多项目都不可避免地存在阻碍项目开展的人。
3.研讨会。
(1)由于业务人员自身的局限 ,不可能对所有业务领域的细节全面掌握,往往总是有自己熟悉的部分,也有自己不熟悉的部分。
划分业务组,可以让业务人员分别在自己最熟悉的业务范围内参与讨论,可以有效提高业务讨论的质量;(2)集中式的业务研讨形式和分散式的业务研讨形式;(3)有效抑制个性化差异、分模块组织专项研讨会。
4.业务研讨在需求分析过程中,客户存在的最大问题就是提不出正确的需求,这表现为几种形式:(1)由于对软件不了解,客户提不出需求,不知道软件最终会做成什么样子。
这类客户在需求讨论过程中,往往只能描述目前自己手工管理的方式是怎样的,不知道计算机会怎样管理。
(2)能提出一些业务需求,但当软件做出来摆在自己面前时,需求就变了。
这类客户,他们能熟练使用电脑,对信息化管理是清楚的。
他们提出的业务需求从整体上应当是八九不离十的 。
但是,由于没有实物,在软件中的一些具体操作并没有完全想清楚。
(3)能非常详细地提出业务需求,甚至有时候该怎么做的提出来了。
这类客户,参与过很多软件信息化建设,甚至有些还是软件开发的半专业人士。
但是他们提出的业务需求过于具体 ,甚至怎样实现都说出来了,但这些有时候不是最佳设计方案、可能在技术上难于实现,甚至有些就是过于理想化而不可实现。
解决办法:业务领域分析:客户现有的业务流程是什么样的,都有些什么操作?客户在业务中都有些什么事物,什么专用名词,都是怎样定义的,相互之间的关系是什么?客户在每一项操作中的目的是什么,为什么要这样做,他们制作的手工报表都说明了什么问题?(1)我们做需求分析,眼界不能仅仅停留在软件本身,应当更开阔一些,应当扩展到跟这个业务有关的那些领域知识中。
(2)在客户提出的所有原始需求中那些与业务实现有关的需求都是无效的需求,它们仅仅只能作为我们的一个参考。
(3)还有一些是技术难于实现或者根本就无法实现的需求,我们应当耐心地说服和引导客户,并给他提出一个更加合理的方案。
(4)需求分析不是一种简单的你说我记的收集活动,而是在大量业务分析与技术可行性分析基础上的分析活动。
只有建立在这种分析基础上的软件研发,才能保证需求的正确与变更的可控。
5.迭代...
如何跟据需求分析编写需求测试用例?
软件测试就是在软件交付用户使用或投入运行前,对软件需求规格说明、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
软件测试是为了发现错误而执行程序的过程。
软件测试在软件生命周期中横跨两个阶段:通常在编写出每一个模块之后就需要对它做必要的测试(称为单元测试)。
编码和单元测试属于软件生命周期中的同一个阶段。
在结束这个阶段后对软件系统还要进行各种综合测试,如集成测试、系统测试、性能测试和配置测试等,这是软件生命周期的另一个独立阶段,即测试阶段。
软件测试的目的:1、测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行;2、好的测试用例在于发现至今未发现的错误;3、成功的测试是发现了至今未发现的错误的测试;4、好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题;软件测试的原则:1、应把“尽早和不断地进行软件测试”作为软件开发者的座右铭,实践证明单元测试能够尽早发现问题,减少后期测试的错误量。
可以采用Junit和Jtest来辅助进行单元测试。
2、测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。
3、应当避免由程序员检查自己的程序。
(指后期系统测试阶段,不包括单元测试)4、测试用例的设计要确保能覆盖所有可能路径。
在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。
5、充分注意测试中的群集现象。
经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。
应该对错误群集的程序段进行重点测试。
6、严格执行测试计划,排除测试的随意性。
测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。
7、应当对每一个测试结果做全面的检查。
8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
软件测试的对象:软件测试并不单纯等同于程序测试。
软件测试应该贯穿整个软件定义与开发整个期间。
因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试(评审)的对象。
在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来 希望对你有用
浅谈如何维护软件测试用例
软件产品的版本是随着软件的升级而不断变化的,而每一次版本的变化都会对测试用例集产生影响,所以测试用例集也需要不断地变更和维护,使之与产品的变化保持一致。
以下原因可能导致测试用例变更:1)软件需求变更:软件需求变更可能导致软件功能的增加、删除、修改等变化,应遵循需求变更控制管理方法,同样变更的测试用例也需要执行变更管理流程。
2)测试需求的遗漏和误解:由于测试需求分析不到位,可能导致测试需求遗漏或者误解,相应的测试用力也要进行变更。
特别是对于软件隐性需求,在测试需求分析阶段容易遗漏,而在测试执行过程中被发现,这时需要补充测试用例。
3)测试用例遗漏:在测试过程中,发现测试用例未覆盖全部需求,需要补充相应的测试用例。
4)软件发布后,用户反馈的缺陷:表明测试不全面,存在尚未发现的缺陷,需要补充或者修改测试用例。
对于提供软件服务的产品,其多个版本常常共存,而对应的测试用例也是共存的,而且测试用例需要专人定期维护,并遵循以下原则:1)及时删除过时的测试用例需求变更可能导致原有部分测试用例不再适合新的需求要求。
例如,删除了某个功能,那么针对该功能的测试用例也不再需要。
所以随着需求的每一次变更,都要删除那些不再使用的测试用例。
2)及时删除冗余的测试用例在设计测试用例时,可能存在两个或者多个用例测试相同内容,降低回归测试效率,所以要定期整理测试用例集,及时删除冗余的测试用例。
3)增加新的测试用例由于需求变更、用例遗漏或者版本发布后发现缺陷等原因,原有的测试用例集没有完全覆盖软件需求,需要增加新的测试用例。
4)改进测试用例随着开发工作进行,测试用例不断增加,某些用例随着系统输入和当前状态的变化而变得不再适用,这些用例难以重用,影响回归测试的效率,需要进行改进,使之可重用可控制。
总之,测试用例的维护是一个长期的过程,也是一个不断改进和完善的过程。
请介绍基本需求分析相关的书籍...急!!!
不知道这个是不是你要的OA系统需求分析书籍 可以下载:http://www.aybook.cn/book/11298.html还有“需求分析”,不过是2003年出版的http://book.yoyobao.com/269614/需求类:《软件需求》:电子工业出版社《软件需求(第2版)》:清华大学出版社《掌握需求过程》:人民邮电出版社《实用软件需求》:机械工业出版社影印版《编写有效用例》,中译本《编写有效用例》:机械工业出版社构架类:影印版《软件构架实践(第2版》,中译本《软件构架实践》:清华大学出版社《面向模式的软件体系结构 卷1:模式系统》:机械工业出版社影印版《软件构架编档(影印版)》,中译本《软件构架编档》:清华大学出版社《软件构架评估(影印版)》,中译本《软件构架评估》:清华大学出版社《企业应用构架模式(影印版)》:中国电力出版社中译本《企业应用构架模式》:机械工业出版社影印版《统一软件开发过程(英文影印版)》:清华大学出版社中译本《统一软件开发过程》:机械工业出版社
萝卜不说话