Thursday, November 19, 2009

CS504

Assignment:CS504 SoftwareEngineering
Write Abstract (Summary) of given research paper Titled “Reducing Coupling” by Martin Fowler”.


Reducing Coupling
If changing one module in a program requires changing another module, then there is a coupling presents. Duplication always implies coupling. Coupling is desirable, because it saves us to write a big program to put together all the modules. It is a controlled process.
Look at dependencies

To consider coupling everywhere is not a good approach.
Pattern of dependency relationship is important not the number of modules. Diagram defined in the Unified Modeling Language (UML) is very helpful to know about the dependencies.
The UI module usually depends on the domain module, but not the other way around. UML dependencies are also nontransitive. This nontransitivity is important because it lets us show that the domain model insulates the UI from changes in the database. Thus, if the database’s interface changes,we don’t immediately have to worry about a change in the UI. The UI will only change if the change in the database causes a big enough change in the domain that the domain’s interface also changes.
Layered architecture should be familiar to anyone who works in information systems.
A common piece of advice regarding dependency structures is to avoid cycles. Cycled systems are harder to understand because we have to go around the cycle many times.
A mapper package

A mapper is a package that provides insulation in both directions. The mapper package provides insulation in both directions, which lets the domain and database change independently of each other. Other kind of dependency is the relationship between an interface and its implementation. An implementation depends on its interface but not vice versa. Any caller of an interface depends only on the interface, even if a separate module implements it.
Defining an interface in a module that a separate module intends to implement is a fundamental way to break dependencies and reduce coupling.A common example in the Java world is a listener. Because listeners are classes, they are more explicit, which clarifies things. Direction of the dependencies and the way they flow is important not the lesser dependencies.

No comments: