1. A method for generating a computer program that reuses previously stored program components and satisfies quality requirements for an industry for which the computer program is targeted, the method comprising the steps of: receiving a specification of an industry classification for the computer program, a specification of Service Oriented Architecture for the computer program, a plurality of functional requirements for the computer program, a requirement for performance level of the computer program, a requirement for fault-tolerance of the computer program and a requirement for scalability of the computer program; determining, by one or more processors, one or more of the program components that implement the plurality of functional requirements; determining, by one or more processors, one or more combinations of the previously stored program components that include the one or more program components implement the functional requirements, are interconnected by Service Oriented Architecture, and satisfy the requirements for (a) performance level of the computer program corresponding to the industry classification, (b) fault-tolerance of the computer program corresponding to the industry classification, and (c) scalability of the computer program corresponding to the industry classification.