Design / Development Process

The Software Engineering (SE) discipline has always looked at the development of software products as a process that involves several phases. At a minimum, these include planning, development and maintenance phases. One key insight which emerged from early SE 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. Tharwat Consulting Group believes that product maintainability is crucial, and consistently follows practices designed to ensure that products developed by the company will 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 test programs.

On a higher level, Tharwat Consulting Group's maintainability practices also include the use of clean object-oriented (OO) designs. This goes far beyond the use of OO languages such as C++ and Java - 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 OO design skills, and Tharwat Consulting Group has a solid background of over ten years of practice in this area to draw upon.

Another key insight from SE is the iterative nature of the design and development process, a pattern well known to experienced developers. Tharwat Consulting Group 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 access 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.

S E C T I O N S

[Home] [What We Do] [How We Do It] [Portfolio] [About Us]

Please contact our Webmaster with questions or comments.
© Copyright 1999-2008 Tharwat Abdul-Malik.  All rights reserved.