-
- Seminar - Workshop
- Lab
- Helpful Links
- Archive
Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering
Agile Software Development has different roots, one is the Toyota production line in automotive. These topics show how traditional software development methodologies work (e.g. the waterfall approach) and how agile software development tries to overcome shortcomings of these approaches. This lead to the formulation of the agile manifesto.
Feedback is an essential part in agile software development, it can be given for example through unit tests, process metrics, retrospectives or stand up meetings. This topic shows the influence of feedback on the project quality and the team. Further different kinds of feedback are presented and discussed. References:
Different “styles” of agile software development are for example eXtreme Programming, Scrum and Kanban. This topic critically discusses in detail the Scrum and Kanban approaches on agile software development. Scrum is an iterative and incremental process for project management. Both were originally suggested for managing industrial product development projects. It is presented how Scrum and Kanban evolved and shows the differences.
References:
Blogs, Books, etc.: (Not the primary reference, but in case you need more explanations.)
Recent research suggested to analyze how far mathematics game theory ideas on collaboration (e.g. prisoners dilemma) can be adapted to improve software development. This topic presents recent research on this field, discusses future challenges and illustrates possible improvements that may be achieved.
References:
Tests play a major role to ensure product quality in Agile Software Development. This topic explains how Test-Driven Development is used and what different philosophies of TDD exist. Further an analysis on the impact for development quality is shown.
References:
Pair programming is an development technique in which two programmers work together at one computer, working on the same task. This topic illustrates best practices in pair programming and the impact on code quality.
References:
Mobility is nowadays an essential part of our daily life. The currently mobility is restricted by its power consumption. In topic these sources are identified. Furthermore it presents how development of mobile applications has to tackle this problem.
References:
By designing mobile applications, developers need to handle platform specific restrictions. This talk presents the challenges they have to face and the root causes behind this constraints.
References:
Android as platform for mobile devices is a Linux derivative. In this topic the underlying architectural differences of the original Linux root and Android are presented.
References:
JTransformer is a query and transformation engine for Java source code, available as a plug-in for Eclipse. JTransformer creates a Abstract Syntax Tree representation in Prolog and provides an query API. This topic presents the concepts of JTransformer for Java and illustrates the ideas behind the language independent successor StarTransformer.
References:
During the lab we want to review the quality of the code at hand. We should be able to conduct this review based on a thorough understanding of design principles and principles of good code. The talk presents an overview of the core design principles for object oriented systems. Some general guidelines about how to approach a code review complete the picture. This topic is not about: Metrics, Smells or Refactoring, but about the quality principles which are the foundation “below” these concepts. If you have to decide between depth and breadth of your presentation favor the depth.
References:
Further readings, if you need more explanation, not(!) required:
Code quality depends on a variety of factors, starting at coding format guidelines and ending with so called code smells. This seminar topic discusses, what is “bad code” and what is “good code”. It presents the commonly used criteria and their theoretical foundations and demonstrates, how they can be used during development time using the Cultivate eclipse plug-in.
References:
In the last recent years the complexity of source code has strongly increased. To be able to handle this complexity, different visualization approaches have been designed. This talk presents current methods and tools for software visualization. Furthermore, a comparison and in-depth analysis of the individual concepts is done.
References:
As the complexity of software increases modifications to existing structures have to be made. Therefore the concepts behind the structures need to be kept consistent with the original intention (“safeguarded structures”), even if the system evolves. This topic summarizes current approaches in this field.
References:
The foundation of static code analysis relies on relations, e.g. call flow, data flow and dependency graph. This talk gives a simple overview of the methods and discusses future challenges in this area.
References: