Software Configuration Management
Software Configuration Management
-Amruta Patil
This courseware material are to be used in conjunction with "Software Engineering: A practioner's Approach" 7/e and
are provided with permission by R.S. Pressman and associates. The course material is also having contents copied
from internet. Changes are made wrt Pune University Syllabus
Formal Methods Recent Trends
In Software Engineering
UNIT-VI
SCM
• Software configuration management (SCM) is an umbrella activity that is applied throughout the
software process.
• software configuration = computer programs + work products + data or content
• SCM activities are developed to
(1) identify change,
(2) control change,
(3) ensure that change is being properly implemented, and
(4) report changes to others who may have an interest.
1. An SCM Scenario:
A typical CM operational scenario involves
1) a project manager
2) a configuration manager
3) software engineers
4) Customer
3. Baselines
- A baseline is a software configuration management concept that helps you to control change without
seriously impeding justifiable change.
- a baseline is a milestone in the development of software.
- once a baseline is established, changes can be made, but a specific, formal procedure.
3. Software Configuration Items
configuration objects, DesignSpecification, DataModel, ComponentN, SourceCode, and TestSpecification.
SCM Repository
• SCM maintains project repository or project database.
1. The Role of the Repository
2. General Features and Content
3. SCM Features
A. Versioning.
B. Dependency tracking and change management
C. Requirements tracing.
D. Configuration management.
E. Audit trails.
Contents of repository
SCM Process
• Objectives:
(1) to identify all items that
collectively define the software
configuration,
(2) to manage changes to one or more
of these items,
(3) to facilitate the construction of
different versions of an
application,
(4) to ensure that software quality is
maintained as the configuration
evolves over time.
Risk Management
• Recognizing what can go wrong is the first step, called “risk
identification.”
• Next, each risk is analyzed to determine the likelihood that it will
occur and the damage that it will do if it does occur.
• Once this information is established, risks are ranked, by probability
and impact.
• Finally, a plan is developed to manage those risks that have high
probability and high impact.
Reactive vs Proactive Risk Management
• Reactive risk management tries to reduce the damage of potential
threats and speed an organization’s recovery from them, but assumes
that those threats will happen eventually.
• after the event
• Proactive risk management identifies threats and aims to prevent
those events from ever happening in the first place.
• before they happen and figure out ways to avoid or alleviate the risk.
Technology evolution
1. breakthrough phase
a problem is recognized
At some point, a solution shows
promise.
2. Replicator phase
gains wider usage
3. Empiricism
govern the use of the technology
4. Theory
broader theory of usage Fig: Technology Innovation life cycle
5. Automation
creation of automated tools
6. Maturity
S-curve model
• S-curve model is for technology evolution
• appropriate for considering the long-term effects of core
technologies.
• The Gartner Group cycle exhibits five phases:
1. Technology trigger
2. Peak of inflated expectations
3. Disillusionment
4. Slope of enlightenment
5. Plateau of productivity
Advantages :
1. Software products are costly.
2. Reduce development costs and time
3. Use again also leads to the higher quality of the developed products.
Test Driven Development
Advantages:
1. You only write code that’s needed
2. More modular design
3. Easier to maintain
4. High test coverage
5. Tests document the code
6. Less debugging
Disadvantages :
1. No silver bullet
2. Slow process
3. Tests got to be maintained when
requirements change
4. All the members of a team got to do it
Global software development challenges
1. Changing Requirements
2. Providing complete Security to the software
3. Misinterpreted requirements
4. System and Application integration
5. Adapting to the latest Technology
6. Project infrastructure / Limited resources
7. Defects or Errors in last minute
8. Time limitations
9. Communication and Coordination
10. Works with another developer’s code
11. Don’t get the required support from the Project Manager/Leader
Computer Aided Software Engineering (CASE)
• implementation of computer-facilitated tools and methods in software development.
• to ensure high-quality and defect-free software
• Types of CASE Tools
1. Diagramming Tools
2. Computer Display and Report Generators
3. Analysis Tools
4. Central Repository
5. Documentation Generators
6. Code Generators
CASE Taxonomy
• Classification scheme:
1. Enumerative – fixed class
2. Faceted – classes can be combined and extended
Classification Structure
1. Hierarchy: single top class that “includes” all sub- and sub-sub classes, is-a
relationship
2. Tree – similar to hierarchy but no relationship
3. Paradigm - two-way hierarchical relationships
4. Faceted analysis - multiple perspectives, Each facet is independent and can have its
own classes
CASE Tool-kits
• Loosely coupled collections of tools.
• typically build on operating system workbenches such as the Unix Programmer's Workbench or the VMS VAX set
• typically perform integration via piping or some other basic mechanism to share data and pass control.
• Easy integration
Workbenches
• A set of tools which supports a particular phase in software process
• Tools works together to provide comprehensive support
• Types:
1. Programming
2. Design
3. Testing
Some workbenches are open and some are closed
Advantages:
1. Available on personal machines
2. Result in standardized documentation
3. 40% higher productivity rate with less defects
Environments
• It is the foundation on which software engineering can
implement the policies and methodologies needed to
efficiently produce the software systems of the future.
• Elements are a computer program, toolset, object
management system (OMS), and a repository.
Advantages:
1. enables developers to create high-quality software
systems efficiently.
2. provide a comprehensive solution for software
development.
Components of CASE
• Components:
1. Central Repository
2. Upper: Planning, analysis, and designing of different stages of the software
development life
3. Lower: Implementation, testing, and maintenance can be performed using lower case.
4. Integrated: All the stages of the software development life cycle right from the
gathering of requirements for testing and documentation can be performed using
integrated tools.
13 Types of CASE Tools :
1. Diagram Tools – flow chart tools 7. Configuration Management Tools – Git
• DevOps teams
Steps:
1. Visualize your work
2. Limit work in progress
3. Use, monitor, adapt and improve
Kanban Board
Kanban Advantages and Disadvantages
Advantages:
1. Task Clarity
2. Status Alignment
3. Improved Team Efficiency
4. Better Focus And Avoid Burnout
Disadvantage:
1. lack of time frames and schedule details
2. Complexity Limitations
3. Updates Are Essential