Best Practices for Java Projects Horst Rechner



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

Software Construction

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

Continuous Integration. CSC 440: Software Engineering Slide #1

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

Continuous Delivery by example.net

Accelerate Software Delivery

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Continuous Delivery. Jez Humble, ThoughtWorks #continuousdelivery DevOpsDays, Hamburg

Software Configuration Management Best Practices for Continuous Integration

Build management & Continuous integration. with Maven & Hudson

CROSS PLATFORM AUTOMATIC FILE REPLICATION AND SERVER TO SERVER FILE SYNCHRONIZATION

Software infrastructure for Java development projects

Modern practices TIE-21100/

Distributed Agile Development. Bapiraju Nandury Product Development Manager Bangalore Development Centre

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

Java Software Quality Tools and techniques

Pragmatic Version Control

PROJECT MANAGEMENT SYSTEM

Continuous Integration: A case study

Open EMS Suite. O&M Agent. Functional Overview Version 1.2. Nokia Siemens Networks 1 (18)

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

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Profiling and Testing with Test and Performance Tools Platform (TPTP)

Continuous Integration on System z

Trends in Application Recovery. Andreas Schwegmann, HP

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

OPENPROJECT. Setup Draft Notes. Draft Setup notes for Openproject

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

A Mobile Application for Bus Information System and Location Tracking using Client-Server Technology

How To Install Linux Titan

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Power Tools for Pivotal Tracker

Measurably reducing risk through collaboration, consensus & practical security management CIS Security Benchmarks 1

Installing and Administering VMware vsphere Update Manager

Installation & User Guide

Erlang in E-Commerce and Banking

Test-Driven Development

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Media and Information Provider Unifies Development Processes

MALAYSIAN PUBLIC SECTOR OPEN SOURCE SOFTWARE (OSS) PROGRAMME BENCHMARK/COMPARISON REPORT DOCUMENT MANAGEMENT SYSTEMS (NUXEO AND ALFRESCO)

SOFTWARE DEVELOPMENT BASICS SED

Continuous Integration in Kieker

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

One solution for all your Source Configuration Management Needs

HC DYNAMICS CRM MODULE SERVER CONFIGURATION. User Manual. Hosting Controller All Rights Reserved.

Introduction to Agile Software Development Process. Software Development Life Cycles

XpoLog Center Suite Log Management & Analysis platform

Upping the game. Improving your software development process

Oracle Solaris: Aktueller Stand und Ausblick

UCS. Amazing tools suite in CORBA world

Book 3 Cost Estimating in an Agile Development Environment. (early release)

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

Digital Asset Management System Quality Assurance Testing A Case Study

Continuous Integration

Continuous Integration

Personal Spam Solution Overview

Version Control Tools

CUSTOMER PORTAL USER GUIDE FEBRUARY 2007

INinbox Start-up Pack

Microsoft Modern ALM. Gilad Levy Baruch Frei

The Importance of Continuous Integration for Quality Assurance Teams

How To Monitor Mysql With Zabbix

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison

Software Engineering Process. Kevin Cathey

Continuous Integration Multi-Stage Builds for Quality Assurance

Oracle Cloud. What s New for Oracle Compute Cloud Service (IaaS) Topics. July What's New for Oracle Compute Cloud Service (IaaS) Release 16.

Installing and Configuring Windows Server Module Overview 14/05/2013. Lesson 1: Planning Windows Server 2008 Installation.

Software Development In the Cloud Cloud management and ALM

Continuous Delivery Workshop

Extreme Programming, an agile software development process

Introduction. How does filtering work? What is the Quarantine? What is an End User Digest?

Continuous integration End of the big bang integration era

W3Perl A free logfile analyzer

MARIST/IBM Joint Studies

Collaborative Software Development Using R-Forge

Implementing Continuous Integration Testing Prepared by:

Avaya Aura Orchestration Designer

Product Brief. DC-Protect. Content based backup and recovery solution. By DATACENTERTECHNOLOGIES

Achieving Continuous Integration with Drupal

How to set up SQL Source Control. The short guide for evaluators

JOB ORIENTED VMWARE TRAINING INSTITUTE IN CHENNAI

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

Transcription:

Best Practices for Java Projects Horst Rechner Abstract: The combination of automated builds with module and integration tests and centralized bug and work tracking using a combination of Eclipse, Mylyn, Trac and CruiseControl could help ease the problems in multi developer projects. November 14, 2007 / FOKUSForum

How will we do this? for each Continuous Integration Bug Tracking Focused development do Problems Overview Tool How it helps Lessons learned end 2of36 slides

(Some of) the problems Developer domain: Who is working on that module? Is there any documentation / FAQ / written text besides code? Where is the code? Why do we have that software module twice / not / not working? What is it doing? Which classes are relevant for this feature? Does this work on Solaris / Linux / OSX / Windows? Is a memory stick sufficient to transfer the working software to the production system or do we need a portable hard drive? Let me fix that quick. 3

(Some of) the problems Project lead domain: Who was working on that module? Is there anything I can use as a starting point for documentation? What is X doing now / this week / next week? Which classes have you changed? Why did you not comment that commit? The client wants a working version next week. It does not matter if all features are available. We solved that problem with module X in project Y. Where is it? Why not working? 4

Continuous Integration

(Some of) the problems Developer domain: Who is working on that module? Is there any documentation / FAQ / written text besides code? Where is the code? Why do we have that software module twice / not / not working? What is it doing? Which classes are relevant for this feature? Does this work on Solaris / Linux / OSX / Windows? Is a memory stick sufficient to transfer the working software to the production system or do we need a portable hard drive? Let me fix that quick. 6

(Some of) the problems Project lead domain: Who was working on that module? Is there anything I can use as a starting point for documentation? What is X doing now / this week / next week? Which classes have you changed? Why did you not comment that commit? The client wants a working version next week. It does not matter if all features are available. We solved that problem with module X in project Y. Where is it? Why not working? 7

Continuous Integration Overview Coding Maintain a single source repository. Everyone commits every day. Building & Deploying Automate the build Every commit should build the mainline on an integration machine Automate deployment Testing Make your build self testing Test in a clone of the production environment Informing Make it easy for anyone to get the latest executable Everyone can see what's happening (see http://martinfowler.com/articles/continuousintegration.html) 8

CruiseControl What is it? (see http://cruisecontrol.sourceforge.net) 9

Before.graffle.zip Before continuus Integration Manual steps Problems: Non reproducable errors Multiple configurations / versions (internal / external) Time consuming / boring work Time lag (Dev > Dist. > Test) 10

After continuous integration Automation with CruiseControl Helps with: Reproducable Automated! Everybody has (almost) the same code Reference build Fast feedback Cross plattform builds 11

Continuous Integration Informing Helps with: Finding last working build Aggregating test results 12

Continuous Integration Informing / Reference (with some help of O(SGi)BR) Helps with: Having a working binary Overview of all modules 13

Continuous Integration Learned Lessons Don t underestimate the power of light and lava! Danger: If it is too fast people will use it. Central point for feedback (see http://www.cleware.de)

Bug (Issue) Tracking

(Some of) the problems Developer domain: Who is working on that module? Is there any documentation / FAQ / written text besides code? Where is the code? Why do we have that software module twice / not / not working? What is it doing? Which classes are relevant for this feature? Does this work on Solaris / Linux / OSX / Windows? Is a memory stick sufficient to transfer the working software to the production system or do we need a portable hard drive? Let me fix that quick. 16

(Some of) the problems Project lead domain: Who was working on that module? Is there anything I can use as a starting point for documentation? What is X doing now / this week / next week? Which classes have you changed? Why did you not comment that commit? The client wants a working version next week. It does not matter if all features are available. We solved that problem with module X in project Y. Where is it? Why not working? 17

Bug (Issue) Tracking Overview Simple bug tracking: What defects to we have? What features do we need? But bug tracking is much more! Filtering / Threading / Sorting Task Assignment / Retrieval / Timekeeping Starting point for documentation FAQ Reference repository through linked Wiki / Attachments 18

trac What is it? Wiki Simple Project Planner Timeline (see http://trac.edgewall.org)

trac Source Browser

trac Bug Tracker

Documentation Incoming Problem / task refinement via Mail Problems: Unsorted High volume / Low SNR Changing topics (No threading) Also true for other sources like PDF etc. 22

Documentation Processing Filtering via trac Solves: Assignment / Threading Clears out chatter FAQ Overview Can be found 2 months later 23

Documentation Outgoing Consolidation in the report Solved problems: Who was working on that? How long did it take? (if you want to know) Problem description References (Wiki / Attachments) 24

Bug Tracking Learned lesson Many solutions that would have solved the problem. 25

Bug Tracking Learned lesson Find out what people like, and make it easy to use. 26

Focused development

(Some of) the problems Developer domain: Who is working on that module? Is there any documentation / FAQ / written text besides code? Where is the code? Why do we have that software module twice / not / not working? What is it doing? Which classes are relevant for this feature? Does this work on Solaris / Linux / OSX / Windows? Is a memory stick sufficient to transfer the working software to the production system or do we need a portable hard drive? Let me fix that quick. 28

(Some of) the problems Project lead domain: Who was working on that module? Is there anything I can use as a starting point for documentation? What is X doing now / this week / next week? Which classes have you changed? Why did you not comment that commit? The client wants a working version next week. It does not matter if all features are available. We solved that problem with module X in project Y. Where is it? Why not working? 29

Focused development Overview Task focused development Only display necessary information Provide one place to view Code Bugs in an integrated way 30

(see http://trac.edgewall.org) Mylyn What is it?

Problems: Empty commit messages Unrelevant projects / classes / methods displayed Everything all the time Before Mylyn 32

After Mylyn Helped with: Automatically providing commit messages Linking of commits to Bugs Reducing information overload in Eclipse Providing context for next developer Fast context switches 33

Focused development Learned lesson Very nice tool Problem of transferring contexts to other developers not yet solved thus not used by us. 34

Global lessons learned Automate all tasks that you would do twice Give everyone an overview of His tasks The tasks of the other team members Find the right tools Fit into the state of mind of your team Easy to use 35

Reading The Pragmatic Programmers http://www.pragprog.com/ Martin Fowler http://martinfowler.com/books.html Thank you foryourattention! 36