1. In a computing environment, a method comprising: determining, by at least one processor, a meta-pattern of an application by identifying subsystems of a system corresponding to the application, each of the subsystems comprising one or more characteristics associated with the each subsystem, the one or more characteristics including at least one of availability, reliability, redundancy, statefulness or performance; separating the one or more characteristics associated with the each subsystem into a data structure, wherein the one or more characteristics associated with the each subsystem are identified in the data structure as either a minimally required characteristic or a desired characteristic; for each subsystem, determining whether a known design pattern that matches the one or more characteristics associated with the each subsystem exists; responsive to a determination that the known design pattern that matches the one or more characteristics for the each subsystem does exist, providing a design of the system by coupling the subsystems corresponding to each subsystem's design pattern using a connection fabric and associating the one or more characteristics for the each subsystem with that subsystem, wherein the connection fabric is a subsystem; and responsive to a determination that either the known design pattern that matches the one or more characteristics for each subsystem does not exist or is blocked, identifying a need for refactoring the design of the system.