The need
The economical development of custom applications requires particular care in the area of distributed systems with highly complex server components and high-performance user interfaces. The challenge is to keep development costs, time, and complexity under control. Just when custom solutions should be created in the object-oriented world, the development processes can use standardization to lead to coherent software architectures, the management of complex systems, and the reusability of components. But how do you actually implement this kind of software production?
The solution
Classes or objects in the object-oriented world represent elementary building blocks for the construction of application logic. Applications basically consist of a library of classes which stand in various relationships to one another. Class structures can take on very complicated forms; in modern object-oriented development, methods like Unified Modeling Language (UML) support planning and implementation.
Why object orientation?
One of the most important advantages of the object-oriented approach – whether implemented with Java or .NET technologies – involves, besides the reusability of classes, the integration of data and the functions used to manipulate it. If, for instance, person structures are codified into a class, then the entire scope of functionality for personnel processing as well as data for customers, employees, partners, and so on, can be used on the same basis.
Procedural programming languages like COBOL, Natural, or FORTRAN also offer the possibility of achieving a certain level of reusability through the clever factoring out of functions into subprograms, but only on a functional level. The paradigm of inheritance, however, is missing entirely from classical technologies.
In the object-oriented world, functional processes are strongly encapsulated. Classes make only the important (public) functions available to the developer. Details of the implementation remain hidden and are only defined once by experts internally to the class.
From today’s standpoint, object orientation was a significant prerequisite for the success of the Internet. Distributed systems with highly complex server components and high-performance user interfaces are not thinkable without object-oriented technologies. Moreover, the event-based graphical user interfaces which arose with Windows require object-oriented structures.
Why are Java and .NET only now becoming successful?
The standardization of the entire development process leads to coherent software architectures, to the mastering of complex systems, and to the reusability of components. With the use of frameworks like J2EE Enterprise Technologies from Sun Microsystems or Microsoft’s .NET strategy, powerful tools for the development of modern applications, Internet applications, and Web services are now available. Frameworks provide many parts of applications in the form of prebuilt functionality and development examples. That allows the development costs for custom solutions to sink significantly and heavy-duty bases to be created for a successful software life cycle.
Another significant basis for the successful object-oriented technologies can be found in architectural models. With the description of design patterns, the expert knowledge of decades is bundled and thus a general model for object-oriented architecture created. Current topics like J2EE patterns and Model Driven Architecture (MDA) extend the spectrum. Today the professional world agrees: object-oriented projects live from their architecture and modeling, while the classical procedure of process-oriented coding simply no longer exists.
Economical use
The bundling of all development processes into a strategic platform represents a significant basis for the development of enterprise-wide custom solutions. Steve McConnell, author of several books and well-known strategist of the object-oriented world, described in 1996 in his book "Rapid Development" the four-dimensionality of the development process. Processes, people, technologies, and projects should be managed together in an integrated development process. This integration is provided today by so-called software production environment (SPE). SPEs provide a standard framework for the entire process of application development.
SPEs should absolutely not be seen as standard solutions, but rather are oriented towards the individual conditions of a single company. Standardized and custom enterprise processes, standardization of development processes, existing and future technical infrastructures, the operation of software and staff structures all lead to an individual conception.
On the basis of an appropriately tailored production platform, very economical applications can be implemented. Using resource pooling, standardized frameworks and reusable components, the development period for applications is drastically reduced. "Rapid Development", often quoted in the IT world, is implemented in the context of SPE-based projects. Simultaneously, quality increases: only the individual processes of a special application are newly developed; large parts of applications are provided by the SPE as already-tested functionality.
Another positive cost factor is the success of many open-source projects. While the open-source world was at first known only to insiders with projects like Apache/Tomcat or Linux, many large companies are now relying on the outstanding quality of many open sources. Well-known supporters of the open-source initiative are companies like Sun Microsystems and IBM, who currently are exciting the professional world with the free development platform Eclipse.
Overall, standardized software production environments contribute significantly to the control of costs in the area of development of custom solutions. The initial costs of the introduction of an SPE are negligible; particularly when implementing open-source projects, a fast return on investment is achieved. SPEs also support not only development but also the entire software life cycle.
|