12,932 research outputs found
Quality-aware model-driven service engineering
Service engineering and service-oriented architecture as an integration and platform technology is a recent approach to software systems integration. Quality aspects
ranging from interoperability to maintainability to performance are of central importance for the integration of heterogeneous, distributed service-based systems. Architecture models can substantially influence quality attributes of the implemented software systems. Besides the benefits of explicit architectures on maintainability and reuse, architectural constraints such as styles, reference architectures and architectural patterns can influence observable software properties such as performance. Empirical performance evaluation is a process of measuring and evaluating the performance of implemented software. We present an approach for addressing the quality of services and service-based systems at the model-level in the context of model-driven service engineering. The focus on architecture-level models is a consequence of the black-box
character of services
Preserving the Quality of Architectural Tactics in Source Code
In any complex software system, strong interdependencies exist between requirements and software architecture. Requirements drive architectural choices while also being constrained by the existing architecture and by what is economically feasible. This makes it advisable to concurrently specify the requirements, to devise and compare alternative architectural design solutions, and ultimately to make a series of design decisions in order to satisfy each of the quality concerns.
Unfortunately, anecdotal evidence has shown that architectural knowledge tends to be tacit in nature, stored in the heads of people, and lost over time. Therefore, developers often lack comprehensive knowledge of underlying architectural design decisions and inadvertently degrade the quality of the architecture while performing maintenance activities. In practice, this problem can be addressed through preserving the relationships between the requirements, architectural design decisions and their implementations in the source code, and then using this information to keep developers aware of critical architectural aspects of the code.
This dissertation presents a novel approach that utilizes machine learning techniques to recover and preserve the relationships between architecturally significant requirements, architectural decisions and their realizations in the implemented code.
Our approach for recovering architectural decisions includes the two primary stages of training and classification. In the first stage, the classifier is trained using code snippets of different architectural decisions collected from various software systems. During this phase, the classifier learns the terms that developers typically use to implement each architectural decision. These ``indicator terms\u27\u27 represent method names, variable names, comments, or the development APIs that developers inevitably use to implement various architectural decisions. A probabilistic weight is then computed for each potential indicator term with respect to each type of architectural decision. The weight estimates how strongly an indicator term represents a specific architectural tactics/decisions. For example, a term such as \emph{pulse} is highly representative of the heartbeat tactic but occurs infrequently in the authentication. After learning the indicator terms, the classifier can compute the likelihood that any given source file implements a specific architectural decision.
The classifier was evaluated through several different experiments including classical cross-validation over code snippets of 50 open source projects and on the entire source code of a large scale software system. Results showed that classifier can reliably recognize a wide range of architectural decisions.
The technique introduced in this dissertation is used to develop the Archie tool suite. Archie is a plug-in for Eclipse and is designed to detect wide range of architectural design decisions in the code and to protect them from potential degradation during maintenance activities. It has several features for performing change impact analysis of architectural concerns at both the code and design level and proactively keep developers informed of underlying architectural decisions during maintenance activities.
Archie is at the stage of technology transfer at the US Department of Homeland Security where it is purely used to detect and monitor security choices. Furthermore, this outcome is integrated into the Department of Homeland Security\u27s Software Assurance Market Place (SWAMP) to advance research and development of secure software systems
Report from GI-Dagstuhl Seminar 16394: Software Performance Engineering in the DevOps World
This report documents the program and the outcomes of GI-Dagstuhl Seminar
16394 "Software Performance Engineering in the DevOps World".
The seminar addressed the problem of performance-aware DevOps. Both, DevOps
and performance engineering have been growing trends over the past one to two
years, in no small part due to the rise in importance of identifying
performance anomalies in the operations (Ops) of cloud and big data systems and
feeding these back to the development (Dev). However, so far, the research
community has treated software engineering, performance engineering, and cloud
computing mostly as individual research areas. We aimed to identify
cross-community collaboration, and to set the path for long-lasting
collaborations towards performance-aware DevOps.
The main goal of the seminar was to bring together young researchers (PhD
students in a later stage of their PhD, as well as PostDocs or Junior
Professors) in the areas of (i) software engineering, (ii) performance
engineering, and (iii) cloud computing and big data to present their current
research projects, to exchange experience and expertise, to discuss research
challenges, and to develop ideas for future collaborations
An overview of Mirjam and WeaveC
In this chapter, we elaborate on the design of an industrial-strength aspectoriented programming language and weaver for large-scale software development. First, we present an analysis on the requirements of a general purpose aspect-oriented language that can handle crosscutting concerns in ASML software. We also outline a strategy on working with aspects in large-scale software development processes. In our design, we both re-use existing aspect-oriented language abstractions and propose new ones to address the issues that we identified in our analysis. The quality of the code ensured by the realized language and weaver has a positive impact both on maintenance effort and lead-time in the first line software development process. As evidence, we present a short evaluation of the language and weaver as applied today in the software development process of ASML
The AMASS approach for assurance and certification of critical systems
Safety-critical systems are subject to rigorous assurance and certification processes to guarantee that they do not pose unreasonable risks to people, property, or the environment. The associated activities are usually complex and time-consuming, thus they need adequate support for their execution. The activities are further becoming more challenging as the systems are evolving towards open, interconnected systems with new features, e.g. Internet connectivity, and new assurance needs, e.g. compliance with several assurance standards for different dependability attributes. This requires the development of novel approaches for cost-effective assurance and certification. With the overall goal of lowering assurance and certification costs in face of rapidly changing features and market needs, the AMASS project has created and consolidated the de-facto European-wide open solution for assurance and certification of critical systems. This has been achieved by establishing a novel holistic and reuse-oriented approach for architecture-driven assurance, multi-concern assurance, and for seamless interoperability between assurance and engineering activities along with third-party activities. This paper introduces the main elements of the AMASS approach and how to use them and benefit from them.The work leading to this paper has received funding from the AMASS project (H2020-ECSEL grant agreement no 692474; Spainâs MINECO ref. PCIN-2015-262)
The impact of microservices: an empirical analysis of the emerging software architecture
Dissertação de mestrado em Informatics EngineeringThe applicationsâ development paradigm has faced changes in recent years, with modern development being
characterized by the need to continuously deliver new software iterations. With great affinity with those principles,
microservices is a software architecture which features characteristics that potentially promote multiple quality
attributes often required by modern, large-scale applications. Its recent growth in popularity and acceptance in
the industry made this architectural style often described as a form of modernizing applications that allegedly
solves all the traditional monolithic applicationsâ inconveniences. However, there are multiple worth mentioning
costs associated with its adoption, which seem to be very vaguely described in existing empirical research, being
often summarized as "the complexity of a distributed system". The adoption of microservices provides the
agility to achieve its promised benefits, but to actually reach them, several key implementation principles have
to be honored. Given that it is still a fairly recent approach to developing applications, the lack of established
principles and knowledge from development teams results in the misjudgment of both costs and values of this
architectural style. The outcome is often implementations that conflict with its promised benefits. In order to
implement a microservices-based architecture that achieves its alleged benefits, there are multiple patterns and
methodologies involved that add a considerable amount of complexity. To evaluate its impact in a concrete and
empirical way, one same e-commerce platform was developed from scratch following a monolithic architectural
style and two architectural patterns based on microservices, featuring distinct inter-service communication and
data management mechanisms. The effort involved in dealing with eventual consistency, maintaining a communication
infrastructure, and managing data in a distributed way portrayed significant overheads not existent in the
development of traditional applications. Nonetheless, migrating from a monolithic architecture to a microservicesbased
is currently accepted as the modern way of developing software and this ideology is not often contested,
nor the involved technical challenges are appropriately emphasized. Sometimes considered over-engineering,
other times necessary, this dissertation contributes with empirical data from insights that showcase the impact
of the migration to microservices in several topics. From the trade-offs associated with the use of specific patterns,
the development of the functionalities in a distributed way, and the processes to assure a variety of quality
attributes, to performance benchmarks experiments and the use of observability techniques, the entire development
process is described and constitutes the object of study of this dissertation.O paradigma de desenvolvimento de aplicaçÔes tem visto alteraçÔes nos Ășltimos anos, sendo o desenvolvimento
moderno caracterizado pela necessidade de entrega contĂnua de novas iteraçÔes de software. Com
grande afinidade com esses princĂpios, microsserviços sĂŁo uma arquitetura de software que conta com caracterĂsticas
que potencialmente promovem mĂșltiplos atributos de qualidade frequentemente requisitados por aplicaçÔes
modernas de grandes dimensÔes. O seu recente crescimento em popularidade e aceitação na industria
fez com que este estilo arquitetural se comumente descrito como uma forma de modernizar aplicaçÔes que
alegadamente resolve todos os inconvenientes apresentados por aplicaçÔes monolĂticas tradicionais. Contudo,
existem vårios custos associados à sua adoção, aparentemente descritos de forma muito vaga, frequentemente
sumarizados como a "complexidade de um sistema distribuĂdo". A adoção de microsserviços fornece a agilidade
para atingir os seus benefĂcios prometidos, mas para os alcançar, vĂĄrios princĂpios de implementação
devem ser honrados. Dado que ainda se trata de uma forma recente de desenvolver aplicaçÔes, a falta de
princĂpios estabelecidos e conhecimento por parte das equipas de desenvolvimento resulta em julgamentos
errados dos custos e valores deste estilo arquitetural. O resultado geralmente são implementaçÔes que entram
em conflito com os seus benefĂcios prometidos. De modo a implementar uma arquitetura baseada em
microsserviços com os benefĂcios prometidos existem mĂșltiplos padrĂ”es que adicionam considerĂĄvel complexidade.
De modo a avaliar o impacto dos microsserviços de forma concreta e empĂrica, foi desenvolvida uma
mesma plataforma e-commerce de raiz segundo uma arquitetura monolĂtica e duas arquitetura baseadas em
microsserviços, contando com diferentes mecanismos de comunicação entre os serviços. O esforço envolvido
em lidar com consistĂȘncia eventual, manter a infraestrutura de comunicação e gerir os dados de uma forma distribuĂda
representaram desafios não existentes no desenvolvimento de aplicaçÔes tradicionais. Apesar disso, a
ideologia de migração de uma arquitetura monolĂtica para uma baseada em microsserviços Ă© atualmente aceite
como a forma moderna de desenvolver aplicaçÔes, não sendo frequentemente contestada nem os seus desafios
técnicos são apropriadamente enfatizados. Por vezes considerado overengineering, outras vezes necessårio,
a presente dissertação visa contribuir com dados pråticos relativamente ao impacto da migração para arquiteturas
baseadas em microsserviços em diversos tópicos. Desde os trade-offs envolvidos no uso de padrÔes
especĂficos, o desenvolvimento das funcionalidades de uma forma distribuĂda e nos processos para assegurar
uma variedade de atributos de qualidade, até anålise de benchmarks de performance e uso de técnicas de
observabilidade, todo o desenvolvimento é descrito e constitui o objeto de estudo da dissertação
- âŠ