软件一直在不断地演化发展,人们通常通过软件维护和软件再工程解决软件的缺陷。软件维护可以分为改正性维护、适应性维护和完善性维护几种类型。软件维护受开发过程影响大、软件维护困难大、软件维护成本高。软件维护过程包括建立维护组织、报考与评估维护申请、实施维护流程等步骤。软件再工程主要包括对象选择、反向工程、文档重构、代码重构、数据重构和正向过程等活动。