Grand Timely Topics in Software Engineering International Summer School GTTSE 2015, Braga, Portugal, August 23-29, 2015, Tutorial Lectures
This tutorial volume includes the revised and extended tutorials (briefings) held at the 5th International Summer School on Grand Timely Topics in Software Engineering, GTTSE 2015, in Braga, Portugal, in August 2015. GTTSE 2015 applied a broader scope to include additional areas of software analysis...
Saved in:
Main Authors | , , , , |
---|---|
Format | eBook Conference Proceeding |
Language | English |
Published |
Cham
Springer Nature
2017
Springer International Publishing AG Springer International Publishing Springer |
Edition | 1 |
Series | Lecture Notes in Computer Science |
Subjects | |
Online Access | Get full text |
Cover
Loading…
Table of Contents:
- 5.2 Related Controlled Experiments -- 5.3 The Start of the Experiment Series -- 5.4 Type Casts -- 5.5 Types as Documentation in Undocumented APIs () -- 5.6 Replication of Previous Findings (Petersen et al. ) -- 5.7 Types as Pure Syntax Elements (Spiza and Hanenberg 2014 ) -- 5.8 A First Summary -- 5.9 Comparing Types and Documentation (Endrikat et al. ) -- 5.10 Comparing Types and Code Completion -- 5.11 Summary and Conclusion of Experiment Series -- 6 Summary, Conclusion and Future Work -- References -- To Merge or Not to Merge: Managing Software Product Families -- 1 Introduction -- 2 Cloned Software Product Lines in Industry -- 2.1 Developing SPLs with Clones -- 2.2 Main Benefits and Shortcoming of Cloning -- 2.3 Conclusions -- 3 Software Product Line Engineering -- 3.1 Domain Engineering -- 3.2 Application Engineering -- 4 Merge-Refactoring Approaches -- 4.1 Building a Domain Model -- 4.2 Building a Feature Model and Annotations -- 5 A Clone-Based SPLE Approach -- 5.1 Clone-Based SPLE Management Operators -- 5.2 Composition of the Operators -- 5.3 Implementing the Operators -- 6 Future Research Directions -- 6.1 Economic Effectiveness of SPLE -- 6.2 Clone-Based SPLE Approaches -- 6.3 Improvements of the Cloned Product Line Management Framework -- 7 Summary and Conclusions -- References -- DSLs in Robotics: A Case Study in Programming Self-reconfigurable Robots -- 1 Introduction -- 2 Background: Domain-Specific Languages -- 3 Programming Languages in Robotics -- 3.1 The Use of DSLs in Robotics -- 3.2 Challenges in Programming Modular Robots -- 3.3 Concrete Example: Swarm Robots -- 3.4 Key Requirements on DSLs for Modular Robotics -- 4 Case Study: Modular Robots -- 4.1 Analysis: Hardware and Software -- 4.2 The DynaRole Language -- 4.3 Deployment and Execution -- 4.4 Example: Obstacle Avoidance -- 4.5 Assessment
- 3.3 Generic Refactoring Invariants -- 4 Why Building Refactoring Tools Is Hard: A Case Study -- 4.1 The Precondition Surprise -- 4.2 The Mechanics Adventure -- 4.3 The Tool User's Dream: Relaxed Preconditions -- 4.4 The Tool Builder's Nightmare: Evolving Languages -- 5 Current Refactoring Practice and Research Challenge -- 6 Principled Approaches to Implementing Refactoring Tools -- 6.1 Dependency Preservation -- 6.2 Language Extensions and Restrictions -- 6.3 Constraint-Based Refactoring -- 7 Refactoring Résumé: Three Competing Camps -- 8 Static Checking -- 9 Name Binding -- 10 Automatic Repair -- 11 Code Completion -- 12 Controlled Change -- 13 Mutation Testing -- 14 Code Generation -- References -- Implementing a Linear Algebra Approach to Data Processing -- 1 Introduction -- 2 Background -- 3 Matrix Generation and Computation -- 4 Evaluation -- 5 Conclusions and Future Work -- References -- STRAF: A Scala Framework for Experiments in Trace-Based JIT Compilation -- 1 Introduction -- 2 Trace-Based JIT Compilation -- 3 The STRAF Framework for Building JIT Compilers -- 3.1 Requirements on the Abstract Machine -- 3.2 A CESK-based Interpreter for Scheme -- 3.3 Tracing Machine -- 4 Evaluation -- 4.1 Extensions to STRAF -- 4.2 Continuation Stack Optimization -- 5 Related Work -- 6 Conclusion and Future Work -- References -- Author Index
- Intro -- Preface -- Organization -- Contents -- Probabilistic Program Analysis -- 1 Introduction -- 2 Overview -- 2.1 Scope and Background -- 2.2 Extending Program Analyses with Probabilities -- 3 Probabilistic Approaches to Program Analysis -- 3.1 Probabilistic Data Flow Analysis -- 3.2 Probabilistic Symbolic Execution -- 3.3 Computing Program Probabilities -- 4 Conclusions and Future Directions -- References -- How Ontologies Can Help in Software Engineering -- Abstract -- 1 Context and Motivation -- 2 Ontologies and Models -- 2.1 Base Concepts in Models, Metamodels and Modelling Languages -- 2.2 Base Concepts in Ontologies -- 2.3 Differences Between Ontologies and Models -- 2.4 Commonalities of Ontologies and Models -- 3 Using Ontologies -- 3.1 For Philosophical Grounding -- 3.2 As Domain Models -- 3.3 For Standardisation of Software Engineering -- 4 Outlook -- Acknowledgements -- References -- Empirical, Human-Centered Evaluation of Programming and Programming Language Constructs: Controlled Experiments -- 1 Introduction -- 2 An Short Introduction into Empirical Studies in Software Science -- 2.1 A Classification of Research Methods in Software Science -- 2.2 Different Human-Centered Approaches -- 3 An Short Introduction into Controlled Experiments (with Human Subjects) -- 3.1 Introduction into Hypotheses Testing -- 3.2 Basics of Experimentation -- 3.3 Experimental Designs -- 3.4 Analysis of Experiments, the Problem of Non-Significant Results -- 3.5 Experiment Design from the Experimenter's Perspective -- 4 Example Studies: Empirical Evaluations of Programming Languages -- 4.1 Repository Study: Usage of the Programming Language Feature `OptionalTyping' -- 4.2 Controlled Trial: Study on Programming Language Syntax -- 5 Empirical Studies on the Usability of Type Systems - An Experience Report -- 5.1 Motivation
- 5 Evolution: Distributed Sequences -- 5.1 Analysis: Self-reconfiguration -- 5.2 Distributed Execution -- 5.3 Communication Protocol -- 5.4 Module Reset -- 5.5 Language Design -- 5.6 Reversibility -- 5.7 Assessment -- 6 Work-in-Progress: Distributed Scope -- 6.1 Analysis: Generality and Scalability -- 6.2 Language Design -- 6.3 Example -- 6.4 Assessment -- 7 Conclusion -- References -- People Analytics in Software Development -- 1 Introduction -- 2 Background and Related Work -- 2.1 Insights on Communication, Collaboration, and Coordination -- 2.2 Methods: Social Network Analysis -- 2.3 Methods: Visualizing Collaboration -- 2.4 Methods: Measuring Developer Affect -- 2.5 Feedback Interventions -- 3 Making Analytics Feedback Useful: Gamification of Version Control -- 3.1 Introduction -- 3.2 Experiment Context -- 3.3 Experiment Design -- 3.4 Designing a Treatment -- 3.5 Results and Analysis -- 3.6 Threats to Validity -- 3.7 Summary -- 4 Outlook -- 4.1 Gaming the System -- 4.2 Surveillance -- 4.3 Public Data vs. Accessible Data -- 4.4 Transparency -- 4.5 Conclusions -- References -- Structured Program Generation Techniques -- 1 Introduction -- 2 Kinds of Generation and Program Transformation -- 3 Kinds of Generator Safety -- 4 Mechanisms for Fully Structured Generation -- 4.1 Multi-stage Programming -- 4.2 Class Morphing -- 4.3 Shortcomings and More Power -- 4.4 Other Techniques -- 4.5 Remarks and Future -- 5 Conclusions -- References -- Refactoring Tools and Their Kin -- 1 Origins of Refactoring -- 2 The Current Refactoring Crisis -- 2.1 The Elusiveness of Design Improvement -- 2.2 The Elusiveness of Behaviour Preservation -- 2.3 Ignoring the Unresolved Correctness Problem -- 2.4 The Easy Way Out: Liberation from Academic Chains -- 3 The Generic Nature of Refactoring Tools -- 3.1 Generic Pre- and Postconditions -- 3.2 Specific Pre- and Postconditions