Real Time Embedded Software Development Using Agile Technology An Experience Report



Similar documents
What is a life cycle model?

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Software Engineering Principles The TriBITS Lifecycle Model. Mike Heroux Ross Bartlett (ORNL) Jim Willenbring (SNL)

Challenges in adopting Agile

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Software Development Life Cycle (SDLC)

Testhouse Training Portfolio

AGILE SOFTWARE TESTING

Certified Software Quality Engineer (CSQE) Body of Knowledge

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Agile Software Development Methodologies and Its Quality Assurance

Configuration & Build Management

Karunya University Dept. of Information Technology

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

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Quality Assurance in an Agile Environment

How To Develop A Telelogic Harmony/Esw Project

Managing Agile Projects in TestTrack GUIDE

Engineering. Software. Eric J. Braude. Michael E. Bernstein. Modern Approaches UNIVERSITATSBIBLIOTHEK HANNOVER ' TECHNISCHE INFORM ATIONSBIBLIOTHEK

Using the Agile Methodology to Mitigate the Risks of Highly Adaptive Projects

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

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

Nova Software Quality Assurance Process

A Capability Maturity Model (CMM)

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

How To Be Successful At An Agile Software Engineering

Improving your Drupal Development workflow with Continuous Integration

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

Software Requirements, Third Edition

Nationwide Application Development Center

Introduction to Agile Software Development Process. Software Development Life Cycles

Applying Agile Methods in Rapidly Changing Environments

Test-Driven Development and Unit Testing with Parasoft Concerto

Product Development Best Practices

Benefits of Test Automation for Agile Testing

Development Process Automation Experiences in Japan

WebSphere Business Modeler

Agile SW Siemens

Software Development Process

Software Development Best Practices

Software Project Audit Process

Waterfall to Agile. DFI Case Study By Nick Van, PMP

Comparing Agile Software Processes Based on the Software Development Project Requirements

Agile Development with C#

for Oil & Gas Industry

Software Continuous Integration & Delivery

Alternative Development Methodologies

JOURNAL OF OBJECT TECHNOLOGY

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

The overall aim for this project is To improve the way that the University currently manages its research publications data

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

Agile So)ware Development

MKS Integrity & CMMI. July, 2007

Management. Project. Software. Ashfaque Ahmed. A Process-Driven Approach. CRC Press. Taylor Si Francis Group Boca Raton London New York

Surveying and evaluating tools for managing processes for software intensive systems

1. Introduction. Annex 7 Software Project Audit Process

Agile SW Siemens

Agile Scrum Workshop

Plan-Driven Methodologies

CHAPTER 7 Software Configuration Management

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

Page 1. Outline of the Lecture. What is Software Configuration Management? Why Software Configuration Management?

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

(Refer Slide Time: 01:52)

Application of software product quality international standards through software development life cycle

White Paper Case Study: How Collaboration Platforms Support the ITIL Best Practices Standard

Quality Assurance Software Development Processes

Demand & Requirements Management Software Development QA & Test Management IT Operations & DevOps Change Management Agile, SAFe, Waterfall Support

Driving Your Business Forward with Application Life-cycle Management (ALM)

Enhancing The ALM Experience

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

Life Cycle Management for Oracle Data Integrator 11 & 12. At lower cost Get a 30% return on investment guaranteed and save 15% on development costs

Increasing Business Efficiency and Agility for ATGbased. Systems. the business challenge: upgrading the development pipeline

TESTING FRAMEWORKS. Gayatri Ghanakota

Advanced Software Engineering. Software Development Processes

Chapter 9 Software Evolution

Testing Tools Content (Manual with Selenium) Levels of Testing

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

Basic Trends of Modern Software Development

Introduction to Agile Software Development

Software Life Cycles and Configuration Management

VAIL-Plant Asset Integrity Management System. Software Development Process

Automated Acceptance Testing of High Capacity Network Gateway

A Software Engineering Process for Operational Space Weather Systems. S. Dave Bouwer, W. Kent Tobiska Space Environment Technologies

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

ASSURING SOFTWARE QUALITY USING VISUAL STUDIO 2010

Agile Software Project Management Methodologies

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

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

Agile Testing. What Students Learn

Chapter 8 Software Testing

Transcription:

Real Time Embedded Software Development Using Agile Technology An Experience Report Vincent Rivas Joseph N Frisina BAE SYSTEMS Information and Electronic Systems Integration Inc CNIR

Agile Development Concepts! Deliver customer valued and tested software early and continuously. " Progress is measured by passing customer approved acceptance tests executed during demos " Customer participates in the planning effort " Automated continuous builds verify coded repository integrity " Test Driven Design is practiced Emphasis on early requirements based test development! Evolving requirements are managed through continuous customer/developer collaboration.! Design artifacts created through automated methods " Design Documents " UML Models 2

Agile Development Concepts! Continuous attention to technical excellence and high quality design is crucial. " Object Oriented Design Patterns and principles applied " Continuous refactoring " Fagan inspections applied at regular intervals! Development team monitors and adjusts behaviors at regular intervals to increase effectiveness. " How are we doing according to our plan? " Team velocity estimation based on Yesterday s Weather! Do the simplest thing that will work (pass tests) at any given time (KISS principle). " Only include features/infrastructure when absolutely needed 3

Evolution of Agile Technology at BAE SYSTEMS! Maintainability issues arose on some programs " Inadequate Unit Testing " Big Bang Integrations occurred introducing latent undetected bugs " Needed a better way to manage integration activities! Industry advances in Software Development were tapped into " Design Patterns " OO Design Principles " Open Source Community offerings in tools and technology " Unit Testing/Regression Testing Frameworks! Agile Technology solution initiated through the Software Technology Insertion Review Board (STIRB) Initiative! SW Developer Grass Roots movement created " Received Management Level Support " Isolated Agile practices were adopted by a few developers with prior Agile experience " Those few developers provided a highly fertile ground for allowing other people to get involved and grow 4

Evolution of Agile Technology at BAE SYSTEMS! Agile Development Environment (ADE) Toolset developed to support a more comprehensive approach to Agile development! ADE Toolset Technology Insertion Pilot completed and approved! Pilot Program on a real time embedded software defined radio project Initiated and Completed! ASCEND Methodology Developed based on Pilot Program Activities! Deployed successfully to second real time embedded project " Medium scale (6-8 engineers)! Large Scale Program Rollout in process 5

ASCEND Methodology! Agile Software Configurable ENgineering Development environment! Customized Development Methodology based on industry standard Agile practices " Customizations needed to allow for classic waterfall artifacts and processes to be utilized while still remaining true to the Agile Manifesto! High level workflows created to guide development activities! Tailoring/Specialization of some existing software processes is documented in the ASCEND Methodology document " E.g. SCM, Software Planning, Code/Unit Test, Modeling! Customized training packages created to support the methodology! Is a part of the existing overarching Software Engineering Process Handbook (SEPH) developed to support BAE Systems CMMI level 5 software organization.! Served as the key process document used to roll out the ASCEND methodology beyond the pilot project. 6

Agile Development Environment (ADE) Tools! Key Toolset Attributes " Overall toolset comprised of an integrated set of constituent tools " Exhibits a common web based interface " Customizable and Extensible " Supports ASCEND Workflow Processes 7

Agile Development Environment Tools! XPlanner - Agile Planning tool " Supports the Agile Planning Game Multiple levels of tracking, stories, tasks, projects Tracks perfect programming hours Provides for user friendly way of checking story progress to support iteration based replanning! Scarab - Issue Tracking tool " No Special Requirements! CVS Revision Management " Support standard Branch Merge model " Integrate with repository usage monitor and repository integrity verifier tool 8

Agile Development Environment Tools! Tinderbox " Support continuous monitoring of the code repository Automated builds 24/7 repository verification # Runs regression test suite # Verifies documentation is in place # Identifies guilty party (e.g. what code change broke the build or caused the regression test to fail?) " Repository status must be clearly visible to all developers " Color coded views of repository build status " Email failure notification reports! lcov Code Coverage tool " shows unexecuted lines of code " shows number hits per line 9

Agile Development Environment Tools! CPPUNIT Unit Testing Framework " Supports test suites and test case structure definition " Helper Macros available to check test results via assertions " Automatically aggregates test cases to create regression test suites " Test Cases coexist with operational code in the same repository! Doxygen " Generates UML inheritance diagrams " Extracts comments from code " Has warning capability for missing comments " Is configurable " Provides output suitable for Mil Std documentation formats 10

Major Contributors to Design Design Metrics and Principles Requirements Design Patterns Test Definition Peer Review (Fagan) Design Experience Solution Domain (C++) Modeling Refactoring (Smells) 11

ASCEND High Level Workflow Team Formation Activity StoryBoard / Requirements Activity Pattern Identification Activity Planning Activity Test Driven Development Activity Collect Metrics/Defect Prevention Activity 12

ASCEND TDD Workflow Define Requirements Based test suite Implement Patterns Implement Infrastructure Implement Test Cases to Drive Feature Development Develop Feature Verify Code Coverage Refactor Review Velocity Adjust Plan Refine Requirements Update Model 13

Design Patterns! Gang of Four " Identified recurring object structure and interactions in industry. " Favor object composition over inheritance! Pattern based software development involves reusing standard or canonical forms of widely accepted and cataloged design patterns " Patterns can be utilized in isolation or in conjunction with other patterns " Results in highly flexible and maintainable software! Domain specific Patterns " BAE has establish sets of enterprise patterns e.g. Link 16, Cryptos, etc. " SCA Developer s Kit Encapsulates SCA patterns e.g. extension object used in port definition! Waveforms designed using Pattern-Oriented SW Architecture " Commonality/Variability Analysis used to find what varies and what is common in the design and encapsulate it " Heavy use of patterns/principles found in: GoF (Gamma, et al.), POSA I/II (Schmidt) 14

Test Driven Development (TDD)! Requirements based test cases developed very early in the development cycle. " Involves writing test code for code that does not yet exist " Write unit tests against design " Tests exert force on design Specify concept of class operation, interface, pre-post conditions. " Designing from a client s (class user s) perspective results in a more comprehensive class interface design.! Investigation of High Risk areas are addressed first using spike solutions! Abstract Factory based spoofing approach used. " Allows the design of code to be tested in the presence of a non-invasive test harness. 15

Test Driven Development (TDD)! Tests are continuously updated and run on both new and existing code/design " Tests become part of the system s formal regression test suite! When tests are run against code, code coverage metrics are utilized. " Drive unit test code coverage to 100% " Insures all requirements are satisfied and no untested design/code exists 16

Experience To Date! Pilot Program showed 18% improvement over highest coding rate on any BAE Systems CNIR Division project! Defect Rate was unchanged " As measured by Fagan Code Reviews! Running Tested Feature Metric collected " The mother of all Agile metrics " Shows feature completion dates! Scalability to larger projects has not been proven yet 17

Lessons Learned! Common misconceptions regarding Agile Technology were quickly dispelled by Agile pilot project Hot Start " Progress of toolset development and early success of pilot program received management s attention and acceptance of Agile Methods! Formal customer presentations must be worded very carefully so as to not fuel any misconceptions about Agile. " I just reverse engineer the code to get the design!! Complete auto generation of documentation isn t there yet. " High level design pattern UML diagrams created by hand! One Customer may not be enough. " May need orthogonal views of the system much like Fagan inspection approach 18

Lessons Learned! Iteration based target board demos provide quick, continuous, highly visible feedback to project stakeholders! Agile software efforts can be tracked according to typical plan driven earned value method " Basic approach is to define Agile Releases that correspond to the typical spiral stages (Requirements, Preliminary Design, Detailed Design, Code/Unit Test etc ) " Define classic Agile iterations within these Releases. " Can track according to the Agile Planning method " Releases are tracked using typical earned value methods! In house training crucial to technology insertion " C++ Study Groups " Design Pattern Study Groups " C++ Standard Template Library (STL) courses " Fagan Inspection training " UML Training 19

Contacts Name: Vincent Rivas Tel: 973-305-2588 email: vincent.rivas@baesystems.com Name: Joseph N Frisina Tel: 973-305-2240 email: joseph.frisina@baesystems.com 20