Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Expressions for SCM-Systems

ElmarDott
September 01, 2018

Expressions for SCM-Systems

In the last decades, many standards were established to increase productivity during Software Lifecycle Management. All these techniques and methodologies promise a higher success rate in software projects which could affirm themselves in the case the involved protagonists are willing to follow the instances recommended. Semantic Versioning 2 , for example, addresses the information leak between functional changes, BugFixes and compatibility of existing and future releases of artifacts. Diving deeper into the daily craftsmanship of software projects enables us to identify the Source Control Management Systems (SCM) as a big treasure box. Much information can be extracted from these repositories, which are currently ignored for project analyzing. This paper discusses options to improve data collection for controlling software projects.

Full Paper on Research Gate: https://www.researchgate.net/publication/324907228_Expressions_for_Source_Control_Management_Systems

--------------------------------------------------------------------------------------------------
Homepage : https://elmar-dott.com
AnchorFM : https://anchor.fm/elmar-dott
Twitter - https://twitter.com/ElmarDott
GitHub - https://github.com/ElmarDott
Lbry - https://lbry.tv/@elmar.dott:8
BitChute - https://www.bitchute.com/channel/3IyCzKdX8IpO/
--------------------------------------------------------------------------------------------------

ElmarDott

September 01, 2018
Tweet

More Decks by ElmarDott

Other Decks in Research

Transcript

  1. Expressions for SCM-Systems (c) Creative Commons CC BY-ND 2018 Marco

    Schulz
  2. 2 The Author Dipl. (Inf) Marco Schulz • Studies on

    HS Merseburg, Germany • Senior Consultant in international Projects • Build & Process Automation • Experience in web development since 2000 • Writer of different technical articles • 2015 Camino de Santiago from Pamplona – Santiago de Compostela – Finisterre/ Costa da Morte – 800 km walking on the Way of Sankt James + Project Manager + Consultant + Writer + Speaker + Trainer + CC BY-ND Expressions for SCM-Systems
  3. 3 Table Of Content • Introduction • Definitions and SCM

    basics • Scenarios on SCM • Release Process • A vocabulary for Commit Messages • Conclusion CC BY-ND Expressions for SCM-Systems
  4. 4 Introducion Source Control Management (SCM) […] records who did

    when which change on the software source code of a project. The history allows in case of failures to restore a previous version. A managed source repository by SCM is mandatory for collaborative teams to exchange their work. Types of SCM Tools > File & Directory based Repositories (Microsoft Visual Source Safe) > centralized Repositories (CSV, Subversion, ...) > distributed Repositories (Git, Mercurial, ...) Expressions for SCM-Systems CC BY-ND
  5. 5 Definitions Repository: ”A PLACE, ROOM, OR CONTAINER WHERE IS

    DEPOSITED OR STORED” Revision: ”A CHANGE OR A SET OF CHANGES THAT CORRECTS OR IMPROVES SOMETHING” Release: ” TO GIVE PERMISSION FOR PUBLICATION, PERFORMANCE , EXHIBITION, OR SALE OF ; ALSO : TO MAKE AVAILABLE TO THE PUBLIC” Tag: ”A DESCRIPTIVE OR IDENTIFYING EPITHET” Trunk: ”THE CENTRAL PART OF ANYTHING” [Source: https://www.merriam-webster.com] Expressions for SCM-Systems CC BY-ND
  6. 6 Semantic Versioning MAJOR > version when you make incompatible

    API changes, MINOR > version when you add functionality in a backwards-compatible manner BugFix (PATCH) > version when you make backwards-compatible bug fixes. Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format. [Source: https://semver.org] Expressions for SCM-Systems Version Number CC BY-ND
  7. 7 Branch and Merge Expressions for SCM-Systems CC BY-ND

  8. 8 Branch and Merge Expressions for SCM-Systems CC BY-ND

  9. 9 Points of Intrests (POI) Points of Interests (POI) in

    the Release Process (1) R = {r 1 , r 2 , r 3 , r n+1 , ..., r x } (2) POI := Release (R; R + 1) ∆ Releas R = Release r = Revision Expressions for SCM-Systems CC BY-ND
  10. 10 Points of Intrests Possible POI based metrics for project

    growth: • amount of BugFixes in a release branch • count of Revisions between releases • growth between release (e. g. LOC) • comparison between trunk and a previous release • comparison between two releases Expressions for SCM-Systems CC BY-ND
  11. 11 POI based Metrics Expressions for SCM-Systems Release Status Initial

    Date Revisions Developers LOC 1.0.0 rejected 01.01.2018 102 5 27.819 1.0.1 delivered 15.03.2018 10 2 29.013 1.0.2 rejected 20.03.2018 4 1 29.081 1.0.3 rejected 20.03.2018 7 1 29.203 1.0.4 delivered 20.03.2018 2 1 29.447 1.1.0 rejected 15.03.2018 81 5 36.007 1.1.1 rejected 28.03.2018 2 3 36.108 1.1.2 delivered 05.04.2018 1 2 36.114 1.2.0 rejected 11.04.2018 12 1 41.009 1.2.1 rejected 15.04.2018 3 1 42.214 1.2.2 delivered 17.03.2018 11 2 42.295 2.0.0 progress 10.04.2018 92 5 81.901 CC BY-ND
  12. 12 Commit Messages Expressions for SCM-Systems Example: [CM-0500] #CHANGE function:pom

    ’functio ’functio <QS-23231> {Change version number of the dependency JUnit from 4 to 5.0.2} CC BY-ND
  13. 13 Vocabulary 01) #INIT - the repository or a release

    repro: documentation / configuration ... archetype: jar / war / ear / pom / zip version: <version> 02) #IMPLEMENT - a functionality function: <clazz> 03) #CHANGE - a functionality function: <clazz> 04) #EXTEND - a functionality function: <clazz> attach: <clazz> 05) #BUGFIX - a functionality priority: critical / medium / low / design Expressions for SCM-Systems 06) #REVIEW - an implementation refactor: <function> analyze: <quality> migrate: <function> format: <source> 07) #RELEASE - an artifact version: <version> 08) #REVERT - a commit commit: <id> 09) #BRANCH - create create: <name> stash: <branch> 10) #MERGE - from another branch from: <branch> to: <branch> 11) #CLOSE - a branch branch: <name> CC BY-ND
  14. 14 Predefined FunctionIDs Some activities like prepare a Release are

    not be able to relate to a project functionality. To solve this problem, Configuration Management Tasks (CM) are introduced. [CM-000] INIT [CM-010] REVIEW [CM-020] BRANCH [CM-030] MERGE [CM-040] RELEASE [CM-050] Build Management Expressions for SCM-Systems CC BY-ND
  15. 15 Benefits and Risks ➔ easy to use and simple

    to include into processes ➔ the Vocabulary is extendable ➔ helps developers to express their thoughts ➔ the first line should not longer than 80 – 100 characters ➔ allow automated processing ➔ SCM should validate the commit messages Expressions for SCM-Systems CC BY-ND
  16. 16 References & Literature [1] Marco Schulz, 2018, Expressions for

    Source Control Management Systems, https://www.researchgate.net/ publication/324907228_Expressions_for_Source_Control_Management_Systems [2] Project together Platform on GitHub: https://github.com/ElmarDott/TP-CORE [3] together Platform API documentation: https://enrebaja.wordpress.com/diaries-in-digital/together-platform/ [4] Norman E. Fenton and Shari Lawrence Pfieeger, 1997, PWS Publishing Company, Software Metrics - A Rigorous and Practical Approach 2nd Edition, ISBN O·534·95425·1 [5] Jez Humble and David Farley, 2010, Addison-Wesley, Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, ISBN 0-321-60191-2 [6] Scott Chacon and Ben Straub, 2014, Apress, Pro Git 2nd Edition, ISBN 978-1-4842-0077-3 [7] Mike Clark, 2004, The Pragmatic Bookshelf, Pragmatic Project Automation, ISBN 0-9745140-3-9 [8] Dave Thomas and Andy Hunt, 2003, The Pragmatic Bookshelf, Pragmatic Version Control with CVS, ISBN 0-9745140-0-4 [9] Mike Mason, 2010, The Pragmatic Bookshelf, Pragmatic Guide to Subversion, ISBN 1-934356-61-1 [10] Travis Swicegood, 2010, The Pragmatic Bookshelf, Pragmatic Guide to Git, ISBN 1-934356-72-7 CC BY-ND Expressions for SCM-Systems
  17. 17 References & Literature [1] E. Burton Swanson, 1978, The

    Dimension of Maintenance [2] Walter F. Tichy, 1985, RCS - A System for Version Control [3] Chuck Walrad and Darrel Strom, 2002, The Importance of Branching Models in SCM [4] Michael Fischer, Martin Pinzger, Harald Gall, 2003, Populating a Release History Database from Version Control and Bug Tracking Systems [5] Filip Van Rysselberghe and Serge Demeyer, 2004, Mining Version Control Systems for FACs (Frequently Applied Changes) [6] Louis Glassy, 2005, Using version control to observe student software development processes [7] Abram Hindle and Daniel M. German, 2005, SCQL: a formal model and a query language for source control [8] Yongchang Ren, Tao Xing, Qiang Quan, Ying Zhao, 2010, Software Configuration Management of Version Control Study Based on Baseline [9] Parminder Kaur and Hardeep Singh, 2011, A Model for Versioning Control Mechanism in Component- Based Systems [10] Shaun Phillips, Jonathan Sillito, Rob Walker, 2011, Branching and merging: an investigation into current version control practices [11] Abdullah Uz Tansel and Ali Koc, 2011, A Survey of Version Control Systems [12] Christian Bird et al., 2014, Transition from Centralized to Decentralized Version Control Systems A Case Study on Reasons, Barriers, and Outcomes CC BY-ND Expressions for SCM-Systems