The Software Engineering discipline has always looked at the development of software products as a process that involves several phases.

At a minimum, these include requirements, design, implementation, testing and maintenance phases. One key insight which emerged from early studies is that, although each phase is important to the overall quality of the product, the maintenance phase tends to be the one which consumes the most resources over the life of a successful product.

The implication is that a well-designed product needs to include support for the maintenance phase, which may extend for many years after the conclusion of the initial development phase and encompass several phases of redevelopment to extend or repurpose the product. Call The Consultant believes that product maintainability is crucial, and consistently follows practices designed to ensure that products developed by the company can be easily maintained. These include the basics of modeling and documentation of the software architecture, full documentation of objects and methods, in-line comments to express the intent of the code, and unit testing of programs.

On a higher level, Call The Consultant's maintainability practices also include the use of object-oriented designs. This goes far beyond the use of the object structures of a given programming language. It's easy to learn to write code in any of these languages, but far more difficult to develop the skill of building cleanly structured object designs. Experience is a key to developing object-oriented design skills, and Call The Consultant has a solid background of over fifteen years of practice in this area to draw upon.

Another key insight is the iterative nature of the design and development process, a pattern well known to experienced developers. Call The Consultant believes in making deliberate use of this natural iterative pattern in design and development through an incremental construction approach which begins by implementing a subset of the total functionality as a working system, then extends the functionality in successive iterations.

This incremental construction approach is particularly well suited to the requirements of contract software development projects. Since it provides a number of partial completion steps it gives the opportunity to meaningfully assess progress and schedule payments reflecting the actual state of the product, as opposed to basing everything on arbitrary measurements such as percentage of code completed. It also reduces the technology and schedule risks, by allowing the most challenging portions of the functionality to be at least partially implemented in the earliest iterations.

HomeServicesSoftware Design ApproachDevelopment ProcessDevelopment EnvironmentBackground and SkillsSample ProjectsAbout UsCareer OpportunitiesContact Us

 

© 2003 CallTheConsultant.com. All rights reserved.