Software Development Management. Mathieu Lacage - DREAM

Similar documents
Software Engineering Process. Kevin Cathey

Content. Development Tools 2(63)

Improving your Drupal Development workflow with Continuous Integration

Software Construction

Continuous Delivery. Alejandro Ruiz

Software Engineering I (02161)

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

Continuous Integration and Delivery at NSIDC

Delivering Quality Software with Continuous Integration

Software Life Cycles and Configuration Management

Software configuration management

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

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

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

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

Automatic promotion and versioning with Oracle Data Integrator 12c

Software infrastructure for Java development projects

Software Configuration Management Best Practices for Continuous Integration

Theme 1 Software Processes. Software Configuration Management

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

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

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

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Vaidya Guide. Table of contents

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

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

Source Code Control & Bugtracking

Revision control systems (RCS) and

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Software Configuration Management. Addendum zu Kapitel 13

IT Home 2015 DevOps 研 討 會

Case Study: Using Jenkins to Build WebSphere Portal Applications for the Enterprise. #jenkinsconf. Jenkins User Conference Boston #jenkinsconf

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

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

Build management & Continuous integration. with Maven & Hudson

Achieving Continuous Integration with Drupal

Configuration & Build Management

Version Control Tools

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.

Software Configuration Management

Introduction to Version Control

SOFTWARE DEVELOPMENT BASICS SED

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

MDSplus Automated Build and Distribution System

Software Continuous Integration & Delivery

Continuous integration with Jenkins CI

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Accelerate Software Delivery

The ROI of Test Automation

Continuous Integration. CSC 440: Software Engineering Slide #1

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

Continuous Integration Just another buzz word?

Documentation and Project Organization

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

Enabling Agile Testing Through Continuous Integration

Continuous Integration

Upping the game. Improving your software development process

Software Quality Exercise 2

Solving the Software Quality Challenges of Agile Development

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

"Code management in multi programmer environments."

Version Control with Subversion and Xcode

IBM Rational Software

Version Control with. Ben Morgan

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Application Lifecycle Management White Paper. Source Code Management Best Practice: Applying Economic Logic to Migration ALM

Software development. Outline. Outline. Version control. Version control. Several users work on a same project. Collaborative software development

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

SAS in clinical trials A relook at project management,

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Automated build service to facilitate Continuous Delivery

Lab 0 (Setting up your Development Environment) Week 1

Version Control! Scenarios, Working with Git!

Software Engineering Practices for Python

Codeless Test Automation for Web Apps

Scrum and Agile methods The real world

Continuous Integration (CI)

Improving software quality with an automated build process

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

Source Control Systems

Software Configuration Management

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Version Control with Git. Dylan Nugent

Ministry Software Configuration Management Policies and Procedure for Source Material Management

Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.

False Positives & Managing G11n in Sync with Development

Surround SCM Best Practices

Two Best Practices for Scientific Computing

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

Agile version control with multiple teams

Transcription:

1 Software Development Management Mathieu Lacage - DREAM

2 Facts Every piece of software is damn horrible. It is: hard to use buggy late hard to build There is a silver bullet to solve these problems. It is called Software Development Management. My grandfather used to call it Common Sense.

3 Macro vs Micro Management Macro Decisions do you need to use library X? when do you want to complete the project? what features must be implemented? Micro Decisions how do you add featurelet X to the project? hack it into objects A, B and C? create a new object D?

4 Macro Decisions If you try to avoid these decisions, you will regret it To avoid future problems, you need an ordered list of requirements. For example: Platforms the software must run on (typically, OS) Environments in which the software must be built (this includes the OS, compiler, library versions, etc.) List of people who will write the software. Are they proficient in many programming languages? Typical user profile: researcher, Mr Smith, etc.? Availability date Each requirement has an influence on the time needed to create the software and the quality of the final product.

5 Micro Decisions Every day, every second, small decisions must be made on how to build the software, how to add a function: language-specific: requires knowledge of the language idioms language-independent: requires knowledge of many development idioms to pick the right one Obviously, the hard part here is the knowledge issue: you need to acquire experience.

6 How can you acquire more experience? Even a level 5 guru started at level 0. A few ideas: read code from open source projects talk to your co-workers about your code and their code try to ask yourself how you can improve your own code obey the 7 Rules

7 Rule 1: SCM Source Code Management is not a luxury: zip archives are worthless named directories are worthless Required features: easy log browsing (thus the need for decent log messages) easy rollback to earlier versions branch creation and merging Possible solutions: CVS (http://www.nongnu.org/cvs/) SVN (http://subversion.tigris.org/) Mercurial (http://www.selenic.com/mercurial)

8 Rule 2: SCM Tagging Tag the Repository for each release Yes, zip archives are worthless This is the only reliable way to reproduce the bugs reported by the users

9 Rule 3: ChangeLog One change = one entry in the ChangeLog file Describe the goal of the change and how it was implemented in each entry Copy the ChangeLog entry in your SCM commit message It is possible to automate the task of generating the bulk of each ChangeLog entry Add an entry for each release

10 Rule 3: ChangeLog (2) 2003-06-25 David Bordoley <borodley@msu.edu> * src/nautilus-shell.c: (open_window): Prefer an existing window for a location when opening a location from the command line and the user's preference is open in new window mode. === nautilus 2.3.5 === 2003-06-23 Dave Camp <dave@ximian.com> * NEWS * configure.in: Bumped version to 2.3.5.

11 Rule 4: Coding Style Do not invent one Do not change the existing coding style Use the coding style of the file changed Ideally, you cannot guess who wrote what Examples: C: http://www.gnu.org/prep/standards/standards.html#formatting http://lxr.linux.no/source/documentation/codingstyle C++ http://geosoft.no/development/cppstyle.html Java http://geosoft.no/development/javastyle.html

12 Rule 5: Documentation It is a communication medium: it is worthless if no one reads it Do not document that copy_object copies object: the name is obvious (great choice of name btw!) the source code is most likely trivial: we can read it Focus on the important issues: global program structure global dynamic control flow

13 Rule 6: Automated tests Why using automated tests? they help catch regressions: new code is tested against known bugs. How to do it? do not test the normal behavior: while useful, it has a very low return on investment to cost ratio. test side effects focus on the easy stuff add a test for each bug for which you can easily write an automatic test case Use a test coverage tool. i.e., gcov http://gcc.gnu.org/onlinedocs/gcc/gcov.html Example: http://tinyurl.com/8gnse

14 Rule 7: Code review It helps you focus on what you did and why you did it Reviewer: How did you test? Why did you do this there? Reviewee: must be able to justify each line changed

15 Recommended reading Books Refactoring, improving the design of existing code, by Martin Fowler, Addison Wesley The mythical man-month by Frederick P. Brooks, Addison Wesley Find the Bug: A Book of Incorrect Programs, by Adam Barr (Chapter 2, which deals with code reading techniques, is a gem) Papers: Agile Software Development Methods: http://www.inf.vtt.fi/pdf/publications/2002/p478.pdf A collection of great Software Design articles by Alistair Cockburn: http://alistair.cockburn.us/crystal/articles/alistairsarticles.htm

Conclusion 16 we can provide ChangeLog generation scripts we can answer questions on programming/refactoring/debugging/optimisation subjects we can provide advice on program architecture DREAM answers all emails: dream@sophia.inria.fr