Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

{Chapter 1 Introduction}

The Evolving Role Of Software


Software Evolution is a term which refers to the process of developing
software initially, then timely updating it for various reasons, i.e., to add
new features or to remove obsolete functionalities etc. The evolution
process includes fundamental activities of change analysis, release
planning, system implementation and releasing a system to customers.
The cost and impact of these changes are accessed to see how much
system is affected by the change and how much it might cost to
implement the change. If the proposed changes are accepted, a new
release of the software system is planned. During release planning, all
the proposed changes (fault repair, adaptation, and new functionality)
are considered.
A design is then made on which changes to implement in the next
version of the system. The process of change implementation is an
iteration of the development process where the revisions to the system
are designed, implemented and tested.
The necessity of Software evolution: Software evaluation is necessary
just because of the following reasons:
a) Change in requirement with time: With the passes of time, the
organization’s needs and modus Operandi of working could
substantially be changed so in this frequently changing time the
tools(software) that they are using need to change for maximizing the
performance.
b) Environment change: As the working environment changes the
things(tools) that enable us to work in that environment also changes
proportionally same happens in the software world as the working
environment changes then, the organizations need reintroduction of old
software with updated features and functionality to adapt the new
environment.
c) Errors and bugs: As the age of the deployed software within an
organization increases their preciseness or impeccability decrease and
the efficiency to bear the increasing complexity workload also
continually degrades. So, in that case, it becomes necessary to avoid
use of obsolete and aged software. All such obsolete Softwares need to
undergo the evolution process in order to become robust as per the
workload complexity of the current environment.
d) Security risks: Using outdated software within an organization may
lead you to at the verge of various software-based cyberattacks and
could expose your confidential data illegally associated with the
software that is in use. So, it becomes necessary to avoid such security
breaches through regular assessment of the security patches/modules
are used within the software. If the software isn’t robust enough to bear
the current occurring Cyber attacks so it must be changed (updated).
e) For having new functionality and features: In order to increase the
performance and fast data processing and other functionalities, an
organization need to continuously evolute the software throughout its
life cycle so that stakeholders & clients of the product could work
efficiently.

Laws used for Software Evolution:

Law of continuing change:


This law states that any software system that represents some real-
world reality undergoes continuous change or become progressively
less useful in that environment.
Law of increasing complexity:
As an evolving program changes its structure becomes more complex
unless effective efforts are made to avoid this phenomenon.
Law of conservation of organization stability:
Over the lifetime of a program, the rate of development of that program
is approximately constant and independent of the resource devoted to
system development.
Law of conservation of familiarity:
This law states that during the active lifetime of the program, changes
made in the successive release are almost constant.
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.

Changing Nature Of Software


Nowadays, seven broad categories of computer software present
continuing challenges for software engineers. which is given below:
System Software:
System software is a collection of programs which are written to
service other programs. Some system software processes complex but
determinate, information structures. Other system application process
largely indeterminate data. Sometimes when, the system software area
is characterized by the heavy interaction with computer hardware that
requires scheduling, resource sharing, and sophisticated process
management.

Application Software:
Application software is defined as programs that solve a specific
business need. Application in this area process business or technical
data in a way that facilitates business operation or management
technical decision making. In addition to convention data processing
application, application software is used to control business function in
real time.

Engineering and Scientific Software:


This software is used to facilitate the engineering function and task.
however modern application within the engineering and scientific area
are moving away from the conventional numerical algorithms.
Computer-aided design, system simulation, and other interactive
applications have begun to take a real-time and even system software
characteristic.

Embedded Software:
Embedded software resides within the system or product and is used to
implement and control feature and function for the end-user and for the
system itself. Embedded software can perform the limited and esoteric
function or provided significant function and control capability.
Product-line Software:
Designed to provide a specific capability for use by many different
customers, product line software can focus on the limited and esoteric
marketplace or address the mass consumer market.

Web Application:
It is a client-server computer program which the client runs on the web
browser. In their simplest form, Web apps can be little more than a set
of linked hypertext files that present information using text and limited
graphics. However, as e-commerce and B2B application grow in
importance. Web apps are evolving into a sophisticate computing
environment that not only provides a standalone feature, computing
function, and content to the end user.

Artificial Intelligence Software:


Artificial intelligence software makes use of a nonnumerical algorithm
to solve a complex problem that is not amenable to computation or
straightforward analysis. Application within this area includes robotics,
expert system, pattern recognition, artificial neural network, theorem
proving and game playing.

Software Engineering As A Layered Technology

Fig: The diagram shows the layers of software development


Layered technology is divided into four parts:

1. A quality focus: It defines the continuous process improvement


principles of software. It provides integrity that means providing
security to the software so that data can be accessed by only an
authorized person, no outsider can access the data. It also focuses on
maintainability and usability.
2. Process: It is the foundation or base layer of software engineering. It
is key that binds all the layers together which enables the development
of software before the deadline or on time. Process defines a
framework that must be established for the effective delivery of
software engineering technology. The software process covers all the
activities, actions, and tasks required to be carried out for software
development.

Process activities are listed below:-


Communication: It is the first and foremost thing for the development
of software. Communication is necessary to know the actual demand of
the client.
Planning: It basically means drawing a map for reduced the
complication of development.
Modeling: In this process, a model is created according to the client
for better understanding.
Construction: It includes the coding and testing of the problem.
Deployment: It includes the delivery of software to the client for
evaluation and feedback.
3. Method: During the process of software development the answers
to all “how-to-do” questions are given by method. It has the information
of all the tasks which includes communication, requirement analysis,
design modeling, program construction, testing, and support.
4. Tools: Software engineering tools provide a self-operating system
for processes and methods. Tools are integrated which means
information created by one tool can be used by another.

Software Process Framework


Framework is a Standard way to build and deploy
applications. Software Process Framework is the foundation of
complete software engineering process. Software process framework
includes set of all umbrella activities. It also includes number of
framework activities that are applicable to all software projects.

A generic process framework encompasses five activities which are


given below one by one:
Communication:
In this activity, heavy communication with customers and other
stakeholders, as well as requirement gathering is done.
Planning:
In this activity, we discuss the technical related tasks, work schedule,
risks, required resources, etc.
Modeling:
Modeling is about building representations of things in the ‘real world’.
In modeling activity, a product’s model is created in order to better
understand the requirements.
Construction:
In software engineering, construction is the application of set of
procedures that are needed to assemble the product. In this activity, we
generate the code and test the product in order to make better product.
Deployment:
In this activity, a complete or non-complete product or software is
represented to the customers to evaluate and give feedback. On the
basis of their feedback, we modify the product for supply of better
product.

Umbrella Activities

Any standard software process model would primarily consist of two


types of activities: A set of framework activities, which are always
applicable, regardless of the project type, and a set of umbrella
activities, which are the non SDLC activities that span across the entire
software development life cycle.

Typical activities in this category include:


01. Software project tracking and control :
Tracking and Control is the dual process of detecting when a project is
drifting off-plan, and taking corrective action to bring the project back
on track. But a successful project manager will also be able to tell
when the plan itself is faulty, and even re-plan the project and its goals
if necessary.
02. Formal technical reviews :
This includes reviewing the techniques that has been used in the project.

03. Software quality assurance :


This is very important to ensure the quality measurement of each part
to ensure them.
04. Software configuration management :
In software engineering, software configuration management (SCM or
S/W CM) is the task of tracking and controlling changes in the software,
part of the larger cross-disciplinary field of configuration management.
SCM practices include revision control and the establishment of
baselines.
05. Document preparation and production :
All the project planning and other activities should be hardly copied and
the production get started here.
06. Reusability management :
This includes the backing up of each part of the software project they
can be corrected or any kind of support can be given to them later to
update or upgrade the software at user/time demand.
07. Measurement :
This will include all the measurement of every aspects of the software
project.
08. Risk management :
Risk management is a series of steps that help a software team to
understand and manage uncertainty. It’s a really good idea to identify it,
assess its probability of occurrence, estimate its impact, and establish
a contingency plan that─ ‘should the problem actually occur’.

What is a software process model?


A software process model is an abstraction of the software
development process. The models specify the stages and order of a
process. So, think of this as a representation of the order of activities of
the process and the sequence in which they are performed.

A model will define the following:

• The tasks to be performed


• The input and output of each task
• The pre and post conditions for each task
• The flow and sequence of each task

The goal of a software process model is to provide guidance for


controlling and coordinating the tasks to achieve the end product and
objectives as effectively as possible.
There are many kinds of process models for meeting different
requirements. We refer to these as SDLC models (Software
Development Life Cycle models). The most popular and important SDLC
models are as follows:

• Waterfall model
• V model
• Iterative model
• Spiral model
• Big Bang Model
• Agile model

1. Waterfall Model
Waterfall is the oldest and most straightforward of the structured SDLC
methodologies — finish one phase, then move on to the next. No going
back. Each stage relies on information from the previous stage and has
its own project plan. Waterfall is easy to understand and simple to
manage.

But early delays can throw off the entire project timeline. And since
there is little room for revisions once a stage is completed, problems
can’t be fixed until you get to the maintenance stage. This model doesn’t
work well if flexibility is needed or if the project is long term and
ongoing.

2. V-Shaped Model
Also known as the Verification and Validation model, the V-shaped
model grew out of Waterfall and is characterised by a corresponding
testing phase for each development stage. Like Waterfall, each stage
begins only after the previous one has ended.

This model is useful when there are no unknown requirements, as it’s


still difficult to go back and make changes.

3. Iterative Model
The Iterative model is repetition incarnate. Instead of starting with fully
known requirements, you implement a set of software requirements,
then test, evaluate and pinpoint further requirements. A new version of
the software is produced with each phase, or iteration. Rinse and
repeat until the complete system is ready.

One advantage over other SDLC methodologies: This model gives you a
working version early in the process and makes it less expensive to
implement changes. One disadvantage: Resources can quickly be eaten
up by repeating the process again and again.

4. Spiral Model
One of the most flexible SDLC methodologies, the Spiral model takes a
cue from the Iterative model and its repetition; the project passes
through four phases over and over in a “spiral” until completed,
allowing for multiple rounds of refinement.
This model allows for the building of a highly customised product, and
user feedback can be incorporated from early on in the project. But the
risk you run is creating a never-ending spiral for a project that goes on
and on.

5. Big Bang Model


A bit of an anomaly among SDLC methodologies, the Big Bang model
follows no specific process, and very little time is spent on planning.
The majority of resources are thrown toward development, and even
the client may not have a solid grasp of the requirements. This is one of
the SDLC methodologies typically used for small projects with only one
or two software engineers.

Big Bang is not recommended for large or complex projects, as it’s a


high-risk model; if the requirements are misunderstood in the
beginning, you could get to the end and realise the project may have to
be started all over again.

6. Agile Model
By breaking the product into cycles, the Agile model quickly delivers a
working product and is considered a very realistic development
approach. The model produces ongoing releases, each with small,
incremental changes from the previous release. At each iteration, the
product is tested.

This model emphasises interaction, as the customers, developers and


testers work together throughout the project. But since this model
depends heavily on customer interaction, the project can head the
wrong way if the customer is not clear on the direction he or she wants
to go.

Capability Maturity Model Integration (CMMI)


Capability Maturity Model Integration (CMMI) is a successor of CMM and is a
more evolved model that incorporates best components of individual
disciplines of CMM like Software CMM, Systems Engineering CMM, People
CMM, etc. Since CMM is a reference model of matured practices in a specific
discipline, so it becomes difficult to integrate these disciplines as per the
requirements. This is why CMMI is used as it allows the integration of multiple
disciplines as and when needed.
Objectives of CMMI:
• Fulfilling customer needs and expectations.
• Value creation for investors/stockholders.
• Market growth is increased.
• Improved quality of products and services.
• Enhanced reputation in Industry.

CMMI Representation – Staged and Continuous :
A representation allows an organization to pursue a different set of
improvement objectives. There are two representations for CMMI :
Staged Representation :
uses a pre-defined set of process areas to define improvement path.
provides a sequence of improvements, where each part in the sequence
serves as a foundation for the next.
an improved path is defined by maturity level.
maturity level describes the maturity of processes in organization.
Staged CMMI representation allows comparison between different
organizations for multiple maturity levels.
Continuous Representation :
allows selection of specific process areas.
uses capability levels that measures improvement of an individual
process area.
Continuous CMMI representation allows comparison between different
organizations on a process-area-by-process-area basis.
allows organizations to select processes which require more
improvement.
In this representation, order of improvement of various processes can
be selected which allows the organizations to meet their objectives and
eliminate risks.
CMMI Model – Maturity Levels :
In CMMI with staged representation, there are five maturity levels described as
follows :

Maturity level 1 : Initial


• processes are poorly managed or controlled.
• unpredictable outcomes of processes involved.
• ad hoc and chaotic approach used.
• No KPAs (Key Process Areas) defined.
• Lowest quality and highest risk.
Maturity level 2 : Managed
• requirements are managed.
• processes are planned and controlled.
• projects are managed and implemented according to their
documented plans.
• This risk involved is lower than Initial level, but still exists.
• Quality is better than Initial level.
Maturity level 3 : Defined
• processes are well characterized and described using standards,
proper procedures, and methods, tools, etc.
• Medium quality and medium risk involved.
• Focus is process standardization.
Maturity level 4 : Quantitatively managed
• quantitative objectives for process performance and quality are
set.
• quantitative objectives are based on customer requirements,
organization needs, etc.
• process performance measures are analyzed quantitatively.
• higher quality of processes is achieved.
• lower risk
Maturity level 5 : Optimizing
• continuous improvement in processes and their performance.
• improvement has to be both incremental and innovative.
• highest quality of processes.
• lowest risk in processes and their performance.

You might also like