Advances in computers Volume 108 Volume 108 /
Advances in Computers, Volume 108 , the latest volume in a series published since 1960, presents detailed coverage of innovations in computer hardware, software, theory, design and applications. This book provides contributors with a medium in which they can explore subjects in greater depth and bre...
Otros Autores: | , |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Cambridge, Massachusetts :
Academic Press
2018.
|
Edición: | First edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630732506719 |
Tabla de Contenidos:
- 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.
- 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.
- 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.
- 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.
- 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.