Reduce Development and Testing Time on Embedded Space Programs With Auto- Generated Code Software Engineer Northrop Grumman Electronic Systems Matthew.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Acceptance Testing.
P5, M1, D1.
Test Automation Success: Choosing the Right People & Process
Why Use Test Driven Development (TDD)?.  Why the need to change to TDD.  Talk about what TDD is.  Talk about the expectations of TDD.
CIS-74 Computer Software Quality Assurance Systematic Software Testing Chapter 1: An Overview of the Testing Process.
Key-word Driven Automation Framework Shiva Kumar Soumya Dalvi May 25, 2007.
Software Reuse SEII-Lecture 28
Framework is l Reusable Code, often domain specific (GUI, Net, Web, etc) l expressed as l a set of classes and l the way objects in those classes collaborate.
Documentation 1 Comprehending the present – Investing in the future.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
MotoHawk Training Model-Based Design of Embedded Systems.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
AN APPLICATION SPECIFIC TECHNIQUE FOR RETRIEVAL AND ADAPTATION OF TRUSTED COMPONENTS Benny Thomas Master of Computer Science Supervised by Dr. David Hemer.
USC 21 st International Forum on Systems, Software, and COCOMO Cost Modeling Nov 2006 University of Southern California Center for Software Engineering.
11.1 Lecture 11 CASE tools IMS Systems Design and Implementation.
Software Reuse Building software from reusable components Objectives
Requirements Analysis 5. 1 CASE b505.ppt © Copyright De Montfort University 2000 All Rights Reserved INFO2005 Requirements Analysis CASE Computer.
USC 21 st International Forum on Systems, Software, and COCOMO Cost Modeling Nov 2006 University of Southern California Center for Software Engineering.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Design, Implementation and Maintenance
© Company Confidentialwww.itcinfotech.com Business Case for Test Automation S.Janardhanan Chief Technology Officer ITC Infotech India Limited Business.
Assuming Software Maintenance of a Large, Embedded Legacy System from the Original Developer by William L. Miller Lawerence B. Compton Bruce L. Woodmansee.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Software Engineering Reuse.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
MAPLDDesign Integrity Concepts You Mean We’re Still Working On It? Sustaining a Design.
SOFTWARE REUSABILITY AJAYINDER SINGH CSC What is Software Reuse Software reuse is the process of implementing or updating software systems using.
Software Life Cycle Requirements and problem analysis. –What exactly is this system supposed to do? Design –How will the system solve the problem? Coding.
FPGA-Based System Design: Chapter 6 Copyright  2004 Prentice Hall PTR Topics n Design methodologies.
Updating JUPITER framework using XML interface Kobe University Susumu Kishimoto.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Using the CMMI in small Organisations Stephen Fletcher PAS Ltd, UK.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
SSC SI Data Processing Pipeline Plans Tom Stephens USRA Information Systems Development Manager SSSC Meeting – Sept 29, 2009.
March 2004 At A Glance NASA’s GSFC GMSEC architecture provides a scalable, extensible ground and flight system approach for future missions. Benefits Simplifies.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Software Engineering Lecture # 1.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Joy Shafer October, 2011  Why am I here?  Why are you here?
State of Georgia Release Management Training
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Best 3 Software Development Languages. Hibernate Training Hibernate is a high-performance object-relational mapping tool and query service. Hibernate.
Benefits of a Virtual SIL
Space FSW Conference 2016 Matthew Conte Software Engineer
Software Development.
cFS Workshop Ground Systems & Kits
Simulink Interface Layer (SIL)
Design and Implementation
Study of Tools for Command and Telemetry Dictionaries
Script-less Automation: An Approach to Shift-Left.
Information Systems Development
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Your Facility Your Information
Chapter 7 –Implementation Issues
Automation of Control System Configuration TAC 18
Presentation transcript:

Reduce Development and Testing Time on Embedded Space Programs With Auto- Generated Code Software Engineer Northrop Grumman Electronic Systems Matthew Conte

Abstract Embedded software for space systems is one of the most expensive types of software to produce, mainly because of the rigorous testing involved. However, developers on the Northrop Grumman Space Systems Software team have observed that infrastructure code such as class definitions for interface messages, configuration files, and telemetry points is often repetitive, with each class differing only in parameters and implementation of common functions. It became clear that rewriting this repetitive code for each program and, sometimes, within a single program was taking developers’ focus away from the true engineering problems. To reduce time spent writing repetitive code, we have built up a suite of tools to parse human-readable documents such as Interface Control Documents (ICDs), configuration files, and telemetry definition spreadsheets and automatically generate C++ classes from these files. The use of these tools has improved code reuse and reduced the number of SLOCs that must be tested, resulting in cost and schedule benefits for our programs and freeing up developers’ time to concentrate on the unique technical challenges of each program. This presentation will explain how we designed our code generation tools and discuss the many benefits of these tools to our products. 2

Agenda Who We Are Why Auto-Generate Code? Auto-Generation Tool Suite Evaluation of Our Auto-Gen Efforts Lessons Learned 3

Who We Are Northrop Grumman Space Systems Software (SSSW) group Develop embedded FSW for space systems Maintain a test software (TSW) suite to control our integration lab equipment and exercise functions of the system Work with a variety of languages and tools –C++, Java, Tcl, Python –VxWorks Workbench 4

Program Background Our system is highly configurable –Configuration files –Telemetry definition files –Calibration files Need C++ code to read in these files at startup and provide the data to the relevant software components Dozens of each type of file –Writing and maintaining C++ classes for each individual file would be a large effort Settings change constantly during the testing phase of the program –If FSW group is bogged down in supporting test engineers, no time to continue development 5

FSW Development Cycle 6 Modify Config File Update C++ classes to reflect config file changes FSW Make code changes to use new values/fields Provide new build to tester Red boxes indicate steps in the cycle where FSW is directly involved FSW engineer required at every step

Why Auto-Generate Code? Engineers don’t want to do tedious work of maintaining dozens of configuration files –Especially not during Integration and Test (I&T) phase –Systems and test engineers update config files multiple times per day –Being bogged down with small updates distracts from critical development work Program management wants a shorter schedule and lower cost –Test the auto-gen tool once instead of manually-edited code every time it changes –Time spent writing tool up-front saves developers’ time later –Tools can be repurposed for later programs, promoting reuse 7

Auto-Generation Tool Suite Developed a suite of Java tools to generate code for several types of configuration files Inputs: –Spreadsheets and text files created by Systems and Test Engineers –C++ class templates Outputs: –C++ classes which are built into our flight code Hold the data from the input files Provide an interface for the rest of the system to access the data 8 Java Tools Core Library ConfigParser Calibration Parser EventAndTelem Parser Common features such as parsing text files and populating code templates

Configuration Parser 9 ConfigParser Tool Test Engineer creates config.txt Tool outputs C++ classes Software engineer makes required software changes and provides build to tester Engineer feeds config.txt into the Java tool Manually coding changes to program logic is unavoidable. But these are now the only changes which involve FSW engineer.

Configuration Parser Role of the software engineering team is minimized in the process of updating configuration files for testing New classes are automatically generated by the tool Tool is trusted so testing not required on updated classes Quick turnaround compared to manually modifying and testing C++ code Turn out build in minutes Speed essential because of tight I&T schedule Less burden placed on software group to support testing More time to develop actual flight code 10

Event and Telemetry Parser 11 Telemetry ICD created in collaboration with customer EventAndTelemParser Tool Feed spreadsheet into EventAndTelemParser Outputs C++ classes and definition files for TSW suite

Event and Telemetry Parser System events and telemetry points are more complex than config files Definitions must be coordinated between FSW and TSW TSW simulates sending/receiving telemetry from FSW Cannot test unless both are in-sync 12 TSWUUT FSW Telemetry Tool generates the interface as well as the message- building classes for both TSW and FSW

FSW Development Cycle (with tool suite) 13 Modify Config File Update C++ classes to reflect config file changes FSW Make code changes to use new values/fields Provide new build to tester Removes FSW engineers from steps 1. and 2. Now only required for code changes in step

How Has Auto-Generation Worked for Us? Software engineers enjoy the auto-generation approach –Less tedious work –Reduced testing time for code changes –More time to work on the true engineering challenges Still figuring out the development life-cycle for the tools –See Lessons Learned Has been a tougher sell to management –Need to be convinced to spend money on non-delivered code 14

Lessons Learned Rigorous testing of the tools should be performed well before I&T phase of the program –Time fixing bugs in tool is time that could be spent fixing integration issues –Sinking too much maintenance time into the tool defeats its purpose Develop early and reuse –This was the SSSW group’s first foray into auto-generating config code –Developed tools from scratch side-by-side with FSW Keep tools up-to-date –Make change to tool as soon as new formats released –Don’t let auto-gen files get “stale”; regenerate with new builds Maximize use of code templates –Easier to swap out than if the text of the CPP file is hard-coded in the tool Convince management of the value of investing time in auto-gen tools up- front 15