Coding and Software Maintenance
Coding and Software Maintenance
The coding is the process of transforming the design of a system into a computer
language format. This coding phase of software development is concerned with software
translating design specification into the source code. It is necessary to write source code
& internal documentation so that conformance of the code to its specification can be easily
verified.
Coding is done by the coder or programmers who are independent people than
the designer. The goal is not to reduce the effort and cost of the coding phase, but to cut
to the cost of a later stage. The cost of testing and maintenance can be significantly
reduced with efficient coding.
Goals of Coding
1. To translate the design of system into a computer language format: The
coding is the process of transforming the design of a system into a computer
language format, which can be executed by a computer and that perform tasks as
specified by the design of operation during the design phase.
2. To reduce the cost of later phases: The cost of testing and maintenance can be
significantly reduced with efficient coding.
3. Making the program more readable: Program should be easy to read and
understand. It increases code understanding having readability and
understandability as a clear objective of the coding activity can itself help in
producing more maintainable software.
Generality: Most high-level languages allow the writing of a vast collection of programs,
thus relieving the programmer of the need to develop into an expert in many diverse
languages.
Brevity: Language should have the ability to implement the algorithm with less amount
of code. Programs mean in high-level languages are often significantly shorter than their
low-level equivalents.
Coding Standards
General coding standards refers to how the developer writes code, so here we will
discuss some essential standards regardless of the programming language being used.
Coding Guidelines
General coding guidelines provide the programmer with a set of the best methods
which can be used to make programs more comfortable to read and maintain. Most of the
examples use the C language syntax, but the guidelines can be tested to all languages.
The following are some representative coding guidelines recommended by many
software development organizations.
1. Line Length: It is considered a good practice to keep the length of source code lines
at or below 80 characters. Lines longer than this may not be visible properly on some
terminals and tools. Some printers will truncate lines longer than 80 columns.
2. Spacing: The appropriate use of spaces within a line of code can improve readability.
Example:
Bad: cost=price+(price*sales_tax)
fprintf(stdout ,"The total cost is %5.2f\n",cost);
4. The length of any function should not exceed 10 source lines: A very lengthy
function is generally very difficult to understand as it possibly carries out many various
functions. For the same reason, lengthy functions are possible to have a
disproportionately larger number of bugs.
5. Do not use goto statements: Use of goto statements makes a program unstructured
and very tough to understand.
Programming Style
Programming style refers to the technique used in writing the source code for a
computer program. Most programming styles are designed to help programmers quickly
read and understands the program as well as avoid making errors. (Older programming
styles also focused on conserving screen space.) A good coding style can overcome the
many deficiencies of a first programming language, while poor style can defeat the intent
of an excellent language.
The goal of good programming style is to provide understandable, straightforward,
elegant code. The programming style used in a various program may be derived from the
coding standards or code conventions of a company or other computing organization, as
well as the preferences of the actual programmer.
2. Naming: In a program, you are required to name the module, processes, and variable,
and so on. Care should be taken that the naming style should not be cryptic and non-
representative.
For Example: a = 3.14 * r * r
area of circle = 3.14 * radius * radius;
3. Control Constructs: It is desirable that as much as a possible single entry and single
exit constructs used.
4. Information hiding: The information secure in the data structures should be hidden
from the rest of the system where possible. Information hiding can decrease the coupling
between modules and make the system more maintainable.
5. Nesting: Deep nesting of loops and conditions greatly harm the static and dynamic
behavior of a program. It also becomes difficult to understand the program logic, so it is
desirable to avoid deep nesting.
6. User-defined types: Make heavy use of user-defined data types like enum, class,
structure, and union. These data types make your program code easy to write and easy
to understand.
7. Module size: The module size should be uniform. The size of the module should not
be too big or too small. If the module size is too large, it is not generally functionally
cohesive. If the module size is too small, it leads to unnecessary overheads.
Structured Programming
In structured programming, we sub-divide the whole program into small modules
so that the program becomes easy to understand. The purpose of structured
programming is to linearize control flow through a computer program so that the execution
sequence follows the sequence in which the code is written. The dynamic structure of the
program than resemble the static structure of the program. This enhances the readability,
testability, and modifiability of the program. This linear flow of control can be managed by
restricting the set of allowed applications construct to a single entry, single exit formats.
Rule 5 of Structured Programming: A structure (of any size) that has a single entry
point and a single exit point is equivalent to a code block. For example, we are designing
a program to go through a list of signed integers calculating the absolute value of each
one. We may (1) first regard the program as one block, then (2) sketch in the iteration
required, and finally (3) put in the details of the loop body, as shown in the figure.
The other control structures are the case, do-until, do-while, and for are not needed.
However, they are sometimes convenient and are usually regarded as part of structured
programming. In assembly language, they add little convenience.
Software Maintenance
Software maintenance is a part of the Software Development Life Cycle. Its
primary goal is to modify and update software application after delivery to correct errors
and to improve performance. Software is a model of the real world. When the real world
changes, the software require alteration wherever possible.
Software Maintenance is an inclusive activity that includes error corrections,
enhancement of capabilities, deletion of obsolete capabilities, and optimization.
2. Adaptive Maintenance
It contains modifying the software to match changes in the ever-changing environment.
3. Preventive Maintenance
It is the process by which we prevent our system from being obsolete. It involves the
concept of reengineering & reverse engineering in which an old system with old
technology is re-engineered using new technology. This maintenance prevents the
system from dying out.
4. Perfective Maintenance
It defines improving processing efficiency or performance or restricting the software to
enhance changeability. This may contain enhancement of existing system functionality,
improvement in computational efficiency, etc.
Lack of Traceability
o Codes are rarely traceable to the requirements and design specifications.
o It makes it very difficult for a programmer to detect and correct a critical defect
affecting customer operations.
o Like a detective, the programmer pores over the program looking for clues.
o Life Cycle documents are not always produced even as part of a development
project.
Ripple Effect
The third step consists of accounting for all of the ripple effects as a consequence of
program modifications.
Maintainability
Each of these four steps and their associated software quality attributes is critical to the
maintenance process. All of these methods must be combined to form maintainability.
Non-Technical Factors
1. Application Domain
o If the application of the program is defined and well understood, the system
requirements may be definitive and maintenance due to changing needs
minimized.
o If the form is entirely new, it is likely that the initial conditions will be modified
frequently, as user gain experience with the system.
2. Staff Stability
o It is simple for the original writer of a program to understand and change an
application rather than some other person who must understand the program by
the study of the reports and code listing.
o If the implementation of a system also maintains that systems, maintenance costs
will reduce.
o In practice, the feature of the programming profession is such that persons change
jobs regularly. It is unusual for one user to develop and maintain an application
throughout its useful life.
3. Program Lifetime
o Programs become obsolete when the program becomes obsolete, or their original
hardware is replaced, and conversion costs exceed rewriting costs.
4. Dependence on External Environment
o If an application is dependent on its external environment, it must be modified as
the climate changes.
o For example:
o Changes in a taxation system might need payroll, accounting, and stock control
programs to be modified.
o Taxation changes are nearly frequent, and maintenance costs for these programs
are associated with the frequency of these changes.
o A program used in mathematical applications does not typically depend on humans
changing the assumptions on which the program is based.
5. Hardware Stability
o If an application is designed to operate on a specific hardware configuration and
that configuration does not changes during the program's lifetime, no maintenance
costs due to hardware changes will be incurred.
o Hardware developments are so increased that this situation is rare.
o The application must be changed to use new hardware that replaces obsolete
equipment.
Technical Factors
Technical Factors include the following:
Module Independence
It should be possible to change one program unit of a system without affecting any other
unit.
Programming Language
Programs written in a high-level programming language are generally easier to
understand than programs written in a low-level language.
Programming Style
The method in which a program is written contributes to its understandability and hence,
the ease with which it can be modified.
Program Validation and Testing
o Generally, more the time and effort are spent on design validation and program
testing, the fewer bugs in the program and, consequently, maintenance costs
resulting from bugs correction are lower.
o Maintenance costs due to bug's correction are governed by the type of fault to be
repaired.
o Coding errors are generally relatively cheap to correct, design errors are more
expensive as they may include the rewriting of one or more program units.
o Bugs in the software requirements are usually the most expensive to correct
because of the drastic design which is generally involved.
Documentation
o If a program is supported by clear, complete yet concise documentation, the
functions of understanding the application can be associatively straight-forward.
o Program maintenance costs tends to be less for well-reported systems than for the
system supplied with inadequate or incomplete documentation.