论文部分内容阅读
软件工程本身就是一个知识管理过程,它的整个过程渗透着知识管理的基本思想,如“软件复用”即体现了知识管理中知识重用的思想等。然而大多数软件开发人员,甚至是软件工程师、系统设计师、软件项目经理,都没有明确意识到或者提出这一点。实际上,软件工程非常依赖于知识管理。因此有必要将知识管理的理念与方法引入软件工程中来,以对软件工程的整个过程进行科学的管理,从而提高软件开发的效率,降低开发成本,最大程度地满足客户需求。
一、知识管理的概念
知识管理是知识经济时代基于对“知识具有价值,知识能够创造价值”的认识而产生的一种管理模式,它是信息管理的发展与延伸。知识管理是指一个组织整体上对知识的获取、存储、学习、共享、创新的管理过程,目的是提高组织中知识工作者的生产力,提高组织的应变能力和反应能力,创新商业模式,增强核心竞争力。知识管理强调对日常知识和组织核心知识的管理,重视知识重用、知识共享与交流、知识间的必然联系以及隐性知识的显性化等。
由于知识具有非消耗性、隐含性以及“波粒二相性”等特性,形成了知识管理的三项原则,即:
第一,知识的积累、共享和交流。积累是前进的基础,知识积累是知识管理的基本原则。知识积累能够有效地防止知识随着某项具体工作的结束而消失,或者随着员工的离职而流失。共享是实现知识价值最大化的有效途径。知识共享是指将企业内部的信息和知识尽可能地公开,使每个员工都能更有效地接触和使用企业的知识和信息。交流是知识创造的有效方式。知识交流是积累、共享、交流三项原则中的最高层次。积累和共享为知识发挥作用提供了基础,交流是使知识体现其价值的关键环节。只有在交流过程中,才能更好地完成知识的学习、利用与创新,而创新是知识管理的最高原则。
第二,知识在使用中创造价值。知识的使用就是运用积累的知识不断进行交流对话,使积累的知识流动起来,精髓的知识经过多次过滤而留存并重用,冗余知识在知识使用过程中将被自然剔除。只有将积累的知识共享、交流、重复使用,才能发挥它们真正的作用和价值。
第三,知识自下而上的流动。组织中的知识是在基层创造,并在很大程度上由基层所控制,所以知识管理的好坏,主要是由组织中的下层知识管理水平,或者说组织中直接与客户接触层面的知识管理水平决定的。
二、软件工程中的知识管理思想
从软件项目管理的角度看,软件工程大致分为:概念设计、需求分析、系统设计、编程、测试、实施和维护七个阶段。从软件产业发展的趋势看,在技术水平相差不大的情况下,软件企业竞争的焦点越来越集中在对客户需求的把握上,即概念设计与需求分析这两个阶段。同时,从知识管理的角度看,如何在这两个阶段实现软件企业、用户之间无障碍的知识交流与共享,就成为软件工程的关键问题之一。此外,在系统设计、编程等阶段如何有效运用已有知识来提高软件开发的效率与质量,在整个软件工程中如何将隐性知识显性化,如何有效地管理软件开发中所生成的文档等问题,都是软件工程中所涉及的知识管理思想。
1.软件复用:“软件复用”对应的知识管理术语是“知识重用”,它是指重复使用“为了复用目的而设计的软件”的过程,而可复用软件则是指为了复用目的而设计的软件。使用软件复用技术,开发人员将无需为每一个软件都重新设计框架、编写代码。他们在接受新的软件开发任务时,首先查询已有的软件部件,这些软件部件可能是自己以前开发的,也可能是购买其他软件开发机构的软件部件,然后将已有的软件部件集成在一起实现新的软件产品的功能。如果将软件复用看作一个系统工程的话,那么它就不仅仅是指对源代码的复用,而从需求分析阶段开始,到设计、编码及测试,包括测试案例和测试脚本等,都可以成为复用的对象。根据软件复用的对象,可以将软件复用分为产品复用和过程复用。总之,使用软件复用技术具有提高软件生产率,从而降低成本、减少系统的维护代价、提高系统间的互操作性、提高软件的灵活性和标准化程度等优点。可以说,复用思想是软件工程中最为明显的知识管理思想之一。如果要检验一个软件项目中是否有效地利用了知识管理,最直接的方法之一就是看它是否重复利用了已经成熟的程序或软件部件。但要真正做到软件复用并不容易。比如说,如果没有相关文档的帮助,时间一长可能连编程人员自己都忘了这段程序所要实现的功能了,这样复用就无从谈起,因此有效的知识管理是实现软件复用的重要方法。
2.隐性知识显性化:软件工程的本质是将软件开发中各个环节、各种不确定性问题显性化,由不可控变为可控。如软件开发过程中精神活动的“不可见性”大大增加了过程管理的难度。因此,软件工程管理的指导思想就是千方百计地.使这些过程变为“可见的”,成为事后可以检查的记录。
3.知识的交流与共享:在软件工程的几个阶段中,知识的交流与共享可以说是无处不在。在概念设计与需求分析阶段,软件提供方和用户很难完全描述清楚新软件的需求。特别是用户日常的一些工作,在他们看来已经是习以为常的活动,常常被无意识地忽略,而软件提供方通常不是用户业务领域的专家,他们也不知道这些活动。因此需要软件提供方与客户方进行多次交流,以明确把握客户需求,为项目开发的成功和后期工作打下比较好的基础。而在系统设计、维护等后续阶段,则强调软件开发团队成员之间的知识交流与共享,这是项目开发成功的前提条件之一。
4.文档管理:软件文档的编制在软件开发工作中占有突出地位和相当的工作量。软件文档指的是一些记录的数据和数据媒体,它和计算机程序共同构成了能完成特定功能的计算机软件。高质量的文档对于充分发挥软件产品的效益有着重要的意义。从知识管理的角度来看,文档在软件工程的知识管理中承担着重要的角色,它是知识交流与共享的基础和桥梁。例如,没有办法对没有任何说明文档的程序进行知识管理,即使这段程序创造了世界上最完美的算法,但它所包含的知识是无法共享和重复利用的,因为别人难以看懂,也无法理解。
5.以客户为中心:在当今激烈的市场竞争中,“以客户为中心”是软件工程必备的思想之一。可以说,软件工程的过程就是一条为客户提供服务并为本企业创造价值的价值链。而软件工程的每一个阶段都可以看作是价值链上的一个重要环节。前期的概念设计和需求分析意在掌握客户的需求,中期的系统设计、编程、测试阶段的核心在于实现客户的需求,而后期实施、维护阶段是帮助客户满足需求。对客户关系、客户知识等的管理,是知识管理的重要内容之一。以客户为中心,通过与客户进行充分的知识交流与共享,可以更好地把握客户的需求,更快地完成软件设计,生产出更高质量的软件产品。三、如何对软件工程进行知识管理
1.设立CKO:任何一个知识型企业实施知识管理,必须要有两个前提条件,一是企业的高层领导重视并且支持知识管理,二是要有专门的人员即设立CKO来负责知识管理。因此,要对软件工程进行知识管理,软件企业同样需要一位CKO来系统地管理软件开发过程中的各种知识,并使之起到提高软件生产的效率与质量、降低成本等作用。此外,知识管理的顺利实施还需要组织各层人员的配合。
2.与管理咨询公司合作:由于用户和软件公司处于不同的知识背景之中,所以用户往往难于把业务运行中的关键环节向软件公司描述清楚,同时其对软件语言的理解也有一定欠缺。而软件公司则对管理思想的把握能力较弱,对用户业务的理解不到位,这使用户和软件公司在对同一个问题进行描述时产生了较大的差异。管理咨询公司既可以把用户的需求掌握清楚,又可以用软件公司熟悉的语言把对象系统的同构性描述出来。当然,设立CKO能在一定程度上解决这种不可通约性,但CKO更注重对组织内部的知识管理。因此,与管理咨询公司合作,尤其对于那些没有设立 CKO的软件公司来说就非常必要
3.充分利用技术优势,实现知识共享:对于知识管理来说,现代信息技术不是起决定作用的因素,但知识管理需要借助现代信息技术所构建的平台才可能有效地实施,充分发挥知识的作用。如对软件开发中文档的管理、对开发中产生的有用的知识或经验的管理等,软件公司完全有能力自己设计知识管理系统并对这些知识进行有效的管理,这对于软件复用、客户管理等具有重要作
4.营造和谐的项目团队氛围:软件工程各个阶段的实施,需要各方人员的交流与合作。然而,在项目团队中为了维护自身的利益而采取保守的做法是司空见惯的,团队成员不愿意交流和共享自己独有的知识。虽然在软件开发项目中的团队成员一般都具有较高的专业技术水平,但对团队而言,和谐的项目团队氛围对出色完成工作更为重要。要确保团队成员的这种氛围,就要求软件开发团队必须充分认可和尊重成员的专业特长、知识和技能,确保足够的信息沟通,建立集体创新意识,培养合作共进的和谐气氛。团队成员在这种和谐的环境中才能发挥最大的独创性。
一、知识管理的概念
知识管理是知识经济时代基于对“知识具有价值,知识能够创造价值”的认识而产生的一种管理模式,它是信息管理的发展与延伸。知识管理是指一个组织整体上对知识的获取、存储、学习、共享、创新的管理过程,目的是提高组织中知识工作者的生产力,提高组织的应变能力和反应能力,创新商业模式,增强核心竞争力。知识管理强调对日常知识和组织核心知识的管理,重视知识重用、知识共享与交流、知识间的必然联系以及隐性知识的显性化等。
由于知识具有非消耗性、隐含性以及“波粒二相性”等特性,形成了知识管理的三项原则,即:
第一,知识的积累、共享和交流。积累是前进的基础,知识积累是知识管理的基本原则。知识积累能够有效地防止知识随着某项具体工作的结束而消失,或者随着员工的离职而流失。共享是实现知识价值最大化的有效途径。知识共享是指将企业内部的信息和知识尽可能地公开,使每个员工都能更有效地接触和使用企业的知识和信息。交流是知识创造的有效方式。知识交流是积累、共享、交流三项原则中的最高层次。积累和共享为知识发挥作用提供了基础,交流是使知识体现其价值的关键环节。只有在交流过程中,才能更好地完成知识的学习、利用与创新,而创新是知识管理的最高原则。
第二,知识在使用中创造价值。知识的使用就是运用积累的知识不断进行交流对话,使积累的知识流动起来,精髓的知识经过多次过滤而留存并重用,冗余知识在知识使用过程中将被自然剔除。只有将积累的知识共享、交流、重复使用,才能发挥它们真正的作用和价值。
第三,知识自下而上的流动。组织中的知识是在基层创造,并在很大程度上由基层所控制,所以知识管理的好坏,主要是由组织中的下层知识管理水平,或者说组织中直接与客户接触层面的知识管理水平决定的。
二、软件工程中的知识管理思想
从软件项目管理的角度看,软件工程大致分为:概念设计、需求分析、系统设计、编程、测试、实施和维护七个阶段。从软件产业发展的趋势看,在技术水平相差不大的情况下,软件企业竞争的焦点越来越集中在对客户需求的把握上,即概念设计与需求分析这两个阶段。同时,从知识管理的角度看,如何在这两个阶段实现软件企业、用户之间无障碍的知识交流与共享,就成为软件工程的关键问题之一。此外,在系统设计、编程等阶段如何有效运用已有知识来提高软件开发的效率与质量,在整个软件工程中如何将隐性知识显性化,如何有效地管理软件开发中所生成的文档等问题,都是软件工程中所涉及的知识管理思想。
1.软件复用:“软件复用”对应的知识管理术语是“知识重用”,它是指重复使用“为了复用目的而设计的软件”的过程,而可复用软件则是指为了复用目的而设计的软件。使用软件复用技术,开发人员将无需为每一个软件都重新设计框架、编写代码。他们在接受新的软件开发任务时,首先查询已有的软件部件,这些软件部件可能是自己以前开发的,也可能是购买其他软件开发机构的软件部件,然后将已有的软件部件集成在一起实现新的软件产品的功能。如果将软件复用看作一个系统工程的话,那么它就不仅仅是指对源代码的复用,而从需求分析阶段开始,到设计、编码及测试,包括测试案例和测试脚本等,都可以成为复用的对象。根据软件复用的对象,可以将软件复用分为产品复用和过程复用。总之,使用软件复用技术具有提高软件生产率,从而降低成本、减少系统的维护代价、提高系统间的互操作性、提高软件的灵活性和标准化程度等优点。可以说,复用思想是软件工程中最为明显的知识管理思想之一。如果要检验一个软件项目中是否有效地利用了知识管理,最直接的方法之一就是看它是否重复利用了已经成熟的程序或软件部件。但要真正做到软件复用并不容易。比如说,如果没有相关文档的帮助,时间一长可能连编程人员自己都忘了这段程序所要实现的功能了,这样复用就无从谈起,因此有效的知识管理是实现软件复用的重要方法。
2.隐性知识显性化:软件工程的本质是将软件开发中各个环节、各种不确定性问题显性化,由不可控变为可控。如软件开发过程中精神活动的“不可见性”大大增加了过程管理的难度。因此,软件工程管理的指导思想就是千方百计地.使这些过程变为“可见的”,成为事后可以检查的记录。
3.知识的交流与共享:在软件工程的几个阶段中,知识的交流与共享可以说是无处不在。在概念设计与需求分析阶段,软件提供方和用户很难完全描述清楚新软件的需求。特别是用户日常的一些工作,在他们看来已经是习以为常的活动,常常被无意识地忽略,而软件提供方通常不是用户业务领域的专家,他们也不知道这些活动。因此需要软件提供方与客户方进行多次交流,以明确把握客户需求,为项目开发的成功和后期工作打下比较好的基础。而在系统设计、维护等后续阶段,则强调软件开发团队成员之间的知识交流与共享,这是项目开发成功的前提条件之一。
4.文档管理:软件文档的编制在软件开发工作中占有突出地位和相当的工作量。软件文档指的是一些记录的数据和数据媒体,它和计算机程序共同构成了能完成特定功能的计算机软件。高质量的文档对于充分发挥软件产品的效益有着重要的意义。从知识管理的角度来看,文档在软件工程的知识管理中承担着重要的角色,它是知识交流与共享的基础和桥梁。例如,没有办法对没有任何说明文档的程序进行知识管理,即使这段程序创造了世界上最完美的算法,但它所包含的知识是无法共享和重复利用的,因为别人难以看懂,也无法理解。
5.以客户为中心:在当今激烈的市场竞争中,“以客户为中心”是软件工程必备的思想之一。可以说,软件工程的过程就是一条为客户提供服务并为本企业创造价值的价值链。而软件工程的每一个阶段都可以看作是价值链上的一个重要环节。前期的概念设计和需求分析意在掌握客户的需求,中期的系统设计、编程、测试阶段的核心在于实现客户的需求,而后期实施、维护阶段是帮助客户满足需求。对客户关系、客户知识等的管理,是知识管理的重要内容之一。以客户为中心,通过与客户进行充分的知识交流与共享,可以更好地把握客户的需求,更快地完成软件设计,生产出更高质量的软件产品。三、如何对软件工程进行知识管理
1.设立CKO:任何一个知识型企业实施知识管理,必须要有两个前提条件,一是企业的高层领导重视并且支持知识管理,二是要有专门的人员即设立CKO来负责知识管理。因此,要对软件工程进行知识管理,软件企业同样需要一位CKO来系统地管理软件开发过程中的各种知识,并使之起到提高软件生产的效率与质量、降低成本等作用。此外,知识管理的顺利实施还需要组织各层人员的配合。
2.与管理咨询公司合作:由于用户和软件公司处于不同的知识背景之中,所以用户往往难于把业务运行中的关键环节向软件公司描述清楚,同时其对软件语言的理解也有一定欠缺。而软件公司则对管理思想的把握能力较弱,对用户业务的理解不到位,这使用户和软件公司在对同一个问题进行描述时产生了较大的差异。管理咨询公司既可以把用户的需求掌握清楚,又可以用软件公司熟悉的语言把对象系统的同构性描述出来。当然,设立CKO能在一定程度上解决这种不可通约性,但CKO更注重对组织内部的知识管理。因此,与管理咨询公司合作,尤其对于那些没有设立 CKO的软件公司来说就非常必要
3.充分利用技术优势,实现知识共享:对于知识管理来说,现代信息技术不是起决定作用的因素,但知识管理需要借助现代信息技术所构建的平台才可能有效地实施,充分发挥知识的作用。如对软件开发中文档的管理、对开发中产生的有用的知识或经验的管理等,软件公司完全有能力自己设计知识管理系统并对这些知识进行有效的管理,这对于软件复用、客户管理等具有重要作
4.营造和谐的项目团队氛围:软件工程各个阶段的实施,需要各方人员的交流与合作。然而,在项目团队中为了维护自身的利益而采取保守的做法是司空见惯的,团队成员不愿意交流和共享自己独有的知识。虽然在软件开发项目中的团队成员一般都具有较高的专业技术水平,但对团队而言,和谐的项目团队氛围对出色完成工作更为重要。要确保团队成员的这种氛围,就要求软件开发团队必须充分认可和尊重成员的专业特长、知识和技能,确保足够的信息沟通,建立集体创新意识,培养合作共进的和谐气氛。团队成员在这种和谐的环境中才能发挥最大的独创性。