Search
 
     
   
   
   
 
By
Dr. R. Srinivasan,
CTO, iCMG, Bangalore
   
  Design planning brings better results
 
 


Design choices software development are complex and demand the expertise of experienced managers to decide, and a good team of developers to implement, writes Dr R Srinivasan

HAVING seen the root causes as one of the concepts that depict AntiPatterns, we will now move on to the next one, viz., the "Primal Forces" that influence decision making. As professional software developers, we know that once the customer spells out the-requirements, the next step is to make the necessary options and choices for deciding the appropriate architecture towards the design.

The design should take care of vital aspects like security, development of the project within the planned budget, suitability and adaptability, and above all to be reliable system under the customer's environment where it will be integrated to other systems or applications. All these points illustrate that design choices in software development are complex that demand the expertise of experienced managers to decide and a good team of developers to implement. Of course the choices made depend very much on the context based on which decisions are made. For example, the choices of which details to expose, which features to include, etc., may be vital and a matter of concern in one context and many not be so in another one. The planning team must know and decide what is important and what is not and so decisions are also based on priority. Once the decisions and choices are made, the project plan should also indicate the risks involved in making the decisions. Management of risk is a universal force that motivates the Patterns and solutions and in a similar manner there are other forces in software development. Forces that are resolved carefully lead to successful software whereas unresolved forces lead to chaos.

In today's parlance of net based transactions, the forces influencing the context of software development could also be domain specific, viz., vertical forces and horizontal forces. While the former one is relevant to solution in a particular vertical domain application, the latter one will snap multiple domains horizontally encompassing several software modules or components. Horizontal forces are more difficult to reckon with because design choices made at one place may have a direct or indirect impact on choices made at another place. This definitely will call for well planned software architecture to assure design consistency such that software design across multiple modules pertains to this consistency. Primal forces are a particular class of horizontal forces, which are pervasive to software architecture and development, and therefore represent a value system for software architects and developers. Brown, et. al. In their book, 'AntiPatterns: Refactoring software, architectures and projects in crisis', present different management aspects under Primal Forces. They are Management of Functionality, Management of Performance, Management of Complexity, Management of Change, Management of IT Resources and Management of Technology Transfer.

As we know each and every one of these is very vital during the life cycle of a software development project. Good control and management of functionality will make sure that the developed software will meet the requirements of the customer. Is this enough? The answer is a clear no, because meeting the requirements without achieving estimated performance under different planned environments is no good at all. Management of Performance covers this. The next aspect to consider is how to make the design decisions such that we don't end up with too much of complexity. For example, the designers and the developers should take cognizance of good software abstractions that would lead to deciding a good architecture and simpler interfaces between the various components.

On the other hand, failure to look into effective abstractions will result in an excessively complex and costly system thereby making future enhancements and scalability almost impossible. Management of Change will take care of the adaptability, flexibility and portability of the developed software. To site an example, from William Brown, when the architectural characteristics for interfacing are decided, the areas of greatest adaptability and stability are borne in mind. Management of hardware and software resources is highly relevant particularly in a big enterprise.

A typical case of AntiPattern relevant to this is non-availability of a special hardware or software package during the life-cycle of the development process. This will lead to schedule delay and associated cost escalation. In a similar manner, the control of secured information and services are also vital under this category of management.

Next issue to be cited is Technology Transfer that takes place at two different levels in a project. One of them is at the completion of the project when the product is handed over to the customer with all details and documents and the second one is when a developer leaves the organization halfway through the project. The latter one is more critical: improper and incomplete handling of this task is another example of AntiPattern. Because of the intellectual property rights, security aspects have to be taken care of, if the technology transfer is done over the internet.

(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