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



Similar documents
SOFTWARE DEVELOPMENT BASICS SED

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration

Content. Development Tools 2(63)

Software configuration management

Continuous Integration and Delivery at NSIDC

Introduction to Programming Tools. Anjana & Shankar September,2010

The Bazaar Version Control System. Michael Hudson, Canonical Ltd

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

Version Control with Subversion

Continuous Delivery. Alejandro Ruiz

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

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Software Construction

Continuous Integration

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

About Me Developer Workspaces Enable Agile Teams

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

In depth study - Dev teams tooling

Software Configuration Management and Continuous Integration

Revision control systems (RCS) and

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

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

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

Continuous Integration The Full Monty Artifactory and Gradle. Yoav Landman & Frederic Simon

SA4 Software Developer Survey Survey Specification v2.2

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

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Miguel A. Figueroa Villanueva Xabriel J. Collazo Mojica

SMZ. SocialMedia. Z olutions

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

Continuous Integration For Fusion Middleware

Software Continuous Integration & Delivery

Version Control with Git. Dylan Nugent

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

Source Control Systems

Version control with GIT

PKI, Git and SVN. Adam Young. Presented by. Senior Software Engineer, Red Hat. License Licensed under

CSE 70: Software Development Pipeline Build Process, XML, Repositories

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Version Control. Luka Milovanov

Continuous integration End of the big bang integration era

Continuous Integration (CI)

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Software Delivery Integration and Source Code Management. for Suppliers

Agile Best Practices and Patterns for Success on an Agile Software development project.

Modulo II Software Configuration Management - SCM

Version Control Tools

Module 11 Setting up Customization Environment

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Continuous Integration using Docker & Jenkins

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

Miguel A. Figueroa Villanueva Xabriel J. Collazo Mojica. ICOM 5047 Capstone Miguel A. Figueroa Villanueva University of Puerto Rico Mayagüez Campus

How To Use An Orgsync With Anorgfusion Middleware

Version Control Systems

Semarchy Convergence for Data Integration The Data Integration Platform for Evolutionary MDM

Build management & Continuous integration. with Maven & Hudson

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

Introduction to Subversion

Version Control and Subversion. Dr Paul Tennent

Technical Writing - Advantages of Version Control Systems

Continuous Integration and Deployment Modern Technique's

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

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

Version Control. Version Control

Continuous Integration. Wellcome Trust Centre for Gene Regulation & Expression College of Life Sciences, University of Dundee Dundee, Scotland, UK

Introduction to the Git Version Control System

USING SYNERGY WITH CRUISE CONTROL

Version Control with Git

Software infrastructure for Java development projects

Continuous Delivery Maturity Model

Software Development In the Cloud Cloud management and ALM

Mobile Development with Git, Gerrit & Jenkins

Steady as She Goes. How the VIVO developers work to deliver a stable platform

Version Control Your Jenkins Jobs with Jenkins Job Builder

OFBiz Addons goals, howto use, howto manage. Nicolas Malin, Nov. 2012

Global Software Change Management for PVCS Version Manager

ARCHITECTURE OF THE PROASENSE DEVELOPMENT ENVIRONMENT

Automation & Open Source. How to tame the Cloud?

Distributed Version Control with Mercurial and git

DevOps Course Content

Achieving Continuous Integration with Drupal

Deliverable D Integration Plan 1 st version

Continuous Integration on System z

A brief introduction to CVS

Delivering Quality Software with Continuous Integration

Git Branching for Continuous Delivery

"Build and Test in the Cloud "

Practical Guide to Platform as a Service.

Version Uncontrolled! : How to Manage Your Version Control

Jenkins: The Definitive Guide

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

Mastering Continuous Integration with Jenkins

pure::variants Connector for Version Control Systems Manual

Bull Service & Solutions

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Introduction to Version Control

What is Subversion? Revision Control System made to replace CVS

Transcription:

Project Organization vs. Build- and Configuration Management Web Site: www.soebes.com Blog: blog.soebes.com Email: info@soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Agenda 1.Initialization 2.Specification 3.Implementation 4.Project Evolving 5.Organization 6.Building Software 7.Dependencies 8.Build Systems 9.Feature Implementation 10. Conclusion www.soebes.com 2

1. Initialization Efforts, requirements and resources will be planned Implementation efforts Test efforts etc. www.soebes.com 3

1. Initialization Human resources How many developers? How many testers? How many Q&A? How many people for operations? etc. www.soebes.com 4

1. Initialization Hardware resources How many computers for developers? How many computers for testers? How many Q&A computers? How many computers for operations? etc. www.soebes.com 5

2. Specification Many documents will be produced Architecture Documents Design Documents Test Plans etc. www.soebes.com 6

3. Implementation The implementation phase starts with a small number of developers. The small number of developers needs something to build the software, cause they want to do some tests. They start with their IDE for that purpose. www.soebes.com 7

4. Project Evolves Over the time more and more developers join the team. Now some kind of organization on the source code level must be introduced. www.soebes.com 8

5. Organization The requirement by the developers is to work as independent as possible without any impediments from others. The idea of Modules will be born. The source tree will be organized based on that. www.soebes.com 9

5. Organization Requirements will be organized based on the modules Every Module-Team will implement the given requirements www.soebes.com 10

5. Organization The following Subversion structure will be the result: www.soebes.com 11

6. Building Software How to build a defined state of the software based on the given structure? Build a particular tag of the modules? Which tags should be used? www.soebes.com 12

6. Building Software What you need is a solution to describe a state of your software system. www.soebes.com 13

6. Building Software The following describes a state of your application: Module1 Release 1.2.3 Module2 Release 1.1.6 www.soebes.com 14

6. Building Software Solution I Introduce some description of what a system is defined by a supplemental file, let us call it release.xml and store it into release/trunk www.soebes.com 15

6. Building Software Pro's Solution I No change of the current structure needed. Simply to integrate modules which results in simply changing the contents of the release.xml file. www.soebes.com 16

6. Building Software Con's Solution I No commit on system level possible only per module. No branching on system level possible only per module. No merging on system level possible only per module. release.xml file is hand maintained. www.soebes.com 17

6. Building Software Con's Solution I Checkout of the whole system only possible by using supplemental tools (may be self implemented). An integration is not really integrated, cause no merge has been done. www.soebes.com 18

6. Building Software Con's Solution I No support of existing tools for such approach. www.soebes.com 19

6. Building Software Solution II Introduce some description of what a system is defined of via svn:externals: www.soebes.com 20

6. Building Software Pro's Solution II No change of the current structure needed. Checkout of the whole project simple. Tagging can be done via svn commands. www.soebes.com 21

6. Building Software Con's Solution II No commit on system level possible only per module (limitations of svn:externals). No branching/merging on system level possible only per module. svn:externals are hand maintained. www.soebes.com 22

6. Building Software Con's Solution II No comparison between releases on system level possible only per module. No use of svn log --use-merge-history possible www.soebes.com 23

6. Building Software Solution III Change the structure of your project according to best practice which is recommended in Subversion: www.soebes.com 24

6. Building Software Solution III Con's Changing of the structure is needed. You have to define a branching strategy: Integration lines, Release lines etc. Branching on system and module base etc. www.soebes.com 25

6. Building Software Pro's Solution III Checking out of the whole project is simple. Tagging/Branching/Merging can be done via svn commands. svn log --use-merge-history can be used. www.soebes.com 26

7. Dependencies What about the dependencies between the modules? Module1 depends on Module2? www.soebes.com 27

7. Dependencies Solution I, II and III: Couldn't handle this, because dependencies between the modules are not handled by the release.xml file nor by svn:externals property. Note: A dependency could be a pre-build, provided or runtime dependency. www.soebes.com 28

7. Dependencies Solution I, II and III: Result: You have to introduce a new file in the modules like dependency.xml which describes the pre-build dependencies for each module. www.soebes.com 29

8. Build Systems What kind of build system do you need? Maven, Gradle, Ant (+Ivy), CMake, SCons, Make... Self made? www.soebes.com 30

8. Build Systems Maven 2/3 Build Life cycle Dependency Management on module level Deployment, Repositories, Versioning system Release cycle Site generation / Reporting www.soebes.com 31

8. Build Systems Gradle Build Life cycle Dependency Management on module level (Maven) Deployment, Repositories, Versioning system (?) Release cycle (?) www.soebes.com 32

8. Build Systems Ant (+Ivy) Dependency Management on module level Maven like Only target driven www.soebes.com 33

8. Build Systems CMake, SCons(?), Make... No dependency management on module level. No deployment SCons some kind of repository www.soebes.com 34

9. Feature Implementation How to implement features in solution I and II? In fact not possible only on module level but not on system level. The integration is done later via an integration build. www.soebes.com 35

9. Feature Implementation How to implement features in solution I and II? Branching only on module level possible. If you have many features in different modules you have a Big Bang -Integration or puzzle-integration www.soebes.com 36

9. Feature How to implement features in solution I and II? Continuous Integration (CI) NOT possible. Only on module level but NOT on system level. Implementation www.soebes.com 37

9. Feature Implementation How to implement features in solution III? Simply create a feature branch to implement it. Later merge into a release/integration line. Integration can be done simply by using a merge and a following build. www.soebes.com 38

10.Conclusion Solution I, II Module based development not feature oriented. Not possible to merge on a application level only on module level. No view in VCS on the whole system. www.soebes.com 39

10.Conclusion Solution III Feature oriented development simply possible by using branching strategy. Tagging/Branching/Merging on application level via SVN. A complete view in VCS on the whole system. www.soebes.com 40

On-line Sources I [1] Branching strategies Subversion Conference 2008 [2] Maven Linux Tag Berlin 2009 [3] Continous Integration Hudson www.soebes.com 41

Questions? gearconf2010@soebes.com Thank you for your attention. www.soebes.com 42