Sebastian Herold, Holger Klus, Yannick Welsch, Constanze Deiters, Andreas
Rausch, Ralf Reussner, Klaus Krogmann, Heiko Koziolek, Raffaela Mirandola,
Benjamin Hummel, Michael Meisinger, and Christian Pfaller.
The Common Component Modeling Example, volume 5153 of
Lecture Notes in Computer Science, chapter CoCoME - The Common
Component Modeling Example, pages 16-53.
Springer-Verlag Berlin Heidelberg, 2008.
[ bib |
http | Abstract ]
The example of use which was chosen as the Common Component Modeling
Example (CoCoME) and on which the several methods presented in this
book should be applied was designed according to the example described
by Larman in [1]. The description of this example and its use cases
in the current chapter shall be considered under the assumption that
this information was delivered by a business company as it could
be in the reality. Therefore the specified requirements are potentially
incomplete or imprecise.
Klaus Krogmann and Ralf H. Reussner.
The Common Component Modeling Example, volume 5153 of
Lecture Notes in Computer Science, chapter Palladio: Prediction of
Performance Properties, pages 297-326.
Springer-Verlag Berlin Heidelberg, 2008.
[ bib |
http | Abstract ]
Palladio is a component modelling approach with a focus on performance
(i.e. response time, throughput, resource utilisation) analysis to
enable early design-time evaluation of software architectures. It
targets modelling business information systems. The Palladio approach
includes a meta-model called Palladio Component Model for structural
views, component behaviour specifications, resource environment,
component allocation and the modelling of system usage and multiple
analysis techniques ranging from process algebra analysis to discrete
event simulation. Additionally, the Palladio approach is aligned
with a development process model tailored for component-based software
systems. Early design-time predictions avoid costly redesigns and
reimplementation. Palladio enables software architects to analyse
different architectural design alternatives supporting their design
decisions with quantitative performance predictions, provided with
the Palladio approach.
Benjamin Klatt and Klaus Krogmann.
Towards Tool-Support for Evolutionary Software Product Line
Development.
Software Technik Trends, 31(2), May 2011.
[ bib |
.pdf | Abstract ]
Software vendors often need to vary their products to satisfy customer-specific requirements. In many cases, existing code is reused and adapted to the new project needs. This copy&paste course of action leads a multiproduct code-base that is hard to maintain. Software Product Lines (SPL) emerged as an appropriate concept to manage product families with common functionality and code bases. Evolutionary SPLs, with a product-first-approach and an exposed product line, provide advantages such as a reduced time-to-market and SPLs based on evaluated and proven products.
Klaus Krogmann, Michael Kuperberg, and Ralf Reussner.
Using Genetic Search for Reverse Engineering of Parametric Behaviour
Models for Performance Prediction.
IEEE Transactions on Software Engineering, 36(6):865-877,
2010.
[ bib |
DOI |
.pdf | Abstract ]
In component-based software engineering, existing components are often
re-used in new applications. Correspondingly, the response time of
an entire component-based application can be predicted from the execution
durations of individual component services. These execution durations
depend on the runtime behaviour of a component, which itself is influenced
by three factors: the execution platform, the usage profile, and
the component wiring. To cover all relevant combinations of these
influencing factors, conventional prediction of response times requires
repeated deployment and measurements of component services for all
such combinations, incurring a substantial effort. This paper presents
a novel comprehensive approach for reverse engineering and performance
prediction of components. In it, genetic programming is utilised
for reconstructing a behaviour model from monitoring data, runtime
bytecode counts and static bytecode analysis. The resulting behaviour
model is parametrised over all three performance-influencing factors,
which are specified separately. This results in significantly fewer
measurements: the behaviour model is reconstructed only once per
component service, and one application-independent bytecode benchmark
run is sufficient to characterise an execution platform. To predict
the execution durations for a concrete platform, our approach combines
the behaviour model with platform-specific benchmarking results.
We validate our approach by predicting the performance of a file
sharing application.
Klaus Krogmann and Ralf Reussner.
Reverse Engineering von Software-Komponentenverhalten mittels
Genetischer Programmierung.
Softwaretechnik-Trends, 29(2):22-24, May 2009.
[ bib |
.pdf | Abstract ]
Die Verwendung von Komponenten ist ein anerkanntes Prinzip in der
Software-Entwicklung. Dabei werden Software-Komponenten zumeist als
Black-Boxes aufgefasst, deren Interna vor einem Komponenten-Verwender
verborgen sind. Architektur-Analyse- Verfahren zur Vorhersage nicht-funktionaler
Eigenschaften erlauben bspw. auf der Architekturebene Dimensionierungsfragestellungen
fuer Hardware- / Software-Umgebungen zu beantworten, sowie Skalierbarkeitsanalysen
und Was-Waere-Wenn-Szenarien fuer die Erweiterung von Altsystemen
durchzufuehren. Dazu benoetigen sie jedoch Informationen ueber Interna
(bspw. die Anzahl abgearbeiteter Schleifen oder Aufrufe externer
Dienste) von Komponenten. Um an solche Informationen zu gelangen
muessen existierende Software-Komponenten analysiert werden. Die
benoetigten Informationen ueber das Innere der Komponenten muessen
dabei derart rekonstruiert werden, dass sie fuer anschließende
Analyseverfahren nicht-funktionaler Eigenschaften genutzt werden
koennen. Eine haendische Rekonstruktion solcher Modelle scheitert
haeufig an der Groeße der Systeme und ist sehr fehleranfaellig,
da konsistente Abstraktionen ueber potentiell tausende Zeilen von
Code gefunden werden muessen. Bestehende Verfahren liefern dabei
nicht die notwendigen Daten- und Kontrollflussabstraktionen die fuer
Analysen und Simulationen benoetigt werden. Der Beitrag dieses Papiers
ist ein Reverse Engineering Verfahren fuer Komponentenverhalten.
Die daraus resultierenden Modelle (Palladio Komponentenmodell) eignen
sich zur Vorhersage von Performanz-Eigenschaften (Antwortzeit, Durchsatz)
und damit fuer die oben angefuehrten Fragestellungen. Die aus Quellcode
rekonstruierten Modelle umfassen parametrisierten Kontroll- und Datenfluss
fuer Software-Komponenten und stellen eine Abstraktion realer Zusammenh¨ange
im Quellcode dar. Das Reverse Engineering Verfahren kombiniert dabei
ueber Genetische Programmierung (einer Form von Maschinen Lernen)
statische und dynamische Analyseverfahren.
Klaus Krogmann.
Reengineering von Software-Komponenten zur Vorhersage von
Dienstgüte-Eigenschaften.
Softwaretechnik-Trends, 27(2):44-45, May 2007.
[ bib |
.pdf | Abstract ]
Die Verwendung von Komponenten ist ein anerkanntes Prinzip in der
Software-Entwicklung. Dabei werden Software-Komponenten zumeist als
Black-Boxes aufgefasst , deren Interna vor einem Komponenten-Verwender
verborgen sind. Zahlreiche Architektur-Analyse-Verfahren, insbesondere
solche zur Vorhersage von nicht-funktionalen Eigenschaften, benötigen
jedoch Informationen über Interna (bspw. die Anzahl abgearbeiteter
Schleifen oder Aufrufe externer Dienste), die von den vielen Komponentenmodellen
nicht angeboten werden.
Für Forscher, die aktuell mit der Analyse nicht-funktionaler Eigenschaften
von komponentenbasierten Software-Architekturen beschäftigt sind,
stellt sich die Frage, wie sie an dieses Wissen über Komponenten-Interna
gelangen. Dabei müssen existierende Software-Komponenten analysiert
werden, um die benötigten Informationen über das Innere der
Komponenten derart zu rekonstruieren, dass sie für anschlie"sende
Analyse-Verfahren nicht-funktionaler Eigenschaften genutzt werden
können. Bestehende Verfahren konzentrieren sich auf die Erkennung
von Komponenten oder bspw. das Reengineering von Sequenzdiagrammen
gegebener Komponenten, fokussieren aber nicht auf die Informationen,
die von Vorhersageverfahren für nicht-funktionale Eigenschaften
benötigt werden.
Der Beitrag dieses Papiers ist eine genaue Betrachtung der Informationen,
die das Reengineering von Komponenten-Interna liefern muss, um für
die Vorhersage der nicht-funktionalen Eigenschaft Performanz (im
Sinne von Antwortzeit) nutzbringend zu sein. Dazu wird das Palladio
Komponentenmodell [?] vorgestellt, das genau für diese
Informationen vorbereitet ist. Schließlich wird ein Reengineering-Ansatz
vorgestellt, der dazu geeignet ist, die benötigten Informationen
zu gewinnen.
Benjamin Klatt, Zoya Durdik, Klaus Krogmann, Heiko Koziolek, Johannes Stammel,
and Roland Weiss.
Identify Impacts of Evolving Third Party Components on Long-Living
Software Systems.
In Proceedings of the 16th Conference on Software Maintenance
and Reengineering (CSMR'12), Szeged, Hungary, March 2012.
[ bib |
.pdf ]
Benjamin Klatt and Klaus Krogmann.
Model-Driven Product Consolidation into Software Product Lines.
In Proceedings of the 1st Workshop on Model-Based and
Model-Driven Software Modernization (MMSM'12), Bamberg, Germany, March 2012.
[ bib |
.pdf ]
Benjamin Klatt and Klaus Krogmann.
Towards Tool-Support for Evolutionary Software Product Line
Development.
In 13th Workshop Software-Reengineering (WSR 2011), Bad-Honnef,
Germany, May 02-04 2011.
[ bib |
.pdf ]
Heiko Koziolek, Bastian Schlich, Carlos Bilich, Roland Weiss, Steffen Becker,
Klaus Krogmann, Mircea Trifu, Raffaela Mirandola, and Anne Koziolek.
An industrial case study on quality impact prediction for evolving
service-oriented software.
In Proceeding of the 33rd international conference on Software
engineering (ICSE 2011), Software Engineering in Practice Track, pages
776-785. ACM, New York, NY, USA, 2011.
Acceptance Rate: 18% (18/100).
[ bib |
DOI |
http | Abstract ]
Systematic decision support for architectural design decisions is a major concern for software architects of evolving service-oriented systems. In practice, architects often analyse the expected performance and reliability of design alternatives based on prototypes or former experience. Modeldriven prediction methods claim to uncover the tradeoffs between different alternatives quantitatively while being more cost-effective and less error-prone. However, they often suffer from weak tool support and focus on single quality attributes. Furthermore, there is limited evidence on their effectiveness based on documented industrial case studies. Thus, we have applied a novel, model-driven prediction method called Q-ImPrESS on a large-scale process control system consisting of several million lines of code from the automation domain to evaluate its evolution scenarios. This paper reports our experiences with the method and lessons learned. Benefits of Q-ImPrESS are the good architectural decision support and comprehensive tool framework, while one drawback is the time-consuming data collection.
Heiko Koziolek, Roland Weiss, Zoya Durdik, Johannes Stammel, and Klaus
Krogmann.
Towards Software Sustainability Guidelines for Long-living
Industrial Systems.
In Proceedings of Software Engineering (Workshops), 3rd
Workshop of GI Working Group Long-living Software Systems (L2S2), Design for
Future, volume 184 of LNI, pages 47-58. GI, 2011.
[ bib |
.pdf | Abstract ]
Long-living software systems are sustainable if they can be cost-effectively maintained and evolved over their complete life-cycle. Software-intensive systems in the industrial automation domain are typically long-living and cause high evolution costs, because of new customer requirements, technology changes, and failure reports. Many methods for sustainable software development have been proposed in the scientific literature, but most of them are not applied in industrial practice. We identified typical evolution scenarios in the industrial automation domain and conducted an extensive literature search to extract a number of guidelines for sustainable software development based on the methods found in literature. For validation purposes, we map one evolution scenario to these guidelines in this paper.
Steffen Becker, Michael Hauck, Mircea Trifu, Klaus Krogmann, and Jan Kofron.
Reverse Engineering Component Models for Quality Predictions.
In Proceedings of the 14th European Conference on Software
Maintenance and Reengineering, European Projects Track, pages 199-202.
IEEE, 2010.
[ bib |
.pdf | Abstract ]
Legacy applications are still widely spread. If a need to change deployment
or update its functionality arises, it becomes difficult to estimate
the performance impact of such modifications due to absence of corresponding
models. In this paper, we present an extendable integrated environment
based on Eclipse developed in the scope of the Q-ImPrESS project
for reverse engineering of legacy applications (in C/C++/Java). The
Q-ImPrESS project aims at modeling quality attributes at an architectural
level and allows for choosing the most suitable variant for implementation
of a desired modification. The main contributions of the project
include i) a high integration of all steps of the entire process
into a single tool, a beta version of which has been already successfully
tested on a case study, ii) integration of multiple research approaches
to performance modeling, and iii) an extendable underlying meta-model
for different quality dimensions.
Frank Eichinger, Klaus Krogmann, Roland Klug, and Klemens Böhm.
Software-Defect Localisation by Mining Dataflow-Enabled Call
Graphs.
In Proceedings of the 10th European Conference on Machine
Learning and Principles and Practice of Knowledge Discovery in Databases
(ECML PKDD), Barcelona, Spain, 2010.
[ bib |
http | Abstract ]
Defect localisation is essential in software engineering and is an
important task in domain-specific data mining. Existing techniques
building on call-graph mining can localise different kinds of defects.
However, these techniques focus on defects that affect the control
flow and are agnostic regarding the data flow. In this paper, we
introduce data flow enabled call graphs that incorporate abstractions
of the data flow. Building on these graphs, we present an approach
for defect localisation. The creation of the graphs and the defect
localisation are essentially data mining problems, making use of
discretisation, frequent subgraph mining and feature selection. We
demonstrate the defect-localisation qualities of our approach with
a study on defects introduced into Weka. As a result, defect localisation
now works much better, and a developer has to investigate on average
only 1.5 out of 30 methods to fix a defect.
Fabian Brosig, Samuel Kounev, and Klaus Krogmann.
Automated Extraction of Palladio Component Models from Running
Enterprise Java Applications.
In Proceedings of the 1st International Workshop on Run-time
mOdels for Self-managing Systems and Applications (ROSSA 2009). In
conjunction with Fourth International Conference on Performance Evaluation
Methodologies and Tools (VALUETOOLS 2009), Pisa, Italy, October 19, 2009.
ACM, New York, NY, USA, October 2009.
[ bib |
.pdf | Abstract ]
Nowadays, software systems have to fulfill increasingly stringent
requirements for performance and scalability. To ensure that a system
meets its performance requirements during operation, the ability
to predict its performance under different configurations and workloads
is essential. Most performance analysis tools currently used in industry
focus on monitoring the current system state. They provide low-level
monitoring data without any performance prediction capabilities.
For performance prediction, performance models are normally required.
However, building predictive performance models manually requires
a lot of time and effort. In this paper, we present a method for
automated extraction of performance models of Java EE applications,
based on monitoring data collected during operation. We extract instances
of the Palladio Component Model (PCM) - a performance meta-model
targeted at component-based systems. We evaluate the model extraction
method in the context of a case study with a real-world enterprise
application. Even though the extraction requires some manual intervention,
the case study demonstrates that the existing gap between low-level
monitoring data and high-level performance models can be closed.
Michael Hauck, Michael Kuperberg, Klaus Krogmann, and Ralf Reussner.
Modelling Layered Component Execution Environments for Performance
Prediction.
In Proceedings of the 12th International Symposium on Component
Based Software Engineering (CBSE 2009), number 5582 in LNCS, pages
191-208. Springer, 2009.
[ bib |
DOI |
.html |
.pdf | Abstract ]
Software architects often use model-based techniques to analyse performance
(e.g. response times), reliability and other extra-functional properties
of software systems. These techniques operate on models of software
architecture and execution environment, and are applied at design
time for early evaluation of design alternatives, especially to avoid
implementing systems with insufficient quality. Virtualisation (such
as operating system hypervisors or virtual machines) and multiple
layers in execution environments (e.g. RAID disk array controllers
on top of hard disks) are becoming increasingly popular in reality
and need to be reflected in the models of execution environments.
However, current component meta-models do not support virtualisation
and cannot model individual layers of execution environments. This
means that the entire monolithic model must be recreated when different
implementations of a layer must be compared to make a design decision,
e.g. when comparing different Java Virtual Machines. In this paper,
we present an extension of an established model-based performance
prediction approach and associated tools which allow to model and
predict state-of-the-art layered execution environments, such as
disk arrays, virtual machines, and application servers. The evaluation
of the presented approach shows its applicability and the resulting
accuracy of the performance prediction while respecting the structure
of the modelled resource environment.
Klaus Krogmann, Christian M. Schweda, Sabine Buckl, Michael Kuperberg, Anne
Martens, and Florian Matthes.
Improved Feedback for Architectural Performance Prediction using
Software Cartography Visualizations.
In Christine Hofmeister Raffaela Mirandola, Ian Gorton, editor,
Architectures for Adaptive Systems (Proceeding of QoSA 2009), volume 5581
of Lecture Notes in Computer Science, pages 52-69. Springer, 2009.
[ bib |
DOI |
http | Abstract ]
Software performance engineering provides techniques to analyze and
predict the performance (e.g., response time or resource utilization)
of software systems to avoid implementations with insufficient performance.
These techniques operate on models of software, often at an architectural
level, to enable early, design-time predictions for evaluating design
alternatives. Current software performance engineering approaches
allow the prediction of performance at design time, but often provide
cryptic results (e.g., lengths of queues). These prediction results
can be hardly mapped back to the software architecture by humans,
making it hard to derive the right design decisions. In this paper,
we integrate software cartography (a map technique) with software
performance engineering to overcome the limited interpretability
of raw performance prediction results. Our approach is based on model
transformations and a general software visualization approach. It
provides an intuitive mapping of prediction results to the software
architecture which simplifies design decisions. We successfully evaluated
our approach in a quasi experiment involving 41 participants by comparing
the correctness of performance-improving design decisions and participants'
time effort using our novel approach to an existing software performance
visualization.
Michael Kuperberg, Klaus Krogmann, and Ralf Reussner.
Performance Prediction for Black-Box Components using
Reengineered Parametric Behaviour Models.
In Proceedings of the 11th International Symposium on Component
Based Software Engineering (CBSE 2008), Karlsruhe, Germany, 14th-17th October
2008, volume 5282 of Lecture Notes in Computer Science, pages 48-63.
Springer-Verlag Berlin Heidelberg, October 2008.
[ bib |
.pdf | Abstract ]
In component-based software engineering, the response time of an entire
application is often predicted from the execution durations of individual
component services. However, these execution durations are specific
for an execution platform (i.e. its resources such as CPU) and for
a usage profile. Reusing an existing component on different execution
platforms up to now required repeated measurements of the concerned
components for each relevant combination of execution platform and
usage profile, leading to high effort. This paper presents a novel
integrated approach that overcomes these limitations by reconstructing
behaviour models with platform-independent resource demands of bytecode
components. The reconstructed models are parameterised over input
parameter values. Using platform-specific results of bytecode benchmarking,
our approach is able to translate the platform-independent resource
demands into predictions for execution durations on a certain platform.
We validate our approach by predicting the performance of a file
sharing application.
Klaus Krogmann, Michael Kuperberg, and Ralf Reussner.
Reverse Engineering of Parametric Behavioural Service Performance
Models from Black-Box Components.
In Ulrike Steffens, Jan Stefan Addicks, and Niels Streekmann,
editors, MDD, SOA und IT-Management (MSI 2008), pages 57-71,
Oldenburg, September 2008. GITO Verlag.
[ bib |
.pdf | Abstract ]
Integrating heterogeneous software systems becomes increasingly important.
It requires combining existing components to form new applications.
Such new applications are required to satisfy non-functional properties,
such as performance. Design-time performance prediction of new applications
built from existing components helps to compare design decisions
before actually implementing them to the full, avoiding costly prototype
and glue code creation. But design-time performance prediction requires
understanding and modeling of data flow and control flow accross
component boundaries, which is not given for most black-box components.
If, for example one component processes and forwards files to other
components, this effect should be an explicit model parameter to
correctly capture its performance impact. This impact should also
be parameterised over data, but no reverse engineering approach exists
to recover such dependencies. In this paper, we present an approach
that allows reverse engineering of such behavioural models, which
is applicable for blackbox components. By runtime monitoring and
application of genetic programming, we recover functional dependencies
in code, which then are expressed as parameterisation in the output
model. We successfully validated our approach in a case study on
a file sharing application, showing that all dependencies could correctly
be reverse engineered from black-box components.
Landry Chouambe, Benjamin Klatt, and Klaus Krogmann.
Reverse Engineering Software-Models of Component-Based
Systems.
In Kostas Kontogiannis, Christos Tjortjis, and Andreas Winter,
editors, 12th European Conference on Software Maintenance and
Reengineering, pages 93-102, Athens, Greece, April 1-4 2008. IEEE Computer
Society.
[ bib |
.pdf | Abstract ]
An increasing number of software systems is developed using component
technologies such as COM, CORBA, or EJB. Still, there is a lack of
support to reverse engineer such systems. Existing approaches claim
reverse engineering of components, but do not support composite components.
Also, external dependencies such as required interfaces are not made
explicit. Furthermore, relaxed component definitions are used, and
obtained components are thus indistinguishable from modules or classes.
We present an iterative reverse engineering approach that follows
the widely used definition of components by Szyperski. It enables
third-party reuse of components by explicitly stating their interfaces
and supports composition of components. Additionally, components
that are reverse engineered with the approach allow reasoning on
properties of software architectures at the model level. For the
approach, source code metrics are combined to recognize components.
We discuss the selection of source code metrics and their interdependencies,
which were explicitly taken into account. An implementation of the
approach was successfully validated within four case studies. Additionally,
a fifth case study shows the scalability of the approach for an industrial-size
system.
Thomas Kappler, Heiko Koziolek, Klaus Krogmann, and Ralf H. Reussner.
Towards Automatic Construction of Reusable Prediction
Models for Component-Based Performance Engineering.
In Software Engineering 2008, volume 121 of Lecture Notes
in Informatics, pages 140-154, Munich, Germany, February 18-22 2008.
Bonner Köllen Verlag.
[ bib |
.pdf | Abstract ]
Performance predictions for software architectures can reveal performance
bottlenecks and quantitatively support design decisions for different
architectural alternatives. As software architects aim at reusing
existing software components, their performance properties should
be included into performance predictions without the need for manual
modelling. However, most prediction approaches do not include automated
support for modelling implemented components. Therefore, we propose
a new reverse engineering approach, which generates Palladio performance
models from Java code. In this paper, we focus on the static analysis
of Java code, which we have implemented as an Eclipse plugin called
Java2PCM. We evaluated our approach on a larger component-based software
architecture, and show that a similar prediction accuracy can be
achieved with generated models compared to completely manually specified
ones.
Benjamin Klatt and Klaus Krogmann.
Software Extension Mechanisms.
In Ralf Reussner, Clemens Szyperski, and Wolfgang Weck, editors,
Proceedings of the Thirteenth International Workshop on Component-Oriented
Programming (WCOP'08), Karlsruhe, Germany, number 2008-12 in Interner
Bereich Universität Karlsruhe (TH), pages 11-18, 2008.
[ bib |
.pdf | Abstract ]
Industrial software projects not only have to deal with the number
of features in the software system. Also issues like quality, flexibility,
reusability, extensibility, developer and user acceptance are key
factors in these days. An architecture paradigm targeting those issues
are extension mechanisms which are for example used by component
frameworks. The main contribution of this paper is to identify software
extension mechanism characteristics derived from state-of-the-art
software frameworks. These identified characteristics will benefit
developers with selecting and creating extension mechanisms.
Klaus Krogmann.
Reengineering of Software Component Models to Enable
Architectural Quality of Service Predictions.
In Ralf H. Reussner, Clemens Szyperski, and Wolfgang Weck, editors,
Proceedings of the 12th International Workshop on Component Oriented
Programming (WCOP 2007), volume 2007-13 of Interne Berichte, pages
23-29, Karlsruhe, Germany, July 31 2007. Universität Karlsruhe (TH).
[ bib |
http | Abstract ]
In this paper, we propose to relate model-based adaptation approaches
with the Windows Workflow Foundation (WF) implementation platform,
through a simple case study. We successively introduce a client/server
system with mismatching components implemented in WF, our formal
approach to work mismatch cases out, and the resulting WF adaptor.
We end with some conclusions and a list of open issues.
Klaus Krogmann.
Reengineering von Software-Komponenten zur Vorhersage von
Dienstgüte-Eigenschaften.
In Rainer Gimnich and Andreas Winter, editors, 9. Workshop
Software-Reengineering, number 1/2007 in Mainzer Informatik-Berichte, Bad
Honnef, May 2007.
[ bib |
.pdf | Abstract ]
Die Verwendung von Komponenten ist ein anerkanntes Prinzip in der
Software-Entwicklung. Dabei werden Software-Komponenten zumeist als
Black-Boxes aufgefasst , deren Interna vor einem Komponenten-Verwender
verborgen sind. Zahlreiche Architektur-Analyse-Verfahren, insbesondere
solche zur Vorhersage von nicht-funktionalen Eigenschaften, benötigen
jedoch Informationen über Interna (bspw. die Anzahl abgearbeiteter
Schleifen oder Aufrufe externer Dienste), die von den vielen Komponentenmodellen
nicht angeboten werden.
Für Forscher, die aktuell mit der Analyse nicht-funktionaler Eigenschaften
von komponentenbasierten Software-Architekturen beschäftigt sind,
stellt sich die Frage, wie sie an dieses Wissen über Komponenten-Interna
gelangen. Dabei müssen existierende Software-Komponenten analysiert
werden, um die benötigten Informationen über das Innere der
Komponenten derart zu rekonstruieren, dass sie für anschlie"sende
Analyse-Verfahren nicht-funktionaler Eigenschaften genutzt werden
können. Bestehende Verfahren konzentrieren sich auf die Erkennung
von Komponenten oder bspw. das Reengineering von Sequenzdiagrammen
gegebener Komponenten, fokussieren aber nicht auf die Informationen,
die von Vorhersageverfahren für nicht-funktionale Eigenschaften
benötigt werden.
Der Beitrag dieses Papiers ist eine genaue Betrachtung der Informationen,
die das Reengineering von Komponenten-Interna liefern muss, um für
die Vorhersage der nicht-funktionalen Eigenschaft Performanz (im
Sinne von Antwortzeit) nutzbringend zu sein. Dazu wird das Palladio
Komponentenmodell [?] vorgestellt, das genau für diese
Informationen vorbereitet ist. Schließlich wird ein Reengineering-Ansatz
vorgestellt, der dazu geeignet ist, die benötigten Informationen
zu gewinnen.
Klaus Krogmann and Steffen Becker.
A Case Study on Model-Driven and Conventional Software
Development: The Palladio Editor.
In Wolf-Gideon Bleek, Henning Schwentner, and Heinz Züllighoven,
editors, Software Engineering 2007 - Beiträge zu den Workshops,
volume 106 of Lecture Notes in Informatics, pages 169-176. Series of
the Gesellschaft für Informatik (GI), March 27 2007.
[ bib |
.pdf | Abstract ]
The actual benefits of model-driven approaches compared to code-centric
development have not been systematically investigated. This paper
presents a case study in which functional identical software was
once developed in a code-centric, conventional style and once using
Eclipse-based model-driven development tools. In our specific case,
the model-driven approach could be carried in 11 the conventional approach, while simultaneously improving code quality.
Zoya Durdik, Klaus Krogmann, and Felix Schad.
Towards a generic approach for meta-model- and domain- independent
model variability.
Karlsruhe Reports in Informatics 2012,5, ISSN: 2190-4782,
Karlsruhe, Germany, 2012.
[ bib |
http | Abstract ]
Variability originates from product line engineering and is an important part of today's software development. However, existing approaches mostly concentrate only on the variability in software product lines, and are usually not universal enough to consider variability in other development activities (e.g., modelling and hardware). Additionally, the complexity of variability in software is generally hard to capture and to handle. We propose a generic model-based solution which can generally handle variability on Ecore-based meta-models. The approach includes a formal description for variability, a way to express the configuration of variants, a compact DSL to describe the semantics of model variability and model-to-model transformations, and an engine which transforms input models into models with injected variability. This work provides a complete and domain-independent solution for variability handling. The applicability of the proposed approach will be validated in two case studies, considering the two independent domains of mobile platforms and architecture knowledge reuse.
Ralf Reussner, Steffen Becker, Erik Burger, Jens Happe, Michael Hauck, Anne
Koziolek, Heiko Koziolek, Klaus Krogmann, and Michael Kuperberg.
The Palladio Component Model.
Technical report, Karlsruhe, 2011.
[ bib |
http | Abstract ]
This report introduces the Palladio Component Model (PCM), a novel software component model for business information systems, which is specifically tuned to enable model-driven quality-of-service (QoS, i.e., performance and reliability) predictions. The PCMs goal is to assess the expected response times, throughput, and resource utilization of component-based software architectures during early development stages. This shall avoid costly redesigns, which might occur after a poorly designed architecture has been implemented. Software architects should be enabled to analyse different architectural design alternatives and to support their design decisions with quantitative results from performance or reliability analysis tools.
Johannes Stammel, Zoya Durdik, Klaus Krogmann, Roland Weiss, and Heiko
Koziolek.
Software Evolution for Industrial Automation Systems: Literature
Overview.
Karlsruhe Reports in Informatics 2011,2, Karlsruhe, Germany, 2011.
[ bib |
http | Abstract ]
In this document we collect and classify literature with respect to
software evolution. The main objective is to get an overview of approaches
for the evolution of sustainable software systems with focus on the
domain of industrial process control systems.
Franz Brosch, Henning Groenda, Lucia Kapova, Klaus Krogmann, Michael Kuperberg,
Anne Martens, Pierre Parrend, Ralf Reussner, Johannes Stammel, and Emre
Taspolatoglu.
Software-industrialisierung.
Technical report, Karlsruhe, 2009.
Interner Bericht. Fakultät für Informatik, Universität
Karlsruhe.
[ bib |
http | Abstract ]
Die Industrialisierung der Software-Entwicklung ist ein zur Zeit sehr
stark diskutiertes Thema. Es geht dabei vor allem um die Efizienzsteigerung
durch die Steigerung des Standardisierungsgrades, des Automatisierungsgrades
sowie eine Erhöhung der Arbeitsteilung. Dies wirkt sich einerseits
auf die den Software- Systemen zu Grunde liegenden Architekturen,
aber auch auf die Entwicklungsprozesse aus. So sind Service-orientierte
Architekturen ein Beispiel für eine gesteigerte Standardisierung
innerhalb von Software-Systemen. Es ist zu berücksichtigen, dass
sich die Software-Branche von den klassischen produzierenden Industriezweigen
dadurch unterscheidet, dass Software ein immaterielles Produkt ist
und so ohne hohe Produktionskosten beliebig oft vervielfältigt
werden kann. Trotzdem lassen sich viele Erkenntnisse aus den klassischen
Industriezweigen auf die Software-Technik übertragen. Die Inhalte
dieses Berichts stammen hauptsächlich aus dem Seminar " Software-
Industrialisierung welches sich mit der Professionalisierung der
Software- Entwi- cklung und des Software-Entwurfs beschäftigte.
Während die klassische Software-Entwicklung wenig strukturiert
ist und weder im Bezug auf Reproduzierbarkeit oder Qualitätssicherung
erhöhten Anforderungen genügt, befindet sich die Software-Entwick-
lung im Rahmen der Industrialisierung in einemWandel. Dazu zählen
arbeitsteiliges Arbeiten, die Einführung von Entwicklungsprozessen
mit vorhersagbaren Eigenschaften (Kosten, Zeitbedarf, ...), und in
der Folge die Erstellung von Produkten mit garantierbaren Eigenschaften.
Das Themenspektrum des Seminars umfasste dabei unter anderem: * Komponentenbasierte
Software-Architekturen * Modellgetriebene Softwareentwicklung: Konzepte
und Technologien * Industrielle Softwareentwicklungsprozesse und
deren Bewertung Das Seminar wurde wie eine wissenschaftliche Konferenz
organisiert: Die Einreichungen wurden in einem zweistufigen Peer-Review-Verfahren
begutachtet. In der ersten Stufe wurde eine Begutachtung der studentischen
Arbeiten durch Kommilitonen durchgeführt, in der zweiten Stufe
eine Begutachtung durch die Betreuer. In verschiedenen Sessions wurden
die Artikel wie bei einer Konferenz präsentiert. Die besten Beiträge
wurden durch zwei Best Paper Awards ausgezeichnet. Diese gingen an
Tom Beyer für seine Arbeit Realoptionen für Entscheidungen
in der Software-Entwicklung, sowie an Philipp Meier für seine
Arbeit Assessment Methods for Software Product Lines. Ergänzt
wurden die Vorträge der Seminarteilnehmer durch zwei eingeladene
Vorträge: Collin Rogowski von der 1&1 Internet AG stellte den
agilen Softwareentwicklungsprozess beim Mail-Produkt GMX.COM vor.
Heiko Koziolek, Wolfgang Mahnke und Michaela Saeftel von ABB referierten
über das Thema Software Product Line Engineering anhand der bei
ABB entwickelten Robotik-Applikationen.
Franz Brosch, Thomas Goldschmidt, Henning Groenda, Lucia Kapova, Klaus
Krogmann, Michael Kuperberg, Anne Martens, Christoph Rathfelder, Ralf
Reussner, and Johannes Stammel.
Software-industrialisierung.
Technical report, Karlsruhe, 2008.
Interner Bericht. Fakultät für Informatik, Universität
Karlsruhe.
[ bib |
http | Abstract ]
Die Industrialisierung der Software-Entwicklung ist ein zurzeit sehr
stark diskutiertes Thema. Es geht dabei vor allem um die Efizienzsteigerung
durch die Steigerung des Standardisierungsgrades, des Automatisierungsgrades
sowie eine Erhöhung der Arbeitsteilung. Dies wirkt sich einerseits
auf die den Software- Systemen zu Grunde liegenden Architekturen
aber auch auf die Entwicklungsprozesse aus. So sind service-orientierte
Architekturen ein Beispiel für eine gesteigerte Standardisierung
innerhalb von Software-Systemen. Es ist zu berücksichtigen, dass
sich die Software-Branche von den klassischen produzierenden Industriezweigen
dadurch unterscheidet, dass Software ein immaterielles Produkt ist
und so ohne hohe Produktionskosten beliebig oft vervielfältigt
werden kann. Trotzdem lassen sich viele Erkenntnisse aus den klassischen
Industriezweigen auf die Software-Technik übertragen. Die Inhalte
dieses Berichts stammen hauptsächlich aus dem Seminar "Software-
Industrialisierung welches sich mit der Professionalisierung der
Software- Entwicklung und des Software-Entwurfs beschäftigte.
Während die klassische Software-Entwicklung wenig strukturiert
ist und weder im Bezug auf Reproduzierbarkeit oder Qualitätssicherung
erhöhten Anforderungen genügt, befindet sich die Software-Entwicklung
im Rahmen der Industrialisierung in einem Wandel. Dazu zählen
arbeitsteiliges Arbeiten, die Einführung von Entwicklungsprozessen
mit vorhersagbaren Eigenschaften (Kosten, Zeitbedarf, ...) und in
der Folge die Erstellung von Produkten mit garantierbaren Eigenschaften.
Das Themenspektrum des Seminars umfasste dabei unter anderem: * Software-Architekturen
* Komponentenbasierte Software-Entwicklung * Modellgetriebene Entwicklung
* Berücksichtigung von Qualitätseigenschaften in Entwicklungsprozessen
Das Seminar wurde wie eine wissenschaftliche Konferenz organisiert:
Die Einreichungen wurden in einem zweistufigen Peer-Review-Verfahren
begutachtet. In der ersten Stufe wurde eine Begutachtung der studentischen
Arbeiten durch Kommilitonen durchgeführt, in der zweiten Stufe
eine Begutachtung durch die Betreuer. In verschiedenen Sessions wurden
die Artikel an zwei Konferenztagen präsentiert. Der beste Beitrag
wurde durch einen Best Paper Award ausgezeichnet. Dieser ging an
Benjamin Klatt für seine Arbeit Software Extension Mechanisms,
dem hiermit noch einmal herzlich zu dieser herausragenden Leistung
gratuliert wird. Ergänzend zu den Vorträgen der Seminarteilnehmer
wurde ein eingeladener Vortrag gehalten. Herr Florian Kaltner und
Herr Tobias Pohl vom IBM-Entwicklungslabor gaben dabei dankenswerterweise
in ihrem Vortrag Einblicke in die Entwicklung von Plugins für
Eclipse sowie in die Build-Umgebung der Firmware für die zSeries
Mainframe-Server.
Steffen Becker, Tobias Dencker, Jens Happe, Heiko Koziolek, Klaus Krogmann,
Martin Krogmann, Michael Kuperberg, Ralf Reussner, Martin Sygo, and Nikola
Veber.
Software-entwicklung mit eclipse.
Technical report, Karlsruhe, 2007.
Interner Bericht. Fakultät für Informatik, Universität
Karlsruhe.
[ bib |
http | Abstract ]
Die Entwicklung von Software mit Hilfe von Eclipse gehört heute
zu den Standard-Aufgaben eines Software-Entwicklers. Die Artikel
in diesem technischen Bericht beschäftigen sich mit den umfangreichen
Möglichkeiten des Eclipse-Frameworks, die nicht zuletzt auf Grund
zahlreicher Erweiterungsmöglichkeiten mittels Plugins möglich
sind. Dieser technische Bericht entstand aus einem Proseminar im
Wintersemester 2006/2007.
Steffen Becker, Jens Happe, Heiko Koziolek, Klaus Krogmann, Michael Kuperberg,
Ralf Reussner, Sebastian Reichelt, Erik Burger, Igor Goussev, and Dimitar
Hodzhev.
Software-komponentenmodelle.
Technical report, Karlsruhe, 2007.
Interner Bericht. Fakultät für Informatik, Universität
Karlsruhe.
[ bib |
http | Abstract ]
In der Welt der komponentenbasierten Software-Entwicklung werden Komponentenmodelle
unter Anderem dazu eingesetzt, Software-Systeme mit vorhersagbaren
Eigenschaften zu erstellen. Die Bandbreite reicht von Forschungs-
bis zu Industrie-Modellen. In Abhängigkeit von den Zielen der
Modelle werden unterschiedliche Aspekte von Software in ein Komponentenmodell
abgebildet. In diesem technischen Bericht wird ein überblick
über die heute verfügbaren Software-Komponentenmodelle vermittelt.
Ralf H. Reussner, Steffen Becker, Heiko Koziolek, Jens Happe, Michael
Kuperberg, and Klaus Krogmann.
The Palladio Component Model.
Interner Bericht 2007-21, Universität Karlsruhe (TH), 2007.
October 2007.
[ bib |
.pdf ]
Klaus Krogmann.
Reconstruction of Software Component Architectures and Behaviour
Models using Static and Dynamic Analysis.
PhD thesis, Karlsruhe Institute of Technology (KIT), Karlsruhe,
Germany, 2010.
[ bib |
http | Abstract ]
Model-based performance prediction systematically deals with the evaluation of software performance to avoid for example bottlenecks, estimate execution environment sizing, or identify scalability limitations for new usage scenarios. Such performance predictions require up-to-date software performance models. Still, no automated reverse engineering approach for software performance models at an architectural level exist. This book describes a new integrated reverse engineering approach for the reconstruction of software component architectures and software component behaviour models which are parameterised over hardware, component assembly, and control and data flow and as such can serve as software performance models due to the execution semantics of the target meta-model.
Klaus Krogmann.
Entwicklung und Transformation eines EMF-Modells des
Palladio Komponenten-Meta-Modells.
Master's thesis, University of Oldenburg, Germany, May 2006.
Last retrieved 2009-10-01.
[ bib |
.pdf | Abstract ]
Modellgetriebene Entwicklung [20] verspricht auf Basis abtrakter Software-Modelle,
die beispielsweise in einer Notation wie der Unified Modelling Langage
vorliegen, automatisiert kompilierbaren Software-Quellcode erzeugen
zu können. Dadurch könnten änderungen am Software-Modell
ins kürzester Zeit in neuen Programmversionen resultieren und
umgekehrt. Durch die Erhöhung des Grades der Automatisierung
bei der Erzeugung von Software-Quellcode könnten Fehler minimiert
werden. über die Trennung von Software-Modell und generiertem
Software-Quellcode soll sich zusätzlich eine Plattformunabhängigkeit
des Software-Modells erreichen lassen. Insgesamt soll auf diese Weise
eine Steigerung der Effizienz von Software-Entwicklungsprozessen
erreicht werden. Die Möglichkeiten der modellgetriebenen Entwicklung,
auch unter dem Akronym MDA (Modell Driven Architecture) bekannt,
stehen und fallen dabei mit der Mächtigkeit der verwendeten Werkzeuge.
Je mehr Programmieraufwand durch Werkzeuge abgenommen wird, desto
schneller kann die Entwicklung neuer Versionen erfolgen. Die Stärken
von MDA werden vor allem in der permanenten Synchronisation zwischen
Software-Modell und Software-Quellcode gesehen. Die Abstraktion von
Software- Quellcode in Form eines Software-Modells bleibt stets konsistent
zur Ausprägung als Software-Quellcode und umgekehrt ein Zugriff
auf die weniger komplexe Abstraktion des Software-Quellcodes bleibt
damit permanent bestehen. Die Ausgangsbasis für eine modellgetriebene
Entwicklung (in Vorwärtsrichtung) bildet dabei ein Domänenmodell,
dass die Modell-Elemente der Anwendungsdomäne beschreibt. Da
nicht Instanzen von Modellen der Anwendungsdomäne beschrieben
werden, sondern Modelle gültiger Modell-Instanzen, handelt es
sich bei Domänenmodellen um Meta-Modelle.
Klaus Krogmann.
Generierung von Adaptoren.
Individual project, University of Oldenburg, Germany, 2004.
[ bib |
.pdf | Abstract ]
Die vorliegende Ausarbeitung zum Individuellen Projekt bietet einen
Einblick in die Erzeugung von Adaptoren auf Signaturniveau. Dabei
wird eine differenzierte Abgrenzung zu anderen Gebieten der Adaptererzeugung
vorgenommen, die sich unter anderem im einleitenden Abschnitt der
Arbeit wiederfindet. Im Mittelpunkt der Betrachtung, die aus der
Sicht der Komponentenbasierten Softwareentwicklung vorgenommen wird,
steht vor allem der Erzeugungsvorgang von Adaptoren für Komponenten.
Die Erzeugung von Adaptoren hängt unter anderem maßgeblich
davon ab, wie viele Informationen über die zu adaptierenden Komponenten
vorliegen. Betrachtet werden verschiedene Niveaus des Informationsreichtums,
die aus unterschiedlicher wissenschaftlicher Sicht zu verschiedenen
Ergebnissen führen können. Für den Kontext des erstellten
Adapter-Generators wird vor allem das Konzept der Konverter näher
beleuchtet. Durch diesen vielseitigen Mechanismus läßt sich
die Mächtigkeit der erzeugbaren Adapter drastisch erhöhen.
Aufgezeigt wird neben der konkreten Implementierung auch ein Vergleich
mit anderen Adaptionsansätzen.