Top Banner
Software Evolution and Configuration Management Casper Lassenius 26.2.2013
58

Software Evolution and Configuration Management

Oct 25, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software Evolution and Configuration Management

Software Evolution and Configuration Management

Casper Lassenius

26.2.2013

Page 2: Software Evolution and Configuration Management

Topics covered

² Evolution processes §  Change processes for software systems

² Program evolution dynamics §  Understanding software evolution

² Software maintenance §  Making changes to operational software systems

² Legacy system management §  Making decisions about software change

2

Chapter 9 Software evolution

Page 3: Software Evolution and Configuration Management

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.

3

Chapter 9 Software evolution

Page 4: Software Evolution and Configuration Management

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.

4

Chapter 9 Software evolution

Page 5: Software Evolution and Configuration Management

Change identification and evolution processes

Change proposalsNew system

Change identificationprocess

Software evolutionprocess

5

Chapter 9 Software evolution

Page 6: Software Evolution and Configuration Management

The software evolution process

Releaseplanning

Changeimplementation

Systemrelease

Impactanalysis

Changerequests

Platformadaptation

SystemenhancementFault repair

6

Chapter 9 Software evolution

Page 7: Software Evolution and Configuration Management

Change implementation

Requirementsupdating

Softwaredevelopment

Requirementsanalysis

Proposedchanges

7

Chapter 9 Software evolution

Page 8: Software Evolution and Configuration Management

Urgent change requests

² Urgent changes may have to be implemented without going through all stages of the software engineering process §  If a serious system fault has to be repaired to allow normal

operation to continue; §  If changes to the system’s environment (e.g. an OS upgrade) have

unexpected effects; §  If there are business changes that require a very rapid response

(e.g. the release of a competing product).

8

Chapter 9 Software evolution

Page 9: Software Evolution and Configuration Management

The emergency repair process

Modifysource code

Deliver modifiedsystem

Analyzesource code

Changerequests

9

Chapter 9 Software evolution

Page 10: Software Evolution and Configuration Management

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.

10

Chapter 9 Software evolution

Page 11: Software Evolution and Configuration Management

Handover problems

² Where the development team have used an agile approach but the evolution team is unfamiliar with agile methods and prefer a plan-based approach. §  The evolution team may expect detailed documentation to support

evolution and this is not produced in agile processes.

² Where a plan-based approach has been used for development but the evolution team prefer to use agile methods. §  The evolution team may have to start from scratch developing

automated tests and the code in the system may not have been refactored and simplified as is expected in agile development.

11

Chapter 9 Software evolution

Page 12: Software Evolution and Configuration Management

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.

12

Chapter 9 Software evolution

Page 13: Software Evolution and Configuration Management

² Modifying a program after it has been put into use.

² The term is mostly used for changing custom software. Generic software products are said to evolve to create new versions.

² Maintenance does not normally involve major changes to the system’s architecture.

² Changes are implemented by modifying existing components and adding new components to the system.

Software maintenance

13

Chapter 9 Software evolution

Page 14: Software Evolution and Configuration Management

² Maintenance to repair software faults §  Changing a system to correct deficiencies in the way meets its

requirements.

² Maintenance to adapt software to a different operating environment §  Changing a system so that it operates in a different environment

(computer, OS, etc.) from its initial implementation.

² Maintenance to add to or modify the system’s functionality §  Modifying the system to satisfy new requirements.

Types of maintenance

14

Chapter 9 Software evolution

Page 15: Software Evolution and Configuration Management

Figure 9.8 Maintenance effort distribution

Functionalityaddition or

modification(65%)

Fault repair(17%)

Environmentaladaptation

(18%)

15

Chapter 9 Software evolution

Page 16: Software Evolution and Configuration Management

² Usually greater than development costs (2* to 100* depending on the application).

² Affected by both technical and non-technical factors.

²  Increases as software is maintained. Maintenance corrupts the software structure so makes further maintenance more difficult.

² Ageing software can have high support costs (e.g. old languages, compilers etc.).

Maintenance costs

16

Chapter 9 Software evolution

Page 17: Software Evolution and Configuration Management

System re-engineering

² Re-structuring or re-writing part or all of a legacy system without changing its functionality.

² Applicable where some but not all sub-systems of a larger system require frequent maintenance.

² Re-engineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented.

17

Chapter 9 Software evolution

Page 18: Software Evolution and Configuration Management

Advantages of reengineering

² Reduced risk §  There is a high risk in new software development. There may be

development problems, staffing problems and specification problems.

² Reduced cost §  The cost of re-engineering is often significantly less than the costs

of developing new software.

18

Chapter 9 Software evolution

Page 19: Software Evolution and Configuration Management

The reengineering process

Reverseengineering

Programdocumentation

Datare-engineering

Original data

Programstructure

improvement

Programmodularization

Restructuredprogram

Re-engineereddata

Re-engineeredprogram

Originalprogram

Source codetranslation

19

Chapter 9 Software evolution

Page 20: Software Evolution and Configuration Management

Figure 9.12 Reengineering approaches

Automated restructuringwith manual changes

Automated sourcecode conversion

Restructuring plusarchitectural changes

Automated programrestructuring

Program and datarestructuring

Increased cost

20

Chapter 9 Software evolution

Page 21: Software Evolution and Configuration Management

Preventative maintenance by refactoring

² Refactoring is the process of making improvements to a program to slow down degradation through change.

² You can think of refactoring as ‘preventative maintenance’ that reduces the problems of future change.

² Refactoring involves modifying a program to improve its structure, reduce its complexity or make it easier to understand.

² When you refactor a program, you should not add functionality but rather concentrate on program improvement.

21

Chapter 9 Software evolution

Page 22: Software Evolution and Configuration Management

Refactoring and reengineering

² Re-engineering takes place after a system has been maintained for some time and maintenance costs are increasing. You use automated tools to process and re-engineer a legacy system to create a new system that is more maintainable.

² Refactoring is a continuous process of improvement throughout the development and evolution process. It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system.

22

Chapter 9 Software evolution

Page 23: Software Evolution and Configuration Management

‘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.

23

Chapter 9 Software evolution

Page 24: Software Evolution and Configuration Management

Legacy system management

² Organisations that rely on legacy systems must choose a strategy for evolving these systems §  Scrap the system completely and modify business processes so

that it is no longer required; §  Continue maintaining the system; §  Transform the system by re-engineering to improve its

maintainability; §  Replace the system with a new system.

² The strategy chosen should depend on the system quality and its business value.

24

Chapter 9 Software evolution

Page 25: Software Evolution and Configuration Management

Figure 9.13 An example of a legacy system assessment

12

3 45

67

89

10

System quality

Busi

ness

val

ueHigh business valueLow quality High business value

High quality

Low business valueLow quality

Low business valueHigh quality

25

Chapter 9 Software evolution

Page 26: Software Evolution and Configuration Management

Key points ² There are 3 types of software maintenance, namely bug

fixing, modifying software to work in a new environment, and implementing new or changed requirements.

² 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.

² 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.

26

Chapter 9 Software evolution

Page 27: Software Evolution and Configuration Management

Configuration Management

² Change management

² Version management

² System building

² Release management

27

Chapter 25 Configuration management

Page 28: Software Evolution and Configuration Management

Configuration management ² Because software changes frequently, systems, can be

thought of as a set of versions, each of which has to be maintained and managed.

² Versions implement proposals for change, corrections of faults, and adaptations for different hardware and operating systems.

² 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.

28

Chapter 25 Configuration management

Page 29: Software Evolution and Configuration Management

CM activities ²  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.

²  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.

²  Release management §  Preparing software for external release and keeping track of the system

versions that have been released for customer use.

29

Chapter 25 Configuration management

Page 30: Software Evolution and Configuration Management

Configuration management activities

Componentversions

Releasemanagement

Changeproposals

Systemreleases

Changemanagement

Systemversions

Versionmanagement

Systembuilding

30

Chapter 25 Configuration management

Page 31: Software Evolution and Configuration Management

CM terminology

Term Explanation

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.

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

Version An instance of a configuration item that differs, in some way, from other instances of that item. Versions always have a unique identifier, which is often composed of the configuration item name plus a version number.

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 should always be possible to recreate a baseline from its constituent components.

Codeline A codeline is a set of versions of a software component and other configuration items on which that component depends.

31

Chapter 25 Configuration management

Page 32: Software Evolution and Configuration Management

CM terminology

Term Explanation

Mainline A sequence of baselines representing different versions of a system.

Release A version of a system that has been released to customers (or other users in an organization) for use.

Workspace A private work area where software can be modified without affecting other developers who may be using or modifying that software.

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.

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.

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.

32

Chapter 25 Configuration management

Page 33: Software Evolution and Configuration Management

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.

33

Chapter 25 Configuration management

Page 34: Software Evolution and Configuration Management

The change management process

Changerequests

SubmitCR

Check CR

Close CR

Implementationanalysis

Cost/impactanalysisAssess CRs

Select CRs Modifysoftware

Test software

Close CR

Close CRs

ValidInvalid

PassFail

CustomerCustomer support

Development

Product development/CCB

Register CR

34

Chapter 25 Configuration management

Page 35: Software Evolution and Configuration Management

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

35

Chapter 25 Configuration management

Page 36: Software Evolution and Configuration Management

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 36

Page 37: Software Evolution and Configuration Management

Version management

² Version management (VM) is the process of keeping track of different versions of software components or configuration items and the systems in which these components are used.

²  It also involves ensuring that changes made by different developers to these versions do not interfere with each other.

² Therefore version management can be thought of as the process of managing codelines and baselines.

37

Chapter 25 Configuration management

Page 38: Software Evolution and Configuration Management

Codelines and baselines

² A codeline is a sequence of versions of source code with later versions in the sequence derived from earlier versions.

² Codelines normally apply to components of systems so that there are different versions of each component.

²  A baseline is a definition of a specific system.

² The baseline therefore specifies the component versions that are included in the system plus a specification of the libraries used, configuration files, etc.

38

Chapter 25 Configuration management

Page 39: Software Evolution and Configuration Management

Codelines and baselines

A

L1 L2

A1.1

Ex1 Ex2

A1.2 A1.3

Codeline (A)

B B1.1 B1.2 B1.3

Codeline (B)

C C1.1 C1.2 C1.3

Codeline (C)

Libraries and external components

Baseline - V1

A B1.2 C1.1

L1 L2 Ex1

Baseline - V2

A1.3 B1.2 C1.2

L1 L2 Ex2

Mainline

39

Chapter 25 Configuration management

Page 40: Software Evolution and Configuration Management

Baselines

² Baselines may be specified using a configuration language, which allows you to define what components are included in a version of a particular system.

² Baselines are important because you often have to recreate a specific version of a complete system. §  For example, a product line may be instantiated so that there are

individual system versions for different customers. You may have to recreate the version delivered to a specific customer if, for example, that customer reports bugs in their system that have to be repaired.

40

Chapter 25 Configuration management

Page 41: Software Evolution and Configuration Management

Version management systems

² Version and release identification §  Managed versions are assigned identifiers when they are

submitted to the system.

² Storage management §  To reduce the storage space required by multiple versions of

components that differ only slightly, version management systems usually provide storage management facilities.

² Change history recording §  All of the changes made to the code of a system or component are

recorded and listed.

41

Chapter 25 Configuration management

Page 42: Software Evolution and Configuration Management

Version management systems

²  Independent development §  The version management system keeps track of components that

have been checked out for editing and ensures that changes made to a component by different developers do not interfere.

² Project support §  A version management system may support the development of

several projects, which share components.

42

Chapter 25 Configuration management

Page 43: Software Evolution and Configuration Management

Storage management using deltas

Version1.0

Version1.1

Version1.2

Version1.3

D1 D2 D3

Creation dateVersion sequence

Most recent

V1.3 sourcecode

Storage structure

43

Chapter 25 Configuration management

Page 44: Software Evolution and Configuration Management

Check-in and check-out from a version repository

A

C

B X

C

Y

A CB XZ

Y P

R

Q

Version management system

A1.1 C1.1B1.1

Alice Bob

Workspace (U1) Workspace (U2)

check_incheck_in check_out check_out

44

Chapter 25 Configuration management

Page 45: Software Evolution and Configuration Management

Codeline branches

² Rather than a linear sequence of versions that reflect changes to the component over time, there may be several independent sequences. §  This is normal in system development, where different developers

work independently on different versions of the source code and so change it in different ways.

² At some stage, it may be necessary to merge codeline branches to create a new version of a component that includes all changes that have been made. §  If the changes made involve different parts of the code, the

component versions may be merged automatically by combining the deltas that apply to the code.

45

Chapter 25 Configuration management

Page 46: Software Evolution and Configuration Management

Branching and merging

V1.0 V1.1 V1.2

V2.2 V2.3

V2.0

V2.1.1 V2.1.2

V2.1 V2.4

Codeline 1

Codeline 2

<branch>

<branch>

<merge>

Codeline 2.1

46

Chapter 25 Configuration management

Page 47: Software Evolution and Configuration Management

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 change management, version management, system building and release management.

²  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.

²  Version management involves keeping track of the different versions of software components as changes are made to them.

Chapter 25 Configuration management 47

Page 48: Software Evolution and Configuration Management

System building

² System building is the process of creating a complete, executable system by compiling and linking the system components, external libraries, configuration files, etc.

² System building tools and version management tools must communicate as the build process involves checking out component versions from the repository managed by the version management system.

² The configuration description used to identify a baseline is also used by the system building tool.

48

Chapter 25 Configuration management

Page 49: Software Evolution and Configuration Management

Development, build, and target platforms

Development system

Developmenttools

Private workspace

Build serverVersion

managementsystem

co

Version management and build server

Target system

Executable system

Target platform

Check-out(co)

Check-in

49

Chapter 25 Configuration management

Page 50: Software Evolution and Configuration Management

System building

Automatedbuild system

Sourcecode files

Data files

Libraries

Configurationfiles

Executabletests

Executabletarget system

Test resultsCompilersand tools

50

Chapter 25 Configuration management

Page 51: Software Evolution and Configuration Management

Build system functionality

² Build script generation

² Version management system integration

² Minimal re-compilation

² Executable system creation

² Test automation

² Reporting

² Documentation generation

51

Chapter 25 Configuration management

Page 52: Software Evolution and Configuration Management

Continuous integration

Check-outmainline

Build andtest system

Build andtest system

Makechanges

Check-in tobuild server

Build andtest system

Commitchanges to VM

Versionmanagement

system

Versionmanagement

systemBuild server

Privateworkspace

Tests fail

Tests OK

OK

Tests fail

52

Chapter 25 Configuration management

Page 53: Software Evolution and Configuration Management

Daily building

² The development organization sets a delivery time (say 2 p.m.) for system components. §  If developers have new versions of the components that they are

writing, they must deliver them by that time. §  A new version of the system is built from these components by

compiling and linking them to form a complete system. §  This system is then delivered to the testing team, which carries out

a set of predefined system tests §  Faults that are discovered during system testing are documented

and returned to the system developers. They repair these faults in a subsequent version of the component.

53

Chapter 25 Configuration management

Page 54: Software Evolution and Configuration Management

Release management

² A system release is a version of a software system that is distributed to customers.

² For mass market software, it is usually possible to identify two types of release: major releases which deliver significant new functionality, and minor releases, which repair bugs and fix customer problems that have been reported.

² For custom software or software product lines, releases of the system may have to be produced for each customer and individual customers may be running several different releases of the system at the same time.

54

Chapter 25 Configuration management

Page 55: Software Evolution and Configuration Management

Release tracking

²  In the event of a problem, it may be necessary to reproduce exactly the software that has been delivered to a particular customer.

² When a system release is produced, it must be documented to ensure that it can be re-created exactly in the future.

² This is particularly important for customized, long-lifetime embedded systems, such as those that control complex machines. §  Customers may use a single release of these systems for many

years and may require specific changes to a particular software system long after its original release date.

Chapter 25 Configuration management 55

Page 56: Software Evolution and Configuration Management

Release planning

² As well as the technical work involved in creating a release distribution, advertising and publicity material have to be prepared and marketing strategies put in place to convince customers to buy the new release of the system.

² Release timing §  If releases are too frequent or require hardware upgrades,

customers may not move to the new release, especially if they have to pay for it.

§  If system releases are too infrequent, market share may be lost as customers move to alternative systems.

Chapter 25 Configuration management 56

Page 57: Software Evolution and Configuration Management

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.

²  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 57

Page 58: Software Evolution and Configuration Management

Questions?