Presentation cover page EU A Complete HighIntegrity Software Development Stack Tucker Taft AdaCore Inc December 2014 www.adacore.com System Engineers vs. Software Engineers “Who needs programmers? Why do we have to depend on them to implement our design?” “Uh boy, not another attempt at Programming with Pictures…” High-Integrity Software Development Stack 2 Who is in charge, and do we really need programmers? • System Architects and Engineers develop the original design • In a traditional environment, there is a “hand off” to the software engineers – Detailed software design not directly linked to high level design – Design and even architecture may evolve as software development issues arise – Net effect => can become an us vs. them situation High-Integrity Software Development Stack 3 Model Based System Engineering Execution artifacts could include: System behavior, timing and statistics Using standard-based model interchange System engineers analyze, simulate and validate the system design, and allocate requirements to components. System engineers create the models Using a standardconforming model execution tools Using standardconforming modeling tools Models can include both hardware and software components. • Hardware and software engineers develop components to satisfy the requirements. • Test engineers develop the test environment to verify the requirements. Courtesy of Ed Seidewitz High-Integrity Software Development Stack 4 So How does Model-Based Approach Help reduce the us vs. them? • Model-based approach, there need not be a “hand off” – High-level design (produced by system engineers) is represented in a modeling language that supports automated code generation. – Software engineers are still important: they now focus on providing new or enhanced parameterized building blocks, codegeneration capabilities, and infrastructure. • Parameterized, annotated, high-performance building blocks in a software development “stack” can become key to commonality and productivity. High-Integrity Software Development Stack 5 Shift to a Model-Based Approach was a Wakeup call for AdaCore, a Programmer-focused Tools Company • Major aerospace customer shifted engineers almost completely to model-based engineering – Simulink, SCADE, etc. with automated code generation • Remaining number of users for “conventional” 3rdgeneration compiler with IDE: – Five seats -- their tools group • Our traditional users were disappearing … • Needed to broaden our focus and develop a deeper software development “stack” High-Integrity Software Development Stack 6 What exactly is a Software Development Stack? Architecture Tools Definition, Analysis, Documentation Modeling Tools Drawing, Analysis, Simulation, Autocoding Compiling, Analysis, Scheduling, Debugging Verification Tools Testing, Analysis, Coverage, Proof Hardware Coding Tools High-Integrity Software Development Stack 7 A Quick History of AdaCore High-Integrity Software Development Stack 8 AdaCore 1994 High-Integrity Software Development Stack 9 AdaCore 2004 High-Integrity Software Development Stack 10 AdaCore 2014 Code Peer High-Integrity Software Development Stack 11 Current AdaCore Product Line • GNATPro Ada/C/C++ Compilers and Run-Times – Various run-times available: VxWorks, bare-board, zero-foot-print – Includes GNAT Programming Studio (GPS) IDE with GDB-based visual debugger (Eclipse-based GNATBench also available) • GNATCoverage based on QEMU emulator – Can also use Valgrind or hardware probes to provide trace info • CodePeer control and data flow-based Static Analysis – Qualified tool infers Pre/Postconditions from code itself – Can be used to prove absence of language run-time errors – Will check user-specified Pre/Postconditions and other Assertions • SPARK Formal Verification tool set – Based on SMT solver backend (CVC4, Alt-Ergo) – Integrates with Ada 2012 Pre/Postcondition syntax, allows smooth combination of “proof” and “test” High-Integrity Software Development Stack 12 Upcoming AdaCore Product -- QGen • QGen automated code generator for Simulink – Qualifiable code generator will reduce need for unit testing of generated code, coupled with certifiable library – Generated code is easy to read and easily traceable back to Simulink source – Generates MISRA C or SPARK subset of Ada – Integrated with CodePeer-based Code Verifier – Now in Beta Test High-Integrity Software Development Stack 13 AdaCore’s Growing Stack of Tools, Based on Broad-Spectrum Modeling/Programming Language Family Executable Specifications, System Models, Verifiable System Invariants Simulate and Verify System Properties CertifiableCertifiable Libraries Libraries Certifiable Libraries SPARK/CodePeer SPARK/CodePeer GNATPro/ParaSail GNATPro SPARK/CodePeer GNATPro/ParaSail GNATCoverage GNATCoverage Cert. ToolsCert. Tools GNATCoverage Cert. Tools Certified Software-Intensive High-Integrity System High-Integrity Software Development Stack 14 AdaCore Ongoing Vision: Provide Broad Spectrum of Open-Source Language Technology and High-Integrity Building Blocks to help our Customers Engineer their Increasingly Complex, Software-Intensive Systems High-Integrity Software Development Stack 15 For more information… Steve Baird and Tucker Taft AdaCore [email protected] [email protected] www.adacore.com High-Integrity Software Development Stack 16
© Copyright 2026 Paperzz