本项目将研究知识驱动、以过程Agent为基础的软件过程精细估算、资源配置和量化控制方法。通过对软件组织知识资产的挖掘、分析和利用,增强过程Agent的知识能力,并建立个人、团队、组织三个层面的过程性能基线和过程模式。在建立项目时,根据项目的约束条件,基于过程Agent的知识,进行准确的规模、成本、缺陷等估算,并以过程Agent和组织层面的知识为支撑,建立过程仿真模型和量化管理模型,实现对过程资源的合理配置和对过程质量的量化控制。主要研究内容包括组织知识的发现、分析、加工和管理;过程Agent知识增强;过程的估算、资源配置和量化管理。本项目研究的方法,能够有效地降低软件过程的不确定性和动态性对软件开发所造成的影响。在知识的支撑下,过程Agent不仅可以主动建立过程的协作网络,还可以保证建立的软件过程估算准确、计划合理、管理有效,为更好地、更有效地实施过程管理,解决软件危机提供有益的途径。
knowledge management;resource allocation;process scheduling;estimation;quantitative control
软件一直是一种知识密集型的产物,其开发、运行、演化的过程产生了大量的数据,蕴含了非常有价值的知识。譬如Mozaila 有1千多万行源代码,20多万任务指派,50多万个缺陷报告。但是,由于软件的独特性,软件工程中的大数据存在几个明显的特征1)大量的非结构化数据,如工程文档,缺陷报告描述;2)由于软件过程的不确定性,导致数据样本孤立,数据漂移现象严重;3)很多数据具有明显的稀疏性,譬如缺陷数据。利用这些知识帮助我们理解过程,解释现象、提高计划和估算的准确性、改进管理和开发效率、提升产品质量是本项目着力解决的问题。项目提出了基于软件过程Agent的知识挖掘和知识建模方法,在上期项目提出的软件过程Agent的基础上,扩展了Agent的知识模型,并研究基于过程资产挖掘的Agent自动创建方法;针对软件过程数据孤立和环境依赖的问题,项目研究了典型软件过程数据漂移的处理方法,以及缺失数据的修补和处理方法;深入探索了软件过程中非结构化数据的知识挖掘、加工和分析方法,在知识分析的基础上,改进传统的估算方法,提高估算的准确性,并基于过程知识,调度和配置资源,支持精细化的风险分析和项目发布计划制定;计划的目的是为了有效的管理和控制,项目还研究了基于过程知识的软件过程量化控制和质量改进方法,在过程证据管理、演化管理、缺陷管理和过程改进等方面取得了良好的实践应用效果。此外,在本项目执行期间,开放环境下的软件开发模式发展迅猛,社区开发以自治协作为特点。基于计划驱动开发模式的过程Agent在开放环境下不适应。所以我们在完成本项目计划书各项任务的基础上,对开放社区的软件过程知识挖掘、利用和质量保障,也进行了一些探索,并获得了较好的成果。项目研究成果在国内外一流杂志或者会议上发表高水平论文33篇,其中SCI收录5篇次,EI收录25篇次,ISTP收录26篇次。发表的国际期刊包括JASE,JST等,参加并进行大会报告的本领域最好的国际会议包括RE,ICSE,ESEM等。项目在演化管理部分的成果获得北京市科技进步二等奖一次。另申请/授权专利3项,软件著作权2项,并培养研究生十余人,其中2人获博士学位,10人获得硕士学位。 这些研究成果、软件工具、专利等通过实际使用,能够有效地控制软件过程风险,增加计划的稳定性和可预测性,降低过程管理成本,提高软件组织的整体效益。