2.1 What is Object Oriented Programming ? 

Previous Index Next

The Software Crisis

Software development today can be compared to manufacturing before the development of interchangable part. In those days a skilled craftsman would start with raw materials and build each item by hand. The quality of the item would depend on the skill of the craftsman and the speed of production was goverened by the speed of the craftsman. If the item broke, it could only be repaired by another skilled craftsman, who would have to reverse engineer the original work to build replacement parts.

Studies have shown that as software projects increase in size the chances of faliure rapidly exceed 50%. Of those projects that are deployed 75% are operational failures, which either don't work as they were intended to or are not used at all [1].

Large system are difficult to maintain and enhance. Projects often depend on one key architect who is the only person you actually understands the system. Developers handcraft their portions of the code with little thought on how their work will integrate with the rest of the system or how it could be reused.

Forty years after the invention of the subroutine, we are still building systems by hand, one instruction at a time. We've developed better methods for this construction process, but these methods don't work well in large systems. In addition, these methods usually produce defect-ridden software that's hard to modify and maintain.[2]
These problems form what is known as the Software Crisis. In the information age these problems can have a devestating effect on companies. For example one telecommunications company lost market share worth 1 billion dollars because it was not able to modify its billing software to respond to a competitor's new service offerings. In  another famous case, the opening of the Denver International Airport was delayed more than a year, at a cost of over $1 million per day, because of flaws in the software controlling the baggage handling system.

The impact of these problems have motivated a search for a better way to  build software systems. Object technology  has emerged as an important part of the solution to the software crisis. When combined with good software engineering practices, objects can reduce development costs and time to market for new software. More importantly, objects allow developers to write higher quality and more maintainable code.

What is a Software Object ?

A software object is a code module that weilds data and the code that manipualtes that data into a single entity. A object often represents a real world entity such as a customer or an order. The data structures held by the object are referred to as the object attributes and the code routinues that manipulate the object's attributes are referred to as methods.

So what is Object Oriented Programming then ?

Object Oriented Programming is simply the development of systems using software objects.
 



Sources