SlideShare a Scribd company logo
Architecture Reconstruction and
  Analysis of Medical Device
  Software                 Blood Pressure
                           Monitor



                                                     CARA Software


Fraunhofer                                                                           US FDA
Dharmalingam Ganesan                                                            Raoul Jetley
Mikael Lindvall                                                                  Paul Jones
Rance Cleaveland                                                                   Yi Zhang
          © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
Context
• FDA reviews 510k pre-market submissions for safety of
  medical devices
   – Hazard analysis, arch. docs, and test results are reviewed, but
     not source code
   – (may) review code if failures are reported in field


• Submitted arch. docs are typically “too abstract” – not
  easy to analyze for safety

• What (as-built) architectural viewpoints are needed for
  safety and assurance cases?


                © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
Software analysis needs at FDA
• Basic needs: identify unsafe constructs (enough)
• Safety “requires” good engineering
   – What is the as-built architecture of the software?
   – Is the architecture based on good engineering?
       • Good modular structure? Good separation of concerns?

• Safety “requires” extensive testing
   – Was the medical device software tested enough? (can’t answer)
       • Easy to test unit-by-unit?
       • Easy to verify using static analysis tools (SATs)?

• Developed a method to address these questions
   – Discovers static and runtime structures from code
   – These structures are abstract, yet concrete and precise



                                     © 2011 Fraunhofer USA, Inc.
                             Center for Experimental Software Engineering
Brief overview of the method
•   Premise: As-built architecture is inspired and influenced by external entities
     – (e.g., libraries, COTS software) used by the software
     – Grounded on analysis of more than 2 dozen industrial systems

•   A knowledge base (KB) of keywords (e.g., “taskSpawn”, “msgQSend”) support the
    discovery of architectural structures hidden in source code

•   Code relations (e.g., call, import) are extracted and then a suite of architectural
    structures is discovered from different viewpoints using the KB

•   Discovered runtime structures cover different viewpoints including:
     –   Partition of modules into tasks, Task Spawn, Inter-task communication and synchronization


•   Discovered structures are used to reason about testability and safety issues

•   Architecture reconstruction algorithms are formalized using relational operators (e.g.,
    transitive closure, composition) for task-oriented architectures – see the paper



                       © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
Sample outputs of the method
                       Alarm_Svc
                                                                 Some good design principles in place:
 B2B_Broker
                                                                     Separate task for I/O bound function
                                                                     Separate task for periodic function (e.g.,
  CUII_Svc                                                            collecting blood pressure beat-to-beat)
                             CUII_MSGQ                           However, coordination and computation are not separated
CARA_Main
                                                                    Communication channels not abstracted
                                                                    Synchronization mechanism not abstracted
                                CARA_MSGQ

                                                                                                 Task1 …       Task7   CARA_Main      Task9     Task10    Task11
                                                                                 Legend

                                                   Log_Svc                          Task
                                 LOGQ
                                                                                   Entry Point
                                                                                                  cara_interface.c     cara_main.c   file9.c   file10.c   file11.c

                                 DSPQ             Display_Svc
                                                                          Entry points for multiple tasks in one module
       Task                 file2.c      file22.c
                                                                          Compiled object file has source code of many tasks
     Uses/requires
                                                                         Static module structure lacks separation of concerns
  Legend
                                                                      Leads to testability issues
                            Task2                                        Unit testing/verification is not easy (if not impossible)
                                        file3.c      file33.c
                                                                    Task specific code and shared modules, types,
 file1.c         file11.c
                                                                    global variables were discovered
                                                                        Used for unit-by-unit verification using SATs
                              util.c
                                                    Task3
       Task1                                                            © 2011 Fraunhofer USA, Inc.
                                                                Center for Experimental Software Engineering
Closing remarks
• Need as-built architecture to configure SATs and interpret their
  detailed output
• Some issues with SATs
   – Wrongly reported several entry functions as dead
   – OS functions for messaging not taken care properly
• SATs are useful but cannot be used right out of the bat
• Analysis of as-built architecture offers complementary design insights
  for safety analysis

• Future Work:
    – Link safety requirements to discovered structures for an assurance case
    – Evolve the catalog of structures for testability and safety
    – Discover behavioral models for verification of safety properties



                                      © 2011 Fraunhofer USA, Inc.
                              Center for Experimental Software Engineering

More Related Content

PDF
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
PPTX
Reverse engineering
PDF
SE2018_Lec 15_ Software Design
PPT
Reverse engineering
PPTX
System Verilog 2009 & 2012 enhancements
PDF
Software Engineering Sample Question paper for 2012
PDF
Context-Oriented Programming
PDF
Binary obfuscation using signals
Upgrading to System Verilog for FPGA Designs, Srinivasan Venkataramanan, CVC
Reverse engineering
SE2018_Lec 15_ Software Design
Reverse engineering
System Verilog 2009 & 2012 enhancements
Software Engineering Sample Question paper for 2012
Context-Oriented Programming
Binary obfuscation using signals

What's hot (20)

PDF
SE2_Lec 20_Software Testing
PDF
Performance testing based on time complexity analysis for embedded software
PPTX
Introduction to System verilog
PDF
System verilog verification building blocks
PPTX
Visual Studio 2010 Testing & Lab Management Tools
PPT
Architecture
PPTX
Data Analysis tool by EBA
PPT
Software testing ari force institute of tech.
PDF
Analysis of Software Complexity Measures for Regression Testing
PPTX
How to Connect SystemVerilog with Octave
PDF
COCOMO methods for software size estimation
PDF
Uvm cookbook-systemverilog-guidelines-verification-academy
PDF
DejaVOO: A Regression Testing Tool for Java Software
PDF
FASE08.ppt
PDF
Aspect Oriented Programming Through C#.NET
PDF
OORPT Dynamic Analysis
PDF
CS8592 Object Oriented Analysis & Design - UNIT V
PDF
02 test automation functional testing (qtp)
PDF
2006 iccce
SE2_Lec 20_Software Testing
Performance testing based on time complexity analysis for embedded software
Introduction to System verilog
System verilog verification building blocks
Visual Studio 2010 Testing & Lab Management Tools
Architecture
Data Analysis tool by EBA
Software testing ari force institute of tech.
Analysis of Software Complexity Measures for Regression Testing
How to Connect SystemVerilog with Octave
COCOMO methods for software size estimation
Uvm cookbook-systemverilog-guidelines-verification-academy
DejaVOO: A Regression Testing Tool for Java Software
FASE08.ppt
Aspect Oriented Programming Through C#.NET
OORPT Dynamic Analysis
CS8592 Object Oriented Analysis & Design - UNIT V
02 test automation functional testing (qtp)
2006 iccce
Ad

Viewers also liked (13)

PPTX
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
PDF
Ivv workshop model-based-testing-of-nasa-systems
PPTX
Automated Testing of NASA Software
PPTX
Verifying Architectural Design Rules of a Flight Software Product Line
PDF
Interface-Implementation Contract Checking
PDF
Testing of C software components using Models
PPTX
Model-based Testing of a Software Bus - Applied on Core Flight Executive
PDF
Exploiting Cryptographic Misuse - An Example
PPTX
Load-time Hacking using LD_PRELOAD
PDF
Reverse Engineering of Software Architecture
PDF
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
PPTX
Linux binary analysis and exploitation
PDF
Automated Test Case Generation and Execution from Models
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Ivv workshop model-based-testing-of-nasa-systems
Automated Testing of NASA Software
Verifying Architectural Design Rules of a Flight Software Product Line
Interface-Implementation Contract Checking
Testing of C software components using Models
Model-based Testing of a Software Bus - Applied on Core Flight Executive
Exploiting Cryptographic Misuse - An Example
Load-time Hacking using LD_PRELOAD
Reverse Engineering of Software Architecture
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Linux binary analysis and exploitation
Automated Test Case Generation and Execution from Models
Ad

Similar to Reverse Architecting of a Medical Device Software (20)

PDF
Performancetestingbasedontimecomplexityanalysisforembeddedsoftware 1008150404...
PPTX
Testing 101
PPS
Software Development Life Cycle Testingtypes
DOCX
Embedded multiple choice questions
PDF
System verilog important
PDF
A Unique Test Bench for Various System-on-a-Chip
PDF
safety assurence in process control
PDF
Asystemforperformanceevaluationofembeddedsoftware 100813001230-phpapp02
PDF
A system for performance evaluation of embedded software
PDF
Developing Safety-Critical Java Applications with oSCJ
PDF
Hazen michael
PPTX
Components in real time systems
PDF
Linux Assignment 3
PDF
A framework for distributed control and building performance simulation
PDF
Measuring Your Code
DOC
SOFTWARE VERIFICATION & VALIDATION
PPTX
EdgarDB - the simple, powerful database for scientific research
PDF
Command center processing and display system replacement (ccpds-r) - Case Study
PDF
Software Reverse Engineering in a Security Context
PDF
Chap2
Performancetestingbasedontimecomplexityanalysisforembeddedsoftware 1008150404...
Testing 101
Software Development Life Cycle Testingtypes
Embedded multiple choice questions
System verilog important
A Unique Test Bench for Various System-on-a-Chip
safety assurence in process control
Asystemforperformanceevaluationofembeddedsoftware 100813001230-phpapp02
A system for performance evaluation of embedded software
Developing Safety-Critical Java Applications with oSCJ
Hazen michael
Components in real time systems
Linux Assignment 3
A framework for distributed control and building performance simulation
Measuring Your Code
SOFTWARE VERIFICATION & VALIDATION
EdgarDB - the simple, powerful database for scientific research
Command center processing and display system replacement (ccpds-r) - Case Study
Software Reverse Engineering in a Security Context
Chap2

More from Dharmalingam Ganesan (20)

PDF
.NET Deserialization Attacks
PDF
Reverse Architecting using Relation Algebra.pdf
PDF
How to exploit rand()?
PDF
Cyclic Attacks on the RSA Trapdoor Function
PDF
An Analysis of RSA Public Exponent e
PDF
An Analysis of Secure Remote Password (SRP)
PDF
Thank-a-Gram
PDF
Active Attacks on DH Key Exchange
PDF
Can I write to a read only file ?
PPTX
How do computers exchange secrets using Math?
PDF
On the Secrecy of RSA Private Keys
PDF
Computing the Square Roots of Unity to break RSA using Quantum Algorithms
PDF
Analysis of Short RSA Secret Exponent d
PDF
Dependency Analysis of RSA Private Variables
PDF
Analysis of Shared RSA Modulus
PDF
RSA Game using an Oracle
PDF
RSA Two Person Game
PDF
RSA without Integrity Checks
PPTX
RSA without Padding
PDF
Solutions to online rsa factoring challenges
.NET Deserialization Attacks
Reverse Architecting using Relation Algebra.pdf
How to exploit rand()?
Cyclic Attacks on the RSA Trapdoor Function
An Analysis of RSA Public Exponent e
An Analysis of Secure Remote Password (SRP)
Thank-a-Gram
Active Attacks on DH Key Exchange
Can I write to a read only file ?
How do computers exchange secrets using Math?
On the Secrecy of RSA Private Keys
Computing the Square Roots of Unity to break RSA using Quantum Algorithms
Analysis of Short RSA Secret Exponent d
Dependency Analysis of RSA Private Variables
Analysis of Shared RSA Modulus
RSA Game using an Oracle
RSA Two Person Game
RSA without Integrity Checks
RSA without Padding
Solutions to online rsa factoring challenges

Reverse Architecting of a Medical Device Software

  • 1. Architecture Reconstruction and Analysis of Medical Device Software Blood Pressure Monitor CARA Software Fraunhofer US FDA Dharmalingam Ganesan Raoul Jetley Mikael Lindvall Paul Jones Rance Cleaveland Yi Zhang © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
  • 2. Context • FDA reviews 510k pre-market submissions for safety of medical devices – Hazard analysis, arch. docs, and test results are reviewed, but not source code – (may) review code if failures are reported in field • Submitted arch. docs are typically “too abstract” – not easy to analyze for safety • What (as-built) architectural viewpoints are needed for safety and assurance cases? © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
  • 3. Software analysis needs at FDA • Basic needs: identify unsafe constructs (enough) • Safety “requires” good engineering – What is the as-built architecture of the software? – Is the architecture based on good engineering? • Good modular structure? Good separation of concerns? • Safety “requires” extensive testing – Was the medical device software tested enough? (can’t answer) • Easy to test unit-by-unit? • Easy to verify using static analysis tools (SATs)? • Developed a method to address these questions – Discovers static and runtime structures from code – These structures are abstract, yet concrete and precise © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
  • 4. Brief overview of the method • Premise: As-built architecture is inspired and influenced by external entities – (e.g., libraries, COTS software) used by the software – Grounded on analysis of more than 2 dozen industrial systems • A knowledge base (KB) of keywords (e.g., “taskSpawn”, “msgQSend”) support the discovery of architectural structures hidden in source code • Code relations (e.g., call, import) are extracted and then a suite of architectural structures is discovered from different viewpoints using the KB • Discovered runtime structures cover different viewpoints including: – Partition of modules into tasks, Task Spawn, Inter-task communication and synchronization • Discovered structures are used to reason about testability and safety issues • Architecture reconstruction algorithms are formalized using relational operators (e.g., transitive closure, composition) for task-oriented architectures – see the paper © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
  • 5. Sample outputs of the method Alarm_Svc  Some good design principles in place: B2B_Broker  Separate task for I/O bound function  Separate task for periodic function (e.g., CUII_Svc collecting blood pressure beat-to-beat) CUII_MSGQ  However, coordination and computation are not separated CARA_Main Communication channels not abstracted Synchronization mechanism not abstracted CARA_MSGQ Task1 … Task7 CARA_Main Task9 Task10 Task11 Legend Log_Svc Task LOGQ Entry Point cara_interface.c cara_main.c file9.c file10.c file11.c DSPQ Display_Svc  Entry points for multiple tasks in one module Task file2.c file22.c  Compiled object file has source code of many tasks Uses/requires Static module structure lacks separation of concerns Legend  Leads to testability issues Task2 Unit testing/verification is not easy (if not impossible) file3.c file33.c Task specific code and shared modules, types, file1.c file11.c global variables were discovered Used for unit-by-unit verification using SATs util.c Task3 Task1 © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering
  • 6. Closing remarks • Need as-built architecture to configure SATs and interpret their detailed output • Some issues with SATs – Wrongly reported several entry functions as dead – OS functions for messaging not taken care properly • SATs are useful but cannot be used right out of the bat • Analysis of as-built architecture offers complementary design insights for safety analysis • Future Work: – Link safety requirements to discovered structures for an assurance case – Evolve the catalog of structures for testability and safety – Discover behavioral models for verification of safety properties © 2011 Fraunhofer USA, Inc. Center for Experimental Software Engineering