FG Praktische Informatik / Softwaresystemtechnik
Refine
Document Type
- Doctoral thesis (5)
- Report (1)
Has Fulltext
- yes (6)
Is part of the Bibliography
- no (6)
Keywords
Institute
Managing decisions in software development, especially in the agile context, is a challenging task. Often, decisions can be traced back through actions taken or the source code. However, the "Why?" behind these decisions is frequently unclear. The absence of explanations significantly complicates future development, maintenance, or further advancements. Also intriguing is the question of "Why not?" – why was an alternative solution discarded? These questions are central to software developers.
In contrast, linear models like the waterfall approach tend to over-document. Product and process documentation, along with detailed manuals, are common. However, they fail to address the dilemma of asymmetry between supply and demand. The paradigm shift towards agile methods hasn't solved this problem, possibly exacerbating it. Though the agile manifesto emphasizes communication over documentation, many developers misunderstand it, considering code the sole documentation.
This work addresses this issue within the Scrum framework, aiming to integrate the documentation of important decisions more systematically. It includes a literature review to determine what and to what extent should be documented. Additionally, it explores how this documentation can be effectively integrated into the Scrum process.
To achieve these goals, practical experiences were gathered through interviews and a comprehensive survey. Industry-experienced software developers and several hundred students participated in case studies. The resulting data complement existing research and help identify ways to structure documentation, processing, and reuse decision knowledge in Scrum.
Based on these insights, an extension of the Scrum framework called Custom-MADE Scrum was derived. It features an adaptive and flexible approach to documenting decisions and their rationale. It also defines clear responsibilities and provides process modules for the structured integration of decision documentation. This extension can be integrated into both existing and new projects. In addition to the extension, a tool called Custom-MADE Editor was developed. It aims to leverage automation to streamline documentation within Custom-MADE Scrum, making the process as efficient as possible.
Overall, the author presents a flexible approach to systematically integrate decision documentation into the Scrum framework. The results are based on various empirical works.
The Agile Manifesto titled “Working software over comprehensive documentation”. Although the stated principle makes an important point, it should not follow that documentation becomes obsolete. On the contrary, agile software development (ASD) is based on frequent decisions focused on customer benefits. Those decisions guide further development, subsequent maintenance, and software evolution and are made during every stage of the software development cycle. Thus, documenting the most important ones is an important foundation fostering product comprehension, software quality, and customer benefit. Besides, preserving decision knowledge supports refactoring and, thus, diminishing software erosion.
However, all these beneficial properties are opposed by a dismissive attitude among software developers. Documentation is very unpopular among software developers, especially in the ASD community. A common interpretation of the agile manifesto at this point is that good and functional code can fully replace documentation. Among other reasons, this attitude is the reason for the sparse application of structured and systematic documentation of decisions and their rationale.
To shed more light on imponderables, developer’s desires regarding decision documentation, and assess the outlined perception of a lack of decision documentation, this paper reports a survey on decision documentation in Scrum among industry practitioners. The author assesses to what extent the above claims hold by asking industry practitioners about their perceptions and applied practices regarding decision documentation in Scrum. Therefore, the author conducted a large-scale survey in the German and English speaking Scrum community. A few more than 100 software developers were asked what they document, how they document and how they use/share produced documentation.
The findings of this report reveal that there is a wide range of opinions in the agile community. The responses show that a developer’s experience significantly impacts the documentation frequency and the interest in the available documentation. Similarly, the role in which software developers have operated in Scrum plays a significant role in the frequency of documentation and the timing when developers document.
Software visualization is a field of software engineering which aims at providing visual representations of software systems or particular aspects thereof. Numerous approaches for the visualization of software systems have been developed during the last decades. Software cities denote one particular kind of software visualizations that adopts the city metaphor for depicting software systems as virtual cities. Due to their high expressiveness and effectiveness software cities are mainly used for program comprehension tasks, during reverse engineering, and in quality analysis scenarios. Software systems evolve. They are steadily enhanced to provide new product functions, corrected to fix defects, or adapted to changed system environments. Software cities, as proposed today, do not take this evolutionary character of software systems into account. The evolution of software systems, i.e. changes to their internal structure and other characteristics, can easily disrupt the overall software city structure and thus yield very inconsistent visualizations for evolving software systems. The interpretation of these evolving software cities may be error-prone and time-consuming. In this thesis we propose a new software city approach that is based on the observation that real cities often reveal their evolution insofar as they contain e.g. historic centers or satellite cities. Analogous patterns, however, cannot be found in software cities which is an astonishing divergence. We claim that by preserving historical structures and carefully expanding software cities during software evolution, i.e. by spatializing software evolution, we obtain highly expressive, effective, and consistent software cities which support a broader range of application scenarios than the current state of the field. The main contribution of this thesis is a new layout approach for software cities, which explicitly takes evolution into account. Its effects are twofold: First, evolution becomes directly visible in the software city structure in the form of specific geographic patterns that each depicts particular evolutionary phenomena. The resulting increased expressiveness allows for supporting new application scenarios which are evaluated for several example systems. Second, software evolution does no longer disrupt the overall software city structure. Instead, the software cities evolve smoothly during system evolution, which allows for using them during ongoing system development and maintenance. The high consistency of this approach is confirmed in an empirical evaluation.
How good is a given graph clustering, graph layout, or graph ordering --specifically, how well does it group densely connected vertices and separate sparsely connected vertices? How good is a given software design -- specifically, how well does it minimize the interdependence of the subsystems? This work introduces and validates simple and uniform measures for these two properties. Together with existing optimization algorithms, the introduced measures enable the automatic computation e.g. of communities in social networks and of design flaws in software systems. The first part derives, validates, and unifies quality measures for graph clusterings, graph layouts, and graph orderings, with the following results: - Identical quality measures can be applied to clusterings, layouts, and orderings; this enables the computation of consistent clusterings, layouts, and orderings. - Diverse existing and new measures can be unified into few general measures; this facilitates their comparison and validation. - Many existing measures are biased towards certain clusterings, layouts, or orderings, even for graphs without particularly dense or sparse subgraphs, and thus do not (only) measure quality in the above sense. - For example graphs, the minimization of new, unbiased (or weakly biased) measures reveals nonobvious groups, e.g. communities in social networks, subject areas in hypertexts, or closely interlocked countries in international trade. The second part derives, validates, and unifies dependency-based indicators of software design quality. It applies two quality measures for graph clusterings as measures for the coupling of software subsystems -- specifically for the coupling indicated by common changes and for the coupling indicated by references -- and shows: - The measures quantify the dependency-caused development costs, under well-defined simplifying assumptions. - The minimization of the measures conforms to existing dependency-related design principles (like locality of change, acyclicity of references, and stability of references), design rules, and design patterns. - For example software systems, the incremental minimization of the measures reveals nonobvious design flaws, like the distribution of coherent responsibilities over several subsystems, or references from low-level to high-level subsystems. In summary, this work shows that - simple measures can suffice to capture important aspects of graph clustering quality, graph layout quality, graph ordering quality, and software design quality, and - the optimization of simple measures can suffice to detect nonobvious and often useful structure in various real-world systems.
In dieser Arbeit werden neue Ansätze zur meßwertbasierten Qualitätssicherung von Softwareprodukten für praxisrelevante Systemgrößen beschrieben. Dies umfaßt Hilfen zur spezifischen Definition von Qualität, Prozesse zur Qualitätssicherung, Werkzeugunterstützung sowie die Identifikation von Problemen bei der Anwendung vieler bisheriger Softwaremaße. Die pragmatische Anwendung der Meßtheorie erlaubt eine Erweiterung in Form eines auf Ähnlichkeiten zwischen Softwareelementen basierenden generischen Distanzmaßes. Dessen unterschiedliche Instanziierungen ermöglichen die automatische, anpaßbare Gruppierung von Elementen, sowie die ausdrucksstarke, ausschließlich durch Meßwerte bestimmte Softwarevisualisierung. Die ebenfalls in dieser Arbeit wiedergegebene empirische Arbeit, in der die Effizienz und Effektivität dieses Ansatzes mehrfach belegt wird, demonstriert die mögliche Bedeutung der meßwertbasierten Qualitätssicherung bei der Analyse großer Systeme.
Die Konstruktion eingebetteter Systeme, die starke Realzeit-Anforderungen zu erfüllen haben, wird in den verschiedensten Anwendungsbereichen immer bedeutsamer, z. B. in der Medizin, der Transporttechnik oder der Produktionsautomatisierung. Formale Methoden unterstützen die fehlerarme Entwicklung solcher Systeme, weil sie auf einer präzisen mathematischen Grundlage aufbauen. Der Autor entwickelt einen geeigneten Modellierungsformalismus und effiziente Verifikationsverfahren für den Einsatz einer formalen Methode. Durch die Einführung eines Modulkonzepts wird die Modellierung auch großer Realzeit-Systeme systematisch unterstützt. Für die Verifikation werden effiziente BDD-basierte Algorithmen verwendet, wobei auch das Problem des Findens guter BDD-Variablenordnungen gelöst wird. Es werden sowohl Erreichbarkeitsanalyse als auch Verfeinerungsanalyse unterstützt. Die Praktikabilität der Ansätze zur Modellierung und Verifikation werden in verschiedenen Fallstudien aus den Bereichen der reaktiven Systeme und der Kommunikationsprotokolle demonstriert.