在具体的需求过程中,有大的用例(业务用例),也有小的用例。主要是由于用例的范 围决定的。用例像是一个黑盒,它没有包括任何和实现有关或是内部的一些信息。它很容易就被用户(也包括开发者)所理解(简单的谓词短语)。如果用例不足以表达足够的信息来支持系统的开发,就有必要把用例黑盒打开,审视其内部的结构,找出黑盒内部的Actor和用例。就这样通过不断的打开黑盒,分析黑盒,再打开新的黑盒。直到整个系统可以被清晰的了解为止。
为什么要采用这种分析方法呢?计算机系统除了在与外界系统、人员有一系列的交互,在系统内部也往往存在着复杂的交互。因此,在系统建模时,除了描述系统与外界的交互,同时还要描述系统内部的交互。传统的MIS系统中,系统与外界的交互较多。典型的,如ATM取款机:存在着大量的用户与ATM,ATM与其它系统的交互。而电信领域的系统,与外界的交互较少。例如,系统的输入可能仅仅是从交换机上采集信息,然后由系统进行处理。系统的复杂逻辑包含在系统内部处理的流程上,而非与外部系统的交互。建模主要任务是表达系统内部的交互。
用例图适于表达交互,之所以上面使用了电信系统,是因为用例最早来自于Ericsson的交换机系统。当时,还是Ericsson雇员的Jacobson初步建立了用例图的概念,并于1994年提出了OOSE方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,比较适合支持商业工程和需求分析。随着用例的发展,用例被大量的用于对功能进行描述。每个用例代表了系统与外部ACTOR的交互。可以采取顺序图来表达用例的具体操作程序。ACTOR用于确定系统的边界。
ACTOR、用例可以从不同的层次来描述信息。采用该原则的原因有:
1. 需求并不是在项目一开始就很明确,往往是随着项目的推进,逐渐细化。
2. 人的认知往往具有层次的特性。从粗到细、从一般到特殊。采用不同的层次来描述,适于认知的过程。
4 需求的冲突
有的时候,虽然已经将用户分类并选出了用户代表。但是需求的来源众多,往往会发生需求之间自相矛盾的事情。需求从四面八方收集来后,人们难以解决冲突,澄清模糊之处以及协调不一致之处。某些人还要对不可避免要发生的范围问题单独作出决定。在项目的早期阶段,你必须决定谁是需求问题的决策者。如果不清楚谁有权并且有责任来作出决策,或者授权的个人不愿意或不能作出决策,那么决策者的角色将自然而然地落在开发者身上。这是一个非常糟糕的选择,因为开发者通常没有足够多的信息和观点来作出业务上的决策。
在软件项目中,谁将对需求作出决策的问题并没有统一的正确答案。分析员有时听从呼声高的或来自最高层人物的最大的需求。即便使用用户代表这一手段,必须解决来自不同用户类的相冲突的需求。通常,应尽可能由处于公司底层的人作出决策,因为他们与问题密切相关,并能得到关于这些问题的广泛信息。
如果不同的用户类有不一致的需求,那么必须决策出满足哪一类用户的需求更为重要。了解可能使用产品的客户种类的信息和他们的用法与产品的业务目标的关系如何,将有助于你决定哪一个用户类所占份额最大。
当开发者想象中的产品与客户需求冲突时,通常应该由客户作出决策。然而,不要陷到“客户总是对的”的陷阱中去,对他们百依百顺。现实中,客户并不总是对的。客户总是持有自己的观点,开发者必须理解并尊重这一观点。
5 角色类和角色实例
软件产品最终是给一些用户来使用的,而用户之间的差异是非常大的。造成差异的原因包括了对计算机的认知程度的不同,使用习惯的不同,在软件目标组织中所处的地位不同,地理位置不同,业务熟练程度不同。
不同的用户都有自己一系列的功能需求和非功能需求。对电脑熟练程度不同的人可能就会有不同的要求,熟练程度低的用户可能希望有一个友好的界面,熟练程度高的用户可能更希望有快捷键或宏的操作以提高工作效率。考虑到用户的差异性,将用户分类并研究用户类的行为特征是非常有必要的。所以在做具体的需求之前,先将用户分局行为和特点进行分类,对于研究、收集用户的需求是非常有帮助的。
可以利用一个简单的表格列出一些原始的分类,然后不断的完善这个表格。确认你的分类之间没有交集。并充分描述用户分类的行为,目的,要求等。在企业分析中,比较常见的分类可能包括,供应商,客户,部门等。
就像C++中的类和对象一样,我们把分析出的用户分类称为“角色类”,把实际的用户称为“角色实例”。在得到用户分类之后,最重要的就是要选出用户代表,用户代表不仅仅是在需求阶段中参与项目,还必须对项目的全过程负责。用户代表能够代表用户分类的需求。抓住用户代表的需求就大致把握住了用户类的需求。当然,需求分析还是需要在用户中做大规模的调查的,只是要把重点放在用户代表上。
确保和用户直接进行沟通!大家有没有玩过传话的游戏,可能看过。一群人排成一列,一句话从排头挨个向后传,到最后,那句话已经是面目全非了。所以,一定要保证项目组能够直接和用户接触。
对于和用户直接沟通这一点,一般的针对特定企业的应用系统当然是不成问题,可是如果是开发行业软件,和用户直接沟通就成为一件几乎是不可能的事情。在这种情况下,一般有几种解决的办法:
做大规模的市场调查,针对你的目标市场做市场调查,并根据统计学的理论建立你的数学模型。这部分的工作效果最好,其性质有些象一些游戏公司会发布一些Demo版的游戏。可是对于一般的企业来说,这项工作费时费力,高昂的成本往往使大家知难而退。我的意见是,方法是非常好的,但是可以采用折衷的办法,例如选取有代表性的企业,为特定企业制作一个较小的版本并收集反馈意见等。这涉及到很多市场营销的内容,并不是我的专业所长,这里就不多弄斧了。
聘请行业专家,一个行业专家往往可以在项目需求方面发挥极为重要的作用。一个行业专家往往都有大量的行业经验和行业的人际关系网络。在产品的设计方面,这个行业专家提供很多宝贵的意见。在目前很多的软件的开发过程中都采用了这种方式。行业专家有两种:一种是在这个行业中有很深的资历,但是对软件技术并不熟悉;第二种是开发过同类软件的软件专家,这种人在开发同类软件过程中已经积累了大量的项目经验,并且具有软件开发的知识。这种方式是获取需求的最好的方式。 分析对比同类软件,微软在开发Office、Visual Studio的时候,也是参照了Lotus和Borland的成熟产品。这种方式的特点在于成本很低,比较适合和其他的方式配合使用。但是,要注意自己有没有触犯专利法。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/