When you are faced with a MonolithicDesign, what can you do to ReduceCoupling? First I would suggest that you must define the BusinessRules. Often a MonolithicDesign is the result of having people with a strong DomainKnowledge add more BusinessRules (and hence more files or processes) to an existing codebase. BusinessRules end up getting implemented in a split fashion between different programs (leading to SoftwareFragility). To assist in the process of reducing coupling, it helps to know what are the causes of increased coupling: * Number of files or tables used * Number of software language platforms or implementations used Another way to grok this concept is to imagine assigning a number to the coupling of a process, 1 being the lowest possibly coupling. A program with a coupling of 1 would read in a single flat file or database table, apply logic to implement a single BusinessRule, and write out (or update) a single flat file or database table. ---- The advantage of reducing coupling is that it allows for easier refactoring. ----- EditHint: Merge this with CouplingAndCohesion