Software development lifecycles
A key concept within IEC 62304 is the need to identify your software development lifecycle. This is essentially the way you plan to tackle software development. You will need to identify the phases of your software lifecycle, the activities you will perform and the deliverables from each development phase.
Your lifecycle needs to identify when you will perform the activities described in IEC 62304: planning, requirements capture, architecture design, detailed design, unit implementation, verification and release. Bear in mind that your development lifecycle should be structured around your team and the way you develop software in practice. It’s not best practice to define a lifecycle which you will never follow.
Here are a few examples of software development lifecycles and their relative strengths and weaknesses:
This is the traditional way of delivering software projects, particularly in the medical space. In this lifecycle, you transition linearly between development phases. It aligns well with the V-model for verification. In well understood software programs, Waterfall presents a logical way to develop the software, ensuring control at all stages.
However, in cases where the software is not well defined at the project outset, the approach presents some challenges. A change to requirements will involve having to return through the requirements phase and complete all subsequent phases again. It can become slow to adapt.
Agile is an incremental lifecycle type where all project aspects progress in an evolutionary manner. To explain this: the requirements, design and code for a given feature can be recorded in the same increment. This allows developers to focus on the needs of the specific feature.
The downside of this “pure” incremental approach is that development teams may not consider all features within the architecture, which can lead to features integrating poorly within your software. This can be resolved by re-implementing the software. The basis of an agile lifecycle is that the software develops in an evolutionary manner.
At Team Consulting, we work around the issues of both Agile and Waterfall methodologies by following the lifecycle method described in TR-45. The early stages of a project progress in a linear manner, but do not fully define the software.
For example, in the requirements phase, we will capture the functional and key performance requirements, but will not exhaustively list the risk mitigations. Similarly, the architecture phase will identify the key components and their interactions, but will not be fully defined until the implementation phase when the development team is able to implement and adapt the architecture.
This hybrid approach allows the development team to define the software to a high level before starting to implement it.