Appendix M Guidelines for Choosing a Computer Language:
Support for the Visionary Organization

Appendix M: COBOL

COBOL was one of the earliest 3GLs developed, and its popularity has made it the most used language in the world. It was developed specifically to support the data processing domain, and it is almost exclusively used in that domain today. COBOL has been through several revisions over the years in an attempt to keep up with technology. This assessment will consider the most popular forms used today. [Appleby 91] [Eaves 85]

Language Criteria

The following assesses COBOL with respect to the language criteria presented in the Criteria for a Good Language section in the main document:

  1. Its definition should be independent of any particular hardware or operating system. COBOL is completely independent of any particular hardware or operating system.

  2. Its definition should be standardized, and compiler implementations should comply with this standard. The various versions of COBOL have been standardized. However, COBOL has followed the standardization path of most languages, where the language was created and used before it was standardized. Hence, it is common for its compiler implementations to support standard COBOL with additional, system-dependent features. This results in the creation of much non-standard COBOL code.

  3. It should support software engineering technology, discouraging or prohibiting poor practices, and promoting or supporting maintenance activities. All versions of COBOL provide little software engineering support, and its history with respect to maintenance is not very good.

  4. It should effectively support the application domain(s) of interest. COBOL is used almost exclusively in the business data processing domain, and it provides specific support for that domain.

  5. It should support the required level of system reliability and safety. Reliability is not well-supported by language features, since COBOL does not support software engineering technology. Safety-critical systems, those on which human life may depend, are also not effectively supported by COBOL.

  6. Its compiler implementations should be commensurate with the current state of technology. Since COBOL continues to be popular, compiler products continue to be updated to the current state of technology.

  7. Appropriate software engineering-based supporting tools and environments should be available. The best support tools available for COBOL are 4GLs which generate COBOL code. However, most 4GLs do not support a complete software engineering process, and, in this respect, their usefulness is usually limited to systems that are small, or possibly medium, in size and complexity [Misra 88] [Wojtkowski 90].

Language Characteristics

In this section, COBOL is rated with respect to the language characteristics used in Table 2 in the main document [Appleby 91] [Eaves 85]. The ratings range from 0 to 10, where 0 means the language provides no support for the characteristic, and 10 means it provides extensive support. The ratings given below are those provided in Table 2. The reader must bear in mind that the support for a good characteristic in a language does not necessarily mean that it is always used, or used appropriately. Unskilled programmers can write bad code in any language, but a good language facilitates the production of good code by skilled programmers.

Clarity of source code the extent to which inherent language features support source code that is readable and understandable and that clearly reflects the underlying logical structure of the program.

Although COBOL encourages clear expression of identifiers, data structure, and control structure, language features do not support certain important forms of code structuring, such as encapsulation. Rating: 7

Complexity management (architecture support) the extent to which inherent language features support the management of system complexity, in terms of addressing issues of data, algorithm, interface, and architectural complexity.

Support for complexity management is minimal in COBOL, with no language features which support any structures larger than subprogram modules. Rating: 2

Concurrency support the extent to which inherent language features support the construction of code with multiple threads of control (also known as parallel processing).

COBOL provides no inherent support for concurrency. Rating: 0

Distributed system support the extent to which inherent language features support the construction of code to be distributed across multiple platforms on a network.

COBOL provides no specific support for distributed systems. Rating: 0

Maintainability the extent to which inherent language features support the construction of code that can be readily modified to satisfy new requirements or to correct deficiencies.

A COBOL programmer must work very carefully to write maintainable code because the language provides little inherent support. Rating: 2

Mixed language support the extent to which inherent language features support interfacing to other languages.

COBOL provides no language features to support other languages. Some COBOL compilers provide a capability to incorporate SQL statements, but this is a non-standard feature. Rating: 0

Object-oriented programming support the extent to which inherent language features support the construction of object-oriented code.

There is a very recent object-oriented form of COBOL. However, this is a different language than the forms of COBOL discussed here (much like C++ is a different language from C, so they are considered separately). If object-oriented COBOL were to be considered for language selection, it should be added to the language list as a separate language, and a new appendix should be created for it. The forms of COBOL considered here are not object-oriented. Rating: 0

Portability the extent to which inherent language features support the transfer of a program from one hardware and/or software platform to another.

The existence of standards for COBOL makes portability possible. However, common practice does not necessarily adhere to a standard. There are also no inherent language features which facilitate portability, such as the encapsulation of dependencies. Rating: 3

Real-time support the extent to which inherent language features support the construction of real-time systems.

COBOL provides no inherent support for real-time systems. Rating: 0

Reliability the extent to which inherent language features support the construction of components that can be expected to perform their intended functions in a satisfactory manner throughout the expected lifetime of the product.

COBOL provides little in the way of inherent language features to support reliability, other than its data management facilities which promote data reliability. Rating: 3

Reusability the extent to which inherent language features support the adaptation of code for use in another application.

Support for reusability requires support for code clarity, encapsulation, maintainability, and portability. The only one of these COBOL supports very well is code clarity. Rating: 3

Safety the extent to which inherent language features support the construction of safety-critical systems, yielding systems that are fault-tolerant, fail-safe, or robust in the face of systemic failures.

COBOL is not targeted to safety-critical systems, and it does not provide any support for them. Rating: 0

Standardization the extent to which the language definition has been formally standardized (by recognized bodies such as ANSI and ISO) and the extent to which it can be reasonably expected that this standard will be followed in a language translator.

COBOL is standardized by both ANSI and ISO. However, there is no reasonable expectation that a COBOL compiler will follow the standard without including additional features. Rating: 5

Support for modern engineering methods the extent to which inherent language features support the expression of source code that enforces good software engineering principles.

COBOL was not created with support for software engineering in mind, and it provides little inherent support for modern engineering methods. Rating: 1


< Previous Page Search Contents Tables Next Page >

Sections
1 2 3 4 5 6 7

Appendices
A B C D E F G H J
K L M N P Q R S