Software Configuration Management Overview
Software Configuration Management Overview
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
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.
A configuration of the product refers not only to the product's constituent but also to
a particular version of the component.
o Identify change
It provides the tool to ensure that changes are being properly implemented.
It has the capability of describing and storing the various constituent of software.
It uses the tools which keep that the necessary change has been implemented
adequately to the appropriate component. The SCM process defines a number of
tasks:
o Version Control
o Change Control
o Configuration Audit
o Status Reporting
Identification
Each object has a set of distinct characteristics that identify it uniquely: a name, a
description, a list of resources, and a "realization."
Version Control
Change Control
James Bach describes change control in the context of SCM is: Change Control is
Vital. But the forces that make it essential also make it annoying.
We worry about change because a small confusion in the code can create a big
failure in the product. But it can also fix a significant failure or enable incredible new
capabilities.
We worry about change because a single rogue developer could sink the project, yet
brilliant ideas originate in the mind of those rogues, and
A burdensome change control process could effectively discourage them from doing
creative work.
The results of the evaluations are presented as a change report, which is used by a
change control authority (CCA) - a person or a group who makes a final decision on
the status and priority of the change.
Access Control governs which software engineers have the authority to access and
modify a particular configuration object.
Configuration Audit
SCM audits to verify that the software product satisfies the baselines requirements
and ensures that what is built and what is delivered.
SCM audits also ensure that traceability is maintained between all CIs and that all
work requests are associated with one or more CI modification.
SCM audits are the "watchdogs" that ensures that the integrity of the project's
scope is preserved.
Status Reporting
As anyone is interested in the quality of the final product, it should be assured that
we are building the right product.
Importance of Quality
We would expect the quality to be a concern of all producers of goods and services.
However, the distinctive characteristics of software and in particular its intangibility
and complexity, make special demands.
A set of activities designed to calculate the process by which the products are
developed or manufactured.
SQA Encompasses
SQA Activities
Software quality assurance is composed of a variety of functions associated with two
different constituencies ? the software engineers who do technical work and an SQA
group that has responsibility for quality assurance planning, record keeping,
analysis, and reporting.
Software reliability models have appeared as people try to understand the features
of how and why software fails, and attempt to quantify software reliability.
Over 200 models have been established since the early 1970s, but how to quantify
software reliability remains mostly unsolved.
There is no individual model that can be used in all situations. No model is complete
or even representative.
o Assumptions
o Factors
A mathematical function that includes the reliability with the elements. The
mathematical function is generally higher-order exponential or logarithmic.
When used in Usually made before Usually made later in the life
development development or test cycle (after some data have
cycle phases; can be used as been collected); not typically
early as concept phase. used in concept or development
phases.
Reliability Models
A reliability growth model is a numerical model of software reliability, which predicts
how software reliability should improve over time as errors are discovered and
repaired. These models help the manager in deciding how much efforts should be
devoted to testing. The objective of the project manager is to test and debug the
system until the required level of reliability is reached.
Clean room software engineering (CSE) is a process model that removes defects before
they can precipitate serious hazards . ... The approach combines mathematical-
based methods of software specification, design and correctness verification with
statistical, usage-based testing to certify software fitness for use.
Cleanroom Testing was pioneered by IBM. this kind of testing depends
heavily on walkthroughs, inspection, and formal verification. The
programmers don’t seem to be allowed to check any of their code by
corporal punishment the code apart from doing a little syntax testing
employing a compiler. The computer code development philosophy relies on
avoiding computer code defects by employing a rigorous examination
method. the target of this computer code is that the zero-defect computer
code.
The name ‘CLEAN ROOM’ was derived from the analogy with semiconductor
fabrication units. In these units (clean rooms), defects area unit avoided by
producing within the ultra-clean atmosphere. during this reasonable
development, inspections to ascertain the consistency of the parts with their
specifications has replaced unit-testing.
This technique reportedly produces documentation and code that’s extra
reliable and fixable than various development methods relying heavily on
code execution-based testing.
The clean room approach to computer code development relies on 5
characteristics:
1. Formal specification:
The computer code to be developed is formally given. A state-transition
model that shows system responses to stimuli is employed to precise the
specification.
2. Incremental development:
The computer code is partitioned off into increments that area unit
developed and valid on individual basis mistreatment the white room
method. These increments area unit given, with client input, at Associate
in Nursing early stage within the method.
3. Structured programming:
Only a restricted range of management and information abstraction
constructs area unit used. The program development method is that the
method of stepwise refinement of the specification.
4. Static verification:
The developed computer code is statically verified mistreatment rigorous
computer code inspections. there’s no unit or module testing method for
code parts.
5. Statistical testing of the system:
The integrated computer code increment is tested statistically to work out
its responsibility. These applied mathematics tests area unit supported
the operational profile that is developed in parallel with the system
specification.
Note: The main drawback with this approach is that testing effort is
augmented as walkthroughs, inspection, and verification area unit time-
overwhelming.
Computer-Aided Software Engineering (CASE) technologies are tools that provide
automated assistance for software development . The goal of introducing CASE tools is
the reduction of the time and cost of software development and the enhancement of the
quality of the systems developed.
SCM minimizes mistakes and maximizes productivity by tracking and controlling changes in software, coordinating work among team members, and preventing conflicts through practices such as revision control and configuration audits. SCM identifies, monitors, and controls changes to software components, ensuring that necessary updates are properly implemented without overlap, thus reducing the chance of errors. It also involves version control, which manages different versions of software objects and ensures correct construction of desired configurations . Furthermore, change control processes evaluate the technical merit and impact of proposed changes to prevent unnecessary modifications and to maintain integrity .
CASE tools offer several advantages, including reduced development time and costs, enhanced product quality, and better alignment with real-world requirements. They provide an organized framework that enhances productivity and supports efficient project management by offering tools for diagramming, analysis, code generation, and documentation . The use of CASE tools also facilitates better design and testing, which reduces service costs over the product's life and mitigates common development errors . Furthermore, they give organizations a competitive edge by ensuring high-quality software development .
Change control facilitates the implementation of new capabilities by providing a structured process to analyze, evaluate, and decide on proposed changes, thus balancing innovation with risk management. It involves assessing the technical merit, side effects, and costs associated with a change, allowing informed decisions that consider both benefits and potential risks . The process involves a change control authority that prioritizes and approves changes, harmonizing creativity with project goals and preventing one-off change requests from undermining overall stability . This ensures that new features are appropriately integrated into the existing system, minimizing disruptions or failures resulting from poorly managed changes .
The Cleanroom Software Engineering approach reduces defects by emphasizing defect prevention over defect correction. It integrates formal specification, incremental development, structured programming, and static verification to systematically eliminate software defects during development. By avoiding traditional testing in favor of rigorous inspections and verifications, this approach aims for 'zero-defect' software. Statistical testing of the system further assesses reliability using usage patterns, thus ensuring the developed software meets high reliability standards before deployment . This methodology ensures a higher standard of software correctness and dependability compared to traditional testing methods .
Configuration Audit is essential in SCM as it verifies whether the software product satisfies baseline requirements and ensures traceability of changes. By auditing, SCM ensures all configuration items are correctly implemented according to the project scope and that established baselines are met, maintaining the integrity of the deliverables. Audits also help detect discrepancies in configuration status, thus preventing deviations from expected configurations which might affect software reliability and performance . Additionally, audits act as an oversight mechanism to ensure the configuration management processes are adhered to consistently .
The intangibility of software affects quality assurance by complicating the assessment of development progress and product quality. Since software cannot be physically observed, its quality must be evaluated through derivative measures such as deliverables, documentation, and testing outputs. This demands rigorous review processes and intermediate checks to ensure product standards are met at each development stage . Furthermore, errors discovered late in the development process are costlier to fix, highlighting the need for meticulous quality assurance practices early on to catch defects before they accumulate and magnify their effects .
Quality Assurance (QA) plays a critical role in ensuring software quality by implementing preventive activities that uphold software standards and expectations. QA focuses on the processes of engineering and management that contribute to the overall quality, incorporating inspections and reviews to catch defects early in the development cycle. It provides confidence that the final product will meet the required quality standards by ensuring intermediate products are correctly developed and any bugs are identified and rectified . This helps avoid cumulative errors that increase costs and inefficiencies if discovered later in development .
Challenges associated with CASE tools include high costs, steep learning curves, and the need for appropriate tool integration. The initial investment in CASE tools can be substantial, often deterring small-scale development firms. This challenge can be mitigated by implementing CASE tools gradually or leveraging open-source alternatives that require lower investment . The learning curve can be addressed through comprehensive training and support services to enhance productivity quickly. Finally, integration challenges can be overcome by careful selection of compatible tools that meet the project's specific needs, ensuring data consistency and cohesion across platforms .
Integrating both Quality of Design and Quality of Conformance is crucial because they collectively ensure the software meets both the intended specifications and adheres to set standards during its development. Quality of Design sets the framework for expected performance, materials, and specifications, while Quality of Conformance ensures these design principles are consistently and accurately followed during manufacturing . A high degree of conformance to the design indicates that the software faithfully implements the intended features without deviations, thus achieving the reliability and usability expected by end users. Ignoring either aspect can compromise the overall quality, leading to dissatisfaction or failure to meet user needs .
Version Control contributes to effective Software Configuration Management by providing organized procedures and tools that manage different versions of software configuration items. It allows teams to maintain alternative configurations through selection of appropriate versions and ensures accurate tracking of changes, enabling developers to reconstruct specified configurations accurately . This control over version management prevents conflicts arising from concurrent modifications by multiple team members, thus maintaining consistency and integrity of the software as it evolves .