Tools to configure a software development project

Marie Harmsen
DVT Software Engineering
5 min readJul 22, 2019

There are many challenges faced when building great software. In order to address these challenges, tools have been created for software development teams to create high-quality software.

Version Control Systems

Github. Image courtesy of https://guides.github.com/activities/hello-world

A version control system (VCS) is a software utility that helps a team manage changes to source code over time, keeping a record of all modifications made to the file system. VCS allows developers to work collaboratively and concurrently on projects.

Multiple developers work on the same files, therefore there is a high probability of making changes to the same source code file at the same time, VCS helps manage this file conflict.

VCS saves you hours of Ctrl-Shift-Z, as it keeps a history of changes throughout a project, allowing for an undo or rollback to a stable version of the source code if a bug is discovered.

Popular version control software tools include: Github, BitBucket, AWS CodeCommit

Project Management Tools

Getting Started with Jira. Gif courtesy of https://www.atlassian.com/software/jira/guides/getting-started/basics

Project management tools allow individuals and teams to create tasks for a project to be completed, which allows teams to efficiently organise and delegate work.
These tools keep a project’s workflow organised, ensuring projects get completed.

Popular project management tools include: Jira, Intervals, Trello

CI/CD Pipeline

Bitrise. Image courtesy of https://devcenter.bitrise.io/builds/build-logs/

Continuous Integration (CI) and Continuous Development (CD) are part of the modern design concepts that focus on delivering code more frequently and reliably. The majority of applications need to run on a variety of platforms, therefore the developers need to ensure their code will work on all users’ devices.

The goal of CI/CD pipelines is to establish a consistent and automated way to build, test and stage applications in a clean environment. The majority of the CI/CD pipelines can be triggered by committing source code to the version control system.

DevOps Zone.Image courtesy of https://dzone.com/articles/learn-how-to-setup-a-cicd-pipeline-from-scratch

When smaller changes are delivered more frequently into production, the risk of large-scale changes breaking the system decreases.

Popular CI/CD pipelines tools include: Jenkins, Bitrise, Travis CI, Circle CI

Static Code Analysis

Codacy. Image courtesy of https://support.codacy.com/hc/en-us/articles/207993605-I-added-a-project-Now-what-

The tool provides an understanding of the code structure and helps to ensure the source code adheres to industry standards. Teams should integrate static code analysis as a step in their CI/CD pipeline as it frees them from manually analysing the code.

Developers should have a healthy code base that is up to coding standards, allowing future developers to understand and maintain the code.

Popular code coverage tools include: Codacy, Raxis, Gamma

Code Coverage

Coverage Diff Code Cov. Image courtesy of https://docs.codecov.io/docs/coverage-diff

Code coverage is a metric that determines how many lines of code have been tested, highlighting aspects of the code which may not be adequately tested. Measuring code coverage can keep your testing up to the required standards. Teams can be confident in their code as it not only passes the tests they could think of, but it is tested to meet functional requirements.

Organisations should integrate code coverage into the CI/CD pipeline aiming for a sensible coverage target and even coverage, ensuring critical parts of the application work as expected.

A quality assurance engineer creates tests to find any problems with software before the product is launched.

Popular code coverage tools include: Code Cov, Atlassian Clover, Cobertura

It may seem time-consuming to set up these tools, they can be automated in the CI/CD pipeline through the VCS system. The tools will cause fewer disruptions to your project. This will allow you to commit code with confidence and sanity knowing the code is meeting all the required standards. Hopefully allowing you to get a few solid minutes of sleep on the day of production.

I have linked resources to assist you and your team to set up these tools in your own projects, I hope these tools can be beneficial. What other tools can you add to this list that I have not mentioned? Let me know in the comments below.

Further Reading

--

--