Configuration and Build Management of Product Line Development. Steve Kim (Sungchul Kim) Principal Engineer Samsung SDS

Similar documents
Software Configuration Management.

Surround SCM Best Practices

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

Perforce. elearning Catalog

Variation Management for Software Production Lines 1

A Configuration Management Model for Software Product Line

About Me Developer Workspaces Enable Agile Teams

STAR JPSS Algorithms Integration Team Configuration Management Plan Version 1.2

Software Configuration Management Best Practices for Continuous Integration

Continuous Integration

Software Process Training

Integrity 10. Curriculum Guide

Understanding Code Management in a Multi-Vendor Environment. Examples of code management in a multi-team environment

A guide through the concepts of Serena Dimensions. René Steg Steg IT-Engineering, Zurich (Switzerland)

JOURNAL OF OBJECT TECHNOLOGY

Software Architecture

IBM Rational ClearCase, Version 8.0

Developing Software in a Private workspace PM PMS

Software configuration management

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

Software Configuration Management (SCM)

Introduction to Software Configuration Management. CprE 556 Electrical and Computer Engineering Department Iowa State University

What Is Software Configuration Management?

Points of Defect Creation

Product Line Development - Seite 8/42 Strategy

Terms and Definitions for CMS Administrators, Architects, and Developers

Configuration Management for Reusable Software

CHAPTER 7 Software Configuration Management

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

U.S. Department of Education Federal Student Aid

How Rational Configuration and Change Management Products Support the Software Engineering Institute's Software Capability Maturity Model

SUCCESS STORY. Intranet Solution for Team Collaboration and Information Sharing

Rational Software White Paper

Software Configuration Management. Context. Learning Objectives

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

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

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

Configuration & Build Management

Software Configuration Management for Embedded Systems Developers

Simplifying development through activity-based change management

Configuration Management Models in Commercial Environments

Software Configuration Management Best Practices

Introducing IBM Tivoli Configuration Manager

Layered Configuration Management for Software Product Lines

Shelf Life. Shelving in Perforce Sven Erik Knop, Perforce Software

Continuous Integration. CSC 440: Software Engineering Slide #1

Chapter 13 Configuration Management

McAfee VirusScan and epolicy Orchestrator Administration Course

The Configuration Management process area involves the following:

SOA REFERENCE ARCHITECTURE: WEB TIER

Component Based Development in Software Engineering

Agile SCM Build Management for an Agile Team. Some Definitions. Building and Agility. Steve Berczuk, Brad Appleton, and Steve Konieczka October 2003

A Model for Component Based E-governance Software Systems

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

10751-Configuring and Deploying a Private Cloud with System Center 2012

Principal MDM Components and Capabilities

Software Configuration Management and Version Control

Software Configuration Management

WirelessOffice Administrator LDAP/Active Directory Support

Configuration Manager v.next Beta 1 Supported Configuration

P4VS User Guide

EXHIBIT L. Application Development Processes

Back-up Server DOC-OEMSPP-S/2014-BUS-EN-10/12/13

A Model for Effective Asset Re-use in Software Projects

Efficient Automated Build and Deployment Framework with Parallel Process

Life Cycle Management for Oracle Data Integrator 11 & 12. At lower cost Get a 30% return on investment guaranteed and save 15% on development costs

Change Management for Rational DOORS User s Guide

Background: Business Value of Enterprise Architecture TOGAF Architectures and the Business Services Architecture

Implementing Configuration Management for Software Testing Projects

High-Level Software Version Management Best Practices Abstract

Software Configuration Management. Addendum zu Kapitel 13

LEARNING SOLUTIONS website milner.com/learning phone

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

Table of contents. Enterprise Resource Planning (ERP) functional testing best practices: Ten steps to ERP systems reliability

IT2404 Systems Analysis and Design (Compulsory)

CREDENTIALS & CERTIFICATIONS 2016

Enhance visibility into and control over software projects IBM Rational change and release management software

XML and Content Management

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

SOE. managing change in system development projects: configuration management

Software Continuous Integration & Delivery

Guiding SOA Evolution through Governance From SOA 101 to Virtualization to Cloud Computing

Implementing and Managing Microsoft Desktop Virtualization en

Planning, Deploying, and Managing an Enterprise Project Management Solution

Course 55006A: COURSE DETAIL. Systems Center 2012 Operations Manager OVERVIEW. About this Course

SCM Dashboard Monitoring Code Velocity at the Product / Project / Branch level

White Paper. Software Development Best Practices: Enterprise Code Portal

Integration Technologies Group (ITG) ITIL V3 Service Asset and Configuration Management Assessment Robert R. Vespe Page 1 of 19

Comparison: Perforce and Microsoft Team Foundation Server (TFS)

Rational Team Concert. Guido Salvaneschi Dipartimento di Elettronica e Informazione Politecnico di Milano salvaneschi@elet.polimi.

CMB 207 1I Citrix XenApp and XenDesktop Fast Track

Software change and release management White paper June Extending open source tools for more effective software delivery.

elearning Course Catalog

The 7 Attributes of a Good Software Configuration Management System

Baseline Code Analysis Using McCabe IQ

Developing SOA solutions using IBM SOA Foundation

General Introduction to IBM (R) Rational (R) Asset Manager

FUNCTIONAL PRODUCT OVERVIEW: BOND ENTERPRISE RELEASE AND DEPLOYMENT MANAGEMENT

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

CONFIGURATION MANAGEMENT PLAN GUIDELINES

Transcription:

Configuration and Build Management of Product Line Development Steve Kim (Sungchul Kim) Principal Engineer Samsung SDS (sungchul3.kim@samsung.com)

AGENDA Product-line development Definition Considerations Usage models Depot structure Branch Strategy Baseline Strategy Integration with defect tracking tools & process Build and Release

GOALS Primary Indentify the considerations on applying product-line development Find out how to develop a usage model Secondary Show how to implement product-line development with Perforce

Ch1. Product line development

Introduction Enhance the efficiency of SW development when multiple products are to be developed simultaneously Higher productivity Higher quality Faster time to market Lower labor needs Many methods and practices are introduced S/W Reuse Component-based development Product line engineering ( Product family engineering )

Introduction Variation management is a key element to distinguish the other development process Reusable S/W Architecture Separated teams and responsibilities The governance enforcing S/W reused The usage model of configuration and build management on product line development will be introduced Code structure Branch strategy Label strategy Change management Build and Release management

Definition Definition of Product-line development A set of related products are produced through the combination of reused core assets together with product specific custom assets [ Adapted from General configuration management and asset evolution model for software product line, Softwareproductlines.com ] Core Assets Artifacts under configuration management Software Architecture Core Asset Core Asset Core Asset Teams for Core Assets Composed mapping Team A TeamB TeamC Production Custom Assets Custom Custom Asset Custom Asset Asset Teams for Custom Assets Product Instances

Definition [ A Configuration Management Model for Software Product Line, Liguo Yu and Srini Ramaswamy, 2006 ] Terms Component Asset Core Asset Custom asset Product Product instance Definition The basic unit for configuration management A collection of components. An asset may contain one or more components Contains a set of domain specific but application independent components that can be adapted and reused in various related products. Contains a set of application specific components A collection of core assets and custom assets. Products share the same or similar core assets. After a new product is produced, it may also need to be configuration managed. The product under configuration management is called product instance.

Definition Variation management for Software Product-line Variation in time and space Divided into nine smaller issues and suggest the solution for each issue [ Nine Sub-problems of Variation management, Charles W. Krueger ] Variation Type Granularity Files Sequential Time Parallel Time Domain Space Basic Configuration Management Version Management Branch Management Variation Point Management Components Baseline Management Branched Baseline Management Customization Management Products Composition Management Branched Composition Management Customization Composition Management Component Composition Software Mass Customization

Ch2. Usage model of configuration and build management

Considerations Considerations when you implement the usage model The code structure of repository to manage both a common assets and variant assets Branch strategy for enforcing the development process Baseline strategy for tagging each asset and a whole product Integration with defect tracking tools Daily Build and Release process

Depot Structure Depot Structure can be considered by the followings SW architecture The structure of the development team ( Single vs Multiple teams ) The access control policy Software Architecture Depot Structure Workspace Manage the change on Depot Branch/Directory Branch/Directory Component A Directory Depot Branch/Directory Branch/Directory Component B Directory Composed by Each depot holds one asset One depot holds all assets One depot holds multiple assets by the characteristics of assets

Depot Structure Each asset is coded and then released by a team. All code is managed by a project. A management unit to control all activities related to an asset Using naming rules, you can distinguish a directory from a branch ( PRJ_, [ ] ) Grouping related projects with directory can be possible Depot holds several projects in which the code for assets are managed Directory can be used to group the related projects - Year, Chipsets, Oversea labs

Depot Structure Additional data is also needed to maintain a Project. Project data including Name, Description, Depot path Branches and the hierarchy of branches which belong to a project The administrators of each project. They are in charge of assigning new developers and making a baseline for releasing an asset The policy which controls integrating and locking the branch Sometimes, the protection table of each project can also be managed These can be stored in a depot or other storage such as a database

Code-line (Branch) Strategy Sophisticated Code-line strategy is required The size of team is getting bigger The quality requirement of assets is getting higher The quality requirement of assets Core Assets is higher than Custom assets Maturity of the code Stable Rebased [Project name] Mainline Integrate Sub-Code-line Integrate The changes gathered from the lower branches are built with the other assets Test activities are performed Release baseline is tagged The changes gathered from the lower branches are reviewed and integrated If the members of a team are small, it can be optional Unstable Rebased Developer s Code-lines The codes are submitted with liking Job The changelists are integrated into the upper branch

Branch Strategy Sparse branching is a good solution to avoid integrating the files which are not changed in the developer s branch Integrate Dev-One to Mainline 2 3 Rebase the changes into Dev-One - Refer to KB #1166 1 Only Module 1 is branched [ View spec using Sparse branching ] - Refer to KB #890 //Core_Assets/PRJ_Core_Asset/Mainline/ //wk/core_asset1/..." +//Core_Assets/PRJ_Core_Asset/Dev_One/ComponentA/Module1/... //wk/core_asset1/module1/...

Branch Strategy Activities related with integrate should be controlled Submitting : ( P4 Trigger ) - Linked with at least one job ( Activity based change management ) Integrating : ( P4 Broker ) - The status of jobs linked with changelists is verified - Rebase the integrated codes from the target branch before integrating - The integrating flow is controlled ( refer to the below tables ) O : Allowed, X : Disallowed, : Configured depends on each project 1. Inner project 2. Between the projects From/To DEV Sub-INT INT REL DEV O X X Sub-INT O X O X INT X O - O From/To DEV Sub-INT INT DEV X X X Sub-INT X X X INT X REL X X X -

Label Strategy Two types of Baseline will be used Baseline : Attached to each asset when the code of the asset is released The use of naming rules to indicate the maturity level of code is very useful è _INT, _REL Composite Baseline : A set of Baselines to reproduce all files which compose a product - Keeps the labels of assets composing a product - Easily synchronizes all files of a product with a client workspace for developers who don t know the combination of baselinesand assets - Can also include composite baselines recursively

Label Strategy Composite Baseline of Product A Include Composite Baseline of Asset Group A Include Baseline of Asset A1 Baseline of Asset C1 Baseline of Asset A2 Baseline of Asset C2 Baseline of Asset P1 Number Project Name Stream Name Depot Path Label Name 1 Core Asset C1 INT //Core Asset_C/Project_C1/INT C1_0420_Release 2 Core Asset C2 INT //Core Asset_C/Project_C2/INT C2_0419_Release 3 Custom Asset P1 Sub-INT //CustomAsset_P/Project_P1/Sub-INT P1_0420_Release 4 Core Asset A1 INT //Core Asset_A/Project_A1/INT A1_0419_Release 5 Core Asset A2 INT //Core Asset_A/Project_A2/INT A2_0419_Release

Integrating with the defect tracking tools Change based modification should be enforced All work items such as Change Requests and Defect can be synchronized through Jobs in Perforce Synchronizing can be considered as one-way or two-way - One-way : Defect tracking tool can only change the job status - Two-way : Both Perforce and the Defect tracking tool can change the job status The policy to verify the job status and whether it can be promoted - P4 broker can be a candidate to implement those policies

Access control On each asset (project), It s own access control mechanism is also required Set access control on each code-line by groups Freeze some code-lines during integrating and building. But, exceptional users can be allowed Create Group and Assign developers Project (Asset) Default Group Default group and member is set, when a project is created Additional Groups Additional Groups Additional Groups Project administrator Create a group, assign/release developers on groups Manage access control Table of a project No Access Level User/Group Name Host Path 1 write group Default group //Depot/[Core_Prj]/... 2 read group Additional Group //Depot/[Core_Prj]/Mainline/CompA/

Integrating with the defect tracking tools Perforce Defect Tracking Tool Job Bidirectional Synchronizing DEFECT (CR, ) Release Note Changelist One-way Synchronizing p4change File Sync.Gateway Server1 :1666 Database <ClearQuest> Server2 :1666 <Perforce>

Build and Release strategy More complex than conventional development The difficulty is the combination of the right versions of the right assets - Every asset is changed continually - Each team has different rules when managing stable code Core assets should be released frequently and these also should be testified on the all products - Building and testing on all products requires time and effort Miscommunication among the development teams - Major changes such as interface changes lack notification - The time when applying the change of asset can be disordered

Build and Release strategy The followings should be clearly defined : All products should be built with the same rules how to combine the assets Daily builds on all products should be run, and the results of daily builds also are shared with all developers by indicating which assets were failed Periodically, the causes of the build error are analyzed and improved

Build and Release strategy Daily Builds and release process can be depicted as the below Daily Build Release Core Assets Release Products Developer s Builds Integration Builds Daily Build ( All models ) Build Result Fail Fix the error Success Runs Tests Release the Core assets with Baseline Get the released Core Assets Build & Test Release Run builds Build management System Core Assets Builders Product s Builders Run the CI builds Run the daily builds Indentify and fix the daily builds

Build and Release strategy The following features can be supported by build automation tool Synchronize - the latest label of each asset - the latest composite baseline of a product - the specific label/changelist of each asset Make a baseline - each asset - a composite baseline of a product Integrate codes into the upper branch and make a baseline after the build was completed successfully - Builds è Unit Test è Integrate Codes è Make a baseline - Automatically generates the release notes of each asset with P4 jobs which gathered from the defect tracking tools