| Literature DB >> 36093290 |
Andrea Bombarda1, Silvia Bonfanti1, Cristiano Galbiati2,3,4, Angelo Gargantini1, Patrizio Pelliccione3, Elvinia Riccobene5, Masayuki Wada6.
Abstract
Context: During the first wave of the COVID-19 pandemic, an international and heterogeneous team of scientists collaborated on a social project to produce a mechanical ventilator for intensive care units (MVM). MVM has been conceived to be produced and used also in poor countries: it is open-source, no patents, cheap, and can be produced with materials that are easy to retrieve. Objective: The objective of this work is to extract from the experience of the MVM development and software certification a set of lessons learned and then guidelines that can help developers to produce safety-critical devices in similar emergency situations. Method: We conducted a case study. We had full access to source code, comments on code, change requests, test reports, every deliverable (60 in total) produced for the software certification (safety concepts, requirements specifications, architecture and design, testing activities, etc.), notes, whiteboard sketches, emails, etc. We validated both lessons learned and guidelines with experts. Findings: We contribute a set of validated lessons learned and a set of validated guidelines, together with a discussion of benefits and risks of each guideline.Entities:
Keywords: Guidelines; Healthcare; Lessons learned; Safety–critical systems development; Software certification
Year: 2022 PMID: 36093290 PMCID: PMC9439867 DOI: 10.1016/j.infsof.2022.107061
Source DB: PubMed Journal: Inf Softw Technol ISSN: 0950-5849 Impact factor: 3.862
Fig. 1Research methodology.
Summary of the effort required for each phase.
| Activity | # People | Deliverables |
|---|---|---|
| System development plan | 3 | 5 |
| Supporting activities | 22 | 12 |
| System requirements | 5 | 1 |
| Software architecture design & | 10 | 3 |
| Risk management | ||
| Software requirement Spec. | 21 | 15 |
| Software detailed design Impl. | 18 | N/A |
| Unit testing | 22 | 20 |
| Integration testing | 11 | 2 |
| Validation testing | 9 | 2 |
Experts overview. The column year stands for “Years of experience in the development of critical software”.
| ID | Years | Industry/Academia/Other | Role |
|---|---|---|---|
| 1 | Open source ventilator team | ||
| 2 | 1–3 | Industry | Mechanical engineer |
| 3 | 4–5 | Industry | CTO |
| 4 | Academia | Director of Technology | |
| 5 | Academia | Scientist | |
| 6 | 11–20 | Academia | Assistant professor |
| 7 | Academia | PhD student | |
| 8 | Academia | Assistant professor | |
| 9 | 4–5 | Academia | Associate professor |
| 10 | Academia | PostDoc | |
| 11 | 4–5 | Academia | PostDoc |
| 12 | Academia | PostDoc | |
| 13 | Academia | Associate professor | |
| 14 | Industry | CTO | |
| 15 | Academia | Associate professor | |
| 16 | Industry | Program manager/Quality manager | |
| 17 | 1–3 | Industry | Developer |
| 18 | 6–10 | Industry | System/Software architect |
| 19 | Industry | Developer | |
| 20 | 6–10 | Industry | Developer |
| 21 | 11–20 | Industry | System/Software architect |
| 22 | 1–3 | Academia | Assistant professor |
| 23 | 4–5 | Academia | Associate professor |
| 24 | 1–3 | Academia | Assistant professor |
| 25 | 6–10 | Industry | Developer |
| 26 | 6–10 | Industry | System manager |
| 27 | 11–20 | Industry | Developer |
| 28 | 1–3 | Industry | CTO |
| 29 | 11–20 | Industry | CTO |
| 30 | 1–3 | Industry | Developer |
| 31 | 11–20 | Academia | Full professor |
| 32 | 11–20 | Industry | System manager |
| 33 | High risk systems | ||
| 34 | High risk systems | ||
| 35 | 1–3 | Academia | Assistant professor |
| 36 | 4–5 | Industry | Technical expert of software quality |
| 37 | 6–10 | Industry | System/Software architect |
The IDs with experts interviewed.
Lessons learned.
| Name | Description |
|---|---|
| LL.1.1 | The development process was strongly influenced by the IEC 62304 standard, so the V-model, although not mandated, is the “best fit” with regulatory requirements as it produces the necessary deliverables required when seeking regulatory approval. |
| LL.1.2 | However, it was necessary to integrate the V-model with agile practices, to combine efficiency, quality, maintainability, and flexibility. |
| LL.2.1 | In the project, there was a quite huge overhead of coordination. The coordination of the team should not be underestimated. Open-source software development could be a good development experience from which projects of this nature can learn. |
| LL.2.2 | Adding people is not necessarily a good solution to improve the efficiency and effectiveness of a team |
| LL.2.3 | Having responsibility for each sub-activity and setting strict intermediate goals have favored commitment and participation. |
| LL.3.1 | The use of a great variety of tools (one tool for each particular purpose) even if not integrated and not specific for software project management, has provided indispensable support to the team. |
| LL.3.2 | Having a partner that provided the templates and a clear review process has helped to define which activities should be performed. |
| LL.3.3 | Standard graphical notations like UML shown to improve communication and to be easily usable by non-software experts (very skilled in other fields, though). |
| LL.4.1 | Not having written requirements since the beginning led to having various attempts to address the requirements in different software components. Precise system requirements are very important also in an emergency situation to reduce the development time. |
| LL.4.2 | For systems for which a prototype is present, especially if it is developed by domain experts, reverse engineering has shown to be a viable solution for discovering functionalities and configuration parameters to be included in system requirements. |
| LL.4.3 | A traceability system helps developers to trace all the requirements and their changes through all the development process. |
| LL.5.1 | It is important to find a balance between upfront aspects (what is planned before the start of development) and emerging aspects (decisions taken during development, e.g. by fixing wrong assumptions or making decision deliberately postponed) |
| LL.5.2 | Software architecture is important even during emergency development. Without a well-defined architecture (as for the prototype), it was not clear how software components were supposed to synchronize and exchange information among them. |
| LL.6.1 | Isolating safety–critical features, by organizing the system in different components, has allowed us to focus the safety assurance effort on a limited portion of the system. |
| LL.7.1 | Designing a product in a modular way has been a successful decision, since, in a distributed project (such as the one of the MVM) it has allowed different teams to work in parallel on different parts of the system. |
| LL.7.2 | We have found that using state machines, for the specification and the design, has contributed to favor the discussion on the adopted solutions even with people not used to software development since graphical representations are easily understandable. |
| LL.8.1 | Using several programming languages in a single project is usually discouraged |
| LL.8.2 | Sharing the coding standards and guidelines (e.g., the importance of comments |
| LL.8.3 | State machines added flexibility and maintainability: it was very simple to make changes, regenerate, and integrate the fresh code. |
| LL.9.1 | Isolating the critical components and defining in advance the safety classes of all the components in the developed system can significantly facilitate the testing activities, since testing can focus on the most critical parts. |
| LL.9.2 | Besides what is required by the standards, testing activities are important when performed for safety–critical components. This is not an obvious aspect in heterogeneous teams. |
| LL.9.3 | As MVM has been a community project, where a lot of people have worked at the same time on the same system, CI tools have proved to be crucial for maintaining under control the modifications made by all the developers. |
| LL.10.1 | It is challenging to develop and validate systems that integrate hardware, software, and mechanics by distributed teams. Often, real hardware is needed for testing the software that is affected or affecting a piece of hardware. Software-in-the-loop simulation requires a special setting with professional simulation tools and an accurate hardware model, which is not always available and reliable. |
Fig. 2Validation of the lessons learned.
Mapping of lessons learned and guidelines of the development phases.
| Lessons learned | Validation result | Guidelines |
|---|---|---|
| Merge the two lessons learned LL.1.1 and LL.1.2 into a unique guideline. | ||
| Distinction between coordination team and development team in terms of responsibilities and activities. | ||
| Distinction between tools for coordination and communication of the coordination team and of development teams. | ||
| Clarification on what to do when existing templates are not available and a review process is not already established. | ||
| Generalization to visual/graphical notation in general | ||
| Merge the two LLs. | ||
| Recommendation of a practice (traceability system) that was not employed during the original development of the MVM but deemed to be important. | ||
| Clarification of how to manage software architecture changes and introduction of communities of practice as an instrument to evaluate the impact on architecture and to assess and validate architectural decisions. | ||
| Reformulation of the lesson learned. | ||
| Identification of the two main uses of state machines. | ||
| Specification of some caveats (e.g., when it does not make integration difficult). | ||
| Reformulation of the lesson learned. | ||
| The lessons learned were somehow overlapping and we identified the need of a better organization of them. This led to the reformulation of the lessons learned in three more clear guidelines. | ||
Fig. 3How do you agree/disagree with the GL?.
Benefits and risks of the guidelines on the development process.
| Guideline | Benefits | Risks |
|---|---|---|
Benefits and risks of the guidelines on the development phases.
| Guideline | Benefits | Risks |
|---|---|---|