Almost every material product is made up of parts. Part based construction offers many benefits.   Comprehending a part is easier than comprehending the whole because there is much less to examine. Often a part’s functionality can be partially tested and verified without needing to examine it in context of the whole.   And when the part does need to be examined in the context of the whole, we often only need to consider a few other parts with which the part interfaces.  Parts can even be made up of other parts.  Parts provide a natural sub-division of the whole which supports parallel development.   Parts also enables increased flexibility of the whole.  The funtionality of the whole can often be modified or improved by replacing a part with a different part.  Software composed of parts shares the same benefits as material products. Software parts are referred to as components and their integration within the whole is defined by the parts’ interfaces.  There are many different technologies available that support component based software development. The choice of technology is often dependent upon the deployment scenario for the components (e.g. same machine vs. accross the internet). When writing non-distributed windows applications, I prefer the Microsoft COM component technology framework.

Part Time

My Software Development Philosophy