Collaborative Software Development

Collaborative Software Development

Software development • Several users work on a same project – Remote or collocated users – Each one works on its own computer Groupware and Collaborative Interaction (asynchronous) Collaborative Software Development • Work on different tasks • Work at different times ! • Collaboration is hard to organize M2R Interaction - Université Paris-Sud - Année 2013-2014 Cédric Fleury ([email protected]) – Versioning, synchronization between users – Tasks distribution, social aspects Collaborative Software Development - M2R Interaction - Cédric Fleury !2 Outline Outline • Collaborative software development • Collaborative software development ! ! – Version control – Version control ! ! – Continuous integration – Continuous integration ! ! – Agile methods – Agile methods Collaborative Software Development - M2R Interaction - Cédric Fleury !3 Collaborative Software Development - M2R Interaction - Cédric Fleury !4 Version control Version control • Problematic • Problematic – We want to avoid this: – We want to avoid: • Manually share the files (USB key, email, Dropbox) • Delete or overwrite the files of other users • Broke all the project by making a mistake ! – We want to able to: • Edit the project at the same time • Keep an history of the modification • Keep the older version of the files + hierarchy [“Piled Higher and Deeper” by Jorge Cham: www.phdcomics.com] Collaborative Software Development - M2R Interaction - Cédric Fleury !5 Collaborative Software Development - M2R Interaction - Cédric Fleury !6 Version control Version control • Version control software • 2 kinds of architecture – Save & restore different versions of the files – Centralized – Synchronize users’ versions • CVS, SVN, … – Keep track of modifications and their authors – Decentralized (peer-to-peer): – Manage Branching and merging • GNU Arch, Mercurial, Bazaar, Git,… ! ! • Not only for software development – Decentralized can be used as a Hybrid – Report, images, data from experiments Architecture • One peer can be a central server Collaborative Software Development - M2R Interaction - Cédric Fleury !7 Collaborative Software Development - M2R Interaction - Cédric Fleury !8 Version control Version control • Centralized • Decentralized architecture architecture Collaborative Software Development - M2R Interaction - Cédric Fleury !9 Collaborative Software Development - M2R Interaction - Cédric Fleury !10 Version control Version control • Hybrid • Vocabulary (SVN) Centralized Architecture architecture – Architecture • Repository • Working copy – Actions • Checkout • Update • Commit • Revert • Diff, log, status Collaborative Software Development - M2R Interaction - Cédric Fleury !11 Collaborative Software Development - M2R Interaction - Cédric Fleury !12 Version control Version control • Vocabulary (Git) Hybrid Architecture • Drawbacks of the centralized architecture – Architecture • Remote and local repository – Just one access point to the data • Working copy – Just one communication point between users – Actions – Just one historic of the files • Clone – Versioning and sharing are the same operation • Pull, Push • Need to have a stable state before "committing" • Commit • Reset • Diff, log, status Collaborative Software Development - M2R Interaction - Cédric Fleury !13 Collaborative Software Development - M2R Interaction - Cédric Fleury !14 Version control Version control • Good practices • Users can modify the same file – But at different part/section of the files – Work on the local copy ! – Send the modification • If they modify the same part of a file • Check if the code compiles locally – A conflict appends • Check for updates from the other users • Usually, it cannot be resolve automatically – Manage conflicts if there are some • Users have to fix the conflit • Check if the code compiles with the updates – By telling to the system, which version is correct • Commit the code on the shared version (server) – By merging the modifications of the users Collaborative Software Development - M2R Interaction - Cédric Fleury !15 Collaborative Software Development - M2R Interaction - Cédric Fleury !16 Version control Version control • Conflicts management • Conflicts management 08/10/2010 11:44 AM 94 test.txt C:\workspace\test>svn up 08/10/2010 11:44 AM 26 test.txt.mine Conflict discovered in 'test.txt'. 08/10/2010 11:44 AM 27 test.txt.r2 Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved, 08/10/2010 11:44 AM 31 test.txt.r3 (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p C test.txt test.txt Updated to revision 3. Summary of conflicts: <<<<<<< .mine Text conflicts: 1 test User2 making conflict ======= User1 am making a conflict test >>>>>>> .r3 Collaborative Software Development - M2R Interaction - Cédric Fleury !17 Collaborative Software Development - M2R Interaction - Cédric Fleury !18 Version control Version control • Tools for conflict management (TortoiseMerge) • Tools for conflict management (TortoiseMerge) Collaborative Software Development - M2R Interaction - Cédric Fleury !19 Collaborative Software Development - M2R Interaction - Cédric Fleury !20 Version control Version control • Tools for conflict management (SmartGit) • Tools for conflict management (SmartGit) Collaborative Software Development - M2R Interaction - Cédric Fleury !21 Collaborative Software Development - M2R Interaction - Cédric Fleury !22 Version control Version control • Conflicts management • Collaboration scenario : centralized (SVN) – To avoid conflict: ! • Users are able to "lock" a file – Only the user who locks the file can modify it – If another user try to lock a file while it is locked by another user, he receives an error message ! • Users have to manually unlock the file when they have finished to work on it. Collaborative Software Development - M2R Interaction - Cédric Fleury !23 Collaborative Software Development - M2R Interaction - Cédric Fleury !24 Version control Version control • Collaboration scenario : decentralized (Git) • Collaboration scenario : decentralized (Git) – Integrator mode • A repository is in charge of the test Inter-personal communications Collaborative Software Development - M2R Interaction - Cédric Fleury !25 Collaborative Software Development - M2R Interaction - Cédric Fleury !26 Version control Version control • Collaboration scenario : decentralized (Git) • Collaboration scenario : decentralized (Git) – Dictator mode – Multi-location team • Open-source • Each team can work independently projects • Regular integration of the work of each team • "Lieutenants" can be done make a first check before sending to the "dictator" Collaborative Software Development - M2R Interaction - Cédric Fleury !27 Collaborative Software Development - M2R Interaction - Cédric Fleury !28 Version control Version control • Historic management • Historic management – Computation of the historic is linear – SVN assigns a revision according to the « commit" order number to all the project ! – Git assigns a revision number peer file ! – This difference has a strong impact on collaboration • Using branch for collaboration is easier with Git Collaborative Software Development - M2R Interaction - Cédric Fleury !29 Collaborative Software Development - M2R Interaction - Cédric Fleury !30 Version Control Version Control • Branch management • Branch management ! – Merging branch (very complex to achieve with SVN) ! ! ! ! – SVN make a copy of the all repository – Git make a link to a particular state of the files Collaborative Software Development - M2R Interaction - Cédric Fleury !31 Collaborative Software Development - M2R Interaction - Cédric Fleury !32 Version Control Version Control • Branch management • Branch management – Each user can work on particular branches – Classical organisation – Branches can be synchronized between users of a project into branches ! http://nvie.com/posts/a- successful-git-branching-model/ Collaborative Software Development - M2R Interaction - Cédric Fleury !33 Collaborative Software Development - M2R Interaction - Cédric Fleury !34 Outline Continuous integration • Collaborative software development • Integration ! – Merging the work of several developers – Version control • Goals ! – Test modifications form the beginning – Continuous integration – Detect integration problems at an early stage ! – Avoid fastidious integration phases – Agile methods – Always have the system running • Tests, demos, discussion with the customers http://martinfowler.com/articles/continuousIntegration.html Collaborative Software Development - M2R Interaction - Cédric Fleury !35 Collaborative Software Development - M2R Interaction - Cédric Fleury !36 Continuous integration Continuous Integration • Principles • Feedbacks for collaboration – Version control on a repository – Token on the desk of the person who builds – Automatic and fast build – Auto-testing – Make a sound when a build is valid – "Commit" every day – Web page of the integration server – Deployment on an – Bubble light integration computer – Wallboard after each "commit" – Automatic deployment – Executable always available – Every body know the build state Collaborative Software Development - M2R Interaction - Cédric Fleury !37 Collaborative Software Development - M2R Interaction - Cédric Fleury !38 Outline Software development • Collaborative software development • Methods for software development ! – No methods: "Code and fix" – Version control • Efficient for small project • Difficult to add new features or to find bugs ! ! – Continuous integration – Engineering / plan-driven methodologies

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    12 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us