以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 软件工程论坛 』   (http://bbs.xml.org.cn/list.asp?boardid=48)
----  Elicitation Technique Selection: How Do Experts Do It?[需求工程论文阅读2]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=48&rootid=&id=32119)


--  作者:pennyliang
--  发布时间:5/11/2006 1:58:00 PM

--  Elicitation Technique Selection: How Do Experts Do It?[需求工程论文阅读2]
这是一篇重要的文章,论述了一些需求挖掘(Eliciting,请允许我是用挖掘这个词汇,我个人觉得比较贴切,也由是用需求抽取)的基本方法,和面对几个案例的大师们给出的意见,希望大家反复阅读。


--  作者:jiachong
--  发布时间:5/12/2006 12:08:00 PM

--  
回去读读在发表意见
--  作者:jiachong
--  发布时间:5/12/2006 12:08:00 PM

--  
回去读读在发表意见
--  作者:pennyliang
--  发布时间:5/12/2006 12:53:00 PM

--  
这篇论文通过对9名大师的正式或非正式的interview,寻找一些在实际项目中需求工程是如何展开的,使用了哪些方法,在什么条件,什么时机使用这些方法,是颇有启发性的,startpoints式的paper
--  作者:njty_lzy
--  发布时间:5/14/2006 9:14:00 PM

--  
pennyliang ,首先谢谢你分享这篇文章,我看完了全文.它对各种需求获取技术总结是很全面的,但是对于各个大师的interview,反馈结果太简略了,论文中也提及了面对新的问题,虽然会作出一定的改进,但是基本上都是采用他们自己熟悉的方法,各个专家都不可能熟悉各种方法,当然在面对新问题时还是以他们自己的方法视角去看待问题.而且如果要真正地实施需求抽取,这些专家在论文中给出的回答可能与实际的工作也不可能一致的(论文有提及).
   所以看了还是比较迷惘,我觉得需求获取的选取因人而异,因事而已,这是很正常的,文中的四个case的代表性也不全,照目前来看不可能进行进行详细的规定,那些需求必须要用哪些技术,人的主观性太强了!
   不知道版友有何高见,请不吝赐教
--  作者:pennyliang
--  发布时间:5/14/2006 9:28:00 PM

--  
首先需求挖掘是一门科学,不是座在沙发上吹吹牛就可以大致搞定的。
其次需求挖掘不是一门系统化的,科学化的科学,至少不像自然科学看上去那么严谨,这是由于这么科学是涉及到人。
最后需求挖掘的却主观性很强,目前的研究都是实践走在前面,比如IBM的Jad方法,究竟哪一种方法在哪一种场合,什么时机采用这个和经验是有很大关系的,而且通常一些人会采用自己熟悉的方法,而不会去尝试陌生的方法。采用的方法的评价也是一个极大的困难,如果没有准确的评价你很难确定哪一种方法更好。所有软件工程的方法学都涉及到评价的问题,比如一个架构是否成本合理,范围合理,时间合理,你从那些角度出发,如何确定分值,在如一个生命周期模型好,那么他比其他生命周期模型好多少。

--  作者:njty_lzy
--  发布时间:5/14/2006 9:41:00 PM

--  
我承认你的观点,如你所说,需求挖掘是一门复杂的科学,需求挖掘过程和人的经验结合太紧密了,很难进行量化.可能每一个问题都有它独特的方法,但是现在的方法像我这样实践经验少的人是很难掌握其要领的,比如运用KAOS方法到医院信息管理系统,分析很难进行下去,按照这篇论文说的,那么面向目标的专家肯定会说,从why->what->how方向分析系统,但是具体分析起来还是无从下手.
--  作者:pennyliang
--  发布时间:5/14/2006 10:36:00 PM

--  
按照我目前了解项目的经验看大概是这么个顺序
1)了解现有产品的功能,已知的市场上存在的产品,或者类似产品[必然的]
2)了解现有产品的用户评价,用户期望,还有那些问题没有解决好的。[必然的]
3)寻找代表性用户,了解需求。真实用户或模拟用户,可以是个体用户,使用结构化访谈,非正式聊天,可以是群体用户,问卷调查,获得统计数据。[很多都是技术人员想当然]
4)形式化详细的需求,形式化到可以和设计人员交流,比如去掉用户对于程度的描述,并对之进行合理量化。[极少有公司这样做]
5)用户和设计人员进行评审,反复跌代。[极少有公司这样做]

还有一个问题
项目需求的范围确定是一个非常重要的因素,范围掌握不好对于需求挖掘来说是致命的问题,用户可能提出各种需求,有些是近期的,急迫的需求,有些是远景的,未来的需求,有些是随意的,不确定的需求,有些是肯定的,确定无误的需求,那么对于项目的每一个阶段的需求分析都是很重要的,并不是什么需求都要在某个时间做彻底的挖掘,即使挖掘了也需要近一步的分析,结合各种因素比如市场,成本,时间,可行性等等。


--  作者:njty_lzy
--  发布时间:5/15/2006 9:17:00 AM

--  
需求挖掘过程应该是一个逐步迭代,精化的过程,这是毫无疑问的.

     但是对于开发一个全新的系统,没有类似的产品作参考,只有客户的一些零碎的操作流程的描述,不知道从何入手来整合这些需求.个人觉得需求应该是具有层次的,不同的代表客户提出的需求所处的层次不同,一般来说,高层的需求比较稳定,而低层的需求是最容易改变的,因为它涉及到细节的问题.根据这样的思路,应该首先准确把握高层稳定需求,再逐步进行细化为具体的业务操作细节的需求.
     不知道有没有公司这么做的,我实践经验太少,不知道这样的方法在实际中是否可行


--  作者:pennyliang
--  发布时间:5/15/2006 11:23:00 AM

--  
我不太理解你说的高层的需求和底层的需求的区别,我估计你可能得意思是,领导的需求,和系统实际操作员的需求.事实上稳定的需求往往不是领导可以确定的,领导一拍脑袋的不切实际的想法往往和需求差距很大.真实的,能够实际解决问题的需求就是稳定的需求,反之,存在假定的,不经过调查的,想当然的需求,往往都是禁不起时间的考验的.
--  作者:njty_lzy
--  发布时间:5/15/2006 12:25:00 PM

--  
我所说的不是指领导的需求,应该说是领域专家提出的需求,因为他们对系统有更深层次的理解,能把握一些本质的东西,我想这些应该是比较可靠而且稳定的.就比如一个信息管理系统,首先要划分为若干子系统,那么这些子系统划分的依据我认为就是根据领域专家的意见,因为具体的客户了解他所熟悉的某个具体的方面,而不是把握全局.
--  作者:pennyliang
--  发布时间:5/15/2006 6:05:00 PM

--  
你说的有道理,但是领域专家是可遇而不可求,有些项目是很难找到领域专家,比如ERP,最令我难忘的就是XP的第一个项目,给克莱斯勒做的工资发放系统,由于先后由不同的领域专家充当现场客户,导致对项目的极大伤害,最终失败,还有些项目干脆就没有领域专家,比如QQ,QQ的需求不是领域专家提出的,
--  作者:njty_lzy
--  发布时间:5/16/2006 11:20:00 AM

--  
我想大多数的条件下是能够找到领域专家吧,他们对于具体的业务比较熟悉.但是可能没有使用过系统来支持,就得从头开始做需求,他们首先提出的应该是类似于系统框架的需求,再通过与具体业务人员交流来细化
   你说的情况我确实没有经历过,可能你们请的客户不能称为领域专家吧.对于QQ,我没有发言权,不过最初它的功能也很简单的,我想也是模仿聊天室的模式,只不过变成点对点的了,如果没有在聊天室聊天经验的人,他会想到要进行哪些改进吗
--  作者:jiachong
--  发布时间:5/16/2006 12:35:00 PM

--  
我们实验室有领域工程相关项目,所以我也有些认识
突出领域是为了充分复用领域级的业务知识和开发产物,可以体现为领域产品线或可定制的通用产品
我觉得领域的范围可大可小
往大了归共性少,领域开发难度高,但收益面广
往小了归共性多,领域开发难度低,但收益面窄
这个权衡是需要软件企业根据自己的市场定位和市场预期来判断的

领域小到极点就是单个项目,会被客户牵着鼻子走,需求多变且很难把握
领域一般不能太大,否则就没意义了   就像不需要讨论放之四海而皆准的本体,而强调领域本体

至于QQ这种产品,由于是面向最终用户,且是人人适用的,因此应该更强调用户调查和自我体验(开发者本身也是QQ的用户),这种领域也可以说有领域专家,他熟悉现在上网一族的个性和流行需求,熟悉各公司已有产品的特性,当然他的很多知识也要通过用户调查或自我体验等手段来积累


--  作者:jiachong
--  发布时间:5/16/2006 12:43:00 PM

--  
以下是引用pennyliang在2006-5-15 18:05:00的发言:
你说的有道理,但是领域专家是可遇而不可求,有些项目是很难找到领域专家,比如ERP,最令我难忘的就是XP的第一个项目,给克莱斯勒做的工资发放系统,由于先后由不同的领域专家充当现场客户,导致对项目的极大伤害,最终失败,还有些项目干脆就没有领域专家,比如QQ,QQ的需求不是领域专家提出的,

个人以为你对领域专家的理解有偏差
1)领域专家一般面向一个领域,具有一定的广度,基于领域进行开发是为了面向一系列特定应用,如果是你所说的针对单个用户定制的项目,似乎就谈不上领域了

2)领域专家并不等同于业务用户,他们往往对一个领域有多年的积累,同时具有一定的软件思考能力,善于总结和归纳,这样他们所理解的领域需求是经过总结和归纳的领域需求,涵盖了多种特例需求,有的还带有预见性,有的甚至是用户所未表述出来的,说白了,领域专家要做到比用户更懂业务,这没有多年的积累是做不到的

3)你说的系统之所以失败,我觉得是因为这些所谓“领域专家”其实都只对最终系统有自己的片面的理解或要求,并没有把握潜在需求的实质。用户往往无法正确表达自己的根本需求,但他们能在看到原形实现后说“对了,就是这个”,所以必须挖掘根本需求,这个挖掘并不单纯针对用户的表述进行,还要根据自己对业务规则的理解,提出一些自己所认为的“合理化”建议并通过原型等手段让用户确认


--  作者:pennyliang
--  发布时间:5/16/2006 11:06:00 PM

--  
以下是引用jiachong在2006-5-16 12:43:00的发言:
[quote]以下是引用pennyliang在2006-5-15 18:05:00的发言:
你说的有道理,但是领域专家是可遇而不可求,有些项目是很难找到领域专家,比如ERP,最令我难忘的就是XP的第一个项目,给克莱斯勒做的工资发放系统,由于先后由不同的领域专家充当现场客户,导致对项目的极大伤害,最终失败,还有些项目干脆就没有领域专家,比如QQ,QQ的需求不是领域专家提出的,
[/quote]

个人以为你对领域专家的理解有偏差
1)领域专家一般面向一个领域,具有一定的广度,基于领域进行开发是为了面向一系列特定应用,如果是你所说的针对单个用户定制的项目,似乎就谈不上领域了

2)领域专家并不等同于业务用户,他们往往对一个领域有多年的积累,同时具有一定的软件思考能力,善于总结和归纳,这样他们所理解的领域需求是经过总结和归纳的领域需求,涵盖了多种特例需求,有的还带有预见性,有的甚至是用户所未表述出来的,说白了,领域专家要做到比用户更懂业务,这没有多年的积累是做不到的

3)你说的系统之所以失败,我觉得是因为这些所谓“领域专家”其实都只对最终系统有自己的片面的理解或要求,并没有把握潜在需求的实质。用户往往无法正确表达自己的根本需求,但他们能在看到原形实现后说“对了,就是这个”,所以必须挖掘根本需求,这个挖掘并不单纯针对用户的表述进行,还要根据自己对业务规则的理解,提出一些自己所认为的“合理化”建议并通过原型等手段让用户确认


你分析得很全面,得却如此,领域专家不一定是实际从事这个领域的人,也许是长期研究这个领域,有丰富经验的软件建模专家。如果不能对领域完全了解,就是伪领域专家了。


--  作者:jiachong
--  发布时间:5/17/2006 12:53:00 PM

--  
:)
再多几个朋友讨论就好了
--  作者:pennyliang
--  发布时间:6/24/2006 9:43:00 PM

--  
就我们几个讨论很快就像近亲繁殖一样,不断退化了.
--  作者:Sibyl
--  发布时间:5/17/2007 2:09:00 PM

--  
受益非浅,不过初入职场,经验不足,不发表意见了,先消化一下大哥们的观点0
--  作者:zq_enoch
--  发布时间:1/16/2008 3:35:00 PM

--  
xiexie ~~~

--  作者:gzwxh
--  发布时间:11/19/2008 5:23:00 PM

--  
还是使用多次跌代开发的方法好。这样需求可以逐步提出、逐步实现。多次原型提交给客户使用(一定是整个软件应用有关的人群,不只是操作人员),这些客户做两件事:1、使用性测试;2、提出新的需求和修改意见。项目管理人员需要做好项目评估,估计多少次迭代,每次迭代需要完成多少任务,等等,这就是那个最有项目经验和开发经验的人要做的事。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
109.375ms