Today we look at the Implementation (Deployment) stage of the SDLC.
The input to this phase is tested software.
The purpose of the Implementation stage is to make a new system operational. This is achieved through the transfer of the tested software modules to the live environment, along with setting up of the data required for the new system.
It is critical that earlier stages of the SDLC have included rigorous configuration management (version control) of software components so that it is clear exactly what bug fixes, features and improvements the final 'release package' contains.
Planning for implementation should happen as early as possible. Consider must be given to:
Role | Responsibility |
---|---|
Project Manager | Plan the implementation activities and oversee the resolution of an 'Early Life' issues (operational issues which occur just after the release) |
End-Users | Help to identify training needs. Advise about best way to transition to the new system. |
Business Analysts | Carry out user training. Advice on business processes to manage impact. Ensure documentation is available. |
Service Manager | The Service Manager supports the IT infrastructure and understands how any outage will impact on service level agreements (SLAs) |
Developers, technical support staff | What order the technical release tasks should be done. Handle data migrations. 'Early life' support (dealing with operational issues which occur just after the release) |
Project Sponsor | Gives the ok to the implementation taking place having weighed up the impacts on business |
TASK - Can you identify members of your team who fulfil these or similar roles?
There are 4 different ways to deploy software.
This approach is relevant to the Waterfall methodology where each stage of the SDLC is fully completed and signed off and finally the software is deployed live.
Pros | Cons |
---|---|
Clean break | High risk if failure |
Everyone start with new system together | No going back point fix forward only |
Usually less expensive | Unanticipated effects |
Pros | Cons |
---|---|
Less risk, old system still operates | Expensive (have to maintain two systems) |
Transition users gradually or in phases | More complex sharing state across two systems |
Can validate operations through comparisons | Users may not use new system |
Pros | Cons |
---|---|
Trials/pilots to identify potential issues | Can’t find problems at scale |
Can eliminate problems before full scale deployment | Pilot software likely to be different to final release |
Can use feedback from pilot to improve the product | |
Catching errors early is cheaper and more efficient |
This approach is relevant to the Agile methodology where each sprint delivers a release of software.
Pros | Cons |
---|---|
High priority requirements delivered sooner | Users may lose interest in limited early version |
Introduce complexity gradually | Users may not like new features being regularly introduced |
Users can learn at a steady pace | Users may not use new features sticking to original limited work flows |
Can fall back to previous version (without new feature) if there are problems |
A traceability matrix keeps track of the relationship between a requirement and its artefacts (test, code, deployment, version). This way features can be tracked across teams, throughout the SDLC.
Semantic Versioning (Semver) is a naming convention for versioning software. It is made of three components:
Major.Minor.Patch
e.g. 10.13.6
10
is the Major version13
is the Minor version6
is the patch number
The Major version is incremented if you make breaking changes.
The Minor version is incremented with new features but no breaking changes.
The Patch number is incremented with bug fixes and improvements.
TASK - Checkout what the semantic version of your iOS or Android operating system is.
TASK - study the versioning strategy for software you use at work such as VSCode, IntelliJ, JUnit.
Alpha release
An Alpha release is the first release of an application. It may not yet be fully feature complete or fully tested and is released to a small group of individuals, typically internal users or users willing to provide feedback for improvements.
Beta release
A Beta release happens after an Alpha release. It will be feature complete and well tested however will be made available to a wider user base with the proviso that there may still be bugs in the software.
A software license is a legal contract governing how software is used or distributed. There are many different types of software license including:
TASK - find out the difference between each type of license and try to find an example of a software product which uses each license type
The output of the Implementation stage is operational software.
TODO