CSCI 5828: Foundations of Software Engineering
Fall 2015, Professor Kenneth Anderson
Student: Matthew Thomas
Presentation 3
Configuration Management (CM) is an important part of Software Engineering. It consists of a variety of topics including source code management, build management, versioning and release management. This presentation will cover three of the most popular tools that support these processes within the context of Agile software development. I will draw from my personal experience with developing mobile software both in the context of small personal projects and large-scale multi-team projects, and show how these tools help at both scales.
The tools below have been chosen because they support the values laid out in the Agile Manifesto:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The Gitflow branching model supports many aspects of Software Configuration Management including Source Code Management, Change control, Release engineering and Deployment.
Semantic Versioning supports Change control, Release engineering (specifically the Identifiability aspect), and Deployment among other facets of Software Configuration Management.
###Jenkins Continuous Integration for Gitflow and Semver
Continuous Integration is a crucial aspect to Agile software development. It helps deliver code to quality engineers as soon as it happens and facilitates communication and status updates between developers and the rest of the development team.