Software Configuration Management

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

In software engineering, software configuration management is the task of tracking and

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.

As software development progresses, the number of Software Configuration


elements (SCI's) 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 SCM
It is practical in controlling and managing the access to various SCIs e.g., by
preventing the two members of a team for checking out the same component for
modification at the same time.

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.

SCM is used in keeping a system in a consistent state by automatically producing


derived version upon modification of the same component.

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 Identification of objects in the software configuration

o Version Control

o Change Control

o Configuration Audit

o Status Reporting
Identification

Basic Object: Unit of Text created by a software engineer during analysis, design,


code, or test.

Aggregate Object: A collection of essential objects and other aggregate objects.


Design Specification is an aggregate object.

Each object has a set of distinct characteristics that identify it uniquely: a name, a
description, a list of resources, and a "realization."

The interrelationships between configuration objects can be described with


a Module Interconnection Language (MIL).

Version Control

Version Control combines procedures and tools to handle different version of


configuration objects that are generated during the software process.

Clemm defines version control in the context of SCM: Configuration


management allows a user to specify the alternative configuration of the software
system through the selection of appropriate versions. This is supported by
associating attributes with each software version, and then allowing a configuration
to be specified [and constructed] by describing the set of desired attributes.

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.

A change request is submitted and calculated to assess technical merit; potential


side effects, the overall impact on other configuration objects and system functions,
and projected cost of the change.

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.

The "check-in" and "check-out" process implements two necessary elements of


change control-access control and synchronization control.

Access Control governs which software engineers have the authority to access and
modify a particular configuration object.

Synchronization Control helps to ensure that parallel changes, performed by two


different people, don't overwrite one another.

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

Configuration Status reporting (sometimes also called status accounting) providing


accurate status and current configuration data to developers, testers, end users,
customers and stakeholders through admin guides, user guides, FAQs, Release
Notes, Installation Guide, Configuration Guide, etc.
Software quality management is a management process that aims to develop and manage the
quality of software in such a way so as to best ensure that the product meets the quality
standards expected by the customer while also meeting any necessary regulatory and developer
requirements, if any. 

Software Quality Assurance


What is Quality?
Quality defines to any measurable characteristics such as correctness,
maintainability, portability, testability, usability, reliability, efficiency, integrity,
reusability, and interoperability.

There are two kinds of Quality:

Quality of Design: Quality of Design refers to the characteristics that designers


specify for an item. The grade of materials, tolerances, and performance
specifications that all contribute to the quality of design.

Quality of conformance: Quality of conformance is the degree to which the design


specifications are followed during manufacturing. Greater the degree of
conformance, the higher is the level of quality of conformance.

Software Quality: Software Quality is defined as the conformance to explicitly


state functional and performance requirements, explicitly documented development
standards, and inherent characteristics that are expected of all professionally
developed software.

Quality Control: Quality Control involves a series of inspections, reviews, and tests


used throughout the software process to ensure each work product meets the
requirements place upon it. Quality control includes a feedback loop to the process
that created the work product.
Quality Assurance: Quality Assurance is the preventive set of activities that
provide greater confidence that the project will be completed successfully.

Quality Assurance focuses on how the engineering and management activity will


be done?

As anyone is interested in the quality of the final product, it should be assured that
we are building the right product.

It can be assured only when we do inspection & review of intermediate products, if


there are any bugs, then it is debugged. This quality can be enhanced.

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.

Increasing criticality of software: The final customer or user is naturally


concerned about the general quality of software, especially its reliability. This is
increasing in the case as organizations become more dependent on their computer
systems and software is used more and more in safety-critical areas. For example,
to control aircraft.

The intangibility of software: This makes it challenging to know that a particular


task in a project has been completed satisfactorily. The results of these tasks can be
made tangible by demanding that the developers produce 'deliverables' that can be
examined for quality.

Accumulating errors during software development: As computer system


development is made up of several steps where the output from one level is input to
the next, the errors in the earlier ?deliverables? will be added to those in the later
stages leading to accumulated determinable effects. In general the later in a project
that an error is found, the more expensive it will be to fix. In addition, because the
number of errors in the system is unknown, the debugging phases of a project are
particularly challenging to control.

Software Quality Assurance


Software quality assurance is a planned and systematic plan of all actions necessary
to provide adequate confidence that an item or product conforms to establish
technical requirements.

A set of activities designed to calculate the process by which the products are
developed or manufactured.

SQA Encompasses

o A quality management approach

o Effective Software engineering technology (methods and tools)


o Formal technical reviews that are tested throughout the software process

o A multitier testing strategy

o Control of software documentation and the changes made to it.

o A procedure to ensure compliances with software development standards

o Measuring and reporting mechanisms.

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.

Following activities are performed by an independent SQA group:

1. Prepares an SQA plan for a project: The program is developed during


project planning and is reviewed by all stakeholders. The plan governs quality
assurance activities performed by the software engineering team and the SQA
group. The plan identifies calculation to be performed, audits and reviews to
be performed, standards that apply to the project, techniques for error
reporting and tracking, documents to be produced by the SQA team, and
amount of feedback provided to the software project team.

2. Participates in the development of the project's software process


description: The software team selects a process for the work to be
performed. The SQA group reviews the process description for compliance
with organizational policy, internal software standards, externally imposed
standards (e.g. ISO-9001), and other parts of the software project plan.

3. Reviews software engineering activities to verify compliance with the


defined software process: The SQA group identifies, reports, and tracks
deviations from the process and verifies that corrections have been made.

4. Audits designated software work products to verify compliance with


those defined as a part of the software process: The SQA group reviews
selected work products, identifies, documents and tracks deviations, verify
that corrections have been made, and periodically reports the results of its
work to the project manager.

5. Ensures that deviations in software work and work products are


documented and handled according to a documented
procedure: Deviations may be encountered in the project method, process
description, applicable standards, or technical work products.

6. Records any noncompliance and reports to senior management: Non-


compliance items are tracked until they are resolved.

Quality Assurance v/s Quality control

Quality Assurance Quality Control

Quality Assurance (QA) is the set of Quality Control (QC) is


actions including facilitation, training, described as the processes and
measurement, and analysis needed to methods used to compare
provide adequate confidence that product quality to requirements
processes are established and and applicable standards, and the
continuously improved to produce actions are taken when a
products or services that conform to nonconformance is detected.
specifications and are fit for use.

QA is an activity that establishes and QC is an activity that


calculates the processes that produce demonstrates whether or not the
the product. If there is no process, product produced met standards.
there is no role for QA.

QA helps establish process QC relates to a particular product


or service

QA sets up a measurement program to QC verified whether particular


evaluate processes attributes exist, or do not exist,
in a explicit product or service.

QA identifies weakness in processes QC identifies defects for the


and improves them primary goals of correcting
errors.

Quality Assurance is a managerial tool. Quality Control is a corrective


tool.

Verification is an example of QA. Validation is an example of QC.

Software Reliability is defined as: the probability of failure-free software operation for a


specified period of time in a specified environment. ... Software Reliability is hard to
achieve, because the complexity of software tends to be high.

Software Reliability Models


A software reliability model indicates the form of a random process that defines the
behavior of software failures to time.

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.

Most software models contain the following parts:

o Assumptions

o Factors

A mathematical function that includes the reliability with the elements. The
mathematical function is generally higher-order exponential or logarithmic.

Software Reliability Modeling Techniques


Both kinds of modeling methods are based on observing and accumulating failure
data and analyzing with statistical inference.

Differentiate between software reliability prediction models and


software reliability estimation models

Basics Prediction Models Estimation Models

Data Reference Uses historical Uses data from the current


information software development effort.

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.

Time Frame Predict reliability at some Estimate reliability at either


present or some next time.
future time.

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.

Following are the Software Reliability Models are:

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.

Computer aided software engineering (CASE) is the implementation of


computer facilitated tools and methods in software development. CASE is
used to ensure a high-quality and defect-free software. CASE ensures a
check-pointed and disciplined approach and helps designers, developers,
testers, managers and others to see the project milestones during
development. 
CASE can also help as a warehouse for documents related to projects, like
business plans, requirements and design specifications. One of the major
advantages of using CASE is the delivery of the final product, which is more
likely to meet real-world requirements as it ensures that customers remain
part of the process. 
CASE illustrates a wide set of labor-saving tools that are used in software
development. It generates a framework for organizing projects and to be
helpful in enhancing productivity. There was more interest in the concept of
CASE tools years ago, but less so today, as the tools have morphed into
different functions, often in reaction to software developer needs. The
concept of CASE also received a heavy dose of criticism after its release. 
CASE Tools: 
The essential idea of CASE tools is that in-built programs can help to
analyze developing systems in order to enhance quality and provide better
outcomes. Throughout the 1990, CASE tool became part of the software
lexicon, and big companies like IBM were using these kinds of tools to help
create software. 
Various tools are incorporated in CASE and are called CASE tools, which
are used to support different stages and milestones in a software
development life cycle. 

Types of CASE Tools: 


 
1. Diagramming Tools: 
It helps in diagrammatic and graphical representations of the data and
system processes. It represents system elements, control flow and data
flow among different software components and system structure in a
pictorial form. 
For example, Flow Chart Maker tool for making state-of-the-art
flowcharts. 
 
2. Computer Display and Report Generators: 
It helps in understanding the data requirements and the relationships
involved. 
 
3. Analysis Tools: 
It focuses on inconsistent, incorrect specifications involved in the diagram
and data flow. It helps in collecting requirements, automatically check for
any irregularity, imprecision in the diagrams, data redundancies or
erroneous omissions. 
For example, 
 (i) Accept 360, Accompa, CaseComplete for requirement
analysis. 
 
 (ii) Visible Analyst for total analysis. 
 
4. Central Repository: 
It provides the single point of storage for data diagrams, reports and
documents related to project management. 
 
5. Documentation Generators: 
It helps in generating user and technical documentation as per standards.
It creates documents for technical users and end users. 
For example, Doxygen, DrExplain, Adobe RoboHelp for documentation. 
 
6. Code Generators: 
It aids in the auto generation of code, including definitions, with the help
of the designs, documents and diagrams. 
 
Advantages of the CASE approach: 
 
 As special emphasis is placed on redesign as well as testing, the
servicing cost of a product over its expected lifetime is considerably
reduced. 
 
 The overall quality of the product is improved as an organized
approach is undertaken during the process of development. 
 
 Chances to meet real-world requirements are more likely and easier
with a computer-aided software engineering approach. 
 
 CASE indirectly provides an organization with a competitive advantage
by helping ensure the development of high-quality products. 
 
Disadvantages of the CASE approach: 
 Cost: Using case tool is a very costly. Mostly firms engaged in
software development on a small scale do not invest in CASE tools
because they think that the benefit of CASE are justifiable only in the
development of large systems.
 Learning Curve: In most cases, programmers productivity may fall in
the initial phase of implementation , because user need time to learn the
technology. Many consultants offer training and on-site services that can
be important to accelerate the learning curve and to the development and
use of the CASE tools.
 Tool Mix: It is important to build an appropriate selection tool mix to
urge cost advantage CASE integration and data integration across all
platforms is extremely important. 

Microsoft Visio 2007 can be used as a CASE tool for geodatabase schema design.


Microsoft Visio 2003 had an option in the user interface (UI) to incorporate Add-On
functionality. 

 Confluence: Online tool used for capturing and sharing information.


 Jira: Online Bug/Issue/Task/Project Tracking system.
 Jira Agile: Add-on plugin for Jira which provides enhanced capability for agile
based projects.
 Git: Source Code Repository/Version Control system.
 Stash: Online Git Repository Manager.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy