General Navigation Buttons - Home | Search | Contact Us | Site Map | Whats New
products graphic
white space
products
Software Technology Roadmap
What's New
Background & Overview
Technology Descriptions
Defining Software Technology
Technology Categories
Template for Technology Descriptions
Taxonomies
Glossary & Indexes
Feedback & Participation
Software Engineering Information Repository (SEIR)
white space
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
pixel
Rollover Popup Hints for Topic Navigation Buttons above
pixel
Object-Oriented Programming Languages


Status

In review

Purpose and Origin

Object-oriented programming languages (OOPLs) are the natural choice for implementation of an Object-Oriented Design because they directly support the object notions of classes, inheritance, information hiding, and dynamic binding. Because they support these object notions, OOPLs make an object-oriented design easier to implement [Baudoin 96]. An object-oriented system programmed with an OOPL results in less complexity in the system design and implementation, which can lead to an increase in maintainability [Baudoin 96]. The genesis of this technology dates back to the early 1960s with the work of Nygaard and Dahl in the development of the first object-oriented language called Simula 67. Research progressed through the 1970s with the development of Smalltalk at Xerox. Current OOPLs include C++, Objective C, Smalltalk, Eiffel, Common LISP Object System (CLOS), Object Pascal, Java, and Ada 95 [Baudoin 96].

Technical Detail

Object-oriented (OO) applications can be written in either conventional languages or OOPLs, but they are much easier to write in languages especially designed for OO programming. OO language experts divide OOPLs into two categories, hybrid languages and pure OO languages. Hybrid languages are based on some non-OO model that has been enhanced with OO concepts. C++ (a superset of C), Ada 95, and CLOS (an object-enhanced version of LISP) are hybrid languages. Pure OO languages are based entirely on OO principles; Smalltalk, Eiffel, Java, and Simula are pure OO languages.

In terms of numbers of applications, the most popular OO language in use is C++. One advantage of C++ for commercial use is its syntactical familiarity to C, which many programmers already know and use; this lowers training costs. Additionally, C++ implements all the concepts of object orientation, which include classes, inheritance, information hiding, polymorphism, and dynamic binding. One disadvantage of C++ is that it lacks the level of polymorphism and dynamics most OO programmers expect. Ada 95 is a reliable, standardized language well-suited for developing large, complex systems that are reliable [Tokar 96].

The major alternative to C++ or Ada 95 is Smalltalk. Its advantages are its consistency and flexibility. Its disadvantages are its unfamiliarity (causing an added training cost for developers), and its inability to work with existing systems (a major benefit of C++) [Tokar 96].

Usage Considerations

OOPLs are strongly recommended to complete the implementation of Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD) technologies. AT&T Bell Labs used OOD and OOPLs and realized the benefits of reduced product development time and increased reuse of both code and analysis/design artifacts on a large project called Call Attempt Data Collection System (CADCS). This large project consisted of over 350,000 lines of C++ code that ran on a central processor with over 100 remote systems distributed across the United States. During the development of two releases of the CADCS, the use of the OOD techniques and subsequent implementation in OOPL resulted in an 30% reduction in development time and a 20% reduction in development staff effort as compared to similarly-sized projects using traditional software development techniques and languages [Kamath 93].

Organizations such as Bell Labs have found that through the introduction of OO programming techniques in pilots and training courses, the developers were able to learn properly and experiment with the OOPL constructs. This resulted in increased object-oriented expertise such that much of the CADCS software (objects) was reused on a similar project [Kamath 93].

OOPLs such as Ada 95 and C++ can also be used to develop traditional non-object-oriented software. These applications can be developed by avoiding the use of the object-oriented language features. There are many commercial, Department of Defense (DoD), and government applications of this type in existence today.

For applications where OOPL code is to be generated by a CASE tool, developers must decide which programming language to generate: C++, Ada 95, Smalltalk, Java, or CLOS. The choice of an OOPL can limit the choices of CASE tools because the tools may not support the chosen language. However, if language generation is not a consideration, then CASE tools can be chosen based on features and design capabilities without regard to the OOPL chosen for implementation.

Since different OOPLs support different levels of 'objectiveness' (e.g., inheritance), different OOD constructs may or may not map directly to OOPL constructs. Therefore, the choice of an OOPL is affected by a design captured using OOD techniques. Where OOD is not present, any OOPL can be used, depending upon the training of the developers.

Maturity

OOPLs have been used worldwide on many commercial, DoD, and government applications/projects. There exists a wealth of documentation and training courses for each of the various OOPLs.

Costs and Limitations

The use of OOPL technology requires a corporate commitment to formal training in the proper use of the OOPL features and the purchase of the language compiler. The costs of completely training a development staff implies that the insertion of this technology should be undertaken only on new developments (instead of maintenance of legacy systems), and only after pilot project(s) are successfully completed [Malan 95].

Alternatives

Both object-oriented and non-object-oriented applications can be written in either traditional languages or OOPLs. To fully realize the benefits of an object orientation, it is much easier to write the implementations in languages especially designed for OO programming.

Complementary Technologies

Combining object-oriented methods with Cleanroom (with its emphasis on rigor, formalisms, and reliability) can define a process capable of producing results that are reusable, predictable, and high-quality. Thus, OOPLs can be used for implementation of an object-oriented design and Cleanroom can be used for life-cycle application engineering.

Index Categories

This technology is classified under the following categories. Select a category for a list of related topics.

Name of technology

Object-Oriented Programming Languages

Application category

Programming Language (AP.1.4.2.1)

Quality measures category

Maintainability (QM.3.1)

Computing reviews category

Object-Oriented Programming (D.1.5)
Programming Language Classifications (D.3.2)

References and Information Sources

[Baudoin 96] Baudoin, Claude & Hollowell, Glenn. Realizing the Object-Oriented Lifecycle. Upper Saddle River, NJ: Prentice Hall, 1996.
[Kamath 93] Kamath, Y. H.; Smilan, R. E.; & Smith, J. G. "Reaping Benefits With Object-Oriented Technology." AT&T Technical Journal 72, 5 (September/October 1993): 14-24.
[Malan 95] Malan, R.; Coleman, D.; & Letsinger, R. "Lessons Learned from the Experiences of Leading-Edge Object Technology Projects in Hewlett-Packard," 33-46. Proceedings of Tenth Annual Conference on Object-Oriented Programming Systems Languages and Applications. Austin, TX, October 15-19, 1995. Palo Alto, CA: Hewlett-Packard, 1995.
[Tokar 96] Tokar, Joyce L. "Ada 95: The Language for the 90's and Beyond." Object Magazine 6, 4 (June 1996): 53-56.

Current Author/Maintainer

Mike Bray, Lockheed-Martin Ground Systems

Modifications

10 Jan 97: (original)



The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2007 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/oopl_body.html
Last Modified: 11 January 2007