Table of Contents:
  • 6.2.3. SOA Gray-Box Testing
  • 6.2.4. SOA Security Testing
  • 6.3. GUI-Based Testing
  • 6.4. Mobile Testing
  • 6.5. Big Data Testing
  • 6.6. Automotive Testing
  • 7. Discussion and Conclusions
  • References
  • Chapter Four: Optimizing the Symbolic Execution of Evolving Rhapsody Statecharts
  • 1. Introduction
  • 1.1. Research Statement and Scope
  • 1.2. Contributions
  • 1.3. Chapter Organization
  • 2. Background
  • 2.1. Modeling and Analysis in the IBM Rational Rhapsody Developer MDE Tool
  • 2.1.1. Rhapsody Object Model Diagrams
  • 2.1.2. Rhapsody Statecharts
  • 2.1.3. Analysis and Verification of State-Based Models
  • 2.2. Symbolic Execution
  • 2.3. Dependence Analysis
  • 2.3.1. Control Dependence
  • 2.3.2. Data Dependence
  • 2.3.3. Communication Dependence
  • 2.4. Model Differencing
  • 2.5. Model Transformation
  • 2.6. Summary
  • 3. Related Work
  • 3.1. Two Ways to Reconcile Analysis and Evolution Efficiently
  • 3.2. Analysis and Verification of Statechart-Like Models
  • 3.3. Incremental Analysis and Verification Techniques for Evolving Programs
  • 3.4. Incremental Analysis and Verification in Model-Based Development
  • 3.5. Summary
  • 4. Standard Symbolic Execution of Rhapsody Statecharts
  • 4.1. Standard Symbolic Execution of Individual Rhapsody Statecharts
  • 4.1.1. Statecharts-to-Mealy-Like-Machines Transformation: SC2MLM
  • 4.1.2. Symbolic Execution of MLM:MLM2SET
  • 4.2. Symbolic Execution of a Model of Communicating Rhapsody Statecharts
  • 4.2.1. Rhapsody Model of Communicating Statecharts-to-Communicating MLMs Transformation: RhapM2CMLM
  • 4.2.2. Symbolic Execution of Communicating MLMs:CMLM2GSET
  • 4.3. Summary
  • 5. Optimizing Symbolic Execution of Evolving Rhapsody Statecharts
  • 5.1. Motivating Example
  • 5.1.1. Optimization Via Reuse-An Artifact-Oriented Evolution Support Approach
  • 1.3. Schedule Nondeterminism and Input Nondeterminism
  • 2. Explicit-State Bounded Model Checking
  • 2.1. Stateful Search
  • 2.2. Symmetry Reduction
  • 2.3. Partial Order Reduction
  • 2.4. Execution-Based Search
  • 2.5. Stateless Search
  • 2.6. Tools and Recent Advancements
  • 2.7. Parallel Model Checking
  • 2.8. Model Checking in Other Domains
  • 3. Symbolic Execution
  • 3.1. Stateful Symbolic Execution
  • 3.2. Stateless Symbolic Execution
  • 3.3. Symbolic Bounded Model Checking
  • 3.4. Ranged and Incremental Symbolic Execution
  • 3.5. Parallel Symbolic Execution
  • 3.6. Other Advancements in Symbolic Execution
  • 4. Abstraction-Based Model Checking
  • 4.1. Abstraction Refinement
  • 4.2. Tools and Recent Advancements
  • 5. Conclusions
  • References
  • Chapter Three: Emerging Software Testing Technologies
  • 1. Introduction
  • 2. Basic Concepts of Testing
  • 2.1. Type of Tests
  • 2.1.1. Static Techniques
  • 2.1.2. Dynamic Techniques
  • 2.2. Objectives of Testing
  • 2.3. Test Levels
  • 2.3.1. Unit Test
  • 2.3.2. Integration Test
  • 2.3.3. System Test
  • 2.3.4. Regression Test
  • 3. Test Cases Generation
  • 3.1. Search-Based Testing
  • 3.2. Model-Based Testing
  • 3.3. Black-Box vs White-Box Testing
  • 3.3.1. Black-Box Testing
  • 3.3.2. White-Box Testing
  • 3.3.3. Gray-Box Testing
  • 3.4. Symbolic Execution
  • 3.5. Nonfunctional Testing
  • 4. Test Challenges
  • 4.1. Oracle Problem
  • 4.2. Full Automation
  • 4.3. Scalability of Testing
  • 4.4. Test Effectiveness
  • 4.4.1. Measuring the Software
  • 4.4.2. Measuring the Testing Technique
  • 4.4.3. Test Cases Selection and Prioritization
  • 5. Testing Process
  • 5.1. Sequential Models
  • 5.2. Iterative Models
  • 5.3. Agile Development Process
  • 6. Domain-Specific Testing
  • 6.1. Cloud-Based Testing
  • 6.2. SOA Testing
  • 6.2.1. SOA Black-Box Testing
  • 6.2.2. SOA White-Box Testing
  • 4.1.2. Convert Static Data to Procedural Data (a.k.a. Encode Literals)
  • 4.1.3. Mixed Boolean-Arithmetic
  • 4.1.4. White-Box Cryptography
  • 4.1.5. One-Way Transformations
  • 4.2. Variable Data Transformations
  • 4.2.1. Split Variables
  • 4.2.2. Merge Variables
  • 4.2.3. Restructure Arrays
  • 4.2.4. Reorder Variables
  • 4.2.5. Dataflow Flattening
  • 4.2.6. Randomized Stack Frames
  • 4.2.7. Data Space Randomization
  • 4.3. Code Logic Transformations
  • 4.3.1. Instruction Reordering
  • 4.3.2. Instruction Substitution
  • 4.3.3. Encode Arithmetic
  • 4.3.4. Garbage Insertion
  • 4.3.5. Insert Dead Code
  • 4.3.6. Adding and Removing Function Calls
  • 4.3.7. Loop Transformations
  • 4.3.8. Adding and Removing Jumps
  • 4.3.9. Program Encoding
  • 4.3.10. Self-Modifying Code
  • 4.3.11. Virtualization Obfuscation
  • 4.3.12. Control Flow Flattening
  • 4.3.13. Branch Functions
  • 4.4. Code Abstraction Transformations
  • 4.4.1. Merging and Splitting Functions
  • 4.4.2. Remove Comments and Change Formatting
  • 4.4.3. Scrambling Identifier Names
  • 4.4.4. Removing Library Calls and Programming Idioms
  • 4.4.5. Modify Inheritance Relations
  • 4.4.6. Function Argument Randomization
  • 4.5. Summary of Survey
  • 5. Discussion
  • 6. Related Work
  • 6.1. Encryption via Trusted Hardware
  • 6.2. Server-Side Execution
  • 6.3. Code Tamper-detection and Tamper-proofing
  • 6.4. Cryptographic Obfuscation
  • 6.5. Other Surveys of Software Obfuscation
  • 7. Conclusion
  • References
  • Back Cover
  • Front Cover
  • Advances in Computers
  • Copyright
  • Contents
  • Preface
  • Chapter One: Model-Based Testing for Internet of Things Systems
  • 1. Introduction
  • 2. Challenges of Testing IoT Systems
  • 2.1. IoT Layers
  • 2.2. Key Challenges
  • 2.2.1. Scalability
  • 2.2.2. Interoperability
  • 2.2.3. Security
  • 3. State of the Art
  • 3.1. Model-Based Testing
  • 3.2. MBT Approaches for the IoT Domain
  • 3.2.1. Functional Testing
  • 3.2.2. Security Testing
  • 3.2.3. Online Testing
  • 3.3. MBT Tools
  • 3.3.1. CompleteTest
  • 3.3.2. DIVERSITY
  • 3.3.3. FMBT
  • 3.3.4. HTG
  • 3.3.5. Lurette
  • 3.3.6. MISTA
  • 3.3.7. Modbat
  • 3.3.8. MoMuT
  • 3.3.9. PragmaDev
  • 3.3.10. Tcases
  • 3.3.11. TCG
  • 3.3.12. VERA
  • 3.3.13. CertifyIt
  • 4. MBT for IoT Conformance Testing
  • 4.1. MBT Specificities for IoT Conformance Testing
  • 4.1.1. MBT Model
  • 4.1.2. Test Case Generation
  • 4.1.3. Test Case Reification and Execution
  • 4.2. Experimentation and Results
  • 4.3. Lessons Learnt
  • 5. MBT for IoT Security Testing
  • 5.1. MBT Specificities for IoT Security Testing
  • 5.1.1. MBT Model
  • 5.1.2. Test Case Generation
  • 5.1.3. Test Case Reification
  • 5.1.4. Test Case Execution
  • 5.2. Experimentation and Results
  • 5.3. Lessons Learnt
  • 6. Online MBT for IoT Robustness Testing
  • 6.1. MBT Specificities for the IoT Robustness Testing
  • 6.1.1. MBT Model
  • 6.1.2. Test Case Generation, Reification, and Execution
  • 6.2. Future Works
  • 7. Model-Based Testing as a Service
  • 7.1. MBTAAS Architecture
  • 7.2. Customization Service
  • 7.3. Publication Service
  • 7.4. Execution Service
  • 7.5. Reporting Service
  • 8. Lessons Learnt and Discussion
  • 9. Conclusion
  • Acknowledgments
  • References
  • Chapter Two: Advances in Software Model Checking
  • 1. Introduction
  • 1.1. Properties
  • 1.2. Soundness and Completeness
  • 5.1.2. Optimization Via Reduction-An Analysis-Oriented Evolution Support Approach
  • 5.2. Proposed Symbolic Execution Optimizations for Evolving Rhapsody Statecharts
  • 5.2.1. Memoization-Based Symbolic Execution
  • 5.2.1.1. Technique Description
  • 5.2.1.2. Discussion
  • 5.2.2. Dependency-Based Symbolic Execution
  • 5.2.2.1. Technique Description
  • 5.2.2.2. Discussion
  • 5.3. MSE or DSE?
  • 5.4. Summary
  • 6. Implementation
  • 6.1. Implementation Decisions
  • 6.2. Interaction With KLEE
  • 6.3. Implementation of the MQL and TGL-Based Transformation Components
  • 6.4. Interaction With the IBM Rational Rhapsody DiffMerge and Its Related Components
  • 6.5. Summary
  • 7. Evaluation
  • 7.1. Research Questions and Variables of Interest
  • 7.2. Case Study Artifacts
  • 7.3. Evaluation Setup
  • 7.4. Results and Analysis
  • 7.5. Threats to Validity
  • 7.6. Summary
  • 8. Conclusion: Summary, Future Work, and Perspective
  • 8.1. Summary and Future Work
  • 8.2. Perspective: The Road Ahead for MDE
  • 8.2.1. Challenges
  • 8.2.2. Opportunities
  • Appendix
  • A.1. Ecore Meta-Model of CMLMs
  • References
  • Chapter Five: A Tutorial on Software Obfuscation
  • 1. Introduction
  • 2. Classification of Code Obfuscation Transformations
  • 2.1. Abstraction Level of Transformations
  • 2.2. Unit of Transformations
  • 2.3. Dynamics of Transformations
  • 2.4. Target of Transformations
  • 2.4.1. Data Transformations
  • 2.4.2. Code Transformations
  • 2.5. Summary of Obfuscation Transformation Classification
  • 3. Classification of MATE Attacks
  • 3.1. Attack Type Dimension
  • 3.2. Dynamics Dimension
  • 3.3. Interpretation Dimension
  • 3.4. Alteration Dimension
  • 3.5. Summary of MATE Attack Classification
  • 4. Survey of Obfuscation Transformations
  • 4.1. Constant Data Transformations
  • 4.1.1. Opaque Predicates
  • Includes bibliographical references