Software Configuration Management



Similar documents
CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Software configuration management

Continuous Integration Just another buzz word?

SOE. managing change in system development projects: configuration management

Agile SPL-SCM: Agile Software Product Line Configuration and Release Management

Version Control Using Subversion. 12 May 2013 OSU CSE 1

SOFTWARE DEVELOPMENT BASICS SED

Software Configuration Management. Context. Learning Objectives

TIME. Programming in the large. Lecture 22: Configuration Management. Agenda for today. About your Future. CM: The short version. CM: The long version

Configuration & Build Management

Software Configuration Management. Visiting Lecture Tero Kojo

Chapter 13 Configuration Management

Software Configuration Management

Software Configuration Management Best Practices for Continuous Integration

Page 1. Outline of the Lecture. What is Software Configuration Management? Why Software Configuration Management?

Automatic promotion and versioning with Oracle Data Integrator 12c

Continuous Integration (CI)

Kevin Lee Technical Consultant As part of a normal software build and release process

Software Configuration Management. Addendum zu Kapitel 13

Developing Software in a Private workspace PM PMS

Chapter 13 Configuration Management

Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

What Are Software Developers Facing?

Theme 1 Software Processes. Software Configuration Management

Software Configuration Management Patterns

Continuous Integration. CSC 440: Software Engineering Slide #1

Surround SCM Best Practices

Software Configuration Management. Slides derived from Dr. Sara Stoecklin s notes and various web sources.

Introduction to Programming Tools. Anjana & Shankar September,2010

Software Configuration Management (SCM)

Agile SPL SCM Agile Software Product Line Configuration and Release Management

What Is Software Configuration Management?

Software Configuration Management Plan

Software Configuration Management.

Using Subversion in Computer Science

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

Source Control Systems

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

WHAT IS CHANGE MANAGEMENT

JOURNAL OF OBJECT TECHNOLOGY

Version Control! Scenarios, Working with Git!

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Implementing Continuous Integration Testing Prepared by:

Chapter 5. Choose the answer that mostly suits each of the sentences given:

An Agile Approach to Release Management

HP SAP. Where Development, Test and Operations meet. Application Lifecycle Management

Continuous integration End of the big bang integration era

Software Engineering Process. Kevin Cathey

Version Control Tools

Configuration Management Patterns

Testing Best Practices

Two case studies of Open Source Software Development: Apache and Mozilla

Project Management Tools

Mastering Continuous Integration with Jenkins

Test Plan Template: (Name of the Product) Prepared by: (Names of Preparers) (Date) TABLE OF CONTENTS

Software Development Processes For Embedded Development A checklist for efficient development using open-source tools

Content. Development Tools 2(63)

Successfully managing geographically distributed development

IBM Rational ClearCase, Version 8.0

How To Develop Software

Delivering Quality Software with Continuous Integration

Software Construction

IBM Rational Software

Version Control with Subversion

Revision control systems (RCS) and

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

Automated Testing Best Practices

Continuous Delivery. Alejandro Ruiz

Appendix 2-A. Application and System Development Requirements

Latest Trends in Testing. Ajay K Chhokra

Ensure Merge Accuracy in Continuous Integration Development Environments

Software Continuous Integration & Delivery

Introduction to Automated Testing

High-Level Software Version Management Best Practices Abstract

CS108, Stanford Handout #33. CVS in Eclipse

Efficient Automated Build and Deployment Framework with Parallel Process

Continuous Integration on System z

Java Software Quality Tools and techniques

CHAPTER 7 Software Configuration Management

A WHITE PAPER BY ASTORIA SOFTWARE

Version Control Your Jenkins Jobs with Jenkins Job Builder

CONTINUOUS INTEGRATION

One solution for all your Source Configuration Management Needs

Agile Power Tools. Author: Damon Poole, Chief Technology Officer

Change Management. Why Change Management? CHAPTER

Smarter Balanced Assessment Consortium. Recommendation

Transcription:

Software Configuration Management 1 Software Configuration Management Four aspects Version control Automated build Change control Release Supported by tools Requires expertise and oversight More important on large projects 2 1

Software products A product is a set of components/documents Code Test suites Operation manuals (administrators, end-users) Requirements Specifications Design documentation Plans/schedules 3 Software products Need to keep track of how you created a product Rules for building the executable Version of code Version of libraries The compiler The operating system An SCM tool should be able to keep track of all of these (and more) 4 2

SCM Keep track of how software changes over time and be able to reproduce any version of the software Control how software changes -- make sure needed changes have been made and no improper changes have been made 5 Many versions Sequence of versions during development Prototypes, daily (weekly) builds Alpha/beta release Final release Different released versions Linux - many versions 5ESS - tailored for each customer 6 3

Merging versions During development, each subgroup works independently. How do they merge work? Customer using version 6.3.4 reports a bug that is then fixed. How do we apply this fix to our 27 later versions still being used? 7 Non-code resources Test suite for version 6.4.3 does not work for other versions. It is almost like the test suites for 6.4.2 and 6.4.4. Manual for version 6.4.3 is slightly different than for other versions. Design Use cases... 8 4

Change request We decided to implement a change. Has it been implemented fully? (tests, code, manuals, documentation) What parts of the system were affected by that change? I look at a program/document Why is it like this? When was it written, and by whom? Tracing both ways: change control and version control linked through IDs 9 Versions release 3.1 3.2 3.3 3.2.1.2 mainline branch 10 5

Branches Traditional advice for old version control: Avoid (long-lived) branches if possible Modern version control (Git, Hg ) Encourage use of (short-lived) branches Good reasons to branch: Fixing bugs in customer version Experimental version Political fights 11 Bad reasons to branch Support different hardware platforms Make subclasses / use conditional compilation / make portability library Support different customers Separate unchanged code from changed code Unchanged code goes in a library Make subclasses / use conditional compilation for changed code 12 6

Normal Changes Programmer checks out code Changes made locally Changes tested locally Programmer checks in code 13 Simultaneous Changes How do we handle these? 14 7

Simultaneous Changes Pessimistic view: Don t Allow use locking. Manual Merging 15 Simultaneous Changes Optimistic view: Automatic Merging Often works Sometimes cannot be done due to conflicts Sometimes appears to work 16 8

SCM according to the SEI A discipline for controlling the evolution of software systems Has many aspects Identification Control Status accounting Audit and review 17 Identification What are the configuration items? (I.e., what is under configuration management?) How do you name them? What is the relationship between items? Versions Baseline Release 18 9

Versions V3.1 V3.1.1 V3.1.2 V3 V3.2 V3.3 V3.3.1 V3.3.2 19 Baselines A baseline is a software configuration item that has been reviewed and agreed upon, and that can be changed only through formal change control procedures. Intermediate versions that haven t been reviewed are SCIs but not baselines. 20 10

Releases A release is a software configuration item that the developers give to other people Releases should be baselines 21 Control Who is allowed to read/write configuration items? How do you know if changes are allowed/correct? 22 11

Status accounting Reporting the status of components and change requests Which components have changed this week? Which components did Bob change? Which components have the most changes? Which change requests are more than a month old and of priority 3 or greater? 23 Audit and review How do we know that the build script is OK? How do we know that only authorized people can change the database interface? Can we actually run the version from July 3, 2015? 24 12

Change control Change request/engineering change order New feature Bug report Change control authority - decides which changes should be carried out Code changes should be linked to change requests 25 Bugzilla Originally developed for Mozilla http://bugzilla.mozilla.org https://developer.mozilla.org/en-us/docs/mozilla/qa/bug_writing_guidelines Bugzilla is a database for bugs. It lets people report bugs and assign these bugs to the appropriate developers. Developers can use Bugzilla to keep a to-do list as well as to prioritize, schedule and track dependencies. 26 13

Bugzilla Each bug report has ID, name of reporter, description of bug, component, developer, dependency, attachments Status: unconfirmed, new, resolved, verified, closed Severity: blocker, critical, major, normal, minor, trivial, enhancement 27 FIXED Resolving a bug Bug Statuses INVALID: not a bug, or not a bug in Mozilla WONTFIX : a bug that will never be fixed LATER: a bug that won t be fixed now REMIND: maybe now, maybe later DUPLICATE WORKSFORME 28 14

Topics to ponder What are the dynamics of various groups using a change control system? Developers Testers Users Managers What about security issues in Bugzilla or other change control systems? 29 Build management How do you build the product? Which compiler? Which flags? Which version? Which source files? Which libraries should be linked? Should build software be managed be placed under version control? 30 15

Building Building should be automatic Test build procedure - build regularly Need a tool (or tools) make - original Unix tool, 30 years old ant - Java based, uses XML (used by JPF) Hundreds more 31 Build tool Knows components of system How to compile How to make final executable How to make debugging version How to delete temporary files How to test How to make manual 32 16

Ant snippet <target name="compile-jpf" depends="init, compile-app" description="compile JPF core classes"> <javac srcdir="${src.dir}" destdir="${build.jpf.dir}" debug="${debug}" source="1.5" deprecation="${deprecation}"> <classpath> <path refid="lib.path"/> <pathelement path="${build.app.dir}"/> </classpath> </javac> <copy file="default.properties" todir="${build.jpf.dir}/gov/nasa/jpf"/> </target> 33 Daily build and smoke tests Ways to break the build process Check in bad code Forget to include file in makefile Move a library Every day (night?) build the latest version of product and run simple test suite 34 17

To make SCM work requires Bureaucracy Discipline/training Tools Version control cvs, subversion, git Change control bugzilla, mantis Building make, ant 35 SCM Manager Complex tools need experts to manage them An SCM expert will Maintain tools Maintain configuration files, make branches Do the merging Create policies on version control, change control 36 18

Alternatives Toolsmith supports SCM tools Architect defines configuration files Developers merge their code back into mainline Managers and technical leads define policies for version control and change control 37 Software Configuration Management Patterns: Effective Teamwork, Practical Integration -- by Steve Berczuk w/ Brad Appleton 38 19

Various tests Smoke test Ensures that the system still runs after you make a change Unit test Ensures that a module is not broken after you make a change Regression test Ensures that existing code doesn t get worse as you make other improvements 39 Developer issues Private Workspace Prevent integration issues from distracting you, and from your changes causing others problems, by developing in a Private Workspace. Private System Build Avoid breaking the build by doing a Private System Build before committing changes to the Repository 40 20

Codeline Policy Active Development Line Release Line Holds bug fixes for a release Private Versions Task Branch Hide a disruptive task from the rest of the team Release Prep Codeline 41 Summary of SCM Four aspects Version control Change control Building Releasing Supported by tools Requires expertise and oversight More important on large projects 42 21