Software Evolution and Software Configuration Management

Dr. Mustafa Değerli
Dr. Mustafa DeğerliPhD, PMP, PMI-RMP, PSM, Lead Auditor, ITIL, CMMI Associate à Scientific and Technological Research Council
CS413 - Software Engineering Project Management
Software Evolution and Software
Configuration Management
Dr. Mustafa Değerli
Department of Computer Engineering, Bilkent University
Chapter 9 – Software Evolution
Chapter 9 Software Evolution 2
30/10/2014
Software change
² Software change is inevitable
§ New requirements emerge when the software is used;
§ The business environment changes;
§ Errors must be repaired;
§ New computers and equipment is added to the system;
§ The performance or reliability of the system may have to be
improved.
² A key problem for all organizations is implementing and
managing change to their existing software systems.
Chapter 9 Software Evolution 3
30/10/2014
Importance of evolution
² Organisations have huge investments in their software
systems - they are critical business assets.
² To maintain the value of these assets to the business,
they must be changed and updated.
² The majority of the software budget in large companies
is devoted to changing and evolving existing software
rather than developing new software.
Chapter 9 Software Evolution 4
30/10/2014
A spiral model of development and evolution
Specification Implemention
Validation
Operation
Start
Release 1
Release 2
Release 3
etc.
Chapter 9 Software Evolution 5
30/10/2014
Evolution and servicing
Chapter 9 Software Evolution 6
Software
development Software
evolution Software
servicing Software
retirement
Time
30/10/2014
Evolution and servicing
² Evolution
§ The stage in a software system’s life cycle where it is in
operational use and is evolving as new requirements are
proposed and implemented in the system.
² Servicing
§ At this stage, the software remains useful but the only changes
made are those required to keep it operational i.e. bug fixes and
changes to reflect changes in the software’s environment. No
new functionality is added.
² Phase-out
§ The software may still be used but no further changes are made
to it.
Chapter 9 Software Evolution 7
30/10/2014
Evolution processes
² Software evolution processes depend on
§ The type of software being maintained;
§ The development processes used;
§ The skills and experience of the people involved.
² Proposals for change are the driver for system evolution.
§ Should be linked with components that are affected by the
change, thus allowing the cost and impact of the change to be
estimated.
² Change identification and evolution continues throughout
the system lifetime.
Chapter 9 Software Evolution 8
30/10/2014
Change identification and evolution processes
Change proposals
New system
Change identification
process
Software evolution
process
Chapter 9 Software Evolution 9
30/10/2014
The software evolution process
Chapter 9 Software Evolution 10
Release
planning
Change
implementation
System
release
Impact
analysis
Change
requests
Platform
adaptation
System
enhancement
Fault repair
30/10/2014
Change implementation
Requirements
updating
Software
development
Requirements
analysis
Proposed
changes
Chapter 9 Software Evolution 11
30/10/2014
The emergency repair process
Modify
source code
Deliver modified
system
Analyze
source code
Change
requests
Chapter 9 Software Evolution 12
30/10/2014
Agile methods and evolution
² Agile methods are based on incremental development so
the transition from development to evolution is a
seamless one.
§ Evolution is simply a continuation of the development process
based on frequent system releases.
² Automated regression testing is particularly valuable
when changes are made to a system.
² Changes may be expressed as additional user stories.
Chapter 9 Software Evolution 13
30/10/2014
Legacy systems
² Legacy systems are older systems that rely on
languages and technology that are no longer used for
new systems development.
² Legacy software may be dependent on older hardware,
such as mainframe computers and may have associated
legacy processes and procedures.
² Legacy systems are not just software systems but are
broader socio-technical systems that include hardware,
software, libraries and other supporting software and
business processes.
Chapter 9 Software Evolution 14
30/10/2014
‘Bad smells’ in program code
² Duplicate code
§ The same or very similar code may be included at different
places in a program. This can be removed and implemented as a
single method or function that is called as required.
² Long methods
§ If a method is too long, it should be redesigned as a number of
shorter methods.
² Switch (case) statements
§ These often involve duplication, where the switch depends on
the type of a value. The switch statements may be scattered
around a program. In object-oriented languages, you can often
use polymorphism to achieve the same thing.
Chapter 9 Software Evolution 15
30/10/2014
‘Bad smells’ in program code
² Data clumping
§ Data clumps occur when the same group of data items (fields in
classes, parameters in methods) re-occur in several places in a
program. These can often be replaced with an object that
encapsulates all of the data.
² Speculative generality
§ This occurs when developers include generality in a program in
case it is required in the future. This can often simply be
removed.
Chapter 9 Software Evolution 16
30/10/2014
Key points
² Software development and evolution can be thought of
as an integrated, iterative process that can be
represented using a spiral model.
² For custom systems, the costs of software maintenance
usually exceed the software development costs.
² The process of software evolution is driven by requests
for changes and includes change impact analysis,
release planning and change implementation.
² Legacy systems are older software systems, developed
using obsolete software and hardware technologies, that
remain useful for a business.
Chapter 9 Software Evolution 17
30/10/2014
Key points
² It is often cheaper and less risky to maintain a legacy
system than to develop a replacement system using
modern technology.
² The business value of a legacy system and the quality of
the application should be assessed to help decide if a
system should be replaced, transformed or maintained.
² There are 3 types of software maintenance, namely bug
fixing, modifying software to work in a new environment,
and implementing new or changed requirements.
Chapter 9 Software Evolution 18
30/10/2014
Key points
² Software re-engineering is concerned with re-structuring
and re-documenting software to make it easier to
understand and change.
² Refactoring, making program changes that preserve
functionality, is a form of preventative maintenance.
Chapter 9 Software Evolution 19
30/10/2014
Chapter 25 – Configuration Management
Chapter 25 Configuration management 20
11/12/2014
Configuration management
² Software systems are constantly changing during
development and use.
² Configuration management (CM) is concerned with the
policies, processes and tools for managing changing
software systems.
² You need CM because it is easy to lose track of what
changes and component versions have been
incorporated into each system version.
² CM is essential for team projects to control changes
made by different developers
Chapter 25 Configuration management 21
11/12/2014
CM activities
² Version management
§ Keeping track of the multiple versions of system components and
ensuring that changes made to components by different developers do
not interfere with each other.
² System building
§ The process of assembling program components, data and libraries,
then compiling these to create an executable system.
² Change management
§ Keeping track of requests for changes to the software from customers
and developers, working out the costs and impact of changes, and
deciding the changes should be implemented.
² Release management
§ Preparing software for external release and keeping track of the system
versions that have been released for customer use.
Chapter 25 Configuration management 22
11/12/2014
Agile development and CM
² Agile development, where components and systems are
changed several times per day, is impossible without
using CM tools.
² The definitive versions of components are held in a
shared project repository and developers copy these into
their own workspace.
² They make changes to the code then use system
building tools to create a new system on their own
computer for testing. Once they are happy with the
changes made, they return the modified components to
the project repository.
11/12/2014 Chapter 25 Configuration management 23
Multi-version systems
² For large systems, there is never just one ‘working’
version of a system.
² There are always several versions of the system at
different stages of development.
² There may be several teams involved in the
development of different system versions.
11/12/2014 Chapter 25 Configuration management 24
CM terminology
Term Explanation
Baseline A baseline is a collection of component versions that make up a system.
Baselines are controlled, which means that the versions of the
components making up the system cannot be changed. This means that
it is always possible to recreate a baseline from its constituent
components.
Branching The creation of a new codeline from a version in an existing codeline.
The new codeline and the existing codeline may then develop
independently.
Codeline A codeline is a set of versions of a software component and other
configuration items on which that component depends.
Configuration
(version) control
The process of ensuring that versions of systems and components are
recorded and maintained so that changes are managed and all versions
of components are identified and stored for the lifetime of the system.
Configuration item or
software configuration
item (SCI)
Anything associated with a software project (design, code, test data,
document, etc.) that has been placed under configuration control. There
are often different versions of a configuration item. Configuration items
have a unique name.
Mainline A sequence of baselines representing different versions of a system.
Chapter 25 Configuration management 25
11/12/2014
CM terminology
Term Explanation
Merging The creation of a new version of a software component by merging
separate versions in different codelines. These codelines may have
been created by a previous branch of one of the codelines involved.
Release A version of a system that has been released to customers (or other
users in an organization) for use.
Repository A shared database of versions of software components and meta-
information about changes to these components.
System building The creation of an executable system version by compiling and linking
the appropriate versions of the components and libraries making up the
system.
Version An instance of a configuration item that differs, in some way, from other
instances of that item. Versions always have a unique identifier.
Workspace A private work area where software can be modified without affecting
other developers who may be using or modifying that software.
Chapter 25 Configuration management 26
11/12/2014
Change management
² Organizational needs and requirements change during
the lifetime of a system, bugs have to be repaired and
systems have to adapt to changes in their environment.
² Change management is intended to ensure that system
evolution is a managed process and that priority is given
to the most urgent and cost-effective changes.
² The change management process is concerned with
analyzing the costs and benefits of proposed changes,
approving those changes that are worthwhile and
tracking which components in the system have been
changed.
Chapter 25 Configuration management 27
11/12/2014
The change
management
process
Chapter 25 Configuration management 28
11/12/2014
Change
requests
Submit
CR
Check CR
Close CR
Implementation
analysis
Cost/impact
analysis
Assess CRs
Select CRs Modify
software
Test software
Close CR
Close CRs
Valid
Invalid
Pass
Fail
Customer
Customer support
Development
Product development/CCB
Register CR
Factors in change analysis
² The consequences of not making the change
² The benefits of the change
² The number of users affected by the change
² The costs of making the change
² The product release cycle
Chapter 25 Configuration management 29
11/12/2014
Change management and agile methods
² In some agile methods, customers are directly involved
in change management.
² The propose a change to the requirements and work
with the team to assess its impact and decide whether
the change should take priority over the features planned
for the next increment of the system.
² Changes to improve the software improvement are
decided by the programmers working on the system.
² Refactoring, where the software is continually improved,
is not seen as an overhead but as a necessary part of
the development process.
Chapter 25 Configuration management 30
11/12/2014
Key points
² Configuration management is the management of an evolving
software system. When maintaining a system, a CM team is put in
place to ensure that changes are incorporated into the system in a
controlled way and that records are maintained with details of the
changes that have been implemented.
² The main configuration management processes are concerned with
version management, system building, change management, and
release management.
² Version management involves keeping track of the different versions
of software components as changes are made to them.
Chapter 25 Configuration management 31
11/12/2014
Key points
² System building is the process of assembling system components
into an executable program to run on a target computer system.
² Software should be frequently rebuilt and tested immediately after a
new version has been built. This makes it easier to detect bugs and
problems that have been introduced since the last build.
² Change management involves assessing proposals for changes
from system customers and other stakeholders and deciding if it is
cost-effective to implement these in a new version of a system.
² System releases include executable code, data files, configuration
files and documentation. Release management involves making
decisions on system release dates, preparing all information for
distribution and documenting each system release.
Chapter 25 Configuration management 32
11/12/2014
Software Engineering Project Management
Reference
• Software Engineering, 10th Edition, Ian
Sommerville.
Software Evolution and Software Configuration Management
CS413 - Software Engineering Project Management
Software Evolution and Software
Configuration Management
Dr. Mustafa Değerli
Department of Computer Engineering, Bilkent University
1 sur 34

Recommandé

Ch9-Software Engineering 9 par
Ch9-Software Engineering 9Ch9-Software Engineering 9
Ch9-Software Engineering 9Ian Sommerville
3.1K vues57 diapositives
Ch9 - Evolution par
Ch9 - EvolutionCh9 - Evolution
Ch9 - EvolutionHarsh Verdhan Raj
21 vues61 diapositives
Ch9 evolution par
Ch9 evolutionCh9 evolution
Ch9 evolutionsoftware-engineering-book
19.7K vues61 diapositives
SE2013_10.ppt par
SE2013_10.pptSE2013_10.ppt
SE2013_10.pptCarlPilac1
2 vues51 diapositives
Ch9 par
Ch9Ch9
Ch9Keith Jasper Mier
326 vues57 diapositives
SWE-401 - 11. Software maintenance overview par
SWE-401 - 11. Software maintenance overviewSWE-401 - 11. Software maintenance overview
SWE-401 - 11. Software maintenance overviewghayour abbas
51 vues8 diapositives

Contenu connexe

Similaire à Software Evolution and Software Configuration Management

Process in Software Engineering/4'ps in Software Engineerin par
Process in Software Engineering/4'ps in Software EngineerinProcess in Software Engineering/4'ps in Software Engineerin
Process in Software Engineering/4'ps in Software EngineerinMuhammadSufianJani
95 vues49 diapositives
Ch25 - Configuration Management par
Ch25 - Configuration ManagementCh25 - Configuration Management
Ch25 - Configuration ManagementHarsh Verdhan Raj
50 vues66 diapositives
Ch2 - SW Processes par
Ch2 - SW ProcessesCh2 - SW Processes
Ch2 - SW ProcessesHarsh Verdhan Raj
226 vues58 diapositives
Chapter 2 Software Processes.pdf par
Chapter 2 Software Processes.pdfChapter 2 Software Processes.pdf
Chapter 2 Software Processes.pdfHardikGupta400524
78 vues59 diapositives
SE2.ppt par
SE2.pptSE2.ppt
SE2.pptAaMir519591
10 vues60 diapositives
ch2swprocesses-150102101840-conversion-gate02.pdf par
ch2swprocesses-150102101840-conversion-gate02.pdfch2swprocesses-150102101840-conversion-gate02.pdf
ch2swprocesses-150102101840-conversion-gate02.pdfabdallhelkahlout1
7 vues58 diapositives

Similaire à Software Evolution and Software Configuration Management(20)

Process in Software Engineering/4'ps in Software Engineerin par MuhammadSufianJani
Process in Software Engineering/4'ps in Software EngineerinProcess in Software Engineering/4'ps in Software Engineerin
Process in Software Engineering/4'ps in Software Engineerin
softwareMaintenance.pdf par kumari36
softwareMaintenance.pdfsoftwareMaintenance.pdf
softwareMaintenance.pdf
kumari3639 vues
Software maintaince.pptx par AmarYa2
Software maintaince.pptxSoftware maintaince.pptx
Software maintaince.pptx
AmarYa24 vues

Plus de Dr. Mustafa Değerli

Project Performance Domains par
Project Performance DomainsProject Performance Domains
Project Performance DomainsDr. Mustafa Değerli
109 vues69 diapositives
Project Monitoring and Controlling par
Project Monitoring and ControllingProject Monitoring and Controlling
Project Monitoring and ControllingDr. Mustafa Değerli
19 vues49 diapositives
Scope Management par
Scope ManagementScope Management
Scope ManagementDr. Mustafa Değerli
7 vues36 diapositives
Cost Management par
Cost ManagementCost Management
Cost ManagementDr. Mustafa Değerli
19 vues36 diapositives
Strategic and Financial Management.pdf par
Strategic and Financial Management.pdfStrategic and Financial Management.pdf
Strategic and Financial Management.pdfDr. Mustafa Değerli
55 vues52 diapositives
Takeaway Messages par
Takeaway MessagesTakeaway Messages
Takeaway MessagesDr. Mustafa Değerli
8 vues17 diapositives

Plus de Dr. Mustafa Değerli(20)

Dernier

802.11 Computer Networks par
802.11 Computer Networks802.11 Computer Networks
802.11 Computer NetworksTusharChoudhary72015
10 vues33 diapositives
Design_Discover_Develop_Campaign.pptx par
Design_Discover_Develop_Campaign.pptxDesign_Discover_Develop_Campaign.pptx
Design_Discover_Develop_Campaign.pptxShivanshSeth6
32 vues20 diapositives
Effect of deep chemical mixing columns on properties of surrounding soft clay... par
Effect of deep chemical mixing columns on properties of surrounding soft clay...Effect of deep chemical mixing columns on properties of surrounding soft clay...
Effect of deep chemical mixing columns on properties of surrounding soft clay...AltinKaradagli
9 vues10 diapositives
Searching in Data Structure par
Searching in Data StructureSearching in Data Structure
Searching in Data Structureraghavbirla63
7 vues8 diapositives
Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc... par
Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc...Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc...
Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc...csegroupvn
5 vues210 diapositives
Final Year Presentation par
Final Year PresentationFinal Year Presentation
Final Year PresentationComsat Universal Islamabad Wah Campus
9 vues29 diapositives

Dernier(20)

Design_Discover_Develop_Campaign.pptx par ShivanshSeth6
Design_Discover_Develop_Campaign.pptxDesign_Discover_Develop_Campaign.pptx
Design_Discover_Develop_Campaign.pptx
ShivanshSeth632 vues
Effect of deep chemical mixing columns on properties of surrounding soft clay... par AltinKaradagli
Effect of deep chemical mixing columns on properties of surrounding soft clay...Effect of deep chemical mixing columns on properties of surrounding soft clay...
Effect of deep chemical mixing columns on properties of surrounding soft clay...
Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc... par csegroupvn
Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc...Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc...
Design of Structures and Foundations for Vibrating Machines, Arya-ONeill-Pinc...
csegroupvn5 vues
fakenews_DBDA_Mar23.pptx par deepmitra8
fakenews_DBDA_Mar23.pptxfakenews_DBDA_Mar23.pptx
fakenews_DBDA_Mar23.pptx
deepmitra815 vues
MSA Website Slideshow (16).pdf par msaucla
MSA Website Slideshow (16).pdfMSA Website Slideshow (16).pdf
MSA Website Slideshow (16).pdf
msaucla76 vues
Update 42 models(Diode/General ) in SPICE PARK(DEC2023) par Tsuyoshi Horigome
Update 42 models(Diode/General ) in SPICE PARK(DEC2023)Update 42 models(Diode/General ) in SPICE PARK(DEC2023)
Update 42 models(Diode/General ) in SPICE PARK(DEC2023)
GDSC Mikroskil Members Onboarding 2023.pdf par gdscmikroskil
GDSC Mikroskil Members Onboarding 2023.pdfGDSC Mikroskil Members Onboarding 2023.pdf
GDSC Mikroskil Members Onboarding 2023.pdf
gdscmikroskil53 vues
SUMIT SQL PROJECT SUPERSTORE 1.pptx par Sumit Jadhav
SUMIT SQL PROJECT SUPERSTORE 1.pptxSUMIT SQL PROJECT SUPERSTORE 1.pptx
SUMIT SQL PROJECT SUPERSTORE 1.pptx
Sumit Jadhav 15 vues

Software Evolution and Software Configuration Management

  • 1. CS413 - Software Engineering Project Management Software Evolution and Software Configuration Management Dr. Mustafa Değerli Department of Computer Engineering, Bilkent University
  • 2. Chapter 9 – Software Evolution Chapter 9 Software Evolution 2 30/10/2014
  • 3. Software change ² Software change is inevitable § New requirements emerge when the software is used; § The business environment changes; § Errors must be repaired; § New computers and equipment is added to the system; § The performance or reliability of the system may have to be improved. ² A key problem for all organizations is implementing and managing change to their existing software systems. Chapter 9 Software Evolution 3 30/10/2014
  • 4. Importance of evolution ² Organisations have huge investments in their software systems - they are critical business assets. ² To maintain the value of these assets to the business, they must be changed and updated. ² The majority of the software budget in large companies is devoted to changing and evolving existing software rather than developing new software. Chapter 9 Software Evolution 4 30/10/2014
  • 5. A spiral model of development and evolution Specification Implemention Validation Operation Start Release 1 Release 2 Release 3 etc. Chapter 9 Software Evolution 5 30/10/2014
  • 6. Evolution and servicing Chapter 9 Software Evolution 6 Software development Software evolution Software servicing Software retirement Time 30/10/2014
  • 7. Evolution and servicing ² Evolution § The stage in a software system’s life cycle where it is in operational use and is evolving as new requirements are proposed and implemented in the system. ² Servicing § At this stage, the software remains useful but the only changes made are those required to keep it operational i.e. bug fixes and changes to reflect changes in the software’s environment. No new functionality is added. ² Phase-out § The software may still be used but no further changes are made to it. Chapter 9 Software Evolution 7 30/10/2014
  • 8. Evolution processes ² Software evolution processes depend on § The type of software being maintained; § The development processes used; § The skills and experience of the people involved. ² Proposals for change are the driver for system evolution. § Should be linked with components that are affected by the change, thus allowing the cost and impact of the change to be estimated. ² Change identification and evolution continues throughout the system lifetime. Chapter 9 Software Evolution 8 30/10/2014
  • 9. Change identification and evolution processes Change proposals New system Change identification process Software evolution process Chapter 9 Software Evolution 9 30/10/2014
  • 10. The software evolution process Chapter 9 Software Evolution 10 Release planning Change implementation System release Impact analysis Change requests Platform adaptation System enhancement Fault repair 30/10/2014
  • 12. The emergency repair process Modify source code Deliver modified system Analyze source code Change requests Chapter 9 Software Evolution 12 30/10/2014
  • 13. Agile methods and evolution ² Agile methods are based on incremental development so the transition from development to evolution is a seamless one. § Evolution is simply a continuation of the development process based on frequent system releases. ² Automated regression testing is particularly valuable when changes are made to a system. ² Changes may be expressed as additional user stories. Chapter 9 Software Evolution 13 30/10/2014
  • 14. Legacy systems ² Legacy systems are older systems that rely on languages and technology that are no longer used for new systems development. ² Legacy software may be dependent on older hardware, such as mainframe computers and may have associated legacy processes and procedures. ² Legacy systems are not just software systems but are broader socio-technical systems that include hardware, software, libraries and other supporting software and business processes. Chapter 9 Software Evolution 14 30/10/2014
  • 15. ‘Bad smells’ in program code ² Duplicate code § The same or very similar code may be included at different places in a program. This can be removed and implemented as a single method or function that is called as required. ² Long methods § If a method is too long, it should be redesigned as a number of shorter methods. ² Switch (case) statements § These often involve duplication, where the switch depends on the type of a value. The switch statements may be scattered around a program. In object-oriented languages, you can often use polymorphism to achieve the same thing. Chapter 9 Software Evolution 15 30/10/2014
  • 16. ‘Bad smells’ in program code ² Data clumping § Data clumps occur when the same group of data items (fields in classes, parameters in methods) re-occur in several places in a program. These can often be replaced with an object that encapsulates all of the data. ² Speculative generality § This occurs when developers include generality in a program in case it is required in the future. This can often simply be removed. Chapter 9 Software Evolution 16 30/10/2014
  • 17. Key points ² Software development and evolution can be thought of as an integrated, iterative process that can be represented using a spiral model. ² For custom systems, the costs of software maintenance usually exceed the software development costs. ² The process of software evolution is driven by requests for changes and includes change impact analysis, release planning and change implementation. ² Legacy systems are older software systems, developed using obsolete software and hardware technologies, that remain useful for a business. Chapter 9 Software Evolution 17 30/10/2014
  • 18. Key points ² It is often cheaper and less risky to maintain a legacy system than to develop a replacement system using modern technology. ² The business value of a legacy system and the quality of the application should be assessed to help decide if a system should be replaced, transformed or maintained. ² There are 3 types of software maintenance, namely bug fixing, modifying software to work in a new environment, and implementing new or changed requirements. Chapter 9 Software Evolution 18 30/10/2014
  • 19. Key points ² Software re-engineering is concerned with re-structuring and re-documenting software to make it easier to understand and change. ² Refactoring, making program changes that preserve functionality, is a form of preventative maintenance. Chapter 9 Software Evolution 19 30/10/2014
  • 20. Chapter 25 – Configuration Management Chapter 25 Configuration management 20 11/12/2014
  • 21. Configuration management ² Software systems are constantly changing during development and use. ² Configuration management (CM) is concerned with the policies, processes and tools for managing changing software systems. ² You need CM because it is easy to lose track of what changes and component versions have been incorporated into each system version. ² CM is essential for team projects to control changes made by different developers Chapter 25 Configuration management 21 11/12/2014
  • 22. CM activities ² Version management § Keeping track of the multiple versions of system components and ensuring that changes made to components by different developers do not interfere with each other. ² System building § The process of assembling program components, data and libraries, then compiling these to create an executable system. ² Change management § Keeping track of requests for changes to the software from customers and developers, working out the costs and impact of changes, and deciding the changes should be implemented. ² Release management § Preparing software for external release and keeping track of the system versions that have been released for customer use. Chapter 25 Configuration management 22 11/12/2014
  • 23. Agile development and CM ² Agile development, where components and systems are changed several times per day, is impossible without using CM tools. ² The definitive versions of components are held in a shared project repository and developers copy these into their own workspace. ² They make changes to the code then use system building tools to create a new system on their own computer for testing. Once they are happy with the changes made, they return the modified components to the project repository. 11/12/2014 Chapter 25 Configuration management 23
  • 24. Multi-version systems ² For large systems, there is never just one ‘working’ version of a system. ² There are always several versions of the system at different stages of development. ² There may be several teams involved in the development of different system versions. 11/12/2014 Chapter 25 Configuration management 24
  • 25. CM terminology Term Explanation Baseline A baseline is a collection of component versions that make up a system. Baselines are controlled, which means that the versions of the components making up the system cannot be changed. This means that it is always possible to recreate a baseline from its constituent components. Branching The creation of a new codeline from a version in an existing codeline. The new codeline and the existing codeline may then develop independently. Codeline A codeline is a set of versions of a software component and other configuration items on which that component depends. Configuration (version) control The process of ensuring that versions of systems and components are recorded and maintained so that changes are managed and all versions of components are identified and stored for the lifetime of the system. Configuration item or software configuration item (SCI) Anything associated with a software project (design, code, test data, document, etc.) that has been placed under configuration control. There are often different versions of a configuration item. Configuration items have a unique name. Mainline A sequence of baselines representing different versions of a system. Chapter 25 Configuration management 25 11/12/2014
  • 26. CM terminology Term Explanation Merging The creation of a new version of a software component by merging separate versions in different codelines. These codelines may have been created by a previous branch of one of the codelines involved. Release A version of a system that has been released to customers (or other users in an organization) for use. Repository A shared database of versions of software components and meta- information about changes to these components. System building The creation of an executable system version by compiling and linking the appropriate versions of the components and libraries making up the system. Version An instance of a configuration item that differs, in some way, from other instances of that item. Versions always have a unique identifier. Workspace A private work area where software can be modified without affecting other developers who may be using or modifying that software. Chapter 25 Configuration management 26 11/12/2014
  • 27. Change management ² Organizational needs and requirements change during the lifetime of a system, bugs have to be repaired and systems have to adapt to changes in their environment. ² Change management is intended to ensure that system evolution is a managed process and that priority is given to the most urgent and cost-effective changes. ² The change management process is concerned with analyzing the costs and benefits of proposed changes, approving those changes that are worthwhile and tracking which components in the system have been changed. Chapter 25 Configuration management 27 11/12/2014
  • 28. The change management process Chapter 25 Configuration management 28 11/12/2014 Change requests Submit CR Check CR Close CR Implementation analysis Cost/impact analysis Assess CRs Select CRs Modify software Test software Close CR Close CRs Valid Invalid Pass Fail Customer Customer support Development Product development/CCB Register CR
  • 29. Factors in change analysis ² The consequences of not making the change ² The benefits of the change ² The number of users affected by the change ² The costs of making the change ² The product release cycle Chapter 25 Configuration management 29 11/12/2014
  • 30. Change management and agile methods ² In some agile methods, customers are directly involved in change management. ² The propose a change to the requirements and work with the team to assess its impact and decide whether the change should take priority over the features planned for the next increment of the system. ² Changes to improve the software improvement are decided by the programmers working on the system. ² Refactoring, where the software is continually improved, is not seen as an overhead but as a necessary part of the development process. Chapter 25 Configuration management 30 11/12/2014
  • 31. Key points ² Configuration management is the management of an evolving software system. When maintaining a system, a CM team is put in place to ensure that changes are incorporated into the system in a controlled way and that records are maintained with details of the changes that have been implemented. ² The main configuration management processes are concerned with version management, system building, change management, and release management. ² Version management involves keeping track of the different versions of software components as changes are made to them. Chapter 25 Configuration management 31 11/12/2014
  • 32. Key points ² System building is the process of assembling system components into an executable program to run on a target computer system. ² Software should be frequently rebuilt and tested immediately after a new version has been built. This makes it easier to detect bugs and problems that have been introduced since the last build. ² Change management involves assessing proposals for changes from system customers and other stakeholders and deciding if it is cost-effective to implement these in a new version of a system. ² System releases include executable code, data files, configuration files and documentation. Release management involves making decisions on system release dates, preparing all information for distribution and documenting each system release. Chapter 25 Configuration management 32 11/12/2014
  • 33. Software Engineering Project Management Reference • Software Engineering, 10th Edition, Ian Sommerville. Software Evolution and Software Configuration Management
  • 34. CS413 - Software Engineering Project Management Software Evolution and Software Configuration Management Dr. Mustafa Değerli Department of Computer Engineering, Bilkent University