Collaborative Software Development



Similar documents
Software Construction

Modern practices TIE-21100/

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

SOFTWARE DEVELOPMENT BASICS SED

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

Traditional Commercial Software Development. Open Source Development. Traditional Assumptions. Intangible Goods. Dr. James A.

Continuous Integration on System z

Continuous Integration: A case study

Upping the game. Improving your software development process

Modeling and Simulating Free/Open Source Software Development Processes

Continuous Integration: Put it at the heart of your development

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Delivering Quality Software with Continuous Integration

What You Should Know About Open Source Software

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Continuous Integration. CSC 440: Software Engineering Slide #1

Global Software Development: Issues, Solutions, Challenges

Effektiver Tool-Einsatz

Best Practices for Java Projects Horst Rechner

Successfully managing geographically distributed development

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

FOSS License Restrictions and Some Important Issues

Introduction to Agile Software Development Process. Software Development Life Cycles

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

Continuous Integration Optimizing Your Release Management Process

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

CHAPTER 7 Software Configuration Management

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

MANUAL TESTING. (Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn.?? New Batches Info

Bridging the Gap Between Acceptance Criteria and Definition of Done

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

Introduction to Open Source. Marco Zennaro Carlo Fonda

Selection and Management of Open Source Software in Libraries.

How To Write Unit Tests In A Continuous Integration

Testing Tools Content (Manual with Selenium) Levels of Testing

Software Development In the Cloud Cloud management and ALM

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

Two case studies of Open Source Software Development: Apache and Mozilla

Presentation. Open Source is NOT Free. For ISACA. By Dave Yip / Gamatech Ltd. Agenda

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Software Configuration Management and Continuous Integration

"Build and Test in the Cloud "

ICAgile Learning Roadmap Agile Testing Track

Free software GNU/Linux TOR project

Agile Systems Engineering: What is it and What Have We Learned?

On the Influence of Free Software on Code Reuse in Software Development

Modernizing enterprise application development with integrated change, build and release management.

What is meant by the term, Lean Software Development? November 2014

Java Software Quality Tools and techniques

Continuous Integration (CI)

Continuous Integration

FSW QA Testing Levels Definitions

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Software Configuration Management Best Practices for Continuous Integration

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Meister Going Beyond Maven

Open Source Software Development

FOSSBazaar A Governance Initiative to manage Free and Open Source Software life cycle

Guide to Mobile Testing

Software infrastructure for Java development projects

Impact of cloud computing

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

DevOps Course Content

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

Software configuration management

Continuous Integration

a new generation software test automation framework - CIVIM

NXTware Remote. Advanced Development and Maintenance Environment for OpenVMS and other Strategic Platforms

Continuous Integration Processes and SCM To Support Test Automation

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

Introduction to Automated Testing

Implementing Continuous Integration Testing Prepared by:

Agile Requirements Definition for Software Improvement and Maintenance in Open Source Software Development

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Open-source business models: Creating value from free stuff'

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

HP-UX 11i software deployment and configuration tools

Continuous Delivery. Alejandro Ruiz

Unit 10 : An Introduction to Linux OS

Introduction to Programming Tools. Anjana & Shankar September,2010

Week Overview. Installing Linux Linux on your Desktop Virtualization Basic Linux system administration

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

Atomate Development Process. Quick Guide

Red Hat Network Satellite Management and automation of your Red Hat Enterprise Linux environment

Transcription:

Collaborative Software Development and what we can learn from F/OSS development Martin Kropp Instute for Mobile and Distributed Systems Swisslog, Grindelwald, 28. Mai 2009

Objectives Some term clarifications Show how F/OSS development is organized Show how we can profit from F/OSSD CSD practices Describe some ingredients needed for effective CSD Institut für Mobile und Verteilte Systeme 2

l Agenda About Me CSD and GSD - What does that mean? GSD - Why should we care? F/OSSD The mother of CSD How does it work? Ingredients for CSD Communication, Process, Project Management, CI, Summary Institut für Mobile und Verteilte Systeme 3

About Me! Who am I? Institut für Mobile und Verteilte Systeme 4

l Agenda About Me CSD and GSD - What does that mean? GSD - Why should we care? F/OSSD The mother of CSD How does it work? Ingredients for CSD Summary Communication, Process, Project Management, CI, Institut für Mobile und Verteilte Systeme 5

Collaborative Software Development From Wikipedia, 26.05.2009: The collaborative software development model is a style of software development whose focus is on public availability and communication, usually via the Internet. The software development model began widespread adoption with the Linux kernel in 1991. It is the dominant model used in development of free software. It is very compatible with free software because free software projects publish the source code of any published programs, so they do not have the secrecy reason for hiding their communications and in-progress development. Institut für Mobile und Verteilte Systeme 6

Global Software Development Software work undertaken at geographically separated locations across national boundaries in a coordinated fashion involving real time (synchronous) and asynchronous interaction [Sundeep Sahay, University of Oslo] Institut für Mobile und Verteilte Systeme 7

Why should I do GSD? To Access to the world wide talent pool Cost savings Focus on where you get the best ROI Market presence understanding local needs being close to the customer Mergers and acquisitions Improved quality? Follow-the-sun / -seasons development gaining competitive advantage Budget Buyers & Project Proxies End Users Business Subject Matter Experts Project Team Technical Collaborators i.e. because you are a global company Institut für Mobile und Verteilte Systeme 8

Some reasons you might not want to do it Strategic choices timing, partners, how to maintain and gain competitive advantage? Management / comms overhead complexity Cultural issues Command chains in the org chart, attitude, individualism / collectivism, religions, politics, Communication issues time zones, distance, lack of informal communications, different backgrounds different language information systems Technical issues does your software architecture support distributed development model? see it rather as challenges Institut für Mobile und Verteilte Systeme 9

Challenge Matrix distance temporal geographical sociocultural communication X X X coordination X X control X X Institut für Mobile und Verteilte Systeme 10

And how does this relate to CSD? Institut für Mobile und Verteilte Systeme 11

l Agenda About Me CSD and GSD - What does that mean? GSD - Why should we care? F/OSSD The mother of CSD How does it work? Ingredients for CSD Summary Communication, Process, Project Management, CI, Institut für Mobile und Verteilte Systeme 12

F/OSSD - The Mother of CSD Plublic availability Communication and there is more! Institut für Mobile und Verteilte Systeme 13

A Short History of F/OSSD 1984 Richard Stallman founds the Free Software Foundation ( FSF ) (www.fsf.org) in 1985 to develop free version of a UNIX operating system Promulgates GNU Public License ( GPL ) 1994 Linux 1.0 is release under the GPL by Linus Torvalds 1998 Open Source Initiative ( OSI ) is founded www.opensource.org Coins term Open Source Certifies and lists open source licenses that conform to the OSD 2003 Linux OS/Apache Web Server are mainstream (27% and 70% of markets, respectively) Institut für Mobile und Verteilte Systeme 14

Open Source Software A Success Story? How many successful projects can you name? How many OS projects do exist? Institut für Mobile und Verteilte Systeme 15

Open Source Software A Success Story! Collaborative Development Distributed Development Institut für Mobile und Verteilte Systeme 16

F/OSSD (and CSD) How it works? Requirements and design Configuration management and work coordination Maintenance and Evolution Project management/career development Development Paradigm Institut für Mobile und Verteilte Systeme 17

F/OSSD Requirements and Design F/OSS Requirements/Designs not explicit not formal F/OSS Requirements/Designs are embedded within informalisms F/OSS Requirements/Design processes are different from their SE counterparts. Institut für Mobile und Verteilte Systeme 18

F/OSSD informalisms Project digests Project repositories Issue tracking databases Email lists Software bug News postings IM/Internet Discussion reports Relay Chat forums To-do lists Scenarios of usage How-to guides FAQ s and item lists Project Wikis Architecture diagrams System documentation Plug-ins External publications Intra-app scripting Copyright licenses Code from other projects Project Web site Multi-project Web sites Project source code etc. Institut für Mobile und Verteilte Systeme 19

Configuration Mgmt and Work Coordination Use CM to coordinate and control who gets to update what part of the system/online artifacts Most F/OSSD projects use version control systems and frequent releases (daily releases on active projects) Apache: Single major release, with frequent patch releases (e.g., A patchy server ) Institut für Mobile und Verteilte Systeme 20

Maintenance and Evolution Overall evolutionary dynamic of F/OSSD is reinvention Reinvention enables continuous improvement F/OSS evolve through minor mutations Expressed, recombined, redistributed via incremental releases F/OSS systems co-evolve with their development community Success of one depends on the success of the other Institut für Mobile und Verteilte Systeme 21

Project Management and People F/OSSD projects self-organize as a pyramid meritocracy via virtual project management Ad hoc alliances, free participation, work is not assigned, Main motivation is learning and creation Status by the practice of using F/OSS developers want to have fun learn about new stuff (tools, techniques, skills, etc.), exercise their technical skill, try out new kinds of systems to develop, interconnect multiple F/OSSD projects (freedom of choice and expression) exchange with others Institut für Mobile und Verteilte Systeme 22

F/OSSD Roles and Pyramid Meritocracy Project Leader Core members (<15) Active developers Peripheral developers Bug reporters Readers Passive users (99% in Apache) Bug fixers Institut für Mobile und Verteilte Systeme 23

Characteristics Summary of F/OSSS and CSD Extensive involvement of user/developer community Forums, mails, issues trackings, wiki The developers must be users Bug finding and fixing is done by users -> low post-release defect density and high productivity due to independence of tasks. early and often Releases Nightly builds Very lightweight Intensive use of informalism High modularized software Common Code ownership Automation Self-organizing Institut für Mobile und Verteilte Systeme 24

F/OSSD CSD vs. Closed Source CSD Public availability (May be) a roadmap Feature requests Users Losely organized Closed source Tight schedule Strong requirements A client Strict organization Institut für Mobile und Verteilte Systeme 25

l Agenda About Me CSD and GSD - What does that mean? GSD - Why should we care? F/OSSD The mother of CSD How does it work? Ingredients for CSD Summary Communication, Process, Project Management, CI, Institut für Mobile und Verteilte Systeme 26

Ingredients For Effective CSD In distributed teams Good Communication Strong Development Process Good Project Management Continuous Integration Institut für Mobile und Verteilte Systeme 27

Good Communication Email Skype IM Wikis Web Plattform Conference Calls Video Conferencing Direct Meeting Exchange programs Travelling Institut für Mobile und Verteilte Systeme 28

Strong Development Process TDD Code Reviews Teams-of-Teams Sprints Mentoring Discipline Institut für Mobile und Verteilte Systeme 29

Project Management Bug Tracking Feature Planning Release Planning Version Management Cross Training Institut für Mobile und Verteilte Systeme 30

Continuous Integration CSD in practice Continuous integration is the strategy of making sure that changes to the project s code base are built, tested and reported on as soon as possible after they are introduced Institut für Mobile und Verteilte Systeme 31

CI Prerequisites Your code is maintained in a central repository You have automated the complete build of your system You have included regression tests in the codebase as part of the project. you have included automated reporting about build success you have a CI infrastructure with build server, test server, deployment server Institut für Mobile und Verteilte Systeme 32

Practices of Continuous Integration 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 Institut für Mobile und Verteilte Systeme 33

CI Infrastructure Monitors projects/paths in source repository Development Deployment Server build server vcs server Build Script Executes tasks on schedule/event -Get latest version - Build - Code Audit -Unit Test -Code Coverage -Deploy build report developers Get local copies / Commit changes Institut für Mobile und Verteilte Systeme 34

CI Benefits Finding Bugs is easier Self-testing builds Diff debugging Less cumulative bugs Reduced Risks Easier predictions Avoid blind spots in the project Developers can concentrate on coding Encourage more frequent deployment Institut für Mobile und Verteilte Systeme 35

Automate The Build It s not just compiling The entire set of ALL steps needed to obtain the software product Use Tools like Maven, ant, Institut für Mobile und Verteilte Systeme 36

When To Build l Every successful change causes a commit Of course, after testing Every commit triggers a build Partial builds any time Full builds nightly builds Institut für Mobile und Verteilte Systeme 37

Build Resources Input Anything that s needed for the product? Output Anything that s needed for Installation Execution Documentation Institut für Mobile und Verteilte Systeme 38

Self-Testing Builds Automated tests No manual execution No clicks on dialog boxes No config editing Test on all levels Unit test (use mocks for isolated tests) Junit, easymock Db test - dbtest Integration test Fit/Fitness, Selenium Acceptance test Fit/Fitnesse GUI test FEST Web Test WebTest Institut für Mobile und Verteilte Systeme 39

Build Tasks Not just build and test code Include auditing Metrics Code quality analysis Code coverage Test analysis Statistics Institut für Mobile und Verteilte Systeme 40

Provide Feedback Everybody sees what s going on Institut für Mobile und Verteilte Systeme 41

Summary GSD is a must in any global acting company It comes with a lot of challenges and issues distance, culture, CSD provides some very helpful practices to address challenges Common code owenship Using informalism Providing feedback Establish automation and Mr Brooks is still right there is no silver bullet! Institut für Mobile und Verteilte Systeme 42

Resources Books Eric S. Raymond, The Cathedral & the Bazaar. O Reilly, 2001 Musings on Linux and Open Source by an Accidental Revolutionary James A. Highsmith III: Adaptive Software Development: A Collaborative Approach to Managing Complex Systems- Dorset House Publishing Company, 1999. Erran Carmel: Global Software Teams: Collaborating Across Borders and Time Zones. Prentice Hall, 1998. Dean Leffingwell: Scaling Software Agility: Best Practices for Large Enterprises. Addison- Wesley, 2003. Edward Yourdon: Competing in the Global Productivity Race. Prentice Hall, 2004. Dale Walter Karolak, Global Software Development: Managing Virtual Teams and Environments. Wiley-IEEE Computer Society, 1998. Raghvinder Sangwan, Matthew Bass, Neel Mullick, Daniel J. Paulish, Juergen Kazmeier, Global Software Development Handbook. AUERBACH, 2006. Institut für Mobile und Verteilte Systeme 43

Design and programming are human activities; forget that and all is lost. Bjarne Stroustrup, 1991 Thank you very much for your attention! You can reach me under: martin.kropp@fhnw.ch Institut für Mobile und Verteilte Systeme 44