It stems from information hiding and indicates the single mindedness of a module. High functional cohesion is disired. Coupling Coupling is one of the measures of the functional independence of a software model. Coupling defines the interconnection of modules. Coupling relates to the complexity and interfacing between modules.
Loose coupling is desired and leads to more understandable and more easily maintainable programs.
Loose coupling also leads to easier and more complete testing since little knowledge about other functions is required. Highly coupled systems are more complex, have reduced testability and maintainable because the engineer must consider all interconnecting modules. Changes are more likly to produce errors. Abstract Data Types Abstract data types are constructs that only provide the user with informations on how to used the ADT, not how the ADT is implemented. The ADT usualy consist of a data structure and the functions to munipulate the data structure.