软件需求工程学习笔记(五)
1.综合集成视角下的需求工程
1988年,知名组织理论家Russell Ackoff在他就任国际一般系统研究学会主席的发言中,提出了认知金字塔的模型。这个金字塔的最下层是数据,往上逐渐收窄的每一层,依次是信息、知识、理解和智慧。
数据是指客观事物的属性、数量、位置及其相互关系的符号描述,是用于表示客观事物的未经加工的原始素材,如图形符号、数字、字母等。信息是用来消除随机不确定性的东西,是独立于物质和能量的。在应用语境中,信息是数据在特定场合下的具体含义,也可以说,信息是对数据的解释。
在柏拉图的定义中,他是这样限定的:在所有产生的意见当中,知识是这样的一种子集:属于这个子集的观点,不仅是正确的,而且因为正当的理由为人们所信服。结合信息化的发展,Ackoff对知识重新定义为:知识是将信息变为指令的能力,比如“知道一个系统是如何运行的,或者如何让它以我们希望的方式运行”。他的学生Skip Walter则认为,信息是结构化的数据,而知识则是“可以付诸行动的信息”。知识是数据和信息集合的整体,只有当信息被系统地、有目的地积累起来时,才能转变成知识。数据是记录信息的符号,信息是对数据的解释,知识是信息的概括和抽象;数据经过解释处理形成了信息,信息又经过加工过程形成了知识;知识是由信息描述的,信息则是用数据来表达的;从数据到信息的转换是一个数据处理过程,从信息到知识的转换是一个认知的过程。这就是数据、信息和知识之间的相互依存的辩证关系。
关于知识和理解的区别,以下这段话反映了Ackoff的看法:“知识是通过描述传递的,回答了“如何”(how to)的问题;而理解是通过解释传递的;回答了“为什么”(why)的问题。这是两者最基本的区别。很多企业的经理人不理解这种区别的重要性,他们追求掌 握有关他们所在企业和环境的知识而不努力去理解这些复杂系统。他们试图将事情做好,而不去考虑所做的事情是否是正确的事情。如果他们所做的事在方向上是不正确的,那么,他们越做得好,犯的错误也就越大。”知识和理解分界,源自于主观和客观的分界。理解的外在表现是主观性的,知识的外在表现是客观性的。工具是纯粹客观的事物,为发展工具而形成的工程技术,其对象不应该也不可能越过知识和理解的边界。换句话说,为构建信息系统而发起的需求工程,是站在理解的层面上,在系统价值的体系内筛选知识,构建客观系统。这个认知三角形实际上是一种关于认知的系统描述。这个系统的下层为上层提供要素价值,上层为下层提供环境价值和协调价值。按照价值论的观点,客体引起的主体变化都属于客体给主体产生的价值。价值有正负之分,有利于价值主体生存发展的是正价值,不利于主体生存发展的是负价值。通过价值评定来判断正价值和负价值的性质,而价值评定的依据是系统的目标体系。系统论通过与非系统事物相比较来衡量系统的价值,寻找形成系统后涌现出的那些价值。一方面,系统的价值首先应从系统对其外部环境的影响或作用来考察。另一方面,环境通过源能力和汇能力共同构成环境对系统的支撑能力。环境塑造着环境中的每个系统,环境又是组成它的所有系统共同塑造的。具体到对需求工程的认识,需求工程实际上是根据需求工程的主体对系统价值的理解,构建足以支撑这种系统价值的知识系统,然后再将这种知识系统转化为足以被软件系统人员识别的信息模型。
结合前文所述内容,对应Ackoff的认知三角形,我们可以得出这样的结论:系统工程是位于“理解”层面的,信息工程是位于“信息”层面的,而需求工程则是立足于知识的层面。而软系统和硬系统的宏观分界是存在于“知识”层的。由此可以得出三个基本观点:第一,软件工程的发展充分结合系统工程的发展。第二,软件工程应以知识工程和需求工程为基本的核心领域。第三,知识工程和需求工程是相互依存,相互促进。还可以得出一个基本的关于方法的观点。那就是:处理知识问题的一种基本方法是钱学森综合集成的方法。
2.基于新认识的需求工程系统基本模型
根据前文的论述,建立如下图所示需求工程系统基本模型:
这个系统模型的主结构是一个软件开发的过程。在主结构上,需求工程的输入“2”是和“理解”混杂在一起的“知识”,是实际中得到的知识的原始形态,是软硬混合的知识。经过需求工程的转化后,输出“3”是经过表达的结构清晰的知识。信息工程完成知识到信息模型的转化,输出“4”是能够被软件系统识别的信息模型。软件系统完成信息模型到数据的转换,既包括从信息模型软件设计和构建软件以生成数据,也包括数据在软件系统内的流转和处理。数据进入实践意味着数据驱动的工具对现实环境的作用,从实践环节输出的数据“6”意味着通过数据采集设备收集的数据。模型的主结构描述了在软件项目过程中,从认知模型的高层向低层转化的过程,是从抽象到具体的过程,是项目价值在软件系统中的具体分配过程。
按照系统论的反馈原理,反馈回路是系统稳定的必要条件。在需求工程的系统模型中,回路“7”是从知识到知识的反馈,是产生理解和新知识的过程。回路“8”是从信息模型到知识的反馈,也是产生理解和新知识的过程。回路“9”和回路“10”是从数据到信息的反馈,回路“11”是使用实际数据检验计算数据的过程。这里面蕴含的一个道理是:数据和信息之间是可以通过技术手段自动化的相互转换的,但知识和理解的生成一定是需要人的参与的。随着人类技术手段的发展,由软件系统和硬件系统组成的人工智能系统将无限的趋近于由人和工具组成的实践系统,但知识和理解的分际始终是横亘在智能和“人工智能”之间的分水岭。这个分际是如此的强大,强大到只要不能产生哲学意义上的真正质变,那么人工智能就永远是“人工”的。这个分际又是如此的弱小,从莱布尼兹和牛顿开始的数百年来,人类早已将“线性主部+非线性小量”的技术使用得炉火纯青,在线性主部的范围内,在工程实用的层面上,这个分际是不存在的。
再回到系统模型,结合近年来技术的发展,除了需求工程和“7”、“8”两个反馈学习回路外,模型的其它部分从技术层面讲,已经在比较深入的层面上实现了自动化。这也从侧面说明了为什么开发利用信息资源是现代信息化的主旋律。所谓的资源,就是送给工具加工的材料。信息成为资源的必要条件,是数据处理技术的发展实现了自动化的数据-信息转化。回顾二十世纪,在大部分时间里,社会生产力的最重要组成部分是以石油煤炭为资源的机械电子系统,那么在二十一世纪,在社会生产力主要由机械-电子-信息系统组成的时候,开发信息资源将成为与寻找新能源同等重要的事业,甚至是更重要。同样,可以预见的是,在不久的将来,随着现代信息化建设的不断深化和拓展,从软件服务业的领域将分化出软件制造业这样一个并不新鲜的产业形态。一方面,这将是我国产业结构转型升级的必然结果;另一方面,这也是知识经济在现实产业中的具体形态。当那个时候,软件工程师和软件工人的分际,一定是产生于需求工程的领域。一切开始于需求,一切又回到需求,这又印证了系统论的观点,那就是,系统的演化发展是自内向外的从低层次到高层次螺旋上升的形态。
3.需求工程的基本入口
正如美国国防部科学技术委员会的一份报告中描述的那样:“软件开发现在是,而且永远是一种劳动力密集型的技术......虽然机器能够做一些辛苦而乏味的工作,并让我们能够记录下心中的构想,但概念开发仍是典型的人类活动......软件开发中可以消失的部分是表达这些概念结构所需的工作量,永远不会消失的部分就是打造概念结构。”
在武器装备研制的开端,军方从事的一项重要的活动就是武器装备需求论证。“需求论证”意味着需求是客观存在的,通过论证的活动,通过基于事实的知识即可构成严密的逻辑链条,将这种客观存在的需求清晰地展示出来,构成武器装备系统的系统目标来源。武器装备的需求之所以可以论证,在于武器装备体系的硬系统特征。发展武器装备的目标是明确的,善战者无赫赫之功,发展武器装备的终极目标就是永远也不要使用武器装备,从这个目标可以清晰的衍生出更具体的目标,就是形成威慑,而威慑则来源于技术的先进性,而武器系统技术的先进性则体现在对目标杀伤的有效性和精确性,而这是可以用试验打出来的可验证的硬指标,也就是战技指标体系。从知识的角度讲,这意味着令人信服的可靠的停止点。也就是说,对于武器装备的需求来讲,之所以可以论证,是因为客观存在能够令人信服的由原始目标和战技指标体系构成的需求系统边界,能够形成清晰的需求系统描述。
需求源于现实状态和理想状态之间的偏差,满足需求的活动就是弥补偏差的活动。对于业务系统来讲,理解与知识的边界体现在业务理想和业务现实之间的差距。要从根本上弄清楚软件需求是什么,就需要弄明白三个问题:理想的业务系统是什么;现实的业务系统是什么;为弥补理想业务系统和现实业务系统的偏差,信息系统能够做些什么?通过上文的论述,我们已经知道需求工程是在知识层面进行的,是基于知识的工程。对于一个软件项目,需求工程的开端应该是从这三个问题出发,收集能够回答问题的知识,在构造需求知识结构的基础上,引入技术要素打造软件的概念结构。
4.小结
本章阐述了综合集成视角下的需求工程,得出了系统工程是位于‘理解’层面的,信息工程是位于‘信息’层面的,而需求工程则是立足于‘知识’的层面。而软系统和硬系统的宏观分界是存在于“知识”层的这一基本结论。由此得出了三个基本观点:第一,软件工程的发展充分结合系统工程的发展。第二,软件工程应以知识工程和需求工程为基本的核心领域。第三,知识工程和需求工程是相互依存,相互促进。还可以得出一个基本的关于方法的观点。那就是:处理知识问题的一种基本方法是钱学森综合集成的方法。在前文论述的基础上,以控制系统方块图的形式给出了需求工程系统的基本模型,并提出了对未来软件开发和信息资源开发的一些看法。