Characteristics Of A Good Program

Introduction

An instruction is a direction given to be followed. In computer science an instruction is used to direct computer architecture to execute operations to get desired output. To get different output different types of instructions are executed. Execution of instruction is sequential/procedural. When these instructions are grouped together the form Program.

Computers were invented to automate manual work and to get fast, accurate and correct results. Accuracy and correctness of results depends on how correctly and accurately instructions are executed. As a set of instructions is called a program, it can be said that correctness and accuracy of computer results depends on correctness and accuracy of computer programs. 

To get a high degree of accuracy and correctness, a computer program must be written on well defined and tested benchmarks. These benchmarks define Characteristics of a Good Program.

Quantification

Computer programs must be quantified. This quantification is done to better understand the attributes of programs. To quantify programs indirect measures must be devised. These indirect measures lead to the formation of metrics that provide benchmarks to be used to measure characteristics of a good program. 

To improve the efficiency of a program it is necessary to quantify unmeasurable quantities of a program and this is done using metrics.Technical metrics provide insight of the program.

A computer program interacts with data, architecture, interfaces and hardware components. Metrics provide guidelines to quantitatively analyse, design, code and test computer programs.

Thus, a good metric must exist against which a computer program is quantified. To develop good metrics, past data related to computer programs is analysed. On the basis of this analysis computer program evaluation metrics are developed.

To measure the accuracy and correctness of a metrics it must be tested against computer programs. Results obtained must be statistically analysed and mathematically formulated.

Good

How do you define “Good” ??. Good means having the required qualities and quality is composed of multiple factors and these factors depend on the type applications and the customers who request them.

Thus, a program can be said to be “Good” when it attains the required quality. To quantify the goodness of the program or quality of a program all those factors must be considered that can be quantified directly along with measures that can be quantified indirectly. These factors are tested against computer program data to indicate the quality and goodness of the program.

Equation

Fq = c1*m1+c2*m2+. . .+cn*mn

Where,

           Fq is quality factor/goodness factor,

           cn is regression coefficients,

           mn is the metrics that influence quality factors.

The above equation can be used to grade characteristics of a good program. 

Metrics

To assess the characteristics of a good program metrics must be developed. Metrics development undergoes following phases (Arthur, L.A., Measuring Programmer Productivity and Software Quality, Wiley-Interscience, 1985):

  • Definition phase
  • Research and development phase
  • Production design phase
  • Production phase
  • Application phase

These phases are executed to develop prototypes of metrics to quantify characteristics of a good program.

An intensive research has been undergone to quantify the characteristics of a good program. Many attempts have been made to develop a single metric to work as a benchmark to develop a good computer program but it is difficult to arrive at a single metric that can do this. Following are the metrics that can be used to quantify the characteristics of a good program.

Function-Based Metrics

Function point metric is used to predict the size of the program. Following are the key parameters of function point metrics:

  • Quantification of user inputs
  • Quantification of user outputs
  • Quantification of user inquiries
  • Quantification of files
  • Quantification of external interfaces

The Bang Metric

The Bang Metric is also used to predict the size of the program but it has an additional quality to measure the relationship between data objects, measuring the number of state transition, number of relationship maintained by data objects etc. these are key factors that defines the characteristics of a good program:

  • Functional primitives (FuP)
  • Data elements (DE)
  • Objects (OB)
  • Relationships (RE)
  • States (ST)
  • Transitions (TR)
  • Modified manual function primitives (FuPM)
  • Input data elements (DEI)
  • Output data elements (DEO)
  • Retained data elements (DER)
  • Data tokens (TCi)

Relationship connections (REi)

Morphology metrics
Morphology metrics provide connectivity density or coupling of the computer program architecture.

size = n + a
Where,
       n is the number of modules in computer programs,
       a is the number of arcs.
r = a / n
Where,
       r is the arc-to-node ratio,
      r indicates the coupling of the architecture

Component-Level Design Metrics

Component-Level design metrics measures – Module Cohesion, Coupling and Complexity.

Following are the parameters of Component-Level Design Metrics:

  • Data slice
  • Data tokens
  • Glue tokens
  • Superglue tokens
  • Stickiness
  • Number of global variables used as data
  • Number of global variable used as control
  • Number of modules called
  • Number of modules calling the module under consideration

Round Ups

From the study conducted by Arthur, L.A., Measuring Programmer Productivity and Software Quality, Wiley-Interscience, 1985, Table 1 indicates the Characteristics of Good Program

Goodness Factor

  • Auditability
  • Accuracy
  • Communication commonality
  • Completeness
  • Complexity
  • Concision
  • Consistency
  • Data commonality
  • Error tolerance
  • Execution efficiency
  • Expandability
  • Generality
  • Hardware Independence
  • Instrumentation
  • Modularity
  • Operability
  • Security
  • Self-documentation
  • Simplicity
  • System Independence
  • Traceability
  • Taining

Characteristics of good program

  • Correctness
  • Reliability
  • Efficiency
  • Integrity
  • Maintainability
  • Flexibility
  • Testability
  • Portability
  • Reusability
  • Interoperability
  • Usability

Characteristics  of a Good Program:

Potability: The computer program should be platform independent.

Maintainability: It is related to finding and removing  programming errors.

Efficient: It is related to space complexity.

Reliable: Computer programs should maintain time and space complexity even if the user needs are changed.

Machine Independence: Computer programs should possess the  run-time equilibrium on different systems.

Flexible: Computer programs should provide the flexibility of extension. If required computer programs should extend features easily.

These Characteristics of Good Program should relate to following metrics:

  • Function-Based Metrics
  • The Bang Metric
  • Morphology metrics
  • Component-Level Design Metrics 
Finally, a good characteristics can be quantified using the following equation:
Fq = c1*m1+c2*m2+. . .+cn*mn

Where,
           Fq is quality factor/goodness factor,
           cn is regression coefficients,
           mn is the metrics that influence quality factors.
The above equation can be used to grade characteristics of a good program.