The Wayback Machine - https://web.archive.org/web/20241002022010/https://www.geeksforgeeks.org/software-engineering-software-evolution/
Open In App

Software Evolution – Software Engineering

Last Updated : 03 Jan, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

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.
  3. 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 Pieces of software need to undergo the evolution process in order to become robust as per the workload complexity of the current environment.  
  4. 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).
  5. 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.
software-evolution

Software Evolution

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. 



Similar Reads

Evolution of Software Engineering: From an Art To Engineering Discipline
Software Engineering is a systematic and cost-effective technique for software development. It is an engineering approach to developing software. For example: If someone wants to travel from Punjab to Delhi. There are two approaches one can follow to achieve the same result: The normal approach is to go out and catch the bus/train that is available
13 min read
Evolution of Software Economics
Software Economics in Software Engineering is mature research area that generally deals with most difficult and challenging problems and issues of valuing software and determining or estimation costs usually involved in its production. Boehm and Sullivan outline these difficulties and challenges and also presented how software economics principles
3 min read
Reverse Engineering - Software Engineering
Software Reverse Engineering is a process of recovering the design, requirement specifications, and functions of a product from an analysis of its code. It builds a program database and generates information from this. This article focuses on discussing reverse engineering in detail. What is Reverse Engineering?Reverse engineering can extract desig
6 min read
Difference between Software Engineering process and Conventional Engineering Process
Software Engineering Process and Conventional Engineering Process, both are processes related to computers and development. In this article, we will see the similarities as well as differences between both, that is Software Engineering Process and the Conventional Engineering Process. Table of Content Software Engineering ProcessConventional Engine
4 min read
Re-engineering - Software Engineering
Software Re-engineering is a process of software development that is done to improve the maintainability of a software system. Re-engineering is the examination and alteration of a system to reconstitute it in a new form. This process encompasses a combination of sub-processes like reverse engineering, forward engineering, reconstructing, etc.  Tab
8 min read
Difference between Software Engineering and Computer Engineering
Software engineering and Computer engineering are two distinct disciplines that focus on different aspects of computer systems. While both fields require a strong foundation in computer science and mathematics, software engineering is focused on software development processes, while computer engineering is focused on the physical components and sys
6 min read
Requirements Engineering Process in Software Engineering
Requirements Engineering is the process of identifying, eliciting, analyzing, specifying, validating, and managing the needs and expectations of stakeholders for a software system. Table of Content What is Requirements Engineering?Requirements Engineering ProcessTools Involved in Requirement EngineeringAdvantages of Requirements Engineering Process
13 min read
Artifact Evolution Over Life Cycle
Artifact is generally used to represent cohesive information that is created and reviewed as a single entity. In an artifact, some amount of precision in description of the final system description is represented at each stage of development. The precision is very low and representation is also high early in the life cycle process. Eventually, prec
2 min read
Evolution of ERP System
Enterprise Resource Planning (ERP) is made to automate any task. With ERP, it is easy to manage every department under one single database. This consumes not much time and is an easy and fast way to do work. Example: Any enterprise's planning, manufacturing, sales, and marketing efforts are put under one management system and then it combines into
3 min read
Difference between Forward Engineering and Reverse Engineering
Forward engineering and reverse engineering are two approaches to software development, with different goals and processes. Forward engineering involves creating new software systems from scratch using given requirements and design specifications. It focuses on building new applications through a structured process of analysis, design, implementati
6 min read
Software Engineering | Schick-Wolverton software reliability model
Prerequisite - Jelinski Moranda software reliability model The Schick-Wolverton (S-W) model is a modification to the J-M model. It is similar to the J-M model except that it further assumes that the failure rate at the ith time interval increases with time ti since the last debugging. In the model, the program failure rate function between the (i-1
4 min read
Software Engineering | Responsibilities of Software Project Manager
Software Project Management (SPM) is a sub-field of Project Management in which software projects are planned, implemented, monitored and controlled. It consists of three terms: Software, Project and Management. So, let us understand each term separately. Software includes a set of programs, documentation and user manual for a particular software p
3 min read
Software Engineering - Hardware Reliability vs Software Reliability
Reliability in software is software that has no failure and works in a special time period with a special environment. Hardware reliability is the probability of the absence of any hardware-related system malfunction for a given mission on the other hand software reliability is the probability that the software will provide a failure-free operation
3 min read
Failure Curve for Software in Software Engineering
Pre-requisites: Software Engineering In Software Engineering, the concept of a software failure curve is part of the hardware bathtub curve. According to the diagram, the failure rate is a function of time for Hardware. This curve shows that hardware exhibits a relatively high failure rate early in its life (these failures are often design or manuf
4 min read
Identifying Software Development Metrics - Software Engineering
Companies invest a fair proportion of their resources in the expensive staff that drive the development of technology on which an organization runs. It is therefore imperative to explore and quantitatively measure the performance of such investments by empowering teams with the ability to track their efficiency. This task is delegated to a designat
4 min read
Software Business and Development - Software Engineering
Software Business means selling software for the business or sometimes it is referred to as selling information about various software made for business purposes that are so-called business software. This article focuses on discussing Software Business and Development in detail. What is a Software Business? Software business is one of the commercia
3 min read
Software Quality Framework - Software Engineering
Software Quality Framework is a model for software quality that ensures quality by connecting and integrating the different views of software quality. This article focuses on discussing the Software Quality Framework. What is a Software Quality Framework?Software Quality Framework connects the customer view with the developer's view of software qua
4 min read
Characteristics of Good Software - Software Engineering
Software is treated as good software using different factors. A software product is concluded as good software by what it offers and how well it can be used. The factors that decide the software properties are divided into three categories: Operational, Transitional, and Maintenance. What is a Good Software?Software engineering is the process of de
2 min read
Software Quality Assurance (SQA) Set 2 - Software Engineering
Software Quality Assurance (SQA) consists of a set of activities that monitor the software engineering processes and methods used to ensure quality. Software Quality Assurance (SQA) EncompassesA quality management approach. Effective software engineering technology (methods and tools). Some formal technical reviews are applied throughout the softwa
3 min read
Software Project Management Plan (SPMP) - Software Engineering
Once project designing is complete, project managers document their plans during a software package Project Management setup (SPMP) document. The SPMP document ought to discuss an inventory of various things that are mentioned below. This list will be used as a doable organization of the SPMP document. Organization of the software package Project M
1 min read
Changing Nature of Software - Software Engineering
The software is an instruction or computer program that when executed provides desired features, function, and performance. A data structure that enables the program to adequately manipulate information and documents that describe the operation and use of the program. Characteristics of software: There is some characteristic of software which is gi
3 min read
Software Review - Software Engineering
Software Review is a systematic inspection of software by one or more individuals who work together to find and resolve errors and defects in the software during the early stages of the Software Development Life Cycle (SDLC). A software review is an essential part of the Software Development Life Cycle (SDLC) that helps software engineers in valida
3 min read
Agile Software Development - Software Engineering
Agile Software Development is a software development methodology that values flexibility, collaboration, and customer satisfaction. It is based on the Agile Manifesto, a set of principles for software development that prioritize individuals and interactions, working software, customer collaboration, and responding to change. Agile Software Developm
13 min read
Role and Responsibilities of a software Project Manager - Software Engineering
A software project manager is the most important person inside a team who takes the overall responsibilities to manage the software projects and plays an important role in the successful completion of the projects. This article focuses on discussing the role and responsibilities of a software project manager. Table of Content Who is a Project Manag
5 min read
Classification of Software - Software Engineering
Software Engineering is the process of developing a software product in a well-defined systematic approach software engineering is the process of analyzing user needs and then designing, constructing, and testing end-user applications that will satisfy these needs through the use of software programming languages. Table of Content Parameters Defini
8 min read
Software Design Process - Software Engineering
The design phase of software development deals with transforming the customer requirements as described in the SRS documents into a form implementable using a programming language. The software design process can be divided into the following three levels or phases of design: Interface DesignArchitectural DesignDetailed DesignElements of a SystemAr
3 min read
Software Product - Software Engineering
Software Products are nothing but software systems delivered to the customer with the documentation that describes how to install and use the system. In certain cases, software products may be part of system products where hardware, as well as software, is delivered to a customer. Software products are produced with the help of the software process
2 min read
Software Characteristics - Software Engineering
Software is defined as a collection of computer programs, procedures, rules, and data. Software Characteristics are classified into six major components. Software engineering is the process of designing, developing, testing, and maintaining software. In this article, we will look into the characteristics of Software in detail. We have also discusse
6 min read
Software Project Management (SPM) - Software Engineering
Software Project Management (SPM) is a proper way of planning and leading software projects. It is a part of project management in which software projects are planned, implemented, monitored, and controlled. This article focuses on discussing Software Project Management (SPM). Table of Content Need for Software Project ManagementTypes of Management
7 min read
Software Crisis - Software Engineering
The term "software crisis" refers to the numerous challenges and difficulties faced by the software industry during the 1960s and 1970s. It became clear that old methods of developing software couldn't keep up with the growing complexity and demands of new projects. This led to high costs, delays, and poor-quality software. New methodologies and to
3 min read
Article Tags :