Project Build Process. Abhijit Bhosale M.Tech (IT) School of Information Technology, IIT Kharagpur

Similar documents
Laboratorio di Programmazione. Prof. Marco Bertini

independent compilation and Make

Versioning. Terms. Configuration item (CI) Version Configuration Management aggregate Configuration Baseline

Programming in the large. Lecture 22: Configuration Management. Agenda for today. Bertrand Meyer. Bernd Schoeller

Revision Control. Software Engineering SS 2007

A Fast Review of C Essentials Part II

Outline. Configuration management. Main Phases MOTIVATION

CAKEDC GIT WORKFLOW. CakeDC Git Workflow is a project development and release work flow which provides a

Makefiles SE 2XA3. Term I, 2018/19

CVS Application. William Jiang

CS 390 Software Engineering Lecture 3 Configuration Management

Software Development. Hack, hack, hack, hack, hack. Sorta works. Main.c. COMP s1

Using CVS Repositories with SAS

2/8/18. Overview. Project Management. The First Law. What is Project Management? What Are These Changes? Software Configuration Management (SCM)

Project Management. Overview

Introduction to CVS. Sivan Toledo Tel-Aviv University

Construction: version control and system building

Software configuration management

Build. System building

Make. Dependency Graphs

Subversion Branching and Merging. Jan Skalický

Manage quality processes with Bugzilla

Team Support and Versioning with ClearCase and CVS in WebSphere Business Modeler V7

Makefile Brief Reference

Development tools: Version control, build tools, and integrated development environments 1

Systems Programming Advanced Software Development

CONFIGURATION MANAGEMENT PLAN FİZAN MACROHARD

Construction: version control and system building

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

CSC 2700: Scientific Computing

WinCvs Version 1.1. Users Guide. Don Harper

Revision Control. An Introduction Using Git 1/15

Working with CVS in Eclipse

Source Control. Comp-206 : Introduction to Software Systems Lecture 21. Alexandre Denault Computer Science McGill University Fall 2006

VSO. Configuration Management

Configuration. Monday, November 30, :28 AM. Configuration

Tools for SW Projects

Source Code Management

C/C++ Programming. Session 10

OpenEarth OpenEarthTools = Open source management of Data, Models and Tools for marine & coastal science & technology

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

Improved Database Development using SQL Compare

Software Development I

CSE 15L Winter Midterm :) Review

Continuous Integration / Continuous Testing

Service Lifecycle and Versioning SOA 2/2559

CS 261 Recitation 1 Compiling C on UNIX

Branches in Subversion, Debugging, scmbug

Software Project Management II

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Version Control Systems

Baselining Requirements Assets with Rational RequisitePro and Rational ClearCase. A Rational Software White Paper

Using CVS 1 of 18. Using CVS. C oncurrent V ersions System - Jeremy Mates

CS480. Compilers Eclipse, SVN, Makefile examples

Module 4: Advanced Development

6.170 Laboratory in Software Engineering Eclipse Reference for 6.170

COSC345 Software Engineering. Version Control

Chapter 3. Revision Control

Department of Computer Science College of Engineering Boise State University

Tools for software development:

CS314 Software Engineering Configuration Management

Understanding the Open Source Development Model. » The Linux Foundation. November 2011

How to version control like a pro: a roadmap to your reproducible & collaborative research

Global Administration April 24, :46:42 PM CEST

Introduction to version control. David Rey DREAM

[Software Development] Makefiles. Davide Balzarotti. Eurecom Sophia Antipolis, France

Revision Control II. - svn

Practical C Programming

CSE 374 Programming Concepts & Tools. Hal Perkins Winter 2012 Lecture 16 Version control and svn

Lab Objective. Lab Assignment. Downloads and Installation

CS631 - Advanced Programming in the UNIX Environment. UNIX development tools

Storing and Managing Code with CVS

Task-Oriented Solutions to Over 175 Common Problems. Covers. Eclipse 3.0. Eclipse CookbookTM. Steve Holzner

GNU Make 1. 1 material adapted from GNU Make by Richard Stallman

Introduction to Supercomputing

Developing a Meta Model for Release History Systems

Version Control. CSC207 Fall 2014

CPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management

Configuration Management

Version control with RCS and CVS An introduction. Markus Bjartveit Krüger

Microsoft Visual Source Safe (MVSS)

Draft: MLDesigner and LinCVS

Software Architecture

Make: a build automation tool

COSC345 Software Engineering. Make

GAP Tools Alexander Hulpke April 1999

Subversion Repository Layout

CVS for Moodle Developers

Categorizing Migrations

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

Using Oracle Designer 6i to Configuration Management Internet Platform Applications. An Oracle Technical White Paper October 2000

Computer Labs: Version Control with Subversion

INTERMEDIATE SOFTWARE DESIGN SPRING 2011 ACCESS SPECIFIER: SOURCE FILE

Tools for SW Projects

<Project Name> Configuration Management/Data Management Plan

From theory to practice: Standard tools Software carpentry, Part II. Pietro Berkes, Brandeis University

Make: a build automation tool 1/23

2 Compiling a C program

Git Like You Mean it. Alan Ott SCaLE 16x March 8-11, 2018

The make utility. Alark Joshi COMPSCI 253

Transcription:

Project Build Process Abhijit Bhosale M.Tech (IT) School of Information Technology, IIT Kharagpur

Objective Make utility Version Control systems Bug Tracking Systems Project build process

Configuration Management Configuration Management refers to a set of procedures for managing an evolving software system. It typically includes the following: Version control Support for automated system building Support for automated system testing/bug-tracking Support for multiple platforms Release management http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Make utility More the files longer it takes for recompilation Using scripts like shell scripts can also help to build big projects, but it will recompile each and every program Make recompiles only changed programs and their dependents

Simple Compilation $ cc file.c http://www.eng.hawaii.edu/tutor/make

Multiple files compilation $ cc green.c blue.c http://www.eng.hawaii.edu/tutor/make

Separate Compilation Compile green.o: cc -c green.c Compile blue.o: cc -c blue.c Link the parts together: cc green.o blue.o http://www.eng.hawaii.edu/tutor/make

Sample makefile target : source file(s) command (must be preceded by a tab) http://www.eng.hawaii.edu/tutor/make

Demo

Macros Macros OBJECTS = data.o main.o io.o project1: $(OBJECTS) cc $(OBJECTS) -o project1 Special Macros $@ The file name of the target. $< The name of the first dependency. $* The part of a filename which matched a suffix rule. $? The names of all the dependencies newer than the target separated by spaces. $^ The names of all the dependencies separated by spaces, but with duplicate names removed. $+ The names of all the dependencies separated by spaces with duplicate names included and in the same order as in the rule.

Advanced Makefiles Special dependencies target :: source1 command1 target :: source2 command2 Custom suffixes and rules.suffixes:.foo.bar.foo.bar: tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > $@.c.o: $(CC) $(CFLAGS) -c $<

Version Control System Multiple versions of software Each time you edit a program Versions within a development cycle Test release, Alpha release, Beta release and final release Variations for different platforms Different releases of product with additional features or bug fixes.

Why use version control? Multiple developers working on same code Access to older versions of files Change log Comparison between different versions Multiple versions at same time

Concepts : Repository Repository stores a complete copy of all the files and directories which are under version control Normally, we never access any of the files in the repository directly. Instead, we use commands to get your own copy of the files into a "working directory", and then work on that copy. When we are finished a set of changes, we check (or "commit") them back into the repository Repository and Working directory are totally separate

Concepts: Checkout Copying a module(s) or file(s) from the server to the local directory (working directory) is called a checkout It will create a local copy of files These copies are latest versions of the files available in server

Concepts: check in After checkout and update of a file is done that file is check in back into to the repository This will create a new version of a file in the repository Comments can be added at the check in time to specify reasons of modification Some tools require commit command to be executed after check in

More commands Import/Init Create repository Add Add new file/directory in the repository Update Update the local files with the files from repository Diff Compare different versions of a file Log Obtain the log history of files

Tags Sometimes we need to put together some versions of files together forming a release It s useful for creating branches maintaining track of latest clean builds label some state of the code e.g. bug fixes Important use of tags is to create baselines

Concept: Baseline The IEEE (IEEE Std. No. 610.12-1990) 1990) defines a baseline as: A specification or product that has been formally reviewed and agreed upon, that thereafter serves as the basis for further development, and that can be changed only through formal change control procedures. a baseline is a milestone in the development of software that is marked by the delivery of one or more software configuration items and the approval of these SCIs that is obtained through a formal technical review http://www.ecs.csun.edu/~rlingard/pressmanv6ppt/ch27.ppt

Version Control Tools Concurrent Versions System (CVS) is the most widely used in the open software community Microsoft SourceSafe Rational ClearCase WinCVS is an windows client to access CVS repository

Demo

Bug Tracking Bug is also one of the main configuration items Bugs are problems with products where performance is in some way inconsistent with declared performance. (Lohmeyer & Hassel)

Bug Tracking Systems Keep track of bugs Keep track of available/unavailable functionalities for builds and releases Useful for measuring and tracking software quality If integrated with version control systems to provide tighter control over configuration items e.g. integration of Rational ClearCase and ClearQuest

Bug states Created Assigned Open Modified Fixed Verified Closed

Bug tracking Tools Bugzilla Rational ClearQuest GNATS Debian Bug Tracking System SilkRadar Segue Software

Project build process After early phases, in the implementation phase developers develop the code keep checking in the code in the repository When QA phase is stared, all development activities are stopped, an QA branch is created Build manager Check out code on QA branch and make available the test binaries to the QA team for testing

Project build process QA team tests the module Create bug, add appropriate comments like module name, module version (tag), files, bug reproduction steps, severity, priority Assign bug to the user (owner)

Project build process Bug Owner opens a bug checkout the code to be changed on a new bug branch modifies the code to fix the bug check in the modified code on separate branch along with the Bug Id in the check in comments marks the bug as fixed Change Control Board (CCB) Verifies the bug and the changed code Approves the change

Project build process Repository manager merges the code changes from the bug branches of approved bugs on to the QA branch, Build manager builds the code on QA branch QA team tests the code on QA branch verifies the bug fixes approved by CCB Release manager creates a final release by creating a release branch from the QA branch.

Scenario I: Bug Fix First public release of the hot new product 1.0 http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario I: Bug Fix 1.0 1.3 Internal development continues, progressing to version 1.3 http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario I: Bug Fix 1.0 1.3 A fatal bug is discovered in the product (1.0), but 1.3 is not stable enough to release. Solution: Create a version based on 1.0 with the bug fix. 1.0 bugfix http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario I: Bug Fix 1.0 1.3 Note that there are now two lines of development beginning at 1.0. This is branching. 1.0 bugfix http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario I: Bug Fix 1.0 1.3 The bug fix should also be applied to the main code line so that the next product release has the fix. 1.4 1.0 bugfix http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario I: Bug Fix Note that two separate lines of development come back together in 1.4. 1.0 1.3 This is merging or updating. 1.4 1.0 bugfix http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario II: Normal Development 1.5 You are in the middle of a project with three developers named a, b, and c. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario II: Normal Development 1.5 1.5a 1.5b 1.5c At the beginning of the day everyone checks out a copy of the code. A check out is a local working copy of a project, outside of the version control system. Logically it is a (special kind of) branch. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario II: Normal Development 1.5a 1.5 1.5b 1.5c The local versions isolate the developers from each other s possibly unstable changes. Each builds on 1.5, the most recent stable version. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario II: Normal Development 1.5a 1.5 1.5b 1.6 1.5c At 4:00 pm everyone checks in their tested modifications. A check in is a kind of merge where local versions are copied back into the version control system. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario II: Normal Development 1.5 1.5a 1.5b 1.5c 1.6 In many organizations check in automatically runs a test suite against the result of the check in. If the tests fail the changes are not accepted. This prevents a sloppy developer from causing all work to stop by, e.g., creating a version of the system that does not compile. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario III: Debugging 1.5 1.6 1.7 You develop a software system through several revisions. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario III: Debugging 1.5 1.6 1.7 In 1.7 you suddenly discover a bug has crept into the system. When was it introduced? With version control you can check out old versions of the system and see which revision introduced the bug. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario IV: Libraries Library A You are building software on top of a third-party library, for which you have source. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario IV: Libraries Library A 0.7 You begin implementation of your software, including modifications to the library. http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario IV: Libraries Library A 0.7 A new version of the library is released. Logically this is a branch: library development has proceeded independently of your own development. Library B http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

Scenario IV: Libraries Library A 0.7 You merge the new library into the main code line, thereby applying your modifications to the new library version. 0.8 Library B http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt

References http://www.sonoma.edu/engineering/courses/ces 592_files/CES592Ninthlecture-Oct26.ppt http://www.ecs.csun.edu/~rlingard/pressmanv6pp t/ch27.ppt http://www.movesinstitute.org/~mcgredo/cvs.ppt http://www.cs.nyu.edu/courses/spring05/v22.0474-001/lec/lec7.ppt http://undergraduate.csse.uwa.edu.au/units/233.41 0/lectures/2004/kennea01/Issue&BugTracking.ppt

Questions