You are on page 1of 17

Software Characteristics and Classification

Software was simple in nature and hence, software development was a simple activity. However,
as technology improved, software became more complex and software projects grew larger.
Software development now necessitated the presence of a team, which could prepare detailed
plans and designs, carry out testing, develop intuitive user interfaces, and integrate all these
activities into a system. This new approach led to the emergence of a discipline known as
software engineering.
Software engineering provides methods to handle complexities in a software system and
enables the development of reliable software systems, which maximize productivity. In
addition to the technical aspects of the software development, it also covers
management activities which include guiding the team, budgeting, preparing schedules,
etc. The notion of software engineering was first proposed in 1968. Since then, software
engineering has evolved as a full-fledged engineering discipline, which is accepted as a
field involving in-depth study and research. Software engineering methods and tools
have been successfully implemented in various applications spread across different
walks of life.

Software is defined as a collection of programs, documentation and operating


procedures. The Institute of Electrical and Electronic Engineers (IEEE) defines
software as a 'collection of computer programs, procedures, rules and associated
documentation and data.' It possesses no mass, no volume, and no colour, which makes
it a non-degradable entity over a long period. Software does not wear out or get tired.
Software controls, integrates, and manages the hardware components of a computer
system. It also instructs the computer what needs to be done to perform a specific task
and how it is to be done. For example, software instructs the hardware how to print a
document, take input from the user, and display the output.
Computer works only in response to instructions provided externally. Usually, the
instructions to perform some intended tasks are organized into a program using a
programming language like C, C++, Java, etc., and submitted to
computer. Computer interprets and executes these instructions and provides response
to the user accordingly. A set of programs intended to provide users with a set of
interrelated functionalities is known as a software package. For example, an
accounting software package such as Tally provides users the functionality to perform
accounting-related activities.

Software Characteristics
Different individuals judge software on different basis. This is because they are involved
with the software in different ways. For example, users want the software to perform
according to their requirements. Similarly, developers involved in designing, coding,
and maintenance of the software evaluate the software by looking at its internal
characteristics, before delivering it to the user. Software characteristics are classified
into six major components.
Functionality: Refers to the degree of performance of the software against its
intended purpose.
Reliability: Refers to the ability of the software to provide desired functionality
under the given conditions.
Usability: Refers to the extent to which the software can be used with ease.
Efficiency: Refers to the ability of the software to use system resources in the most
effective and efficient manner.
Maintainability: Refers to the ease with which the modifications can be made in a
software system to extend its functionality, improve its performance, or correct errors.
Portability: Refers to the ease with which software developers can transfer software
from one platform to another, without (or with minimum) changes. In simple terms, it
refers to the ability of software to function properly on different hardware and software
platforms without making any changes in it.
In addition to the above mentioned characteristics, robustness and integrity are also
important. Robustness refers to the degree to which the software can keep on
functioning in spite of being provided with invalid data while integrity refers to the
degree to which unauthorized access to the software or data can be prevented.

Classification of Software
Software can be applied in countless fields such as business, education, social sector,
and other fields. It is designed to suit some specific goals such as data
processing, information sharing, communication, and so on. It is classified according to
the range of potential of applications. These classifications are listed below.
System software: This class of software manages and controls the internal
operations of a computer system. It is a group of programs, which is responsible for
using computer resources efficiently and effectively. For example, an operating system is
a system software, which controls the hardware, manages memory and multitasking
functions, and acts as an interface between application programs and the computer.
Real-time software: This class of software observes, analyzes, and controls real
world events as they occur. Generally, a real-time system guarantees a response to an
external event within a specified period of time. An example of real-time software is the
software used for weather forecasting that collects and processes parameters like
temperature and humidity from the external environment to forecast the weather. Most
of the defence organizations all over the world use real-time software to control their
military hardware.
Business software: This class of software is widely used in areas where
management and control of financial activities is of utmost importance. The
fundamental component of a business system comprises payroll, inventory, and
accounting software that permit the user to access relevant data from the database.
These activities are usually performed with the help of specialized business software that
facilitates efficient framework in business operations and in management decisions.
Engineering and scientific software: This class of software has emerged as a
powerful tool in the research and development of next generation technology.
Applications such as the study of celestial bodies, under-surface activities, and
programming of an orbital path for space shuttles are heavily dependent on engineering
and scientific software. This software is designed to perform precise calculations on
complex numerical data that are obtained during real time environment.
Artificial intelligence (AI) software: This class of software is used where the
problem-solving technique is non-algorithmic in nature. The solutions of such problems
are generally non-agreeable to computation or straightforward analysis. Instead, these
problems require specific problem-solving strategies that include expert system, pattern
recognition, and game-playing techniques. In addition, they involve different kinds of
search techniques which include the use of heuristics. The role of artificial intelligence
software is to add certain degrees of intelligence to the mechanical hardware in order to
get the desired work done in an agile manner.
Web-based software: This class of software acts as an interface between the user
and the Internet. Data on the Internet is in the form of text, audio, or video format,
linked with hyperlinks. Web browser is a software that retrieves web pages from the
Internet. The software incorporates executable instructions written in special scripting
languages such as CGI or ASP. Apart from providing navigation on the Web, this
software also supports additional features that are useful while surfing the Internet.
Personal computer (PC) software: This class of software is used for both official
and personal use. The personal computer software market has grown over in the last
two decades from normal text editor to word processor and from simple paintbrush to
advanced image-editing software. This software is used predominantly in almost every
field, whether it is database management system, financial accounting package, or
multimedia-based software. It has emerged as a versatile tool for routine applications.

Software Process & Characteristics


The process that deals with the technical and management issues of software development is
called a software process. A software development project must have at least development
activities and project management activities. The fundamental objectives of a process are the
same as that of software engineering (after all, the process is the main vehicle of satisfying the
software engineering objectives), viz. optimality and scalability.
Optimality means that the process should be able to produce high-quality software at
low cost, and scalability means that it should also be applicable for large software
projects. To achieve these objectives, a process should have some properties.
Predictability of a process determines how accurately the outcome of following a process
in a project can be predicted before the project is completed. Predictability can be
considered a fundamental property of any process, In fact, if a process is not predictable,
it is of limited use.
One of the important objectives of the development project should be to produce
software that is easy to maintain. And the process should be such that it ensures this
maintainability. Testing consumes the most resources during development.
Underestimating the testing effort often causes the planners to allocate insufficient
resources for testing, which, in turn, results in unreliable software or schedule slippage.
The goal of the process should not be to reduce the effort of design and coding, but to
reduce the cost of maintenance. Both testing and maintenance depend heavily on the
design and coding of software, and these costs can be considerably reduced if the
software is designed and coded to make testing and maintenance easier. Hence, during
the early phases of the development process the prime issues should be "can it be easily
tested" and "can it be easily modified". Errors can occur at any stage during
development.
However error detection and correction should be a continuous process that is done
throughout software development. Detecting errors soon after they have been
introduced is clearly an objective that should be supported by the process. A process is
also not a static entity.

As the productivity (and hence the cost of a project) and quality are determined largely
by the process to satisfy the engineering objectives of quality improvement and cost
reduction, the software process must be improved. Having process improvement as a
basic goal of the software process implies that the software process used is such that is
supports its improvement.
Selecting Software Process Models
The software process model framework is specific to the project. Thus, it is essential to select the
software process model according to the software which is to be developed. The software project
is considered efficient if the process model is selected according to the requirements. It is also
essential to consider time and cost while choosing a process model as cost and/ or time
constraints play an important role in software development. The basic characteristics required
to select the process model are project type and associated risks, requirements of the project,
and the users.

One of the key features of selecting a process model is to understand the project in terms
of size, complexity, funds available, and so on. In addition, the risks which are
associated with the project should also be considered. Note that only a few process
models emphasize risk assessment. Various other issues related to the project and the
risks are listed in Table.
Table Selections on the Basis of the Project Type and Associated Risks

Project Waterfall Prototype Spiral RAD Formal


Type and Methods
Associated
Risks
Reliability No No Yes No Yes
requirements

Stable funds Yes Yes No Yes Yes

Reuse No Yes Yes Yes Yes


components

Tight project No Yes Yes Yes No


schedule

Scarcity of No Yes Yes No No


resources

The most essential feature of any process model is to understand the requirements of
the project. In case the requirements are not clearly defined by the user or poorly
understood by the developer, the developed software leads to ineffective systems. Thus,
the requirements of the software should be clearly understood before selecting any
process model. Various other issues related to the requirements are listed in Table.
Table Selection on the Basis of the Requirements of the Project

Requirements Waterfall Prototype Spiral RAD Formal


of the Project Methods

Requirements Yes No No Yes No


are defined
early in SDLC

Requirements Yes No No Yes Yes


are easily
defined and
understandable

Requirements No Yes Yes No Yes


are changed
frequently

Requirements No Yes Yes No No


indicate a
complex System

Software is developed for the users. Hence, the users should be consulted while selecting
the process model. The comprehensibility of the project increases if users are involved
in selecting the process model. It is possible that a user is aware of the requirements or
has a rough idea of the requirements. It is also possible that the user wants the project to
be developed in a sequential manner or an incremental manner (where a part is
delivered to the user for use). Various other issues related to the user's satisfaction are
listed in Table.
Table Selection on the Basis of the Users

User Waterfall Prototype Spiral RAD Formal


Involvement Methods

Requires Yes No Yes No Yes


Limited User
Involvement

User No Yes No Yes No


participation
in all phases

No experience No Yes Yes No Yes


of
participating
in similar
projects

Classical Life Cycle Model or linear sequential model


A process model can be defined as a strategy (also known as software engineering
paradigm), comprising process, methods, and tools layers as well as the general phases for
developing the software. It provides a basis for controlling various activities required to develop
and maintain the software. In addition, it helps the software development team in facilitating
and understanding the activities involved in the project.
A process model for software engineering depends on the nature and application of the
software project. Thus, it is essential to define process models for each software
project. IEEE defines a process model as 'a framework containing the processes,
activities, and tasks involved in the development, operation, and maintenance of a
software product, spanning the life of the system from the definition of its requirements
to the termination of its use.' A process model reflects the' goals of software
development such as developing a high quality product and meeting the schedule on
time. In addition, it provides a flexible framework for enhancing the processes. Other
advantages of the software process model are listed below.

Enables effective communication: It enhances understanding and provides a specific basis


for process execution.

Facilitates process reuse: Process development is a time consuming and expensive


activity. Thus, the software development team utilizes the existing processes for
different projects.
Effective: Since process models can be used again and again; reusable processes
provide all effective means for implementing processes for software development.
Facilitates process management: Process models provide a framework for defining
process status criteria and measures for software development. Thus, effective
management is essential to provide a clear description of the plans for the software
project.
Every software development process model takes requirements as input and delivers
products as output. However, a process should detect defects in the phases in which
they occur. This requires Verification and Validation (V&V) of the products after each
and every phase of the software development life cycle.
Verification is the process of evaluating a system or its components for determining
the product developed at the end of each phase of the software
development. IEEE defines verification as 'a process for determining whether the
software products of an activity fulfill the requirements or conditions imposed on them
in the previous activities.' Thus, verification confirms that the product is transformed
from one form to another as intended and with sufficient accuracy.
Validation is the process of evaluating the product at the end of each phase to check
whether the requirements are fulfilled. In addition, it is the process of establishing a
procedure and method, which provides the intended outputs. IEEE defines validation
as 'a process for determining whether the requirements and the final, as-built system or
software product fulfills its specific intended use.' Thus, validation substantiates the
software functions with sufficient accuracy with respect to its requirements
specification.
Various kinds of process models are waterfall model, prototyping model, spiral model,
incremental model, time-boxing model, RAD model, V model, build and fix model, and
formal method model.
Waterfall Model
In the waterfall model (also known as the classical life cycle model), the
development of software proceeds linearly and sequentially from requirement analysis
to design, coding, testing, integration, implementation, and maintenance. Thus, this
model is also known as the linear sequential model.
This model is simple to understand and represents processes which are easy to manage
and measure. The waterfall model comprises different phases and each phase has its
distinct goal. After the completion of one phase, the development of software moves to
the next phase. Each phase modifies the intermediate product to develop a new product
as an output. The new product becomes the input of the next process. Table lists the
inputs and outputs of each phase of waterfall model.
Table Inputs and Outputs of each Phase of Waterfall Model

Input to phase Process/Phase Output of the phase

Requirements defined Requirements analysis Software requirements


through communication specification document

Software requirements Design Design specification


specification document document

Design specification Coding Executable software


document modules

Executable software Testing Integrated product


modules

Integrated product Implementation Delivered software

Delivered software Maintenance Changed requirements

As stated earlier, the waterfall model comprises several phases, which are listed below.

System/information engineering modeling: This phase establishes the


requirements for all parts of the system. Software being a part of the larger system, a
subset of these requirements is allocated to it. This system view is necessary when
software interacts with other parts of the system including hardware, databases, and
people. System engineering includes collecting requirements at the system level while
information engineering includes collecting requirements at a level where all decisions
regarding business strategies are taken.
Requirements analysis: This phase focuses on the requirements of the software to be
developed. It determines the processes that are to be incorporated during the
development of the software. To specify the requirements, users' specifications should
be clearly understood and their requirements be analyzed. This phase involves
interaction between the users and the software engineers and produces a document
known as Software Requirements Specification (SRS).
Design: This phase determines the detailed process of developing the software after the
requirements have been analyzed. It utilizes software requirements defined by the user
and translates them into software representation. In this phase, the emphasis is on
finding solutions to the problems defined in the requirements analysis phase. The
software engineer is mainly concerned with the data structure, algorithmic detail and
interface representations.
Coding: This phase emphasizes translation of design into a programming language
using the coding style and guidelines. The programs created should be easy to read and
understand. All the programs written are documented according to the specification.
Testing: This phase ensures that the software is developed as per the user's
requirements. Testing is done to check that the software is running efficiently and with
minimum errors. It focuses on the internal logic and external functions of the software
and ensures that all the statements have been exercised (tested). Note that testing is a
multistage activity, which emphasizes verification and validation of the software.
Implementation and maintenance: This phase delivers fully functioning
operational software to the user. Once the software is accepted and deployed at the
user's end, various changes occur due to changes in the external environment (these
include-upgrading a new operating system or addition of a new peripheral device).The
changes also occur due to changing requirements of the user and changes occurring in
the field of technology. This phase focuses on modifying software, correcting errors, and
improving the performance of the software.
Various advantages and disadvantages associated with the waterfall model are listed in
Table.

Table Advantages and Disadvantages of Waterfall Model

Advantages Disadvantages
Relatively simple to understand Requirements need to be specified before
Each phase of development proceeds the development proceeds.
sequentially. The changes of requirements in later
Allows managerial control where a phases of the waterfall model cannot be
schedule with deadlines is set for each done. This implies that once the software
stage of development. enters the testing phase, it becomes
Helps in controlling schedules, budgets, difficult to incorporate changes at such a
and documentation. late phase.
No user involvement and working version
of the software is available when the
software is being developed.
Does not involve risk management.
Assumes that requirements are stable
and are frozen across the project span.

Prototyping Model in Software Engineering


The prototyping model is applied when detailed information related to input and output
requirements of the system is not available. In this model, it is assumed that all the
requirements may not be known at the start of the development of the system. It is usually used
when a system does not exist or in case of a large and complex system where there is no manual
process to determine the requirements. This model allows the users to interact and experiment
with a working model of the system known as prototype. The prototype gives the user an
actual feel of the system.

At any stage, if the user is not satisfied with the prototype, it can be discarded and an
entirely new system can be developed. Generally, prototype can be prepared by the
approaches listed below.

1. By creating main user interfaces without any substantial coding so that users can get a
feel of how the actual system will appear.
2. By abbreviating a version of the system that will perform limited subsets of functions
3. By using system components to illustrate the functions that will be included in the
system to be developed
Using the prototype, the client can get an actual feel of the system. So, this case of
model is beneficial in the case when requirements cannot be freezed initially.
This prototype is developed based on the currently known requirements. Development
of the prototype obviously undergoes design, coding, and testing, but each of these
phases is not done very formally or thoroughly.
By using this prototype, the client can get an actual feel of the system, because the
interactions with the prototype can enable the client to better understand the
requirements of the desired system.
Prototyping is an attractive idea for complicated and large systems for which there is no manual process or
existing system to help determine the requirements. Risks associated with the projects are being reduced through
the use of prototyping. The development of the prototype typically starts when the preliminary version of the
requirements specification document has been developed.

At this stage, there is a reasonable understanding of the system and its needs are unclear
or likely to change. After the prototype has been developed, the end users and clients are
given an opportunity to use the prototype.
They provide feedback to the developers regarding the prototype: what is correct,
what needs to be modified, what is missing, what is not needed, etc. Based on the
feedback, the prototype is modified to incorporate some of the suggested changes that
can be done easily, and then the users and the clients are again allowed to use the
system.
This cycle repeats until, in the judgment of the prototypes and analyst. Based on
the feedback, the initial requirements are modified to produce that final requirements
specification, which is then used to develop the production quality system.
Figure Illustrates the steps carried out in the prototyping model. These steps are listed
below.

1. Requirements gathering and analysis: A prototyping model begins with


requirements analysis and the requirements of the system are defined in detail. The user
is interviewed in order to know the requirements of the system.
2. Quick design: When requirements are known, a preliminary design or quick design
for the system is created. It is not a detailed design and includes only the important
aspects of the system, which gives an idea of the system to the user. A quick design helps
in developing the prototype.
3. Build prototype: Information gathered from quick design is modified to form the
first prototype, which represents the working model of the required system.
4. User evaluation: Next, the proposed system is presented to the user for thorough
evaluation of the prototype to recognize its strengths and weaknesses such as what is to
be added or removed. Comments and suggestions are collected from the users and
provided to the developer.
5. Refining prototype: Once the user evaluates the prototype and if he is not
satisfied, the current prototype is refined according to the requirements. That is, a new
prototype is developed with the additional information provided by the user. The new
prototype is evaluated just like the previous prototype. This process continues until all
the requirements specified by the user are met. Once the user is satisfied with the
developed prototype, a final system is developed on the basis of the final prototype.
6. Engineer product: Once the requirements are completely met, the user accepts the
final prototype. The final system is evaluated thoroughly followed by the routine
maintenance on regular basis for preventing large-scale failures and minimizing
downtime.
Various advantages and disadvantages associated with the prototyping model are listed
in Table.

Table Advantages and Disadvantages of Prototyping Model

Advantages Disadvantages
1. Provides a working model to the 1. If the user is not satisfied by the
user early in the process, enabling developed prototype, then a new
early assessment and increasing prototype is developed. This process
user's confidence. goes on until a perfect prototype is
2. The developer gains experience and developed. Thus, this model is time
insight by developing a prototype consuming and expensive.
there by resulting in better 2. The developer loses focus of the
implementation of requirements. real purpose of prototype and hence,
3. The prototyping model serves to may compromise with the quality of
clarify requirements, which are not the software. For example, developers
clear, hence reducing ambiguity and may use some inefficient algorithms
improving communication between or inappropriate programming
the developers and users. languages while developing the
4. There is a great involvement of prototype.
users in software development. 3. Prototyping can lead to false
Hence, the requirements of the users expectations. For example, a situation
are met to the greatest extent. may be created where the user
5. Helps in reducing risks associated believes that the development of the
with the software. system is finished when it is not.
4. The primary goal of prototyping is
speedy development, thus, the system
design can suffer as it is developed in
series without considering integration
of all other components.

Rapid Application Development (RAD) Model and its Advantages and


Disadvantages of RAD Model
The rapid application development model emphasizes on delivering projects in small pieces. If
the project is large, it is divided into a series of smaller projects. Each of these smaller projects is
planned and delivered individually. Thus, with a series of smaller projects, the final project is
delivered quickly and in a less structured manner. The major characteristic of the RAD model is
that it focuses on the reuse of code, processes, templates, and tools.

The phases of RAD model are listed below.

1. Planning: Inthis phase, the tasks and activities are planned. The derivables produced
from this phase are project definition, project management procedures, and a work
plan. Project definition determines and describes the project to be
developed. Project management procedure describes processes for managing
issues, scope, risk, communication, quality, and so on. Work plan describes the
activities required for completing the project.
2. Analysis: The requirements are gathered at a high level instead of at the precise set of
detailed requirements level. Incase the user changes the requirements, RAD allows
changing these requirements over a period of time. This phase determines plans for
testing, training and implementation processes. Generally, the RAD projects are small in
size, due to which high-level strategy documents are avoided.
3. Prototyping: The requirements defined in the analysis phase are used to develop a
prototype of the application. A final system is then developed with the help of the
prototype. For this, it is essential to make decisions regarding technology and the tools
required to develop the final system.
4. Repeat analysis and prototyping as necessary: When the prototype is developed,
it is sent to the user for evaluating its functioning. After the modified requirements are
available, the prototype is updated according to the new set of requirements and is again
sent to the user for analysis.
5. Conclusion of prototyping: As a prototype is an iterative process, the project
manager and user agree on a fixed number of processes. Ideally, three iterations are
considered. After the third iteration, additional tasks for developing the software are
performed and then tested. Last of all, the tested software is implemented.
6. Implementation: The developed software, which is fully functioning, is deployed at
the user's end.

Various advantages and disadvantages associated with the RAD model are listed in
Table.
Table Advantages and Disadvantages of RAD Model

Advantages Disadvantages
1. Deliverables are easier to transfer as 1. Useful for only larger projects
high-level abstractions, scripts, and 2. RAD projects fail if there is no
intermediate codes are used. commitment by the developers or the
2. Provides greater flexibility as redesign users to get software completed on
is done according to the developer. time.
3. Results in reduction of manual coding 3. Not appropriate when technical risks
due to code generators and code reuse. are high. This occurs when the new
4. Encourages user involvement. application utilizes new technology or
5. Possibility of lesser defects due to when new software requires a high
prototyping in nature. degree of interoperability with existing
system.
4. As the interests of users and developers
can diverge from single iteration to
next, requirements may not converge in
RAD model.
Evolutionary Software Process Model:

Evolutionary software models are iterative. They are characterized in manner that
enables the software engineers to develop increasingly more complete version of a
software. That is, initially a rapid version of the product is being developed and then
the product is developed to more accurate version with the help of the reviewers who
review the product after each release and submit improvements. Specification,
development and validation are interleaved rather than separate in evolutionary
software process model.

These models are applied because as the requirements often change so the end
product will be unrealistic, where a complete version is impossible due to tight
market deadlines it is better to introduce a limited version to meet the pressure. Thus
the software engineers can follow a process model that has been explicitly designed to
accommodate a product that gradually complete over time.

Software Development Process


A development process consists of various phases, each phase ending with a defined
output. The phases are performed in an order specified by the process model being
followed. The main reason for having a phased process is that it breaks the problem of
developing software into successfully performing a set of phase, each handling a
different concern of software development.

This ensures that the cost of development is lower than what it would have been if the
whole problem were tackled together. A phased development process is central to the
software engineering approach for solving the software crisis. In general, we can say that
any problem solving in software must consist of these activities:

Requirement analysis

The requirement analyses and identifies what is needed from the system. Requirements
analysis is done in order to understand the problem the software system is to solve. The
problem could be automating an existing manual process, developing a new automated
system, or a combination of the two. The two parties involved in software development
are the client and the developer. The developer has to develop the system to satisfy the
client's needs. The developer usually does not understand the client's problem domain,
and the client often does not understand the issues involved in software systems This
causes a communication gap. This phase bridges the gap between the two parties. The
outcome of this phase is the software requirement specification document (SRS). The
person responsible for the requirements analysis is often called the analyst.

Software Design
It is the first step in moving from problem domain to solution domain. The purpose of
the design phase is to plan a solution of the problem specified by the requirement
documents. Starting with what is needed, design takes us towards how to satisfy the
needs. The design of a system is perhaps the most critical factor affecting the quality of
the software. It has a major impact on the later phases, particularly testing and
maintenance. The output of this phase is the design document. This document is similar
to a blueprint or a plan for the solution and is used later during implementation, testing
and maintenance. It is further of two types:
System Design or Top level Design: It identifies the various modules that should be in
the system, the specifications of the modules and interconnections between the various
modules. At the end of system design all the major data structures, file formats, output
formats, and the major modules in the system and their specifications are decided.
Detailed Design: It identifies the internal logic of the various modules. During this phase
further details of the data structures and algorithmic design of each of the modules is
specified. Once the design is complete, most of the major decisions about the system
have been made. However, many of the details about coding the designs, which often
depend on the programming language chosen, are not specified during design.

Coding
This phase translates the design of the system into code in a given programming
language. This phase effects the both testing and maintenance. Well-written code can
reduce the testing and maintenance efforts. The focus is on developing programs that
are easy to read and understand. Simplicity and clarity should be strived for during the
coding phase.

Testing
It is a major quality control measure used during software development. Its basic
function is to detect errors in the software. Its basic function is to detect errors in the
software. After the coding phase, computer programs are available that can be executed
for testing purpose. This implies that testing not only has to uncover errors introduced
during coding, but also errors introduced during the previous phases. Thus, the goal of
testing is to uncover requirement, design, and coding errors in the programs.
Consequently, different levels of testing are used. The different types of testing are:
a. Unit testing:
It tests each module separately and detects ceding errors.
b. Integration testing:
When the various modules are integrated, this testing is performed to detect errors from
the overall system.
c. System testing:
The system is tested against the system requirements to see if all the requirements are
met and if the system performs as specified in SRS.
d. User Acceptance Testing:
The system is tested against the user requirements to see if the user is satisfied.