Software Configuration Management
Software Configuration Management
Software Configuration Management
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.