Mod 3 > Week 1 > Day 4

Overview of the day

Today we look at the Development stage of the SDLC.


Lesson 1 - The Development stage

Learning Objectives

Lesson

Input to the Development stage

The inputs for the Development stage are software specifications (designs).

Purpose of the Development stage

The purpose of the Development stage is to build and/or assemble (high-quality) software components to meet a software specification (design).

Version control

Version control (also known as configuration management) provides the following features:

There are many different types of version control, the mostly commonly used is git.

TASK - Test out your git knowledge with this quiz

Coding standards and code reviews

Coding standards help us to develop better quality code by specifying best practices.

Nowadays, default language specific coding standards are incorporated into Interactive Development Environments (IDEs). Visual notifications of non-conformance help us fix code as we go, rather than relying on manual checks at the end of the development process.

IntelliJ compiler warning

Code reviews look at the static code and detect bugs, vulnerabilities and "code smells".

One very popular automated code review tool is SonarQube. SonarQube includes thousands of automated static code analysis rules.

Example Sonar Qube rule

Manual code reviews are still really important, we often use git Pull Requests to do these.

Example Pull Request

Release Management

Throughout the software development process, your code will go through cycles of development, testing, and fixing. Depending on your team, technology, platform, and other variables, you’ll likely have several environments that you use to manage your application, for example:

In order to effectively test and release software, it’s crucial you have a simple and reliable release process for pushing your code onto your different environments.

Your options for release management are endless. You could write your own scripts entirely from scratch or use tools like:

If it’s difficult to release code, you won’t be able to deploy updates frequently and, when you do, you risk disrupting your customers. With a good release process, you should be incredibly confident releasing updates with no interruption to your customers.

Another important benefit of good release management is the ability to rollback in the event of an emergency.

Continuous integration & Continuous Deployment (CI/CD)

Continuous Integration (CI) describes the process of running automated builds and tests every time a commit is made to a shared repository.

Continuous Deployment (CD) is a software release process whereby code is automatically packaged and released to a production environment if the code passes all of the automated tests.

Outputs of the Development stage

The output of the Development stage is code which is ready for testing.

Assignment

Update your portfolio with the following:

  1. A section named "Version Control" which describes:
  1. A section named "Continuous Integration" which describes:

  2. A section named "Continuous Deployment" which describes:

attendance log main|prev|next