Software configuration management



Similar documents
Source Control Systems

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

Software Configuration Management. Context. Learning Objectives

SOFTWARE DEVELOPMENT BASICS SED

Continuous Integration. CSC 440: Software Engineering Slide #1

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

Software Configuration Management

Software Life Cycles and Configuration Management

Content. Development Tools 2(63)

Continuous Integration

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

Implementing Continuous Integration Testing Prepared by:

Theme 1 Software Processes. Software Configuration Management

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Introduction to Programming Tools. Anjana & Shankar September,2010

Version Uncontrolled! : How to Manage Your Version Control

Version Control Tools

Software Configuration Management and Continuous Integration

Version Control! Scenarios, Working with Git!

CS 2112 Lab: Version Control

Version Control with Subversion

Using Git for Project Management with µvision

Continuous Integration and Delivery at NSIDC

Introduction to Subversion

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

Configuration & Build Management

Git Branching for Continuous Delivery

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

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Software Engineering Process. Kevin Cathey

Software Configuration Management. Addendum zu Kapitel 13

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Annoyances with our current source control Can it get more comfortable? Git Appendix. Git vs Subversion. Andrey Kotlarski 13.XII.

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Version Control Systems

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Promotion Model. CVS SUITE QUICK GUIDE 2009 Build 3701 February March Hare Software Ltd

Surround SCM Best Practices

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

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Version Control. Version Control

SOE. managing change in system development projects: configuration management

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Version Control with. Ben Morgan

Git Basics. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 22

Source Code Control & Bugtracking

Mastering Continuous Integration with Jenkins

Introducing Xcode Source Control

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Introduction to Version Control

Continuous Integration (CI)

Version Control with Git. Dylan Nugent

Software Continuous Integration & Delivery

Administering Team Foundation Server 2013

Taking Subversion to a Higher Level. Branching/Merging Support. Component Management Support. And More

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

Git Basics. Christian Hanser. Institute for Applied Information Processing and Communications Graz University of Technology. 6.

Version Control for Computational Economists: An Introduction

Managing Source Code With Subversion

Data management on HPC platforms

Software infrastructure for Java development projects

Git. A Distributed Version Control System. Carlos García Campos carlosgc@gsyc.es

Effective Team Development Using Microsoft Visual Studio Team System

Delivering Quality Software with Continuous Integration

Revision control systems (RCS) and

Chapter 13 Configuration Management

GENiC. Deliverable D5.1 Development & Integration guidelines including integration environment & means. Dissemination Level: Public

Improving your Drupal Development workflow with Continuous Integration

Two Best Practices for Scientific Computing

Global Software Change Management for PVCS Version Manager

Version Control Tutorial using TortoiseSVN and. TortoiseGit

Version control with GIT

Version Control using Git and Github. Joseph Rivera

Continuous Integration & Automated Testing in a multisite.net/cloud Project

Zero-Touch Drupal Deployment

Source Control Guide: Git

Mobile Development with Git, Gerrit & Jenkins

Advanced Computing Tools for Applied Research Chapter 4. Version control

Meister Going Beyond Maven

Introduction to Git. Markus Kötter Notes. Leinelab Workshop July 28, 2015

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Chapter 13 Configuration Management

Version Control with Git. Kate Hedstrom ARSC, UAF

Integrated version control with Fossil SCM

Transcription:

Software Engineering Theory Software configuration management Lena Buffoni/ Kristian Sandahl Department of Computer and Information Science 2015-09-30

2 Maintenance Requirements System Design (Architecture, High-level Design) Validate Requirements, Verify Specification Verify System Design Acceptance Test (Release testing) System Testing (Integration testing of modules) Module Design (Program Design, Detailed Design) Verify Module Design Verify Implementation Module Testing (Integration testing of units) Implementation of Units (classes, procedures, functions) Unit testing Project Management, Software Quality Assurance (SQA), Supporting Tools, Education

3 What is configuration management? Configuration Item Identification Source code modules Test scripts Design documents Build systems SCM

4 What is configuration management? File A v.03 File C v.3.3 File B v0.1 Change File A v.03 File C v.3.4 File B v0.1 Change File A v.03 File C v.3.3 File B v0.11 Baseline - a "snap-shot" of configuration items. Known to work together. Normally reviews in some way. For example a release. How do we control changes?

5 What is configuration management? Configuration Item Identification Source code modules Test scripts Design documents Build systems CHANGE REQUEST Project: Classification: Priority: Date: Change Description: SCM Change Control Board (CCB) Make change decisions. Only large changes (e.g. new major requirements) Configuration control Only authorized people may make changes Larger changes - change requests

6 What is configuration management? Configuration Item Identification Source code modules Test scripts Design documents Build systems Auditing Ensure that the items are complete and consistent. Make sure that the configuration is tested and meets requirements. SCM Configuration control Larger changes - change requests Status accounting Document and report changes to those involved.

SCM tools 7 Change Management Workflow systems Define processes for change requests Change report system Bug-tracking New features Change request (e.g free alternatives: Bugzilla, Trac) What is a bug / what is a feature? Tool examples: Clear Case, Visual Source safe Perforce, CVS Subversion Git Revision Control Systems

8 Zip and E-mail 6. Sends a zip file with code Nahid BAD IDEA 1.Creates GUI module 5. Updates GUI module 8. Sends a zip file with code Daniel 7. Solves a bug in the DBMS Anna 2. Sends a zip file with code 4. Sends a zip file with code Mohamed C RELEASE!! 3. Creates DBMS module

File Server Sharing 9 5. Mohamed uploads the file 4. Anna uploads the file FILE A RG File Server 1. Anna and Mohamed copy file A from server ALSO, A BAD IDEA 2. Anna edits the file FILE A GR 6. Both synchronize, i.e. they copy the files from server FILE A G 3. Mohamed edits the file (independently) Anna Mohamed Anna s change is lost in space

SCM: Lock-Modify-Unlock 10 4. Anna uploads the file, and unlocks 2. Anna locks the file, only she can modify FILE A R SCM Repository 1. Anna and Mohamed copy file A from server A BETTER IDEA, but Rigid, developers cannot work on the same file False sense of security. Can modify two dependent files Ex. Microsoft Visual SourceSafe 5. Mohamed locks the file 3. Anna edits the file FILE A R FILE A G 6. Mohamed edits the file Anna Mohamed

SCM: Centralized modify-merge 11 YR FILE A SCM Repository Pretty good Example CVS, Perforce, Subversion 8. Mohamed commits his change. 4. Anna commits the changes to the repository 2. Anna edits the file FILE A Anna R 1. Anna and Mohamed copy file A from server. This is called Check-out. 7. Mohamed resolves the conflict. FILE A 5. Mohamed makes an update (also called sync) GY Mohamed 3. Mohamed edits the file 6. The system tries to merge the files, but we have a conflict.

SCM: Decentralized modify-merge 12 Pretty good 8. Anna pulls (fetches and merges) down the new changes to her repository. FILE A Public Repository 1. Anna and Mohamed clone the public repository to local repositories. For example Git (quite new, used by e.g. Linux kernel) 5. Mohamed pushes the changes to the public repository. 2. Anna changes and commits to the local repository FILE A Anna 3. Anna sends a patch to Mohammed using email. FILE A Mohamed 4. Mohamed merges, and makes some more changes and commits (locally).

13 History Tree Some concepts Trunk Development Branch Merge and Commit Release branch, tags, baseline

14 History Tree Test Development Branch(s) v1.1.24.1 v1.1.24.2 Commit Merge Trunk v1.0.23 v1.0.24 v1.0.25 v1.0.26 Release Branch(s) or tags v1.2.24

Integration Problem 15 Developer Developer Developer Independent work during weeks How do we integrate? How do we know that integration is correct? Continuous integration Integrate frequently ( Daily ) Important practices: Automated build Automated Test Use of SCM systems

Continuous Integration - Workflow 16 1.Checkout 2. Coding and new tests SCM Repository 8. Update 4. Update 7. Commit Build and Integration Server 9. Automatic Build, Test, Integration 10. Report Web, email etc. 3. Automated build and test locally 5. Resolve conflicts 6. Automated build and test locally

Automation 17 Automated Build Update from SCM (if server) Compile code (make, Maven etc.) Generate documentation (e.g. Doxygen) Daily build, SCM triggered etc. Automated Test Run test suite (Unit tests) Automated system tests Performs automatic regression testing Smoke testing can be used Automated Integration (post processes) Typically just the integration server Create deployment packages (msi, RPM etc.) Automated tags in SCM Automated version numbering

18 Commit and build strategy On commit builds vs periodic builds Push vs. pull requests, code review Test the changes before you commit to the trunk Commit messages

19 Guidelines Automation means that a build must be easy to trigger Continuous integration goes hand in hand with version control Be careful of what you put in the trunk

20 CI tools : Hudson/Jenkins support for version control build/test software projects continuously monitor externally run jobs customizable and extensible

21 A tool does not continuous integration make! Continuous integration is a process Commit regularly Define a commit strategy Keep the trunk stable Maintain the test-suite

The end. Thank you! Questions? www.liu.se www.liu.se