Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Integrated software ensures adaptability
 
 


Software system developed in an integrated manner, ensures good co-ordination and communication with heterogeneous hardware and software platforms, writes Dr R Srinivasan

IT was mentioned in an earlier article that three common concepts depicting anti-patterns in software project development are - root causes pinpointing the context and situations for detecting anti-patterns; primal forces that influence the decision making; and the model adopted in software design based on the chosen architecture. Having seen the first two in the previous articles, we will now move to the third one.

The uniqueness of software architecture is that it is distinct from software engineering, programming and project management. It is the software architect who is the balancing factor to resolve design forces from many different angles and perspectives. To illustrate this with an example of an interactive system, if the architecture is not well planned in advance, any future change to UI will not be easy. It may also end up in a chaotic situation, if the UI is tightly interwoven with the functional core. Such a situation would normally happen when a software system is developed on a piecemeal fashion without conceptualizing a proper architecture at design level. Such a system will become unmanageable when enhancements are attempted at a later date. As Brown, et al says, "One of the key benefits of architecture is the separation of concerns, which means, rather than tackling all the problems at once, partitioning the problem into solvable elements."

A typical model of a small software system can be taken up to illustrate this concept. The model comprises two levels, viz., the "application level" and the "system level". The former one includes the UI and associated functionality to choose and drive the required application. Normally, the applications that represent the external model of the system contain the software needed to address the functional requirements. The internal model of the system, represented by the system level, will demonstrate the interoperability among the different applications and hence the interface requirements needed for this purpose. It is here that the importance of a good architecture comes into the picture to provide highly reliable communication and co-ordination among various applications. In a good design, this concept has to be extended to larger systems as well, where the solutions span multiple systems across the enterprise. Therefore the lesson is that, in the design stage of a large system, a perfect architecture has to be established such that appropriate solutions are applied at the correct levels thereby we will definitely end up with an effective maintainable system.

Steve McConnell, in his book, 'Software project survival guide - how to be sure your first important project isn't your last', says that survival prospects for software projects are often poor, but they do not need to be. He adds that the first step in surviving a software project is being sure to begin the project in a civilized way and from that starting point, much more than mere survival is possible. So, as the saying goes, well begun is half done, decision of a good design-level model based on a perfect architecture is a must in a software development project.

Experts in Patterns and Anti-Patterns advocate a 7-level software design model, particularly in the development of a large software system.

The very purpose of such a model, based on pattern language, is to ensure that, with well-defined priorities at each level, the system is scalable with necessary enhancements in future. To give a brief description of each level, the objects and classes so that the matter of future concern will only be code reuse rather than design reuse. At the micro architecture level, solution of recurring software problems are taken care of by deploying suitable pattern-oriented software that combine multiple objects or object classes. The Gamma Pattern language of the famous Gang of Four (GOF), comprising Eric Gamma, Richard Helm, Ralph Johnson, and John Vlissides, illustrates the development of effective design patterns for applications at this level. The macro component level is involved with the planning, organization and development of application frameworks, sometimes taking into account necessary input from one or more micro-architectures.

The set of user requirements and external inputs to be implemented on the system are taken care of by the application level and therefore its main objective is to implement the set of functionality defined under SRS (Software Requirement Specifications) of the customer. The system level is designed to take are of interoperability between the applications in addition to managing certain life cycle issues such as modifications and replacement of component applications. The enterprise level ensures good co-ordination and communication across an organization that could be in a single location or spread around geographically with heterogeneous hardware and software platforms. The global level takes into account co-ordination and communications across all organization that participate in the development of a single large-scale software project.

(To be continued)

(The author is Chief Technology Officer, Internet Component Management Group, Bangalore and can be contacted at: r.srinivasan@iCMGworld.com)

 
 
     
Copyright © 2006 iCMG. All rights reserved.
Site Index | Contact Us | Legal & Privacy Policy