12.07.2015 Views

Adopting a Collaborative Software Development Process in the ...

Adopting a Collaborative Software Development Process in the ...

Adopting a Collaborative Software Development Process in the ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Adopt<strong>in</strong>g</strong> a <strong>Collaborative</strong> <strong>Software</strong><strong>Development</strong> <strong>Process</strong> <strong>in</strong> <strong>the</strong> ScientificCommunityNOAA's 32nd Climate Diagnostics and Prediction Workshop (CDPW)Mike CharlesDOC/NOAA/NWS/NCEP/CPC


MotivationTo advocate improved software development and projectmanagement techniques, <strong>in</strong>clud<strong>in</strong>g collaborativesoftware development and <strong>the</strong> use of projectmanagement software.Who does this apply to?UniversitiesGovernmentPrivate sector• Any software developersFrom now on, for <strong>the</strong> sake of brevity, "collaborative work"will <strong>in</strong>clude use of project management software.


Disadvantages of Non-<strong>Collaborative</strong> Work


Non-<strong>Collaborative</strong> WorkA developer works alone• Work goes unchecked by o<strong>the</strong>rs• If <strong>the</strong> owner leaves, nobody knows how <strong>the</strong> softwareworks• There are no ideas contributed by o<strong>the</strong>rs dur<strong>in</strong>gdevelopment


Non-<strong>Collaborative</strong> WorkA developer doesn't log changes• Hard to revert to a previous version of <strong>the</strong> code• Can't remember what <strong>the</strong>y did last week• Can't tell why a specific change was made


Non-<strong>Collaborative</strong> WorkA developer doesn't create documentation• Hard for o<strong>the</strong>rs to adopt code• Hard for backup code owners to fix bugs and/or runcode• Hard to share code with o<strong>the</strong>rs


Advantages of<strong>Collaborative</strong> Work


<strong>Collaborative</strong> WorkHow should developers be work<strong>in</strong>g?• Collaboration - Work<strong>in</strong>g with o<strong>the</strong>rs leads to moreideas and creativity, and more QC<strong>in</strong>g of code• Track<strong>in</strong>g Changes - Us<strong>in</strong>g revision control software,track<strong>in</strong>g changes to code and keep<strong>in</strong>g a log makes iteasier to revert to older versions of <strong>the</strong> code, and keeptrack of work• Documentation - Creat<strong>in</strong>g documentation and putt<strong>in</strong>gcomments <strong>in</strong> code makes <strong>the</strong> code easier tounderstand and edit, and makes it easier to sharecode with o<strong>the</strong>rs


<strong>Collaborative</strong> WorkHow do we know <strong>the</strong>se methods are better?Open source software is a great model:• Started <strong>in</strong> 1983 - GNU Project - free software• Open source software is free to edit and distribute• Usually developed collaboratively• Usually conta<strong>in</strong>s sufficient documentation• Meant to be shared with many o<strong>the</strong>rs• L<strong>in</strong>ux operat<strong>in</strong>g system entirely based <strong>in</strong> open source• Essentially, open source practices promote bettersoftware development


Project Management<strong>Software</strong>


<strong>Collaborative</strong> Work<strong>Software</strong> to help with collaborative development...• Wiki – A web site developed collaboratively by acommunity of users, allow<strong>in</strong>g any user to add and editcontent.• Revision Control – Management of changes todocuments and software, <strong>in</strong>clud<strong>in</strong>g a history of allchanges made and logg<strong>in</strong>g for each change.• Issue Tracker – <strong>Software</strong> that manages a list of issuesor tasks that need to be fixed or completed.There are open source versions of all of <strong>the</strong>se.


WikiWhat is a Wiki page?• Webpage conta<strong>in</strong><strong>in</strong>g text, pictures, and o<strong>the</strong>r<strong>in</strong>formation that can easily be edited by a team ofpeople• For example, developers can create a new wiki pagefor each component of a piece of software (eg. gui,database backend, etc.)• Developers can also use wiki pages to documentscripts and source code


Wiki - TracCan format text and images any way you want


Wiki - TracCreat<strong>in</strong>g a Wiki pageStep 1 - Enter <strong>the</strong> URL of a page you want to makeStep 2 - Click "Create this page", us<strong>in</strong>g an optional templateStep 3 - Add your content


Wiki - TracKeeps history of all Wiki edits


Wiki - TracVisual diff between any 2 versions


Revision ControlWhat is Revision Control?• Manag<strong>in</strong>g and track<strong>in</strong>g changes to code, documents,and directories.


Revision Control - SubversionKeeps history & log messages of all changes


Revision Control - SubversionMerges changes from multiple developersRepositoryMikeKellyBrianCode is copied from repository, edited <strong>in</strong> each developer's isolatedenvironment, <strong>the</strong>n sent back to <strong>the</strong> central repository


Issue Track<strong>in</strong>gWhat is issue track<strong>in</strong>g?• Manag<strong>in</strong>g a list of issues or tasks• Manage a list of "tickets" which can be assigned todifferent developers and store a history of commentsmade by any of <strong>the</strong> developers


Issue Track<strong>in</strong>g - TracCreate ticket for a specific task or issue


Issue Track<strong>in</strong>g - TracAnyone can comment on tickets, reassign, etc.


Issue Track<strong>in</strong>g - TracList tickets us<strong>in</strong>g optional filters


Subversion/Trac ComboRSS feed supportEmail notification of changes to ticketsCreate milestones100s of plug<strong>in</strong>s available for Trac• View source code & Subversion code history with<strong>in</strong>TracConnect specific tickets to specific code revisions• Use Trac to keep track of all work done on a project


Summary• Current practice <strong>in</strong> many organizations is fordevelopers to work alone on software• Better practice is to work collaborativelyWikis help a team share documentation• Version control helps track changes to code andrevert to any previous version• Issue track<strong>in</strong>g helps developers assign tasks andtrack work on issues and tasks• We should all use open source software as a modelfor efficient, creative work


Thank youTrac - http://trac.edgewall.orgSubversion - http://subversion.apache.orgAny questions - email me at mike.charles@noaa.gov

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!