在不成熟的软件单位,软件过程一般由实践者及其管理者在项目进程中临时拼凑而成,因而推迟进度和超出预算已成为惯例,产品质量难以预测,有时为了满足进度要求,常在产品功能和质量上做出让步。不成熟的软件组织具有以下特征:
(1) 软件过程没有进行预先计划,软件项目很难按计划进行和完成;
(2) 缺乏一个客观的基准来判断产品质量,或解决产品和过程中的问题,产品质量得不到保证;
(3) 为了赶进度,常常减少和取消一些提高质量的环节,如检查、测试等;
(4) 产品在交付之前,对客户是不可见的;
(5) 无法实事求是地估计进度和预算,经常超支和超时,在最后关头往往以加班加点的方式赶进度,并在功能性和质量上进行妥协。
然而,一个成熟软件组织具有在全组织范围内管理软件、开发过程和维护过程的能力,规定的软件过程被正确无误地通知到所有员工,工作活动均按照已规划的过程进行。通过可控的先导性试验和费效分析使这些过程得到改进,对已定义过程中的所有岗位及其职责都有清楚的描述,通过文档与培训使全组织有关人员对已定义的软件过程都有很好的理解,从而使其软件过程所导致的生产率和质量能随时间的推移得到改进。成熟的软件组织具有以下特征:
(1) 具有全面而充分的组织和管理软件开发和维护过程的能力;
(2) 能够监视软件产品的质量以及软件开发的过程;
(3) 制定一系列客观基准来判别质量,并分析产品和过程中的问题;
(4) 能够实现预期的成本、进度、功能、性能和质量,满足客户需求;
(5) 人们能够准确及时地交流和传达信息,并按计划有规则地进行工作;
(6) 软件质量被定量化地分析和测量,软件过程被不断地改进。
下表给出了不成熟和成熟软件组织的比较,这种比较分析不仅是形成软件能力成熟模型的基础,也有利于理解该模型。
内容
|
不成熟的软件组织
|
成熟的软件组织
|
软件过程 |
临时拼凑、不能贯彻。 |
有统一标准,且切实可行,并不断改进;通过培训,全员理解,各司其职,纪律严明 。 |
管理方式 |
反应式(消防式)。 |
主动式,监控产品质量和顾客满意程度。 |
进度与经费估计 |
无实际根据,硬件限定时,常在质量上作让步。 |
有历史数据和客观依据,比较准确。 |
质量管理 |
问题判断无基础,难预;进度滞后时,常减少或取消评审、测试等保证质量的活动。 |
产品质量有保证,软件过程有纪律,有必要的支持性基础设施。 |