Unit 4
Software configuration management
Whenever software is built, there is always scope for improvement and those
improvements bring picture changes. Changes may be required to modify or
update any existing solution or to create a new solution for a problem.
Requirements keep on changing daily so we need to keep on upgrading our
systems based on the current requirements and needs to meet desired outputs.
Changes should be analyzed before they are made to the existing system,
recorded before they are implemented, reported to have details of before and
after, and controlled in a manner that will improve quality and reduce error. This
is where the need for System Configuration Management comes. Software
Configuration Management (SCM) is an arrangement of exercises that controls
change by recognizing the items for change, setting up connections between those
things, making/characterizing instruments for overseeing diverse variants,
controlling the changes being executed in the current framework, inspecting and
revealing/reporting on the changes made. It is essential to control the changes
because if the changes are not checked legitimately then they may wind up
undermining a well-run programming. In this way, SCM is a fundamental piece
of all project management activities.
Processes involved in SCM – Configuration management provides a
disciplined environment for smooth control of work products. It involves the
following activities:
1. Identification and Establishment – Identifying the configuration items
from products that compose baselines at given points in time (a baseline
is a set of mutually consistent Configuration Items, which has been
formally reviewed and agreed upon, and serves as the basis of further
development). Establishing relationships among items, creating a
mechanism to manage multiple levels of control and procedure for the
change management system.
2. Version control – Creating versions/specifications of the existing
product to build new products with the help of the SCM system. A
description of the version is given below:
Suppose after some changes, the version of the configuration object changes from
1.0 to 1.1. Minor corrections and changes result in versions 1.1.1 and 1.1.2,
which is followed by a major update that is object 1.2. The development of object
1.0 continues through 1.3 and 1.4, but finally, a noteworthy change to the object
results in a new evolutionary path, version 2.0. Both versions are currently
supported.
3. Change control – Controlling changes to Configuration items (CI). The
change control process is explained in Figure below:
A change request (CR) is submitted and evaluated to assess technical
merit, potential side effects, the overall impact on other configuration
objects and system functions, and the projected cost of the change. The
results of the evaluation are presented as a change report, which is used
by a change control board (CCB) —a person or group who makes a
final decision on the status and priority of the change. An engineering
change Request (ECR) is generated for each approved change. Also,
CCB notifies the developer in case the change is rejected with proper
reason. The ECR describes the change to be made, the constraints that
must be respected, and the criteria for review and audit. The object to be
changed is “checked out” of the project database, the change is made,
and then the object is tested again. The object is then “checked in” to
the database and appropriate version control mechanisms are used to
create the next version of the software.
4. Configuration auditing – A software configuration audit complements
the formal technical review of the process and product. It focuses on the
technical correctness of the configuration object that has been modified.
The audit confirms the completeness, correctness, and consistency of
items in the SCM system and tracks action items from the audit to
closure.
5. Reporting – Providing accurate status and current configuration data to
developers, testers, end users, customers, and stakeholders through
admin guides, user guides, FAQs, Release notes, Memos, Installation
Guide, Configuration guides, etc.
Software Configuration Management (SCM) is a software engineering practice
that focuses on managing the configuration of software systems and ensuring that
software components are properly controlled, tracked, and stored. It is a critical
aspect of software development , as it helps to ensure that changes made to a
software system are properly coordinated and that the system is always in a
known and stable state.
SCM involves a set of processes and tools that help to manage the different
components of a software system, including source code, documentation, and
other assets. It enables teams to track changes made to the software system,
identify when and why changes were made, and manage the integration of these
changes into the final product.
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.
7.
Why need for Software 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.
Contract Management
Contract management is an essential component of software project management
that ensures that agreements between parties are properly defined, documented,
and executed. With the increasing complexity of software projects, it’s crucial to
have a clear understanding of contract management to manage the project
efficiently. There are several aspects of contract management that need to be
considered to minimize project risks and maximize profit margins.
One of the most critical components of contract management is risk assessment.
This involves identifying potential risks that can affect the project’s timeline,
quality, and cost. The risk assessment should be conducted at the beginning of the
project and continuously throughout the development process to identify and
mitigate new risks as they arise.
The Stages of Contract Management
Contract management is not solely about creating agreements and getting them
approved. It includes a series of stages that follow the process through to a
successful conclusion. Any missed steps can cause delays and mistakes down the
line. Here’s an outline of five fundamental areas of importance:
1. Create: The contract management system must have the ability to
incorporate standardized procedures with details specific to the goals of the
organization. First steps include identifying the type of contract and who
will be responsible for each task. The planning process should consider
company resources, objectives and team member strengths and weaknesses,
while developing an overview of potential challenges and risks.
2. Negotiate: The contract should be written in a manner that reflects the
organizational needs and values, helping to establish trust between the two
parties. Once the initial contract has been designed, negotiation is the
obvious next step. Line items can be discussed, changed or removed, as part
of the negotiation process.
3. Approve: Approval usually includes multiple sign-offs. Numerous
managers, departments and even contractors, may have to sign off on the
specifics before the final deal is made.
4. Finalize: The contract signing process between enterprises is the final step
before getting the project underway. Obtaining signatures from numerous
parties and entities quickly—even when distance is a factor—is crucial to
avoiding postponements to the process.
5. Manage: Once the project begins, changes can still occur. Revisions need to
be carefully managed and communicated to the appropriate parties.
Deadlines, audits, revenue, and expenditures need to be tracked, completed
and shared with the rest of the team.
Components of Contract Management:
1. Contract Administration:
Contract administration involves the review and management of the contract
terms and conditions, negotiation, and signing the contract. It is the first stage
of contract management that determines the scope, timeline, and budget for the
project.
2. Contract Monitoring:
Contract monitoring involves regular check-ins or status updates to monitor the
project’s progress, compare it to the anticipated results, and ensure that the
project is on track. This step helps reduce risks and ensures a consistent and
high-quality project outcome.
3. Deliverables Management:
Deliverables management includes defining the project’s requirements, terms
and conditions, finalizing the deliverables, and monitoring progress to ensure
that the project scope is delivered according to the contract specifications.
4. Risk Management:
Risk management involves assessing risks, developing risk mitigation
strategies, and addressing problems to minimize the impact of potential risks. It
is essential for successful contract management, especially in complex software
projects.
Benefits of Contract Management in Software Project Management
There are numerous benefits of contract management in software project
management, including:
1. Improved Vendor Management: Contract management ensures that all vendor
contracts are managed effectively, reducing the risk of delays, quality issues, and
cost overruns.
2. Better Project Control: Contract management allows project managers to
maintain greater control over the project’s budget and schedule by providing a
clear understanding of the timelines, milestones, and payment terms.
3. Reduced Risk: Effective contract management reduces the risk of legal,
financial, and reputational issues by ensuring that all parties involved in the project
comply with the agreed-upon terms and conditions.
4. Enhanced Communication: Contract management promotes better
communication between project team members, stakeholders, and vendors, helping
to ensure that everyone is on the same page.
5. Increased Transparency: Contract management provides greater transparency
into project activities, ensuring that all parties involved have access to the right
information at the right time.
Contract Management Challenges
Specific challenges include:
Execution: Without proper management, files are easily lost, and final approvals
and signatures take much longer than necessary.
Tracking: It can be difficult to track and audit contracts once they have been
signed and are passed on to other staff who may not understand the details that
must be monitored. Budget information, e-mails, information from important
meetings, and changes are stuck in transit before being addressed. Time is money,
and project delays decrease profitability.
Revisions: Managing change before a contract is approved and after it has been
executed is equally important. Larger projects frequently include national or global
teams and create obstacles to deadlines and cohesiveness. Updates to original
documentation can take days, or even weeks. What’s more, if teams are working
from different versions, the wrong decisions could be implemented. Any of those
scenarios could lead to increased risk, missed deadlines, mistakes and even
litigation.
Compliance: Details laid out in the contract are non-negotiable obligations. From
a legal standpoint there may be regulatory or compliance issues that must be
followed to the letter. Failure to comply can have serious legal and/or financial
consequences.
Contract Management Tools Used in Software Project Management
Electronic signature software
Contract Lifecycle Management (CLM) software
Proposal automation software
Negotiation and dispute resolution software
Benefits of Contract Management Software/tools
From contract development to project completion, full project lifecycle oversight is
a clear choice to maximize performance and revenue. Contract management
software takes the process a step further, providing automation, a single source of
truth and a real-time view of day-to-day activity.
Once a contract is approved, it needs to be accepted and signed by numerous
parties. Signatures get complicated when more than one is needed, potentially from
all around the country, or even the world. Contract management software provides
an electronic signature tool that solves this tedious problem, expediting execution.
Following contract execution, efficient management of the contract can
significantly enhance the results of the project. Software solutions can build the
terms of the contract into business rules that assure compliance — whether
adhering to required timing, payment terms, change management processes or even
providing visibility to performance en route to achieving predetermined incentives.
In order to truly leverage the benefits, contract management software would
include:
Procurement planning: Tools to evaluate and manage potential clients and
vendors should be intuitive. Software must offer parameters to choose
opportunities that are in line with your company’s values and services.
Vendor and bid management: Individual contracts inside the umbrella contract
are equally important. Software offers the ability to choose and review vendors and
contractors based on predetermined qualities and previous work experience.
Budget and cost control: Staying within a predetermined budget is a must-have of
a contract management program. Software adds evaluation of value, progress,
completion, and forecasts for the future.
Change management: If things change over time within the contract, revisions
should be noted, approved and shared with the team quickly. Contract management
software can also calculate effects on cost and scheduling.
Field progress management: Contract management software goes beyond the
contract, tracking what’s happening in the field, communicating change and
progress, and reporting issues instantly. This real-time access helps the team
determine alternative actions and make decisions proactively.
Administration: Communication and collaboration are key elements of a
successful contract and project. Clients, customers and contractors can stay on the
same page regarding all documentation and change around meetings, action items,
responsibilities, progress and status.
Compliance: A contract management software solution notes important
information and tracks it along the lifecycle of the project, creating alerts to the
appropriate people when a breach is suspected. A real-time overview allows you to
be proactive before a problem presents itself.
Documentation and audit trails: Contract management software allows all team
members to literally be on the same page as changes are made. Budgets, timelines,
goals, audits, and other documentation are all updated and accessible in real-time.
Having access to all aspects of project changes as they are happening in a single-
source-view means timely reactions, positive outcomes, reduced risk and fewer
complications that could result in missed deadlines, mistakes and even litigation.
Data solutions clear the way for improvements to overall contract and project
organization with automated procedures and notifications. A solution that can
effectively head off problems provides a competitive advantage and improves
overall project performance.
Challenges of Contract Management in Software Project
Management
1. Ensuring compliance with industry standards: In the software development
industry, compliance with industry standards such as ISO 9001, ISO 27001, and
GDPR is critical. Failure to comply with these standards can result in severe
consequences such as legal action, loss of reputation, and financial loss. Therefore,
organizations need to ensure that contracts are aligned with industry standards, and
all parties comply with the agreed-upon terms and conditions.
2. Balancing flexibility and control: Software development is an iterative process
that requires a certain level of flexibility to accommodate changing requirements.
However, contracts are typically rigid documents that define the scope and
deliverables of a project. Therefore, organizations need to balance the need for
flexibility with the need for control when managing contracts in software project
management.
3. Managing changes effectively: In software project management, changes are
inevitable, and contracts must reflect these changes to avoid misunderstandings
and disputes. However, managing changes to contracts can be challenging,
especially when they involve multiple parties. Organizations need to have a clear
process in place for managing changes to contracts and ensuring that all parties
agree to the changes.
Lack of standardization
Lack of education and training
Difficulty in managing multiple contracts
Time-consuming and complex process