Teaming Up for Software Development



Similar documents
Content. Development Tools 2(63)

Introduction to Programming Tools. Anjana & Shankar September,2010

Continuous Integration Multi-Stage Builds for Quality Assurance

Build management & Continuous integration. with Maven & Hudson

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

Software configuration management

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

SOFTWARE DEVELOPMENT BASICS SED

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

Open Source vs. Collaborative Software: FOSS is Not Enough

Software Configuration Management and Continuous Integration

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Continuous Integration

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

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

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

Continuous Delivery. Alejandro Ruiz

Continuous Integration

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Software Quality Exercise 2

Continuous Integration: A case study

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

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

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

! E6893 Big Data Analytics:! Demo Session II: Mahout working with Eclipse and Maven for Collaborative Filtering

SA4 Software Developer Survey Survey Specification v2.2

Delivering Quality Software with Continuous Integration

[Handout for L6P2] How to Avoid a Big Bang: Integrating Software Components

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

Distributed Version Control with Mercurial and git

Source Control Systems

Ambienti di sviluppo collaborativo

Meister Going Beyond Maven

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

Maven2 Reference. Invoking Maven General Syntax: Prints help debugging output, very useful to diagnose. Creating a new Project (jar) Example:

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

Deliverable DS4.3.2: Report on Development Infrastructure Usage and Adoption

Software Continuous Integration & Delivery

The Bazaar Version Control System. Michael Hudson, Canonical Ltd

Software Configuration Management

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Continuous Integration

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Software infrastructure for Java development projects

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

Software Development In the Cloud Cloud management and ALM

Continuous Integration on System z

How To Use An Orgsync With Anorgfusion Middleware

Introduction to Agile Software Development Process. Software Development Life Cycles

Networks and Services

Software project management. and. Maven

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.

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

Developing Applications Using Continuous Integration 12c (12.2.1)

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

Software Construction

Version Control Tools

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

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

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

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

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

Efficient Automated Build and Deployment Framework with Parallel Process

Best Practices for Java Projects Horst Rechner

Version Control with Subversion

Integrating your Maven Build and Tomcat Deployment

"Build and Test in the Cloud "

ALERT installation setup

Builder User Guide. Version Visual Rules Suite - Builder. Bosch Software Innovations

Git Branching for Continuous Delivery

Managing Software Projects Like a Boss with Subversion and Trac

Hudson Continous Integration Server. Stefan Saasen,

Advanced Computing Tools for Applied Research Chapter 4. Version control

Builder User Guide. Version 5.4. Visual Rules Suite - Builder. Bosch Software Innovations

Revision control systems (RCS) and

Best Practices of PHP Development

Visual Studio - Continuous Integration

The care of open source creatures. Vincent Sanders

Introduction to Version Control

Sonatype CLM for Maven. Sonatype CLM for Maven

D5.4.4 Integrated SemaGrow Stack API components

Test-Driven Development

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

Version Control Systems

Software Engineering Process. Kevin Cathey

This presentation introduces you to the Decision Governance Framework that is new in IBM Operational Decision Manager version 8.5 Decision Center.

CONTINUOUS INTEGRATION

"Code management in multi programmer environments."

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

THE OPEN SOURCE DEVELOPER REPORT

Engine: Using MSBuild and Team Foundation

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

Writing Books Using Open Source Software

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

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

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

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

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

Automating the Nengo build process

Transcription:

Departamento de Informática Universidade do Minho Engenharia de Aplicações

Introduction Agenda In the end of the session the attendee should be able to: Identify several super-sets of tools used in software development labs; Distinguish several stages in software development.

Introduction Agenda Outline Common software development pitfalls. Concepts and Tools Dependency management and build frameworks. Tracking changes. Tracking issues. Software quality control. A walk in the lab. Few final remarks. Additional links.

Introduction Agenda Common software development pitfalls Documentation almost nonexistent. No standards. No recorded history through project s time-line. Integration is not frequent. Ad hoc testing. Heterogeneous tool-set.

Best Practices Dependency Management and Build Frameworks Dependency Management and Build Frameworks

Best Practices Dependency Management and Build Frameworks Dependency Management Definition Keeping track of third party libraries required to build/test/execute the project. Build Tools Definition Tool that relies on a set of rules to build the source code. Doing this manually is error prone and time consuming. Automatic dependency management removes the burden from developers of having to synchronize libraries every now and then among themselves. Versions are handled gracefully. Configure once, build anytime.

Best Practices Dependency Management and Build Frameworks GNU Make Programming language agnostic; Dependencies statically listed and provided by the user; Wide-spread usage (build, install, document). Makefile: "Make uses the makefile to figure out which target files ought to be brought up to date, and then determines which of them actually need to be updated."

Best Practices Dependency Management and Build Frameworks Apache Ant Requires Java Virtual Machine; Mostly used to build java source code; Dependencies statically listed and provided by the user; Wide-spread usage among java programmers (build, install, deploy, document); build.xml: "Ant s build files are written in XML. Each build file contains one project and at least one (default) target."

Best Practices Dependency Management and Build Frameworks Apache Maven (v2) Requires Java Virtual Machine; Mostly used to build java source code; Dependencies are listed by the user and downloaded automatically; Wide-spread usage among java programmers; Much more: "Maven is a software project management and comprehension tool." pom.xml: "A Project Object Model or POM is the fundamental unit of work in Maven. It is an xml file that contains information about the project and configuration details used by Maven to build the project."

Best Practices Tracking Changes Tracking Changes (Version Control)

Best Practices Tracking Changes Version Control Software Definition Software used to control multiple revisions of the same information unit. Version Control Benefits Development history is preserved. Standard integration process for the development team. Easy to rollback in case a serious mistake is introduced. Automatic generation of changesets between versions/releases. Changes are always associated with a given developer.

Best Practices Tracking Changes Version Control Software Systems Centralized: CVS - Concurrent Versions System Subversion - CVS Done Right! Distributed: Mercurial - Efficient (Mozilla, Xine, OpenSolaris) Git - Tracks content (Linux Kernel) Bazaar - Tracks Files (Launchpad, Ubuntu)

Best Practices Tracking Changes Tracking Issues

Best Practices Tracking Issues Issue Tracker Definition Software used to report, maintain and describe issues and work done in time. Issue Tracking Benefits Document changes and their motivation. Track issues and their impact in development life-cycle. Mean to get feedback from developers/users on the work done. Eases new developers/users integration by providing a documented record of the project s past. When tightly integrated with the Revision Control System, becomes a powerful bug tracking tool.

Best Practices Tracking Issues Bug/Issue Tracking Applications trac Jira roundup Bugzilla Launchpad/SourceForge/...

Best Practices Software Quality Control Software Quality Control

Best Practices Software Quality Control Software Quality Control Controlling the quality of the software, resorting to tests (unit, integration and system tests), simulation and continuous integration. Test-driven Development: Test early and often. Start from an interface, a mock implementation and a unit test. End up with a full featured implementation passing the unit tests flawlessly. Revision Control commits should be small. Do not be afraid to commit often and small changes. Build early and often. If a commit breaks a build or fails a unit test, the problem gets detected early in the development cycle. Ideally, each commit should trigger new build.

Best Practices Software Quality Control Continuous Integration Definition "Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.", by Martin Fowler. Frameworks hudson cruise control continuum bamboo

A walk in the lab. A walk in the lab. (Dry-run)

A walk in the lab. Setting up a development Environment using Maven2 1 mvn archetype:create -DgroupId=ea -DartifactId=calculator 2 mvn compile [test clean package] Adding revision control 1 bzr init. 2 vim.bzrignore 3 bzr add. 4 bzr commit -m "Initial import."

A walk in the lab. Issue Tracking with trac 1 sudo apt-get install trac 2 mkdir $HOME/trac.env 3 trac-admin $HOME/trac.env/calculator initenv 4 trac-admin /home/ea/trac.env/calculator/ permission add anonymous TRAC_ADMIN 5 vi /var/www/trac.env/calculator/conf/trac.ini 6 tracd port 8000 /home/ea/trac.env/calculator 7 create milestones (release 1.0) and tickets

A walk in the lab. Continuous Integration with Hudson 1 download it from https://hudson.dev.java.net/ 2 java -jar hudson 3 create build jobs

A walk in the lab. Make a change, compile and commit 1 vim src/main/java/ea/sumservice.java 2 vim src/main/java/ea/sumserviceimpl.java 3 vim src/test/java/ea/testsumservice.java 4 mvn clean compile test 5 bzr commit -m "Added sum service." Implement SumService 1 vim src/main/java/ea/sumserviceimpl.java 2 mvn clean compile test 3 bzr commit -m "Implemented SumService"

A walk in the lab. Teaming Up 1 Create ticket for "John Doe": Implement MultiplyService 2 bzr branch /home/ea/calculator calculator.multiply 3... Implement tests and MultiplyService... 4 bzr merge calculator.multiply 5 integrate/build 6 close ticket 7 milestone completed

A walk in the lab. Release 1 All milestones completed 2 Remove -SNAPSHOT tag 3 branch new trunk

Final Remarks. Conclusions

Final Remarks. Few final remarks. Teaming up requires third party tools that ease development and integration. Investing in some tools may pose a steep learning curve at first, but it pays off in the long run. You are not alone! Act as a team! Use standards and conventions that everybody acknowledges (common ground). Test, commit and build early and often. Document as much as possible. Documentation avoids issue rebounding.

Links. Links Trac: http://trac.edgewall.org Hudson: https://hudson.dev.java.net/ Maven: http://maven.apache.org/ Bazaar: http://bazaar-vcs.org/ Google: http://www.google.com ;)