In order to provide software engineers with adequate techniques and tools, we need to deepen our knowledge of their information needs. In particular the information needs to understand the changes done by other software engineers and their effects on the design and quality is still an open issue. Recent studies provide first results, however we argue that a much deeper understanding of the needs is necessary. For this, we are interested in interviewing and observing software engineers from industrial and open source software projects to come up with a well defined set of their information needs.
Software evolution and quality analysis
Previous research has identified a number of causes for design erosion, such as software engineers perform quick fixes, or the original engineers have left the project and the new engineers lack experience. Although design erosion has been studied, there exists only general knowledge of the effects of (source code) changes on the quality of the design and implementation of software systems and moreover whole software ecosystems (i.e., systems of systems). The goal of this research is to study these effects for different programming paradigms and domains of software systems, such as spreadsheets, object-oriented, component-based, service-oriented, and develop sophisticated techniques and tools that allow software engineers to monitor the quality of the implementation and design of software systems and to mitigate design erosion.
Advanced Software Comprehension Techniques
Today’s systems become more and more software-intensive which typically means that software is the major component that provides the needed functionality. Formal specifications seem to be a silver bullet, but there are a couple of drawbacks: at first, not all stakeholders are familiar with the notations used, and agreeing upon assertions in specifications (and thus agreeing upon requirements) is complicated. Secondly, mathematically dense notations in combination with the inherent complexity might be an impediment for the understanding of the specified system – even for experts. Finally, for gaining maximum benefit from the specifications, it needs effort to keep them up-to-date during the development live-cycle. Specifications evolve, and without guidance developers do not know whether the overall quality increases or decreases. In the ViZ project these impediments are addressed and visualization, concept location and transformation techniques are used to support the different stakeholders.
Professionalizing Spreadsheet Engineering
Spreadsheets are widely used by a mass of end-user programmers. They often represent important/critical business assets. The goal of this research is to professionalize spreadsheet engineering by investigating means to ease the understanding of large complex spreadsheets and to shorten the development time of spreadsheets and custom software applications created from spreadsheets. We do this by investigating ways to gather, integrate, abstract and visualize the mass of diverse information about spreadsheets and their usage within a company. They allow spreadsheet users and developers to understand single spreadsheets as well as a company’s spreadsheet ecosystem. Regarding reducing development time and costs, we investigate the extraction of domain concepts from multiple spreadsheets and means to use them to design, implement, and test spreadsheets.
Collaborative Software Development
This research aims at supporting software engineers who understand the code and want to proactively document and share this understanding with their team members. We are investigating various ways to advance current (online) collaboration platforms, such as github, and integrated development environments (IDEs), such as Eclipse. This involves research on means to exchange information on source code using micro-blogging, linking it to the right context in which the software engineer performs a task, and furthermore using the information to provide recommendations to engineers, such as relevant code elements, co-developers, work items, etc..