The templates approach to software reuse