2.1 What is Object Oriented Programming ? |
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.