Developing existing programs by analyzing and identifying areas for modification ‘Bolting together’ existing software products and getting incompatible platforms to work together