The software development plan
- Part: What is a software development plan
- Part: What does a software development plan look like
What does a software development plan look like according to the requirements of 62304
Now that we know what a software development plan is, the question naturally arises as to what the actual content of such a plan could be.
IEC 62304 provides us with a good basis with quite concrete requirements in Chapter 5.1.
In the following article, I'll review the requirements of 62304 and discuss how to implement them in a specific project. 62304 has a total of 11 subchapters to illustrate what "software development planning" entails.
In general, when creating a plan, you should always ensure that it is adhered to and that you can provide evidence at the end that you have actually implemented what you planned. If there are legitimate reasons why the plan was not adhered to, this must be documented and justified.
Let’s look at the requirements of 62304 on software planning.
| Chapter 5.1.1 | a. Processes that are used must be specified |
| Here you'll be asked to define how you develop. Provide a reference to your software development process if you have a general process, or define how you work specifically for your project within the software development plan.
When using references, don't forget that they must be unique, i.e. the specific processes including the specific versions. |
|
| Chapter 5.1.1 | b. the deliverables (including documentation) of the activities and tasks |
| Here, analogous to 5.1.1.a, you can refer to the general software development process, which hopefully defines the outputs of your development, or you can define in the plan what specific results will be created during development. Examples include: a software architecture, a detailed specification, review results, or the software release as a binary.
This list of results helps you check whether everything is complete and available before releasing the software. This allows you to quickly identify any gaps and evaluate or, of course, close them. |
|
| Chapter 5.1.1 | c. Traceability between system requirements, software requirements, software system reviews and risk control measures implemented in software; |
| This section simply means traceability. Define how you will ensure traceability. As in the previous sections, you can refer to the general software development process that defines this, or you can define it here for your specific project.
You have complete freedom, but make it clear and binding! |
|
| Chapter 5.1.1 | d. Software configuration and change management, including SOUP configuration items and software used to support development |
| Describe here how your configuration and change management works in concrete terms.
The procedure may look different for the source code, for SOUP elements and for tools. You can refer to relevant processes or describe it specifically for the respective project. Example:
List the SOUP components and development tools used in your plan and remember that it must be clear (see also chapter 5.1.4). |
|
| Chapter 5.1.1 | e. Software problem solving and addressing issues discovered in software products, deliverables, and activities at any stage of the life cycle |
| How do you deal with problems (bugs) you find? Problems don't just occur in the source code and thus in the software product. Problems can also occur in the documentation of the SOUP software used or in the software tools.
Describe the procedure in detail or refer to higher-level processes that describe the procedure. As with change management, problem-solving can be approached differently depending on the project phase. The further your development progresses and the closer it approaches completion, the more formal your approach should be. Take advantage of the opportunity to define different approaches depending on the phase. Example: Problems with the development tools used can be resolved directly with central IT before Software Quality Gate 1. After Quality Gate 1, a ticket must be created and an initial risk assessment regarding the impact on the project must be performed. After Quality Gate 2, problems must be escalated to the project manager. |
|
| Chapter 5.1.2 | Updating the software development plan |
| This activity isn't too difficult, but it's often overlooked. Adjust the plan if anything changes. Don't forget to document the reason for the change in the history.
As the name suggests, we're talking about a plan here. A plan is created at the outset. Therefore, the plan can't already contain everything in version 1. The plan is a living document. The standard even explicitly requires you to keep it up to date and adapt it to changing circumstances. |
|
| Chapter 5.1.3 | a. The manufacturer must reference system requirements in the software development plan as specifications for software development |
| This requirement is closely linked to requirement 5.1.1.c (traceability).
Include a reference to the system requirements in your plan, which are the basis for the software. Don't forget to update your plan, including the references, if system requirements change. See also Section 5.1.2. |
|
| Chapter 5.1.3 | b. The manufacturer shall include or reference procedures for coordinating software development and design and development validation in the software development plan; this is necessary to comply with 4.1. |
| This requirement sounds familiar. Chapter 5.1.1 already required defining what you're working on. This point goes in the same direction. Specify in the plan or reference the processes and methods that clearly show how you will proceed with validation. Reference is made to Chapter 4.1. There, among other things, the fulfillment of customer requirements is discussed, which is a clear reference to the topic of validation.
What could this look like in concrete terms? To ensure that the software meets customer requirements, the following procedure is followed:
|
|
| Chapter 5.1.4 | Planning of standards, methods and tools for software development |
| In your software development plan, define the standards you're considering for your software (e.g., 62304 or 60601-1-8), and specify the tools you'll use, such as compilers, version control, and testing tools. Don't forget to include the specific version.
This strongly aligns with configuration management. A complete configuration includes everything needed to uniquely and reproducibly identify a piece of software. This also includes the tools you use, standards, and the approach you take, such as verification methods. Everything must be clearly identified, as all these points influence development and must be clarified. |
|
| Chapter 5.1.5 | Planning software integration and integration testing |
| Determine how you plan to integrate the software. Describe the process.
The standard doesn't dictate how you integrate; it can be anything from a "big bang" approach to an "iterative" approach. However, make sure that the approach corresponds to the criticality of the project. The approach to software integration depends heavily on your software architecture. Use this as the basis for your integration strategy! You've now defined how you'll assemble your software. However, you haven't yet defined when you'll perform which tests! For this reason, determine which tests you plan to perform during the integration. This can look like this:
You have a lot of freedom and therefore a lot of options. Define the optimal approach and make sure you then implement it as planned. Please also note that you can combine the integration tests and the system tests, but you should, as always, plan and document this procedure. |
|
| Chapter 5.1.6 | Planning software verification |
| How do you plan to verify your software? Since verification takes up a significant portion of the development process, this process must be planned very carefully.
Define everything that needs to be created, starting with the test specification, continuing with the design of the tests, through the execution of the tests, to the creation of test reports. All these are results of verification activities that need to be planned. For these results, you also need to define when you accept them. An acceptance criterion for a test specification would be, for example, that each requirement must have at least one test case, and the specified test methods must have been applied. Define what needs to be available and at what time. Verification planning is a very complex task. This activity is typically defined in one or more test plans (e.g., one test plan per level). These planning activities are often referred to as a "verification strategy." In such a verification strategy, you can clearly describe the required points and demonstrate how you will proceed. A verification strategy is often found as a project-wide description for all projects. Any necessary details are then provided within the individual project. |
|
| Chapter 5.1.7 | Planning software risk management |
| Similar to the previous chapter, "Planning Software Verification," software risk management must be planned. Typically, this involves referring to the underlying risk management process and the risk management plan applicable to the project.
If your product is a system with embedded software, software risk management will be part of the risk management of your overall system. |
|
| Chapter 5.1.8 | Planning the documentation |
| During development, a multitude of artifacts are created, which include not only the source code but also the associated documentation.
This starts with the software system specification, continues with the software architecture, test specifications, etc. Identify all document types that are created and specify:
|
|
| Chapter 5.1.9 | Planning software configuration management |
| Configuration management is a very important task in projects. It ensures the unambiguous composition of a product's software.
Configuration elements include all software modules or source code files, as well as SOUP components used. Furthermore, all documents created during software development or maintenance are considered configuration elements.
Consider the effort required depending on the definition chosen. Determine the appropriate approach for when you should start using the problem-solving process. |
|
| Chapter 5.1.10 | Supporting components to be controlled |
| As already mentioned in Chapter 5.1.9, not only the source code belongs in version control. You also need to be able to identify the versions of your tools, such as compilers, test frameworks, and similar, at any time. Don't forget the associated configuration files or make files.
Everything you need to rebuild a software version needs to be versioned and controlled. This is the only way to ensure that you can recreate a specific software version at any time. You will realize how important configuration management is when you receive feedback from the field. The feedback must be investigated, the cause found, and you will be required to provide a clear statement about which software versions are affected by the potential bug. |
|
| Chapter 5.1.11 | Checking software configuration elements before verification |
| To begin a reproducible verification, the relevant components must already be versioned and entered into the version control system. Only then can you reference a unique version to which the verification refers.
So, first add the components to the version control system and specify the corresponding versions in your test reports! As mentioned in the previous sections, this doesn't just mean the source code, but everything you need to make verification reproducible. This starts with the specification, continues with the test specification, the tools used, and so on. Always ask yourself whether you have everything under control so that you can repeat the exact test at a later date and get the same result. Include all this information in your review! |
|
I hope I was able to help you a little with my explanation of the 11 points from 62304 and provide more clarity. The standard always strives to create clarity from the outset to reduce the risk of errors, gaps, etc. Use the software development plan as a tool, as a project target, to clearly present this planning for everyone involved, and to make it clear to everyone what activities and results are necessary. Discuss the plan with the project team; this will help you spread knowledge and identify inconsistencies or gaps. Many eyes see more than two.
If you have any further questions or additional comments or experiences, please let me know. Here, too, the rule applies: more people know more than one!

