Type systems of programming languages are a much discussed topic of software engineering. There are many voices arguing towards static as well as dynamic type systems, although their actual impact on software development is rarely evaluated using rigorous scientific methods. In the context of this work, a controlled experiment with 36 participants was conducted which tried to compare the performance of software developers using a static and a dynamic type system for the same tasks using an undocumented API. The two programming languages used were Java and Groovy. The experiment and its results are analyzed and discussed in this thesis. Its main hypothesis was that a static type system speeds up the time developers need to solve programming tasks in an undocumented API. The main results of the experiment speak strongly in favor of this hypothesis, because the static type system seems to have a significantly positive impact on the development time.
Inhaltsverzeichnis (Table of Contents)
- ABSTRACT
- ZUSAMMENFASSUNG (GERMAN ABSTRACT)
- TABLE OF CONTENTS
- DIRECTORY OF FIGURES
- DIRECTORY OF TABLES
- DIRECTORY OF LISTINGS
- INTRODUCTION
- MOTIVATION & BACKGROUND
- MOTIVATION
- MAINTENANCE AND DEBUGGING
- Maintenance in a Nutshell
- Debugging in a Nutshell
- DOCUMENTATION AND APIS
- Documentation of Software Systems
- APIs and Application of their Design Principles in General Programming
- TYPE SYSTEMS
- EMPIRICAL RESEARCH IN SOFTWARE ENGINEERING
- On Empirical Research
- Controlled Experiments
- Current State of Empirical Research in Software Engineering
- RELATED WORK
- GANNON (1977)
- PRECHELT AND TICHY (1998)
- DALY, SAZAWAL AND FOSTER (2009)
- HANENBERG (2010)
- STEINBERG, MAYER, STUCHLIK AND HANENBERG - A RUNNING EXPERIMENT SERIES
- Steinberg (2011)
- Mayer (2011)
- Stuchlik and Hanenberg (2011)
- THE EXPERIMENT
- THE RESEARCH QUESTION
- EXPERIMENT OVERVIEW
- Initial Considerations
- Further Considerations: Studies on Using Students as Subjects
- Design of the Experiment
- QUESTIONNAIRE
- Environment
- Programming Languages
- HARD- AND SOFTWARE ENVIRONMENT
- WORKSPACE APPLICATIONS AND TASKS
- The Java Application - A Labyrinth Game
- The Groovy Application - A simple Mail Viewer
- Important Changes made to both Parts
- The Tasks
- EXPERIMENT IMPLEMENTATION
- THREATS TO VALIDITY
- INTERNAL VALIDITY
- EXTERNAL VALIDITY
- ANALYSIS AND RESULTS
- GENERAL DESCRIPTIVE STATISTICS
- STATISTICAL TESTS AND ANALYSIS
- Within-Subject Analysis on the complete data
- Analysis for residual effects between the two Participant Groups
- Within-Subject Analysis on the two Participant Groups
- Exploratory Analysis of the Results based on Participants' Performance
- Hypotheses and Task based Analysis
- SUMMARY AND DISCUSSION
- FINAL REMARKS
- RESULT SUMMARY
- DISCUSSION
- The impact of static type systems on developer performance
- The benefits of using static type systems for software development
- The comparison of Java and Groovy in terms of their respective type systems
- The role of documentation in software development and its influence on developer performance
- The design and analysis of controlled experiments in software engineering research
Zielsetzung und Themenschwerpunkte (Objectives and Key Themes)
This thesis examines the impact of static type systems on developer performance, particularly within the context of using and adapting undocumented software systems. The research focuses on comparing the performance of software developers using Java (static type system) and Groovy (dynamic type system) to complete the same tasks in an undocumented API. The experiment, involving 36 participants, aims to evaluate the hypothesis that a static type system reduces the time developers need to solve programming tasks in an undocumented environment.
Zusammenfassung der Kapitel (Chapter Summaries)
The thesis begins with an introduction outlining the motivations behind the research, the role of type systems in software engineering, and the importance of empirical research in software engineering. Chapter 2 discusses the related work, providing a context for the research by exploring previous studies and experiments on the impact of type systems on developer performance. Chapter 3 focuses on the experiment itself, outlining the research question, the design of the experiment, and the selection of participants, programming languages, and tasks. Chapter 4 delves into the analysis and results of the experiment, including descriptive statistics, statistical tests, and a detailed discussion of the findings. Finally, Chapter 5 summarizes the conclusions drawn from the experiment, providing a comprehensive discussion of the results and their implications for future research and software development practices.
Schlüsselwörter (Keywords)
The key focus topics of this research include static type systems, dynamic type systems, developer performance, undocumented APIs, controlled experiments, software engineering research, Java, Groovy, and empirical evaluation.
- Quote paper
- Master of Science Sebastian Kleinschmager (Author), 2011, Can static type systems speed up programming? An experimental evaluation of static and dynamic type systems, Munich, GRIN Verlag, https://www.grin.com/document/199362