0% found this document useful (0 votes)
16 views

Software Configuration Management

Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Software Configuration Management

Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Software Configuration Management

When we develop software, the product (software) undergoes many changes in


their maintenance phase; we need to handle these changes effectively.

Several individuals (programs) works together to achieve these common goals.


This individual produces several work product (SC Items) e.g., Intermediate
version of modules or test data used during debugging, parts of the final product.

The elements that comprise all information produced as a part of the software
process are collectively called a software configuration.

As software development progresses, the number of Software Configuration


elements grow rapidly.

These are handled and controlled by SCM. This is where we require software
configuration management.

A configuration of the product refers not only to the product's constituent but also
to a particular version of the component.

Therefore, SCM is the discipline which

o Identify change
o Monitor and control change
o Ensure the proper implementation of change made to the item.
o Auditing and reporting on the change made.
Configuration Management (CM) is a technic of identifying, organizing, and
controlling modification to software being built by a programming team.

The objective is to maximize productivity by minimizing mistakes (errors).

CM is used to essential due to the inventory management, library management, and


updation management of the items essential for the project.

Why do we need Configuration Management?


Multiple people are working on software which is consistently updating. It may be
a method where multiple version, branches, authors are involved in a software
project, and the team is geographically distributed and works concurrently. It
changes in user requirements, and policy, budget, schedules need to be
accommodated.

Importance of Software Configuration Management


1. Effective Bug Tracking: Linking code modifications to issues that have been
reported, makes bug tracking more effective.
2. Continuous Deployment and Integration: SCM combines with continuous
processes to automate deployment and testing, resulting in more dependable
and timely software delivery.
3. Risk management: SCM lowers the chance of introducing critical flaws by
assisting in the early detection and correction of problems.
4. Support for Big Projects: Source Code Control (SCM) offers an orderly
method to handle code modifications for big projects, fostering a well-
organized development process.
5. Reproducibility: By recording precise versions of code, libraries, and
dependencies, source code versioning (SCM) makes builds repeatable.
6. Parallel Development: SCM facilitates parallel development by enabling
several developers to collaborate on various branches at once.

Why need for System configuration management?

1. Replicability: Software version control (SCM) makes ensures that a software


system can be replicated at any stage of its development. This is necessary for
testing, debugging, and upholding consistent environments in production,
testing, and development.
2. Identification of Configuration: Source code, documentation, and executable
files are examples of configuration elements that SCM helps in locating and
labeling. The management of a system’s constituent parts and their
interactions depend on this identification.
3. Effective Process of Development: By automating monotonous processes like
managing dependencies, merging changes, and resolving disputes, SCM
simplifies the development process. Error risk is decreased and efficiency is
increased because of this automation.

Key objectives of SCM

1. Control the evolution of software systems: SCM helps to ensure that


changes to a software system are properly planned, tested, and integrated into
the final product.
2. Enable collaboration and coordination: SCM helps teams to collaborate
and coordinate their work, ensuring that changes are properly integrated and
that everyone is working from the same version of the software system.
3. Provide version control: SCM provides version control for software
systems, enabling teams to manage and track different versions of the system
and to revert to earlier versions if necessary.
4. Facilitate replication and distribution: SCM helps to ensure that software
systems can be easily replicated and distributed to other environments, such
as test, production, and customer sites.
5. SCM is a critical component of software development, and effective SCM
practices can help to improve the quality and reliability of software systems,
as well as increase efficiency and reduce the risk of errors.

The main advantages of SCM

1. Improved productivity and efficiency by reducing the time and effort required
to manage software changes.
2. Reduced risk of errors and defects by ensuring that all changes were properly
tested and validated.
3. Increased collaboration and communication among team members by
providing a central repository for software artifacts.
4. Improved quality and stability of software systems by ensuring that all
changes are properly controlled and managed.
The main disadvantages of SCM
1. Increased complexity and overhead, particularly in large software systems.
2. Difficulty in managing dependencies and ensuring that all changes are
properly integrated.
3. Potential for conflicts and delays, particularly in large development teams
with multiple contributors.

Software Maintenance
Software Maintenance refers to the process of modifying and updating a
software system after it has been delivered to the customer. This involves fixing
bugs, adding new features, and adapting to new hardware or software
environments. Effective maintenance is crucial for extending the software’s
lifespan and aligning it with evolving user needs. It is an essential part of the
software development life cycle (SDLC), involving planned and unplanned
activities to keep the system reliable and up-to-date.
What is Software Maintenance?
Software maintenance is a continuous process that occurs throughout the entire
life cycle of the software system.
 The goal of software maintenance is to keep the software system working
correctly, efficiently, and securely, and to ensure that it continues to meet the
needs of the users.
 This can include fixing bugs, adding new features, improving performance, or
updating the software to work with new hardware or software systems.
 It is also important to consider the cost and effort required for software
maintenance when planning and developing a software system.
 It is important to have a well-defined maintenance process in place, which
includes testing and validation , version control, and communication with
stakeholders.
 It’s important to note that software maintenance can be costly and complex,
especially for large and complex systems. Therefore, the cost and effort of
maintenance should be taken into account during the planning and
development phases of a software project.
 It’s also important to have a clear and well-defined maintenance plan that
includes regular maintenance activities, such as testing, backup, and bug
fixing.
Several Key Aspects of Software Maintenance
1. Bug Fixing: The process of finding and fixing errors and problems in the
software.
2. Enhancements: The process of adding new features or improving existing
features to meet the evolving needs of the users.
3. Performance Optimization: The process of improving the speed, efficiency,
and reliability of the software.
4. Porting and Migration: The process of adapting the software to run on new
hardware or software platforms.
5. Re-Engineering: The process of improving the design and architecture of the
software to make it more maintainable and scalable.
6. Documentation: The process of creating, updating, and maintaining the
documentation for the software, including user manuals, technical
specifications, and design documents.

Several Types of Software Maintenance

1. Corrective Maintenance: This involves fixing errors and bugs in the


software system.
2. Patching: It is an emergency fix implemented mainly due to pressure from
management. Patching is done for corrective maintenance but it gives rise to
unforeseen future errors due to lack of proper impact analysis.
3. Adaptive Maintenance: This involves modifying the software system to
adapt it to changes in the environment, such as changes in hardware or
software, government policies, and business rules.
4. Perfective Maintenance: This involves improving functionality,
performance, and reliability, and restructuring the software system to improve
changeability.
5. Preventive Maintenance: This involves taking measures to prevent future
problems, such as optimization, updating documentation, reviewing and
testing the system, and implementing preventive measures such as backups.

Maintenance can be categorized into proactive and reactive types. Proactive


maintenance involves taking preventive measures to avoid problems from
occurring, while reactive maintenance involves addressing problems that have
already occurred.

Maintenance can be performed by different stakeholders, including the original


development team, an in-house maintenance team, or a third-party maintenance
provider. Maintenance activities can be planned or unplanned. Planned activities
include regular maintenance tasks that are scheduled in advance, such as updates
and backups. Unplanned activities are reactive and are triggered by unexpected
events, such as system crashes or security breaches. Software maintenance can
involve modifying the software code, as well as its documentation, user manuals,
and training materials. This ensures that the software is up-to-date and continues
to meet the needs of its users.

Software maintenance can also involve upgrading the software to a new version
or platform. This can be necessary to keep up with changes in technology and to
ensure that the software remains compatible with other systems. The success of
software maintenance depends on effective communication with stakeholders,
including users, developers, and management. Regular updates and reports can
help to keep stakeholders informed and involved in the maintenance process.

Software maintenance is also an important part of the Software Development


Life Cycle (SDLC). To update the software application and do all modifications
in software application so as to improve performance is the main focus of
software maintenance. Software is a model that runs on the basis of the real
world. so, whenever any change requires in the software that means the need for
real-world changes wherever possible.

Need for Maintenance


Software Maintenance must be performed in order to:
 Correct faults.
 Improve the design.
 Implement enhancements.
 Interface with other systems.
 Accommodate programs so that different hardware, software, system
features, and telecommunications facilities can be used.
 Migrate legacy software.
 Retire software.
 Requirement of user changes.
 Run the code fast

Challenges in Software Maintenance

The various challenges in software maintenance are given below:


 The popular age of any software program is taken into consideration up to ten
to fifteen years. As software program renovation is open-ended and might
maintain for decades making it very expensive.
 Older software programs, which had been intended to paint on sluggish
machines with much less reminiscence and garage ability can not maintain
themselves tough in opposition to newly coming more advantageous software
programs on contemporary-day hardware.
 Changes are frequently left undocumented which can also additionally reason
greater conflicts in the future.
 As the era advances, it turns into high prices to preserve vintage software
programs.
 Often adjustments made can without problems harm the authentic shape of
the software program, making it difficult for any next adjustments.

 There is a lack of Code Comments.


 Lack of documentation: Poorly documented systems can make it difficult to
understand how the system works, making it difficult to identify and fix
problems.
 Legacy code: Maintaining older systems with outdated technologies can be
difficult, as it may require specialized knowledge and skills.
 Complexity: Large and complex systems can be difficult to understand and
modify, making it difficult to identify and fix problems.
 Changing requirements: As user requirements change over time, the
software system may need to be modified to meet these new requirements,
which can be difficult and time-consuming.
 Interoperability issues: Systems that need to work with other systems or
software can be difficult to maintain, as changes to one system can affect the
other systems.
 Lack of test coverage: Systems that have not been thoroughly tested can be
difficult to maintain as it can be hard to identify and fix problems without
knowing how the system behaves in different scenarios.
 Lack of personnel: A lack of personnel with the necessary skills and
knowledge to maintain the system can make it difficult to keep the system up-
to-date and running smoothly.
 High-Cost: The cost of maintenance can be high, especially for large and
complex systems, which can be difficult to budget for and manage.

To overcome these challenges, it is important to have a well-defined


maintenance process in place, which includes testing and validation, version
control, and communication with stakeholders. It is also important to have a
clear and well-defined maintenance plan that includes regular maintenance
activities, such as testing, backup, and bug fixing. Additionally, it is important to
have personnel with the necessary skills and knowledge to maintain the system.

You might also like