I’m convinced that agile development is an mean to achieve an more efficient software development process. However, it is also in discussion whether its possible to development in accordance with the functional safety standards if you use agile development methods. As a motivation for this blog, the following questions served me:
- Do you use agile development methods and you have upcoming functional safety projects? Under which conditions does this work?
- Do you develop safety-critical embedded systems in industries such as: railway, aeronautics, automotive, medical technology and automation technology? Is it possible to use agile development methods in such an environment?
In the first part of this blog, I consider the respective poles (agile development and functional safety development) for themselves. In the second part, I will discuss, what you should consider, if you have to bring these very different worlds together.
The Agile Manifesto and the 12 principles in its original form:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
The following 12 principiles are behind the Agile Manifesto:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- We welcome requirement changes, even if they are late in development. Agile processes use changes for the competitive advantage of the customer.
- We deliver working software, regularly within a few weeks or months and prefer the shorter period.
- Experts and developers must daily work together throughout the whole project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust that they get the job done.
- The most efficient and effective way to transmit information to and within a development team is talking face to face.
- Working software is the most important measure of progress.
- Agile processes promote sustainable development. The clients, developers and users should be able to keep a steady pace for an indefinite period.
- Continuous attention to technical excellence and good design promotes agility.
- Simplicity – the art to maximize the amount of none-done work – is essential.
- The best architectures, requirements, and designs emerge through self-organized teams.
- Periodically, the team reflects how it can be more effective and adjusts its behavior accordingly.
In both, “the agile manifesto” and “the 12 principles” can be recognized that the customer is the focus of almost all the considerations and that the authors require motivated individuals in high-performance and functioning teams.
Likewise, it should be noted that the origins of agile development can be found in the IT environment. The embedded software development was not in focus.
Basic principles of functional safety:
What Functional Safety is in principle, I wrote in the blog “Functional Safety – What is it?”. There it was primarily a delimitation and definition of the subject matter.
Now we want to focus our consideration on the underlying principles.
To resolve the fundamental conflict, standards and norms have been developed, with the aim to reduce the number of errors in a software product to an acceptable minimum. For this the term “functional safety” is used.
If the car manufacturer can demonstrate, that he has complied with the relevant product functional safety standard, then he has a good chance of being able to prove, in the case of legal proceedings, that he has fulfilled the state of science and technology. Thus, it is not possible to accuse him of culpable conduct.
At the same time this means that in a functional safety developing project the topics: process compliance, verification and documentation are very important. In very critical projects this can imply the following distribution of activities:
I considered now, the main principles of the agile world and the functional safety world.
In part 2 of this blog, I will discuss the conflicts which are resulting, if you want to link these two worlds together. It is equally important for me to discuss also the opportunities, which results of a combination of the agile world and the functional safety world.
I’ll be glad to help you also with any specific questions about your project . A development process GAP Analysis can answer your questions in a very efficient way. Don’t hesitate to send an email to: martin.heininger [at] heicon-ulm.de. An overview of the services can also be found on the HEICON Homepage.