建立QIP的基础是:软件开发的改进需要持续学习。经验可以打包到经验模型中,以便于有效地理解和修改。这些经验模型存储在一个库中,称为经验库(Experience Base)。正在执行的项目可以访问、修改和重用这些模型。
QIP强调将项目开发(由项目组织进行)与可重用经验的系统学习和打包(由经验工厂执行)进行逻辑分离 [8]。经验工厂是通过分析和综合各类经验来对产品开发提供支持的独立组织,作为这些经验的仓库,在需要时为各种项目提供经验,见图2-3。
经验工厂以“通过人、文档以及自动化支持手段来构建不同过程、产品和其他形式知识的非形式化、形式化或系统化的模型和度量”来包装经验[16]。
项目组织的目标是生成和维护软件。项目组织为经验工厂提供项目和环境特征描述、开发数据、资源使用信息、质量记录和过程信息。它还提供由经验工厂提供并在该项目中使用的模型的实际效果的反馈信息。
经验工厂处理来自开发组织的信息,并将反馈信息,连同从类似项目剪裁得到的目标和模型一起直接返回给每个项目。它还为特定的项目提供基线、工具、经验教训和数据。
为了改进,软件开发组织需要引入新技术。为此,需要做实验并记录开发项目取得的经验,从而最终改变当前的开发过程。当新技术与当前实践有本质性不同时,为降低风险可以采用离线评估。如上所述,变更评估可以采用控制实验(小规模的精细评估)或案例研究(研究尺度效应)方法。对这两种情况,下文描述的目标/问题/度量方法提供了一个十分有用的框架。