Abstract Objects in Software Design: Parallels in Life

Software | Website Development

An important trait of a sophisticated software designer is his ability to recognize abstract tasks and requirements in the assignment in which he is engaged.  In this way the software consultant  is able to learn and bring value from his past experience and create rand use reusable code.  It also forces the software designer to think analytically using critical reasoning, and employment of abstract imagination to bring value to the client in the project.  This exercise requires listening and asking probative questions to arrive at and discern abstract analogies to solutions arrived at in his previous engagements.Computer programming and software design are in reality efforts to re-create an invisible model of conditions in the real world.  The more closely the program replicates the reality of a business or other system, the better will be its performance.  The complicated aspect of developing software is the implicit requirement that the software designer be able to visualize and model an invisible replica of what exists in the real world.

We are using the gauges image as a metaphor for thinking in classes and objects, which, in the software world, are the building blocks of abstract thinking.  We are doing that because it is easier to demonstrate an abstraction when it applies to something that you can see, rather than something that is invisible.  Notice the commonalities of the gauges objects: they all are processes which convey information from the automobile to the driver.  Although they differ in their detail, they all possess the property of being able to convert the voltage into usable information.  They all have scales, labels, pointers and the necessary equipment or functions to convey their respective information to the driver.

In a smaller sense they do have meaningful differences.  Their scales are different; their labels differ; and  their sizes differ.  And depending on the model of car, their shapes and colors can be different.  However these smaller differences can either be built in to the classes that define the gauge, or passed in as parameters.

It is the commonalities of these structures it would make our gauges and excellent example of a candidate for an abstract object.  Software designers refer to code that is a blueprint for these objects as ‘classes’.  Objects can also possess powers known as functions or methods which enable an object to perform its expected tasks.  In the case of the gauge object these methods are limited to those that receive and transmit information.  The gauge objects all receive information in the form all of voltage from a wire connected to them.  And they confirm that information and output it to move their needle pointer to an appropriate level all in the gauge’s scale.

Notice that in the case of the speedometer and tachometer, there are additional digital gauges which are used to convey the information of mileage.  However even in these embedded digital gauges, information is derived from the same voltage current sources.  It is also significant to note that these embedded gauges demonstrate another important principle of abstraction: that classes can be and frequently are composed from other classes, and can inherit and/or override properties from their more primitive ancestors.

It is this object oriented approach which is the hallmark of modern database and software design.  The practice of discerning, building and re-using practical and useful software objects creates synergies and efficiencies for both the software design process and the client, bring value to both.  It is also the best way to evaluate and test the integrity of the output, and maintain or modify the resultant code.

The ability and skill with which a software designer/consultant is able to visualize and perceive abstract components in the systems which the software designer is modeling is the most important and direct indicator of the web development consultant’s value and integrity in the quality of his work.

Be Sociable, Share!

Leave a Reply