Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1



Similar documents
Software Development Life Cycle (SDLC)

CSE 435 Software Engineering. Sept 16, 2015

Agile Software Development Methodologies and Its Quality Assurance

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

A Capability Maturity Model (CMM)

Basic Trends of Modern Software Development

Agile with XP and Scrum

Introduction to Software Engineering: Overview and Methodologies

Agile So)ware Development

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

Introduction to Agile Software Development

AGILE SOFTWARE DEVELOPMENT: INTRODUCTION, CURRENT STATUS & FUTURE Pekka Abrahamsson Jyväskylä

What s Lean Agile & How does it allow teams to progressively improve customer satisfaction & service delivery?

Agile Testing. What Students Learn

Development. Lecture 3

Agile in a Safety Critical world

Laboratório de Desenvolvimento de Software

An Example Checklist for ScrumMasters

Advanced Software Engineering. Software Development Processes

Comparing Agile Software Processes Based on the Software Development Project Requirements

Agile and Secure: Can We Be Both?

Agile Project Management

Agile in Financial Services A Framework in Focus

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

Scale agile throughout the enterprise A PwC point of view

UC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara

Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and

Achieving ISO 9001 Certification for an XP Company

Agile Project Management By Mark C. Layton

Family Evaluation Framework overview & introduction

SECC Agile Foundation Certificate Examination Handbook

Software Development Life Cycle at SSPL. An Summary of Methodologies We Offer

Test Driven Development with Continuous Integration: A Literature Review

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

Agile Testing and Extreme Programming

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Agile Requirements Generation Model: A Soft-structured Approach to Agile Requirements Engineering. Shvetha Soundararajan

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

An Agile Project Management Model

QUALITY ASSURANCE IN EXTREME PROGRAMMING Plamen Balkanski

How To Plan A Project

Agile Software Engineering, a proposed extension for in-house software development

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Lean and Agile in Safety-critical Software Development Research and Practice. Henrik Jonsson

Software Process. Process: A sequence of activities, subject to constraints on resources, that produce an intended output of some kind.

Software Requirements and Specification

Becoming Agile: a getting started guide for Agile project management in Marketing, Customer Service, HR and other business teams.

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Agile Scrum Workshop

Chapter 9 Software Evolution

Development Testing for Agile Environments

Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem

Benefits of Test Automation for Agile Testing

Agile Software Project Management Methodologies

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

Agile Engineering Introduction of a new Management Concept

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

2.1 The RAD life cycle composes of four stages:

Bridging the Gap: Traditional to Agile Project Management. I. S. Parente 1. Susan Parente, PMP, PMI ACP, CISSP, PMI RMP, ITIL, MSEM;

Becoming Agile: a getting started guide for Agile management in Marketing and their partners in IT, Sales, Customer Service and other business teams.

Introduction to Agile and Scrum

Bottlenecks in Agile Software Development Identified Using Theory of Constraints (TOC) Principles

Software processes that are:

Reaching CMM Levels 2 and 3 with the Rational Unified Process

Extreme Programming, an agile software development process

Software Development Life Cycle Models - Process Models. Week 2, Session 1

Agile Processes and Methodologies: A Conceptual Study

A Guide to the Business Analysis Body of Knowledge (BABOK Guide) Version 2.0

Vragen. Software development model. Software development model. Software development model

Capstone Agile Model (CAM)

Introduction to Agile Software Development. EECS 690 Agile Software Development

CMMI - The AGILE Way By Hitesh Sanghavi

When is Agile the Best Project Management Method? Lana Tylka

Extreme Programming, an agile software development process

SOFTWARE PROCESS MODELS

The GAMP Guide s1 definition of the system

Agile Project Management

Agile QA s Revolutionary Impact on Project Management

Introduction to Agile Software Development Process. Software Development Life Cycles

Agile Systems Engineering: What is it and What Have We Learned?

Agile Software Development compliant to Safety Standards?

Agile processes. Extreme Programming, an agile software development process

Quality Assurance in an Agile Environment

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Process Models and Metrics

Agile Project Management Mapping the PMBOK Guide to Agile Practices. Michele Sliger

Software Engineering I (02161)

BCS Foundation Certificate in Agile Syllabus

Agile and Secure Can We Be Both? Chicago OWASP. June 20 th, 2007

Agile In a Nutshell. Note - all images removed to fit 2MB limit Actual presentation has much more content. Jonathan Rasmusson

Architecting enterprise BPM systems for optimal agility

Rapid Software Development

SAFETY & RESILIENCE ISSUES IN AUTOMOTIVE SOFTWARE DEVELOPMENT PANEL


ACP Exam Prep Plus Desk Reference including the Project Management Agile Body of Knowledge TM (PMABOK TM )

Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective

PLM - Agile. Design Code Test. Sprints 1, 2, 3, 4.. Define requirements, perform system design, develop and test the system. Updated Project Plan

software studio software development processes Daniel Jackson

Agile Planet. A Travel Guide to the Agile Universe Fabian Schiller. This book is for sale at

Agile methods. Objectives

Transcription:

Collaborative Large scale Integrating Project Open Platform for EvolutioNary Certification Of Safety critical Systems Methodology: Agile development of safety critical systems to deliverable D1.1 Work Package: WP1: Use case Specification and Benchmark Dissemination level: PU = Public : FINAL Date: 28 March 2012 Responsible partner: J. Lambourg (AdaCore) Contact information: lambourg@adacore.com PROPRIETARY RIGHTS STATEMENT This document contains information, which is proprietary to the OPENCOSS Consortium. Neither this document nor the information contained herein shall be used, duplicated or communicated by any means to any third party, in whole or in parts, except with prior written consent of the OPENCOSS consortium.

Names Jérôme Lambourg, Cyrille Comar Contributors AdaCore Organisation Document History Version Date Remarks V0.1 2012 03 19 First emission (AdaCore) V0.2 2012 03 20 Ready for PB Approval V1.0 2012 03 28 Approved by PB

TABLE OF CONTENTS 1 ABOUT AGILE DEVELOPMENT... 4 2 AGILE DEVELOPMENT OF SAFETY CRITYCAL SOFTWARE, DO 178B CONTEXT... 5 2.1 THE DO 178B... 5 2.2 APPLYING AGILITY TO DO 178B CERTIFICATION... 5 2.3 ADDITIONS TO AGILITY FOR CERTIFICATION CONSTRAINTS:... 6 3 EXAMPLES OF ADDITIONAL REQUIREMENTS FOR AGILE METHODS... 7 FP7 project # 289011 Page 3 of 8

1 About Agile development Agile development is a group of development methodologies based on iterative and incremental development. They can be applied to many kinds of projects, but are currently mainly applied to Information technology. The notion of agile methodology has been officially described in 2001 in the Agile Manifesto (http://agilemanifesto.org), presenting the common Values of already existing methodologies. Those methods usually cover two development aspects: The development life cycle aspect: iterative, incremental and adaptive. Some common development techniques. Some examples of those methods are: RAD (Rapid Application Development, James Martin, 1991) Scrum (The New Product Development Game, Takeuchi and Nonaka, 1996) Extreme programming or XP (Extreme Programming Explained, Kent Beck, 1999) Extreme programming defines simple, yet interdependent organizational and engineering best practices, taken to an extreme. For example, code reviews are a best practice, so XP recommends Pair Programming: all production code is written by a pair of programmers working together at the same workstation. One writes the code while the other reviews it as it s typed in. The two programmers switch role frequently. Another example concerns testing, where XP recommends Test Driven Development. It consists of short cycles based on the following steps: from the requirement to implement, write automated self checking tests that define the desired changes or new functionality; write just enough code to make the test succeed, and then refactor the code to improve the design. This is used for both Unit testing and customer acceptance testing. XP s main principles are: Code review Test Driven development Refactoring: without changing the behavior of the software, its design is improved continuously and the code refactored. Simple Design: as a general principle, the simplest working design is always implemented. Continuous Integration: to lower integration risks, the team should constantly have a shippable version of the product including all the latest changes. Programmers always work on the latest version of the software. Therefore they check in their code and integrate several times per day. Small Releases (short release life cycle) Whole Teams, improving collaboration and communication between the users and the developers. FP7 project # 289011 Page 4 of 8

2 Agile development of Safety Critycal software, DO 178B context 2.1 The DO 178B In the avionics domain, software development is usually performed by following the DO 178B/C standards. As input to this standard is the DAL (Design Assurance Level). The DAL defines the level of criticality given to avionics components according to the impact of a failure of that component on the flight s safety. The level range from A. Catastrophic: may cause a crash to E. No Effect. The DO 178B document, published in 1992, as well as its successor the DO 178C document plus its annexes, published in 2011, specifies the objectives to achieve during development in order to certify software for flight. The certification of the software is obtained after a series of audits, inspecting the proofs of the activities carried out to support these objectives. As the level of criticality increases, so does the number of objectives to satisfy. The DO 178 documents define the objectives to perform according to the DAL, but not the process to achieve them. However the objectives concern the software life cycle, the activities that need to be carried out, their entry and exit criteria, and the expected verifications. A certification audit checks that the product exclusively contains code satisfying operational requirements. The implementation of the operational requirements and all the code have to be verified. Additionally, all the products (plans, requirements, architecture, code, tests, traceability) have to be validated in a review process. 2.2 Applying Agility to DO 178B certification The DO 178B or C documents do not specify any process to follow to reach the certification objectives. This makes it possible to apply Agile methodologies to a certification process. Most of the objectives of the standard can successfully by reached using such methodology, bringing the benefits of Agility to the avionics domain: Improve the visibility of the development process, by performing the full software development life cycle at each iteration, and by providing many advancement metrics; Lower the risk by performing the heavy tasks such as low level testing at each iteration; Improve the development efficiency, by constantly improving the design, architecture, and the process itself. Improve the overall quality via continuous integration, giving quick feedback to the developer allowing him to take immediate corrective actions when needed, and removing the human error factor inherent to repetitive tasks (which is typically the case for test suties). In addition to those project management benefits, Emmanuel Chenu, in his article Agility and Lean for Avionics (2009, http://manu40k.free.fr/agilityandleanforavionics1.pdf) even states that such use of Agile methods contributes to achieve safety objectives: The incremental construction driven by operational scenarios enforces that the product will exclusively contain code implementing operational requirements, which is mandated by the requirement based testing strategy of the DO 178, and the objective to fully cover the source code by tests (chapter 6.4.4 of the DO 178B). FP7 project # 289011 Page 5 of 8

Systematic acceptance testing will also guarantee that the implementation of all operational requirements is successful, resolving issues as they appear (chapter 6.4.2 and 6.4.3 of the DO 178B). Systematic developer testing will ensure that all the code is checked by tests, leading to full code coverage by tests at all time. Achieving full coverage testing at the MC/DC level is one of the most difficult result to achieve when developing a Level A software. The continuous software integration allows to automatically run the full acceptance and developer tests, ensuring at a minimum cost that the latest version of the program is always fully and repeatedly tested. Integrating the documentation into this continuous software integration 2.3 Additions to Agility for certification constraints: However, the agile methods do not address all certification constraints, and thus need to be adapted. For example, the documentation is generally not seen as mandatory in the context of Agile methods, while it has to be considered part of the product in the case of avionics certification. Therefore, it has to be incrementally written to be potentially shippable after each iteration. Also, traceability is not addressed by Agile methods : as the product under development is constantly evolving, the architecture being modified through iterative and incremental development with continuous refactoring, the traceability between requirements and the software is difficult to address and requires also a constant update. FP7 project # 289011 Page 6 of 8

3 Examples of additional requirements for Agile methods The Agile methods requirements will have an impact mainly on the process one project needs to follow. From this process some additional constraints may be derived on the tools used (such as a continuous integration tool), but they are still related at their core to the Agile processes. Following are proposed requirements on the process to apply agile methods to a safety critical product. They re meant to be example, but are not meant to be complete. <ADA> 0001: <Iterations> iteration The process followed during the product development should be iterative. An iteration lasts typically a few weeks and concerns a particular feature to add to the product. A complete life cycle is performed during each iteration <ADA> 0002: <Whole Team> Whole team principle The Whole team principle places the customer as part of the team. In safety critical systems, this implies that all external stakeholders (system level team, certification body, customer) should be deeply involved in the development process, on the features priorities, and have a strong visibility on the product under development. <ADA> 0003: <Certifiable state> Certifiable state In order to increase the visibility on the product under development, the project needs to be in a certifiable state after each iteration: the product should be able to run, the documentation updated, and all verifications are performed. <ADA> 0004: <Testing> Test driven development FP7 project # 289011 Page 7 of 8

At each iteration, a test should be written first, directly derived from the operational requirement(s) to implement. This test should be automated. <ADA> 0005: <Refactoring> Refactoring At each iteration, after the code is written to implement the functionality, some refactoring should be performed to simplify the design of the software. <ADA> 0006: <Automation> Automation To ease the iterations, every activity that can be automated should be automated. This increases the developers efficiency, and increases the overall product quality. <ADA> 0007: <Documentation> Documentation Automation In Safety critical systems, the documentation is part of the product to deliver. It thus should evolve along with the project (iteratively), and be built automatically with it when needed (test results for example). <ADA> 0008: <Traceability> Traceability In Safety Critical Systems, traceability between artefacts needs to be demonstrated. It is particularly important to maintain traceability matrix when using Agile methods, where refactoring happen very often. FP7 project # 289011 Page 8 of 8