Computer Software Design Principles

...g: in General The second principle, that each subsystem provides and publishes a very well defined interface, allows the entire system to be very ‘loosely’ or ‘weakly’ coupled. This coupling can then take advantage of either a peer-to-peer relationship or a client/server relationship. Coupling: strong versus weak Coupling is the relationship that program modules, subsystems, and applications have with each other. Typically, strong coupling should be avoided. In strong coupling the modules know about the inner workings of each other and take advantage of that knowledge. There are times when a strongly coupled relationship is required, usually in order to meet performance requirements. When a relationship between modules is so interdependent the interface must be well documented because any changes to one will necessitate testing both. Weak coupling is implemented by providing well defined interfaces for each module. The inner workings of the modules are unknown to each other module. In other words, the modules clearly describe ‘what they do’ but do not publish ‘how they do it.’ With loose coupling each subsystem can be designed, implemented and modified independently as long as it continues to provide the same service for each published interface. While this is a principle of an object-oriented design (viz., Encapsulation) it is not limited to an object-orient approach. The Third Principle: Layering The third principle, that a good architecture is built in layers, starts out usually with two layers: the desired system or network (end product) on top and the available resources on the bottom (operating system, software libraries, hardware, etc.). Except for very small systems the architect must then design the necessary intervening layers which will resolve the disparity between these layers. Layered construction Layered construction has been used for centuries in constructing buildings. For computer systems James Rumbaugh’s (1991) definition maintains that “A layered system is an ordered set of virtual worlds, each built in terms of the ones below it and providing the basis of implementation for the ones above it” (p. 200). Each module in a layer must know about specific modules in lower la...

Essay Information


Words: 679
Pages: 2.7
Rating: None

All Papers Are For Research And Reference Purposes Only. You must cite our web site as your source.