UNIT -1
SOFTWARE CRISIS
Software Crisis is a term used in computer science for the difficulty of writing
useful and efficient computer programs in the required time.
The software crisis was due to using the same workforce, same methods, and same
tools even though rapidly increasing software demand, the complexity of software,
and software challenges.
With the increase in software complexity, many software problems arise because
existing methods were insufficient.
If we use the same workforce, same methods, and same tools after the fast increase
in software demand, software complexity, and software challenges, then there arise
some issues like software budget problems, software efficiency problems, software
quality problems, software management, and delivery problems, etc.
This condition is called a Software Crisis.
Causes of Software Crisis:
The cost of owning and maintaining software was as expensive as developing the
software.
At that time Projects were running overtime.
At that time Software was very inefficient.
The quality of the software was low quality.
Software often did not meet user requirements.
The average software project overshoots its schedule by half.
At that time Software was never delivered.
Non-optimal resource utilization.
Challenging to alter, debug, and enhance.
The software complexity is harder to change.
Factors Contributing to Software Crisis:
Poor project management.
Lack of adequate training in software engineering.
Less skilled project members.
Low productivity improvements.
Solution of Software Crisis:
There is no single solution to the crisis. One possible solution to a software crisis
is Software Engineering because software engineering is a systematic, disciplined, and
quantifiable approach.
For preventing software crises, there are some guidelines:
Reduction in software over budget.
The quality of the software must be high.
, Less time is needed for a software project.
Experienced and skilled people working on the software project.
Software must be delivered.
Software must meet user requirements.
SOFTWARE EVOLUTION
Software Evolution is a term that refers to the process of developing software
initially, and then timely updating it for various reasons, i.e., to add new features or to
remove obsolete functionalities, etc. This article focuses on discussing Software
Evolution in detail.
What is Software Evolution?
The software evolution process includes fundamental activities of change analysis,
release planning, system implementation, and releasing a system to customers.
1. The cost and impact of these changes are accessed to see how much the system is
affected by the change and how much it might cost to implement the change.
2. If the proposed changes are accepted, a new release of the software system is
planned.
3. During release planning, all the proposed changes (fault repair, adaptation, and new
functionality) are considered.
4. A design is then made on which changes to implement in the next version of the
system.
5. The process of change implementation is an iteration of the development process
where the revisions to the system are designed, implemented, and tested.
Necessity of Software Evolution
Software evaluation is necessary just because of the following reasons:
1. Change in requirement with time: With 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 to maximize the
performance.
2. 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
require reintroduction of old software with updated features and functionality to
adapt the new environment.
5. 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.
6. 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
1. 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.
2. Law of Increasing Complexity
As an evolving program changes, its structure becomes more complex unless effective
efforts are made to avoid this phenomenon.
3. 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.
4. 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.
PROCEDURE AND OBJECT ORIENTED PARADIGM:
Both Procedural Programming and Object Oriented Programming are high-level
languages in programming world and are widely used in the development of
applications.
What is Procedural Programming?
Procedural Programming is a programming language that follows a step-by-step
approach to break down a task into a collection of variables and routines (or
subroutines) through a sequence of instructions. In procedural oriented
programming, each step is executed in a systematic manner so that the computer
can understand what to do.
The programming model of the procedural oriented programming is derived from
structural programming. The concept followed in the procedural oriented
programming is called the "procedure". These procedures consist several
computational steps that are carried out during the execution of a program.
Examples of procedural oriented programming language include – C, Pascal,
ALGOL, COBOL, BASIC, etc.
, What is Object Oriented Programming?
Object-oriented Programming is a programming language that uses classes and
objects to create models based on the real world environment.
These objects contain data in the form of attributes and program codes in the form
of methods or functions. In OOP, the computer programs are designed by using the
concept of objects that can interact with the real world entities.
We have several types of object oriented programming languages, but the most
popular is one among all is class-based language. In the class-based OOP languages,
the objects are the instances of the classes that determine their types.
Examples of some object oriented programming languages are –
Java, C++, C#, Python, PHP, Swift, etc.
Differences between Procedural and Object Oriented Programming
Parameter Object Procedural Programming
Programming
Definition Object-oriented Procedural Programming is a
Programming is a programming language that follows
programming language that a step-by-step approach to break
uses classes and objects to down a task into a collection of
create models based on the variables and routines (or
real world environment. subroutines) through a sequence of
instructions.
Approach In OOPs concept of objects In procedural programming, the
and classes is introduced and main program is divided into small
hence the program is divided parts based on the functions and is
into small chunks called treated as separate program for
objects which are instances individual smaller program.
of classes.
Access In OOPs access modifiers are No such modifiers are introduced in
modifiers introduced namely as procedural programming.
Private, Public, and
Protected.
Security Due to abstraction in OOPs Procedural programming is less
data hiding is possible and secure as compare to OOPs.
hence it is more secure than
POP.
Program OOP divides a program into Procedural programming divides a
division small parts and these parts program into small programs and
are referred to as objects. each small program is referred to as
a function.
SOFTWARE CRISIS
Software Crisis is a term used in computer science for the difficulty of writing
useful and efficient computer programs in the required time.
The software crisis was due to using the same workforce, same methods, and same
tools even though rapidly increasing software demand, the complexity of software,
and software challenges.
With the increase in software complexity, many software problems arise because
existing methods were insufficient.
If we use the same workforce, same methods, and same tools after the fast increase
in software demand, software complexity, and software challenges, then there arise
some issues like software budget problems, software efficiency problems, software
quality problems, software management, and delivery problems, etc.
This condition is called a Software Crisis.
Causes of Software Crisis:
The cost of owning and maintaining software was as expensive as developing the
software.
At that time Projects were running overtime.
At that time Software was very inefficient.
The quality of the software was low quality.
Software often did not meet user requirements.
The average software project overshoots its schedule by half.
At that time Software was never delivered.
Non-optimal resource utilization.
Challenging to alter, debug, and enhance.
The software complexity is harder to change.
Factors Contributing to Software Crisis:
Poor project management.
Lack of adequate training in software engineering.
Less skilled project members.
Low productivity improvements.
Solution of Software Crisis:
There is no single solution to the crisis. One possible solution to a software crisis
is Software Engineering because software engineering is a systematic, disciplined, and
quantifiable approach.
For preventing software crises, there are some guidelines:
Reduction in software over budget.
The quality of the software must be high.
, Less time is needed for a software project.
Experienced and skilled people working on the software project.
Software must be delivered.
Software must meet user requirements.
SOFTWARE EVOLUTION
Software Evolution is a term that refers to the process of developing software
initially, and then timely updating it for various reasons, i.e., to add new features or to
remove obsolete functionalities, etc. This article focuses on discussing Software
Evolution in detail.
What is Software Evolution?
The software evolution process includes fundamental activities of change analysis,
release planning, system implementation, and releasing a system to customers.
1. The cost and impact of these changes are accessed to see how much the system is
affected by the change and how much it might cost to implement the change.
2. If the proposed changes are accepted, a new release of the software system is
planned.
3. During release planning, all the proposed changes (fault repair, adaptation, and new
functionality) are considered.
4. A design is then made on which changes to implement in the next version of the
system.
5. The process of change implementation is an iteration of the development process
where the revisions to the system are designed, implemented, and tested.
Necessity of Software Evolution
Software evaluation is necessary just because of the following reasons:
1. Change in requirement with time: With 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 to maximize the
performance.
2. 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
require reintroduction of old software with updated features and functionality to
adapt the new environment.
5. 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.
6. 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
1. 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.
2. Law of Increasing Complexity
As an evolving program changes, its structure becomes more complex unless effective
efforts are made to avoid this phenomenon.
3. 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.
4. 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.
PROCEDURE AND OBJECT ORIENTED PARADIGM:
Both Procedural Programming and Object Oriented Programming are high-level
languages in programming world and are widely used in the development of
applications.
What is Procedural Programming?
Procedural Programming is a programming language that follows a step-by-step
approach to break down a task into a collection of variables and routines (or
subroutines) through a sequence of instructions. In procedural oriented
programming, each step is executed in a systematic manner so that the computer
can understand what to do.
The programming model of the procedural oriented programming is derived from
structural programming. The concept followed in the procedural oriented
programming is called the "procedure". These procedures consist several
computational steps that are carried out during the execution of a program.
Examples of procedural oriented programming language include – C, Pascal,
ALGOL, COBOL, BASIC, etc.
, What is Object Oriented Programming?
Object-oriented Programming is a programming language that uses classes and
objects to create models based on the real world environment.
These objects contain data in the form of attributes and program codes in the form
of methods or functions. In OOP, the computer programs are designed by using the
concept of objects that can interact with the real world entities.
We have several types of object oriented programming languages, but the most
popular is one among all is class-based language. In the class-based OOP languages,
the objects are the instances of the classes that determine their types.
Examples of some object oriented programming languages are –
Java, C++, C#, Python, PHP, Swift, etc.
Differences between Procedural and Object Oriented Programming
Parameter Object Procedural Programming
Programming
Definition Object-oriented Procedural Programming is a
Programming is a programming language that follows
programming language that a step-by-step approach to break
uses classes and objects to down a task into a collection of
create models based on the variables and routines (or
real world environment. subroutines) through a sequence of
instructions.
Approach In OOPs concept of objects In procedural programming, the
and classes is introduced and main program is divided into small
hence the program is divided parts based on the functions and is
into small chunks called treated as separate program for
objects which are instances individual smaller program.
of classes.
Access In OOPs access modifiers are No such modifiers are introduced in
modifiers introduced namely as procedural programming.
Private, Public, and
Protected.
Security Due to abstraction in OOPs Procedural programming is less
data hiding is possible and secure as compare to OOPs.
hence it is more secure than
POP.
Program OOP divides a program into Procedural programming divides a
division small parts and these parts program into small programs and
are referred to as objects. each small program is referred to as
a function.