|
|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TOP THREE LINKS YOU MUST CLICK ON DECOUPLING
Reducing Maintenance Costs Through Systems Decoupling
Technological and functional decoupling
Dec. 25, 2006 03:30 PM
Digg This!
Page 1 of 2
next page »
There are a number of reasons why we continuously change our enterprise applications, but sometimes it's hard to explain to the requester why another change would be so costly and time-consuming to implement. IT leaders who want to be fully prepared for inevitable changes in the corporate software infrastructure should do their best to avoid system coupling on both business and technological levels.
Applications shouldn't be thought of as a system created forever. The technology is always improved, new data is collected, organizations are restructured, merges occur, and new laws and regulations are passed, all of which affect the EIS. High coupling is a trait that complicates systems maintenance and makes it more expensive to manage. Highly coupled solutions are more difficult to modify since changes made in one place cause changes to be made somewhere else. Although coupling is essential to the connected applications that should have common assumptions about their interaction processes, we should typically work towards decreasing these levels of coupling. The last technological response to the coupling and integration problems, is Service-Oriented Architecture (SOA). There are two major aspects of coupling - technological and functional. They are addressed in different ways by different people.
Technological coupling is caused by assumptions about technical aspects. The more the application knows about how interaction process is organized, the higher coupling is. To become integrated, applications should speak the same language. This can be achieved by writing applications to use a single communication technology or by adapting them to each other using bridges, proxies, and other similar approaches. Within these methods, individual technological assumptions of particular solutions are replaced with a single standard set of assumptions. These assumptions are usually more high-level. For example, instead of specifying that input files should start with left brocket characters, we specify that it is XML text that conforms to an XML schema. These assumptions are usually supported by third-party libraries and tools, so we do not have to implement them explicitly in our applications. Thus Web service interaction assumptions are implemented by a respective runtime (in Microsoft .NET and Java EE, such a runtime is a part of corresponding platforms). Today, the most popular solutions are based on Service-Oriented Architecture (SOA) and Enterprise Service Bus (ESB). There are many SOA/ESB products available on the market that helps integrate applications with each other with minimal changes and replaces development efforts with configuring efforts. Often the integration of two particular applications could not be foreseen at the time of conception, like in case of a merger or an acquisition. SOA and ESB offer ideology and tools that help integrate existing applications and facilitate future integrations. The primary theme of products that offer solutions to problems of high technical coupling is independence from technical peculiarities of the applications. SOA/ESB products help overcome the following issues:
Although modern approaches are useful, we should not consider tools magic wands. They do not make developers free from knowing technologies and thinking about how to use them effectively. It is very easy to misuse the tools and to introduce security and performance problems, as described later in this article. Another important point is that we cannot assume a migration to SOA being the last migration. SOA/ESB is based on experience gained from previous integration technologies like CORBA, and it will be superseded by technologies based on experience gained from SOA/ESB. This issue should be considered when the cost of migration to SOA is estimated. Early signs of coming transition are complexity and overabundance of standards. When problems of technical coupling are solved, this is not the end of the story, but rather, just the first step in making problems related to functional coupling more obvious.
Functional Coupling In computer systems, high functional coupling may happen when highly coupled workflows are implemented because of pitfalls in functional requirements. In some cases computer-based implementation of business processes does not reflect actual processes (this might happen due to many reasons and in particular from restructuring an organization's workflow). In all cases, functional coupling is caused by what an application does rather than how. Therefore, such problems are solved by changing functional assumptions about business processes and implementing these changes. Functional coupling problems are often less obvious than the technical ones. They should be detected and addressed by analysts and domain experts who need to decide what requirements need modification. An important aspect of activities that reduce functional coupling is reaching functional cohesion, meaning that application functionality should contribute to a single well defined task. UNIX commands and text utilities are classic examples of correlation between programs and specific actions. Often application scope is extended on an ad hoc basis and the initial task gets lost in changes. It is like a library maintenance application that transforms into Internet bookshops by adding a few use cases here and there. Low cohesion of applications in an EIS leads to a number of problems. The most obvious are:
Requirements affect applications, but the reverse may also be true. An EIS that adequately implements business processes of an organization provides extremely valuable feedback about the organization's structure and workflow. Thus, if an application belonging to an EIS demonstrates poor cohesion, it may be a sign that underlying business processes could be improved to increase the degree of cohesion. Organizations should not neglect using this as a way of collecting helpful information. Problems of high functional coupling cannot be reduced purely by technological means since the most difficult part is requirement gathering. The most that we can expect from tools is help in performing a re-factoring of an application and related workflows. Modern IDEs, such as JetBrains IDEA or Eclipse, provide great facilities for program source code re-factoring. We could also expect that in the future we will have tools to make changes on the level of Web services and business processes. For example, when the definition of a Web service is modified, an adapter Web service that provides older versions of the service could be automatically generated. This adapter can be helpful while migration to the new version of the service is in progress allowing updates within the EIS applications one-by-one. But in all cases, decisions about what refactoring procedures should be performed are taken on by humans.
Common Coupling Traps However cost saving techniques that are successfully applied inside an application do not necessary work within the context of an EIS. This was discovered a long time ago (http://citeseer.ist.psu.edu/waldo94note.html), but many people continue learning it from their own experience. One of the important techniques that fail is maximally generic, flexible, and fine-grained interfaces (the latter technique is sometimes over-applied even in the context of a single application). Let's look at the most common practices that may increase cost of changes. Although the design patterns described below are acceptable approaches, in some cases, we recommend considering them as a warning sign.
Exposing the Application "As-Is"
Page 1 of 2 next page » LATEST JAVA STORIES & POSTS
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS MOST READ THIS WEEK SPONSORED BY INFRAGISTICS
BREAKING JAVA NEWS
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||