Here is a white paper that we wrote recently on the development of software.


Software Development

Managing an Evolutionary Process by Using Forward Looking Development Strategies

 

Software development, especially web development, is an ongoing and evolutionary process. This process does not end until the software ceases to be used or the web site ceases to exist. Web sites, in particular, are dynamic and growing things. In some ways they take upon themselves lives of their own. This is true because of the always changing needs and requirements of the end user – the customer.

 Software development is a discipline that, in many ways, is more of an art form than a science. Not because an interface, web or desktop oriented, has an attractive appearance but because the coding itself can be either a thing of beauty and elegance or it can be like a plate of spaghetti, impossible to follow a line of logic because it is intertwined with so many other lines. One can hear the term “Elegant Solution” when listening to programmers and developers, such as, “This is an elegant solution to the record selection criteria.” Or, conversely, “It isn’t an elegant solution but it works.” This is, in fact, why Elegant Solutions company name was selected. We don't serve spaghetti!

 As a software package grows and the logic behind it changes, those changes may require significant changes in the code that is written. Or it can result few actual coding changes but major changes in logic. For example, the changing of a series of check boxes to option/radio buttons may require simple changes to the few lines of code that display the objects but may require numerous changes to the underlying logic. The reason for this is that any number of check boxes may be selected at one time but only one option/radio button may be selected at any given time. The logic between these two simple objects can be significantly different.

 What may appear to be simple to the end user may require much thought, experimentation and testing for the developer. An example of this might be the simple looking practice of selecting a state from a list of states and then immediately creating a corresponding list of cities for the selected state. There are a number of ways to accomplish this scenario, one example would to be to select the state and then to reload the page using a server side script to select the city list. This would require the saving of every scrap of displayed and queried data to be cached either locally or on the web server during the transition. Another method may be to preserve the page and write a script that runs locally and only updates the city selection list. This would result in more code being written for the browser and transition latency could increase. Both methods have their advantages and disadvantages. The security of the data being selected may dictate which approach is to be used and may, at the same time, have an effect on the underlying logic of associated web pages.

 Care and consideration must be taken into account as the software or web site evolves. A forward thinking developer will consider the future impact of today’s code change on tomorrows needs. For example one method of storing a set of information in a database may result, in the future, of having to store massive amounts of data.  However a well thought out database strategy can avoid such pitfalls by taking future growth into consideration.

 Finally the needs of the customer or end user may change as the software or web site undergoes development. This may result in the necessity of recoding both interface and underlying logic. Changes of this nature must take into account existing code and logic as well as the effect on future circumstances. What may look like a simple request or change today may require massive rewrites in the future, not only of code and logic but underlying data structures as well.

 In conclusion the development of software for the desktop or internet can be likened to the planting of a tiny seedling. As the tree emerges it must be tended carefully, pruned when necessary and groomed regularly over the course of its lifetime. When cared for properly that tiny seedling will develop into an elegant bonsai tree. So too from the first line of code until the final shutdown; software must be properly maintained, always looking forward to the elegant solution that satisfies the needs of the end user.

 

Copyright © 2005 Kenneth Mattern All rights reserved