Software Construction



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

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Java Software Quality Tools and techniques

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Delivering Quality Software with Continuous Integration

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Software infrastructure for Java development projects

Continuous Integration (CI)

Continuous Integration: A case study

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Continuous Integration in Kieker

Implementing Continuous Integration Testing Prepared by:

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Continuous Integration

Build management & Continuous integration. with Maven & Hudson

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous integration End of the big bang integration era

Accelerate Software Delivery

Continuous Integration on System z

Continuous Integration For Real: The Perforce Java Platform. Hamish Reid Perforce Software Inc.

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

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

Upping the game. Improving your software development process

Introducing Continuous Integration

Meister Going Beyond Maven

In depth study - Dev teams tooling

TeamCity A Professional Solution for Delivering Quality Software, on Time

Continuous Integration Multi-Stage Builds for Quality Assurance

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.

SOA-14: Continuous Integration in SOA Projects Andreas Gies

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

Software Development In the Cloud Cloud management and ALM

CONTINUOUS INTEGRATION. Introduction

Software Continuous Integration & Delivery

Continuous Delivery. Alejandro Ruiz

Introduction to Programming Tools. Anjana & Shankar September,2010

Best Practices for Java Projects Horst Rechner

Continuous integration for databases using

SOFTWARE DEVELOPMENT BASICS SED

Test Driven Development with Continuous Integration: A Literature Review

Modern practices TIE-21100/

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Software Configuration Management Best Practices for Continuous Integration

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

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Realizing Continuous Performance Management

Introduction to Agile Software Development Process. Software Development Life Cycles

Maven the Beautiful City. Healthy, Viable, and Productive Build Infrastructures

Continuous Integration

Merlin A Continuous Integration Tool for VisualWorks

Continuous integration for databases using Redgate tools

CONTINUOUS INTEGRATION

Quality Cruising. Making Java Work for Erlang. Erik (Happi) Stenman

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Finally, an agile test strategy (that works)! AS OW Test Model, Objectware

Continuous Integration Comes to China.

Content. Development Tools 2(63)

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

Benefits of Test Automation for Agile Testing

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

Software Configuration Management and Continuous Integration

Continuous Integration Northwestern University. Evanston, Illinois November The Business of IT

Delivery. Continuous. Jez Humble and David Farley. AAddison-Wesley. Upper Saddle River, NJ Boston Indianapolis San Francisco

Key Benefits of Microsoft Visual Studio Team System

Effective feedback from quality tools during development

Code Quality Assurance. Peter Kofler, Code Cop FH Technikum Wien, February 2010

USING SYNERGY WITH CRUISE CONTROL

Improving your Drupal Development workflow with Continuous Integration

Software Engineering Process. Kevin Cathey

Continuous Integration: Put it at the heart of your development

How To Do Continuous Integration

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

Software Engineering I (02161)

Organize Work Information. Resolve Workflow Problems

Agile So)ware Development

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Continuous integration for databases using Red Gate tools

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Continuous Integration Just another buzz word?

The Importance of Continuous Integration for Quality Assurance Teams

Maven or how to automate java builds, tests and version management with open source tools

Foreword by Martin Fowler *

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

The Deployment Pipeline

Transcription:

Software Construction Martin Kropp University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You can explain the importance of continuous integration (CI) know what is can explain the beneftis of CI can describe a typical CI environment can setup and use a CI tool, v1.2 IMVS, M. Kropp 2 1

Agenda Why Integration? What is? Process CI Infrastructure CI Tools, v1.2 IMVS, M. Kropp 3 Integration Integration is Making different modules work together Modularization enables team development makes complex systems manageable Modules have to work together i.e. they must be integrated Integrated Modules do successfully compile run pass test deploy, v1.2 IMVS, M. Kropp 4 2

Integration Challenges Integration occurs when changes are merged with the source code repository Module 1 Module 2 Module 3 Module 3 Module 4 System A System B Integration occurs at interfaces Shared Module, v1.2 IMVS, M. Kropp 5 Broken Integration You have a broken integration when: Source code server does not build successfully Shared component works in one system, but breaks others Unit tests fail Code quality fails (coding conventions, quality metrics) Deployment fails The earlier you can detect problems, the easier it is to resolve them, v1.2 IMVS, M. Kropp 6 3

Manual Integration Integration becomes expensive if made manual (build, test, deployment, ) with too less checkin s (hours or days ) If integration problems and bugs are detected too late Reduces desire to refactor Long time between integration increases risk of merge IDE makes many cross-cutting changes easy, v1.2 IMVS, M. Kropp 7 What Is Some Definitions An important part of any software development process is getting reliable builds of the software. Despite it's importance, we are often surprised when this isn't done. We stress a fully automated and reproducible build, including testing, that runs many times a day. This allows each developer to integrate daily thus reducing integration problems. Martin Fowler and Matthew Foemmel, The macro process of object-oriented development is one of "continuous integration."... At regular intervals, the process of "continuous integration" yields executable releases that grow in functionality at every release.... It is through these milestones that management can measure progress and quality, and hence anticipate, identify, and then actively attach risks on an ongoing basis. Grady Booch, Object-Oriented Analysis and Design with Applications, v1.2 IMVS, M. Kropp 8 4

Practices of Maintain a Single Source Repository. Automate the Build Make Your Build Self-Testing Everyone Commits Every Day Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment Make it Easy for Anyone to Get the Latest Executable Everyone can see what's happening Automate Deployment From http://martinfowler.com/articles/continuousintegration.html, v1.2 IMVS, M. Kropp 9 Embrace What is Get latest version Build Run Test Send Report VCS Integration server monitors source repository Rebuilds with every change Runs all unit and acceptance tests Publishes build results Notifies developers if build breaks Labels successful builds in source repository, v1.2 IMVS, M. Kropp 10 5

Prerequisites Tools needed VCS server Build server Deployment Server Automation tools CI tools Work Process Commit/Update often (each change) Run often Write test Run test often Common code ownership, v1.2 IMVS, M. Kropp 11 Infrastructure Monitors projects/paths in source repository Development Deployment Server build server vcs server Executes tasks on schedule/event Build Script -Get latest version - Build - Code Audit -Unit Test -Code Coverage -Deploy build report Get local copies / Commit changes developers, v1.2 IMVS, M. Kropp 12 6

Realizing Monitors a VCS repository for changes CVS = check for commits in the repository since last build time If changes are found, then on a schedule start the build Build your application through your existing Ant or Maven scripts Run your xunit Test suite Run code audit tools Checkstyle, code coverage, Report on the build results send formatted email notifications publish results to a website (Optionally) publish the application Configuration is through a central XML file, v1.2 IMVS, M. Kropp 13 What is a Successful Build? When is your build successful? When it compiles? When all the unit-tests have run? When it has been deployed? In fact, every failure is a success You have exposed a potential problem early!, v1.2 IMVS, M. Kropp 14 7

The Agile Process is only one aspect of an overall process. For it to work best, you need to: Plan iteratively schedule regular releases with evolving levels of functionality (CRs) be wary of inflexible Change Control Boards! Implement incrementally identify and implement small work tasks refactor if necessary! Report proactively identify exactly the contents (CIs) of any build, in both file and content automate reports!, v1.2 IMVS, M. Kropp 15 CI Benefits Reduced Risks Always aware of current status of the project Less time spent investigating integration bugs Integration testing performed early Integration bugs caught early Less time wasted because of broken code in version control system Broken builds caught early Prove your system can build! Increase code quality with additional tasks Discover potential deployment issues, v1.2 IMVS, M. Kropp 16 8

CI Obstacles Tough to move an existing system into CI Systems that rely on server components (BizTalk, Sharepoint, etc.) Db-based systems need to be up-to-dated, v1.2 IMVS, M. Kropp 17 A CI Tool: CruiseControl, v1.2 IMVS, M. Kropp 18 9

Monitoring CruiseControl Server Integrates building, unit tests, code coverage, analysis,. Provides the ability to hook in almost any output. Gives instant knowledge of status of builds. Provides dashboard like integration for multiple projects, v1.2 IMVS, M. Kropp 19 CruiseControl Build Status, v1.2 IMVS, M. Kropp 20 10

Cruise Control Components CI Server Monitors the cvs Executes the build script Configuration File Dashboard Build report viewer Email Notification, v1.2 IMVS, M. Kropp 21 CI Add Ons Code Coverage Cobertura Works with JUnit or any Java classes Uses instrumentation within Ant or the command line Integrated into build process via <coberturainstrument> task Dependency Management with IVY Similar like Maven Ant based, v1.2 IMVS, M. Kropp 22 11

Some Popular CI Tools Cruise Control (OS) http://cruisecontrol.sourceforge.net/ Anthill Pro (Com) http://www.anthillpro.com/ Continuum (OS) http://maven.apache.org/continuum/ Pulse (Com) http://www.zutubi.com/ Luntbuild (OS) http://luntbuild.javaforge.com/ ParaBuild Server (Com) http://www.viewtier.com/index.htm, v1.2 IMVS, M. Kropp 23 Resources Martin Fowler about CI http://www.martinfowler.com/articles/continuousintegration.html Wiki http://c2.com/cgi/wiki?continuousintegration, v1.2 IMVS, M. Kropp 24 12

Summary Continually integrate and test to reduce risk Detect problems early Always have a deployable build Generate metrics to guide project management is: A good practice in any software development method Vital for agile development, v1.2 IMVS, M. Kropp 25 13