Skip to main content

2015 | Buch

Software Engineering

International Summer Schools, LASER 2013-2014, Elba, Italy, Revised Tutorial Lectures

insite
SUCHEN

Über dieses Buch

The LASER Summer School is intended for professionals from industry (engineers and managers) as well as university researchers, including PhD students. Participants learn about the most important software technology advances from pioneers in the field.

Since its inception in 2004, the LASER Summer School has focused on an important software engineering topic each year. This volume contains selected lecture notes from the 10th LASER Summer School on Software Engineering: Leading-Edge Software Engineering.

Inhaltsverzeichnis

Frontmatter
How to Build a Recommendation System for Software Engineering
Abstract
Software developers must interact with large amounts of different types of information and perform many different activities to build a software system. To ease the finding of information and hone workflows, there has been growing interest in building recommenders that are intended to help software developers work more effectively. Building an effective recommender requires a deep understanding of the problem that is the target of a recommender, analysis of different aspects of the approach taken to perform the recommendations and design and evaluation of the mechanisms used to present recommendations to a developer. In this chapter, we outline the different steps that must be taken to develop an effective recommender system to aid software development.
Sebastian Proksch, Veronika Bauer, Gail C. Murphy
Behaviours as Design Components of Cyber-Physical Systems
Abstract
System behaviour is proposed as the core object of software development. The system comprises both the software machine and the problem world. The behaviour of the problem world is ensured by the combination of its given properties and the interacting behaviour of the machine. The fundamental requirements do not mandate specific system behaviour but demand that the behaviour exhibit certain desirable properties and achieve certain effects. These fundamental requirements therefore include usability, safety, reliability and others commonly regarded as ‘non-functional’. A view of behaviour content and structure is presented, based on the Problem Frames approach, leading to a specification in terms of concurrent behaviour instances created and controlled within a tree structure. Development method is not addressed in this short paper; nor is software architecture. For brevity, and clearer visibility of the thread of the paper’s theme, much incidental, explanatory, illustrative and detailed material is relegated to end notes. A final section summarises the claimed value of the approach in addressing the characteristic challenges of cyber-physical systems.
Michael Jackson
A Control-Theoretic Approach to Self-adaptive Systems and an Application to Cloud-Based Software
Abstract
Software systems are usually developed to provide a fixed set of functionalities within given environmental conditions. However, in the last few years, there has been an increasing interest in systems that can autonomously modify their behavior in response to dynamic changes occurring in their execution environment. In one word, they must be self-adaptive. Self-adaptation requires the ability to discover and analyze changes, and to react by applying an adequate set of adaptation actions. The choice of the adaptation actions to apply can be performed in a model-driven fashion, that is by evaluating their effectiveness on a model of the system that is kept alive and updated at run-time.
We describe an approach to the design of self-adaptive systems that frames self-adaptation as a control theory problem. Our approach considers the architecture of the application, represented through a Discrete Time Markov Chain (DTMC); the running environment upon which it is deployed, described through a Queuing Model (QM); and a cost model, specified through a Dynamic System. At run-time the system autonomously increases or decreases the amount of resources allocated to different components of the application in response to changes of both workload intensity and distribution, and of performance of the computing resources. The adopted policy both minimizes costs and maintains the desired QoS, in terms of average response time. We evaluate our approach simulating a cloud computing application in a cloud infrastructure. This computing environment has been chosen because it allows on-demand access to a configurable pool of resources that can be easily provisioned and released at run-time.
Carlo Ghezzi, Giovanni Paolo Gibilisco, Claudio Menghi, Marco Miglierina
Consistency in Distributed Systems
Abstract
Data replication is a common technique for programming distributed systems, and is often important to achieve performance or reliability goals. Unfortunately, the replication of data can compromise its consistency, and thereby break programs that are unaware. In particular, in weakly consistent systems, programmers must assume some responsibility to properly deal with queries that return stale data, and to avoid state corruption under conflicting updates. The fundamental tension between performance (favoring weak consistency) and correctness (favoring strong consistency) is a recurring theme when designing concurrent and distributed systems, and is both practically relevant and of theoretical interest.
In this course, we investigate how to understand and formalize consistency guarantees, and how we can determine if a system implementation is correct with respect to such specifications. We start by examining consensus, a classic problem in distributed systems, and then proceed to study various specifications and implementations of eventually consistent systems.
Sebastian Burckhardt
Software Mining Studies: Goals, Approaches, Artifacts, and Replicability
Abstract
The mining of software archives has enabled new ways for increasing the productivity in software development: Analyzing software quality, mining project evolution, investigating change patterns and evolution trends, mining models for development processes, developing methods of integrating mined data from various historical sources, or analyzing natural language artifacts in software repositories, are examples of research topics. Software repositories include various data, ranging from source control systems, issue tracking systems, artifact repositories such as requirements, design and architectural documentation, to archived communication between project members. Practitioners and researchers have recognized the potential of mining these sources to support the maintenance of software, to improve their design or architecture, and to empirically validate development techniques or processes. We revisited software mining studies that were published in recent years in the top venues of software engineering, such as ICSE, ESEC/FSE, and MSR. In analyzing these software mining studies, we highlight different viewpoints: pursued goals, state-of-the-art approaches, mined artifacts, and study replicability. To analyze the mining artifacts, we (lexically) analyzed research papers of more than a decade. In terms of replicability we looked at existing work in the field in mining approaches, tools, and platforms. We address issues of replicability and reproducibility to shed light onto challenges for large-scale mining studies that would enable a stronger conclusion stability.
Sven Amann, Stefanie Beyer, Katja Kevic, Harald Gall
Theory of Programs
Abstract
“Computer science” (informatics) is really program science since a computer, by itself too general a machine to be of practical interest, yields useful machines through programs that people write for it.
Bertrand Meyer
Backmatter
Metadaten
Titel
Software Engineering
herausgegeben von
Bertrand Meyer
Martin Nordio
Copyright-Jahr
2015
Electronic ISBN
978-3-319-28406-4
Print ISBN
978-3-319-28405-7
DOI
https://doi.org/10.1007/978-3-319-28406-4