
Aspect-Oriented Programming evaluated: A Study on the Impact that Aspect-Oriented Programming can have on Software Development Productivity
A Study on the Impact that Aspect-Oriented Programming can have on Software Development Productivity
Sebastian Kleinschmager(Author)
Anchor Academic Publishing
1st Edition
Published in December 2012
96 pages
978-3-95489-539-7 (ISBN)
System requirements
for PDF without DRM
E-Book Single Licence
You are acquiring a single user licence for this eBook, which you might not transfer. [C]
Available for download
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
Aspect-oriented-programming is a relatively new technique that has evolved on top of the already well-established approach of object-oriented programming. When it is used correctly, it promises to remove many redundant parts of a code that appear repeatedly in an application, essentially untangling the original code. Thus, it can lead to a cleaner, more separated software design, to greater modularity and maintainability. Time-savings in software engineering can also be huge cost-savings, and anything that increases software quality is a welcome sight in an industry that in parts, still suffers from a bad reputation concerning the quality of its products. But, used in the wrong way or with insufficient knowledge, aspect-oriented programming can result in the opposite. Unintended side effects may introduce new bugs into an application, and therefore, it may be just one of the many negative consequences.
In any case, there is a huge lack of empirical research on the subject, and in software engineering in general. Due to that fact, the question arises in how far hard facts can be drawn. This book deals with part of that problem by evaluating the aspect-oriented approach in a carefully designed and controlled experiment. On the basis of different tasks that were solved by participants of this study, the aspect-oriented approach (represented by AspectJ) is compared with a plain object-oriented approach (represented by Java).
The book starts with an introduction to the topic, and further, it provides on the one hand, the survey's motivation and on the other hand, some background information. A short chapter on aspect-oriented programming and empirical research may help readers who are unfamiliar with any of the subjects. Then, the survey itself is described in detail, i.e. its design, its implementation, and its evaluation, followed by a thorough discussion of the results. And the answer to the question 'Can aspect-orientated programming keep its promise in productivity?' is given.
In any case, there is a huge lack of empirical research on the subject, and in software engineering in general. Due to that fact, the question arises in how far hard facts can be drawn. This book deals with part of that problem by evaluating the aspect-oriented approach in a carefully designed and controlled experiment. On the basis of different tasks that were solved by participants of this study, the aspect-oriented approach (represented by AspectJ) is compared with a plain object-oriented approach (represented by Java).
The book starts with an introduction to the topic, and further, it provides on the one hand, the survey's motivation and on the other hand, some background information. A short chapter on aspect-oriented programming and empirical research may help readers who are unfamiliar with any of the subjects. Then, the survey itself is described in detail, i.e. its design, its implementation, and its evaluation, followed by a thorough discussion of the results. And the answer to the question 'Can aspect-orientated programming keep its promise in productivity?' is given.
More details
Edition
1., Aufl.
Language
English
Place of publication
Hamburg
Germany
Illustrations
23 Abb.
File size
0,73 MB
ISBN-13
978-3-95489-539-7 (9783954895397)
Schweitzer Classification
Other editions
Additional editions

Sebastian Kleinschmager
Aspect-Oriented Programming evaluated: A Study on the Impact that Aspect-Oriented Programming can have on Software Development Productivity
A Study on the Impact that Aspect-Oriented Programming can have on Software Development Productivity
Book
05/2013
1st Edition
Anchor Academic Publishing
€44.99
Shipment within 7-9 days
Person
Sebastian Kleinschmager is a software engineer from Germany who has a special interest in creating a scientific foundation for his field. During his studies in applied computer science (Bachelor's degree), and business information systems (Master), he focused his research on conducting empirical experiments to evaluate programming techniques. Apart from his academic research, he specializes in software development where he uses the.NET Framework and the newest web technologies, and where he stands a chance to put theory into practice.
Content
1 - Aspect-Oriented Programming evaluated: A Study on the Impact that Aspect-Oriented Programming can have on Software Development Productivity [Seite 1]
1.1 - Abstract [Seite 3]
1.2 - Directory of Figures [Seite 4]
1.3 - Directory of Tables [Seite 6]
1.4 - Directory of Listings [Seite 8]
1.5 - Table of Contents [Seite 9]
1.6 - 1. Introduction [Seite 11]
1.7 - 2. Motivation and Problem Description [Seite 12]
1.8 - 3. Experiment Background [Seite 15]
1.8.1 - 3.1. A short summary on Empiricism and Experimentation [Seite 15]
1.8.1.1 - 3.1.1. What is meant by Empiricism? [Seite 15]
1.8.1.2 - 3.1.2. Research and Experimentation methods [Seite 15]
1.8.1.2.1 - 3.1.2.1. Case Studies or Benchmarks [Seite 16]
1.8.1.2.2 - 3.1.2.2. Field Studies [Seite 16]
1.8.1.2.3 - 3.1.2.3. Controlled Experiments [Seite 16]
1.8.1.2.4 - 3.1.2.4. Polls [Seite 17]
1.8.1.2.5 - 3.1.2.5. Meta-Studies [Seite 17]
1.8.1.3 - 3.1.3. Empirical research in Software Engineering - Specifics and Dangers [Seite 17]
1.8.2 - 3.2. Aspect-Oriented Programming [Seite 18]
1.8.2.1 - 3.2.1. Aspect-Orientation in General [Seite 18]
1.8.2.2 - 3.2.2. AspectJ - a short Introduction [Seite 19]
1.9 - 4. The Experiment [Seite 21]
1.9.1 - 4.1. Experiment Buildup [Seite 21]
1.9.1.1 - 4.1.1. The planned Course of the Experiment [Seite 21]
1.9.1.2 - 4.1.2. The Questionnaire [Seite 21]
1.9.1.3 - 4.1.3. The Hard- and Software used in the Experiment [Seite 22]
1.9.1.3.1 - 4.1.3.1. The Application used for Editing [Seite 22]
1.9.1.3.2 - 4.1.3.2. The Development Environment and Hardware [Seite 23]
1.9.1.4 - 4.1.4. The Tasks [Seite 23]
1.9.1.4.1 - 4.1.4.1. Task1: The Logging Task [Seite 24]
1.9.1.4.2 - 4.1.4.2. Task2: The Parameter Null Task [Seite 25]
1.9.1.4.3 - 4.1.4.3. Task3: The Synchronization Task [Seite 26]
1.9.1.4.4 - 4.1.4.4. Task4: The Check Player Argument Task [Seite 27]
1.9.1.4.5 - 4.1.4.5. Task5: The Notify Observers Task [Seite 28]
1.9.1.4.6 - 4.1.4.6. Task6: The Observers Null Check Task [Seite 29]
1.9.1.4.7 - 4.1.4.7. Task7: The Refresh Constraint Task [Seite 30]
1.9.1.4.8 - 4.1.4.8. Task8: The Label Value Check Task [Seite 31]
1.9.1.4.9 - 4.1.4.9. Task9: The Current Level Check Task [Seite 33]
1.9.2 - 4.2. Implementation of the Experiment [Seite 34]
1.10 - 5. Experiment Analysis and Results [Seite 36]
1.10.1 - 5.1. Data Processing and Preparation [Seite 36]
1.10.2 - 5.2. Data analysis and presentation [Seite 38]
1.10.2.1 - 5.2.1. The Logging Task [Seite 38]
1.10.2.2 - 5.2.2. The Parameter Null Task [Seite 42]
1.10.2.3 - 5.2.3. The Synchronization Task [Seite 43]
1.10.2.4 - 5.2.4. The Player Check Task [Seite 45]
1.10.2.5 - 5.2.5. The Notify Observers Task [Seite 46]
1.10.2.6 - 5.2.6. The Observers Null Task [Seite 46]
1.10.2.7 - 5.2.7. The Refresh Constraint Task [Seite 48]
1.10.2.8 - 5.2.8. The Label Value Check Task [Seite 49]
1.10.2.9 - 5.2.9. The Level Check Task [Seite 50]
1.10.2.10 - 5.2.10. Results of the Development Times and Descriptive Statistics [Seite 51]
1.10.2.11 - 5.2.11. Statistical Tests on the Results [Seite 57]
1.10.2.12 - 5.2.12. Doing a Break-Even Analysis [Seite 62]
1.10.2.13 - 5.2.13. Participant Grouping [Seite 66]
1.11 - 6. Discussion [Seite 76]
1.11.1 - 6.1. Thoughts on Validity [Seite 76]
1.11.1.1 - 6.1.1. Internal Validity [Seite 76]
1.11.2 - 6.2. General Discussion [Seite 78]
1.12 - 7. Related Work [Seite 81]
1.13 - 8. Conclusion [Seite 83]
1.14 - 9. Appendix [Seite 84]
1.14.1 - 9.1. The questionnaire (German) [Seite 84]
1.14.2 - 9.2. The aspect-oriented task descriptions (German) [Seite 85]
1.15 - 10. References [Seite 94]
1.1 - Abstract [Seite 3]
1.2 - Directory of Figures [Seite 4]
1.3 - Directory of Tables [Seite 6]
1.4 - Directory of Listings [Seite 8]
1.5 - Table of Contents [Seite 9]
1.6 - 1. Introduction [Seite 11]
1.7 - 2. Motivation and Problem Description [Seite 12]
1.8 - 3. Experiment Background [Seite 15]
1.8.1 - 3.1. A short summary on Empiricism and Experimentation [Seite 15]
1.8.1.1 - 3.1.1. What is meant by Empiricism? [Seite 15]
1.8.1.2 - 3.1.2. Research and Experimentation methods [Seite 15]
1.8.1.2.1 - 3.1.2.1. Case Studies or Benchmarks [Seite 16]
1.8.1.2.2 - 3.1.2.2. Field Studies [Seite 16]
1.8.1.2.3 - 3.1.2.3. Controlled Experiments [Seite 16]
1.8.1.2.4 - 3.1.2.4. Polls [Seite 17]
1.8.1.2.5 - 3.1.2.5. Meta-Studies [Seite 17]
1.8.1.3 - 3.1.3. Empirical research in Software Engineering - Specifics and Dangers [Seite 17]
1.8.2 - 3.2. Aspect-Oriented Programming [Seite 18]
1.8.2.1 - 3.2.1. Aspect-Orientation in General [Seite 18]
1.8.2.2 - 3.2.2. AspectJ - a short Introduction [Seite 19]
1.9 - 4. The Experiment [Seite 21]
1.9.1 - 4.1. Experiment Buildup [Seite 21]
1.9.1.1 - 4.1.1. The planned Course of the Experiment [Seite 21]
1.9.1.2 - 4.1.2. The Questionnaire [Seite 21]
1.9.1.3 - 4.1.3. The Hard- and Software used in the Experiment [Seite 22]
1.9.1.3.1 - 4.1.3.1. The Application used for Editing [Seite 22]
1.9.1.3.2 - 4.1.3.2. The Development Environment and Hardware [Seite 23]
1.9.1.4 - 4.1.4. The Tasks [Seite 23]
1.9.1.4.1 - 4.1.4.1. Task1: The Logging Task [Seite 24]
1.9.1.4.2 - 4.1.4.2. Task2: The Parameter Null Task [Seite 25]
1.9.1.4.3 - 4.1.4.3. Task3: The Synchronization Task [Seite 26]
1.9.1.4.4 - 4.1.4.4. Task4: The Check Player Argument Task [Seite 27]
1.9.1.4.5 - 4.1.4.5. Task5: The Notify Observers Task [Seite 28]
1.9.1.4.6 - 4.1.4.6. Task6: The Observers Null Check Task [Seite 29]
1.9.1.4.7 - 4.1.4.7. Task7: The Refresh Constraint Task [Seite 30]
1.9.1.4.8 - 4.1.4.8. Task8: The Label Value Check Task [Seite 31]
1.9.1.4.9 - 4.1.4.9. Task9: The Current Level Check Task [Seite 33]
1.9.2 - 4.2. Implementation of the Experiment [Seite 34]
1.10 - 5. Experiment Analysis and Results [Seite 36]
1.10.1 - 5.1. Data Processing and Preparation [Seite 36]
1.10.2 - 5.2. Data analysis and presentation [Seite 38]
1.10.2.1 - 5.2.1. The Logging Task [Seite 38]
1.10.2.2 - 5.2.2. The Parameter Null Task [Seite 42]
1.10.2.3 - 5.2.3. The Synchronization Task [Seite 43]
1.10.2.4 - 5.2.4. The Player Check Task [Seite 45]
1.10.2.5 - 5.2.5. The Notify Observers Task [Seite 46]
1.10.2.6 - 5.2.6. The Observers Null Task [Seite 46]
1.10.2.7 - 5.2.7. The Refresh Constraint Task [Seite 48]
1.10.2.8 - 5.2.8. The Label Value Check Task [Seite 49]
1.10.2.9 - 5.2.9. The Level Check Task [Seite 50]
1.10.2.10 - 5.2.10. Results of the Development Times and Descriptive Statistics [Seite 51]
1.10.2.11 - 5.2.11. Statistical Tests on the Results [Seite 57]
1.10.2.12 - 5.2.12. Doing a Break-Even Analysis [Seite 62]
1.10.2.13 - 5.2.13. Participant Grouping [Seite 66]
1.11 - 6. Discussion [Seite 76]
1.11.1 - 6.1. Thoughts on Validity [Seite 76]
1.11.1.1 - 6.1.1. Internal Validity [Seite 76]
1.11.2 - 6.2. General Discussion [Seite 78]
1.12 - 7. Related Work [Seite 81]
1.13 - 8. Conclusion [Seite 83]
1.14 - 9. Appendix [Seite 84]
1.14.1 - 9.1. The questionnaire (German) [Seite 84]
1.14.2 - 9.2. The aspect-oriented task descriptions (German) [Seite 85]
1.15 - 10. References [Seite 94]
Text Sample: Chapter 3.1.3, Empirical research in Software Engineering - Specifics and Dangers: As stated above, software development is still a process dominated by human creativity and brains. Its mechanisms therefore do still elude a complete understanding and are very hard to measure and capture through observation and data collection. As Prechelt has written in his book, there are many specifics of empirical research and controlled experiments to be considered in software engineering. He states that for many controlled experiments, the most important variable to control is the variation among all participants' approaches and performance on a problem (which is an especially big variation for programming or modeling tasks). The wide range of experience with modeling, programming, programming languages and development tools between software developers, which is the very nature of software development and still eludes any quantitative way of measuring it, makes the results of empirical experiments generally hard to predict or interpret. Empirical research in software engineering is still at its beginning and researchers are still far from being able to handle and control these variations in a way that would make them able to produce very reliable results in most situations. These are some of the reasons why computer scientists tend to stay away from empirical research (Tichy summarizes 16 excuses used most to avoid experimentation in software engineering in his paper that was already cited above: (Tichy, 1997)). Even the object-oriented approach, which is currently the most used in industry and academics, has not been validated thoroughly. Some even argue that there are still problems in the idea of object-orientation. 3.2, Aspect-Oriented Programming: 3.2.1, Aspect-Orientation in General: Object-oriented Programming has had an amazing triumphal procession in the past years, both in the academic world as well as in the industrial development practice. It still has its drawbacks and is sometimes not sufficient for solving a specific set of problems. In 1997, Kiczales and his colleagues published the paper (Kiczales, et al., 1997) which introduced aspect-oriented programming as a modified approach on solving specific problems in software development. The idea was that certain functional parts of software crosscut an application or at least large parts of it (like logging, which is the most worn example for aspect-orientation, tracing, security, synchronization or other functions). Today, these specific functions are commonly called crosscutting concerns. Using the object-oriented approach, developers had a hard time implementing these crosscutting concerns seamlessly into their programs, because their nature prevented a clean separation of concerns and ultimately lead to tangled and difficult to read code (imagine an example where each method call that had to be logged for debugging purposes needed a separate logging statement which had to be inserted manually into the code). This code was also very tough to maintain and change, as the calls to these functions were scattered across the rest of the code and one central code change to solve the problem (which is usually one of the main benefits of object-orientation, the encapsulation of functionality) was not possible. All these drawbacks lead to the idea of aspect-oriented programming, where the so called aspects replace the tangled and scattered fragments in the old code by one central isolated point, effectively modularizing the crosscutting concern in the code. For the logging example, this aspect could be given the task of calling the logging functionality (which might be a method of a class providing this function) on all occasions the developer wants it to. This makes it easy for the developer to have every single method call in the program be logged without having to insert logging statements into the code to log itself.
System requirements
File format: PDF
Copy protection: without DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook does not use copy protection or Digital Rights Management.
For more information, see our eBook Help page.