406 research outputs found

    A pattern language for evolution reuse in component-based software architectures

    Get PDF
    Context: Modern software systems are prone to a continuous evolution under frequently varying requirements and changes in operational environments. Architecture-Centric Software Evolution (ACSE) enables changes in a system’s structure and behaviour while maintaining a global view of the software to address evolution-centric trade-offs. Lehman’s law of continuing change demands for long-living and continuously evolving architectures to prolong the productive life and economic value of software. Also some industrial research shows that evolution reuse can save approximately 40% effort of change implementation in ACSE process. However, a systematic review of existing research suggests a lack of solution(s) to support a continuous integration of reuse knowledge in ACSE process to promote evolution-off-the-shelf in software architectures. Objectives: We aim to unify the concepts of software repository mining and software evolution to discover evolution-reuse knowledge that can be shared and reused to guide ACSE. Method: We exploit repository mining techniques (also architecture change mining) that investigates architecture change logs to discover change operationalisation and patterns. We apply software evolution concepts (also architecture change execution) to support pattern-driven reuse in ACSE. Architecture change patterns support composition and application of a pattern language that exploits patterns and their relations to express evolution-reuse knowledge. Pattern language composition is enabled with a continuous discovery of patterns from architecture change logs and formalising relations among discovered patterns. Pattern language application is supported with an incremental selection and application of patterns to achieve reuse in ACSE. The novelty of the research lies with a framework PatEvol that supports a round-trip approach for a continuous acquisition (mining) and application (execution) of reuse knowledge to enable ACSE. Prototype support enables customisation and (semi-) automation for the evolution process. Results: We evaluated the results based on the ISO/IEC 9126 - 1 quality model and a case study based validation of the architecture change mining and change execution processes. We observe consistency and reusability of change support with pattern-driven architecture evolution. Change patterns support efficiency for architecture evolution process but lack a fine-granular change implementation. A critical challenge lies with the selection of appropriate patterns to form a pattern language during evolution. Conclusions: The pattern language itself continuously evolves with an incremental discovery of new patterns from change logs over time. A systematic identification and resolution of change anti-patterns define the scope for future research

    A Framework for Agile Development of Component-Based Applications

    Get PDF
    Agile development processes and component-based software architectures are two software engineering approaches that contribute to enable the rapid building and evolution of applications. Nevertheless, few approaches have proposed a framework to combine agile and component-based development, allowing an application to be tested throughout the entire development cycle. To address this problematic, we have built CALICO, a model-based framework that allows applications to be safely developed in an iterative and incremental manner. The CALICO approach relies on the synchronization of a model view, which specifies the application properties, and a runtime view, which contains the application in its execution context. Tests on the application specifications that require values only known at runtime, are automatically integrated by CALICO into the running application, and the captured needed values are reified at execution time to resume the tests and inform the architect of potential problems. Any modification at the model level that does not introduce new errors is automatically propagated to the running system, allowing the safe evolution of the application. In this paper, we illustrate the CALICO development process with a concrete example and provide information on the current implementation of our framework

    Component-based software architectures and multi-agent systems: mutual and complementary contributions for supporting software development

    Get PDF
    Dans cette thèse, nous explorons les diverses contributions que les systèmes multi-agents (SMA) et les architectures à base de composants (CBSA) peuvent mutuellement et complémentairement s'apporter l'un à l'autre. Dans un premier temps, nous définissons, illustrons, analysons et discutons une méthodologie du développement des SMA, un modèle de composants (SpeAD), un langage de description d'architecture (SpeADL) et une méthode de conception (SpEArAF) qui facilitent et guident la description et l'implémentation des SMA. Cette réponse complète au développement des SMA est assistée par un outil (MAY) et a été appliquée à un grand nombre d'applications. Dans un second temps, nous explorons à travers divers expériences l'aide que peuvent apporter les SMA auto-adaptatif aux CBSA. Les agents et leur réorganisation continuelle jouent à la fois le rôle de moteur de la construction et de l'adaptation dynamique de l'architecture, mais aussi du conteneur qui connecte ses éléments en pratique.In this thesis, we explore the various aspects of the mutual and complementary contributions that multi-agent systems (MASs) and component-based software architectures (CBSAs) can provide to each other. On one hand, we define, illustrate, analyse and discuss an architecture-oriented methodology of MAS development, a component model (SpeAD), an architectural description language (SpeADL) and a design method (SpEArAF) that ease and guide the description and the implementation of MASs. This complete answer to MAS development is supported by a tool (MAY) and has been applied to many applications. On the other hand, we explore through various experiments how self-adaptive MASs can be used to support CBSAs. The agents and their continuous reorganisation act both as the engine of the construction and of the dynamic adaptation of the architecture, and as the runtime container that practically connects its elements together

    Verification of Component-based Distributed Real-time Systems

    Get PDF
    Component-based software architectures enable reuse by separating application-specific concerns into modular components that are shielded from each other and from common concerns addressed by underlying services. Even so, concerns such as invocation rates, execution latencies, deadlines, and concurrency and scheduling semantics still cross-cut component boundaries in many real-time systems. Verification of these systems therefore must consider how composition of components relates to timing, resource utilization, and other properties. However, existing approaches only address a sub-set of the concerns that must be modeled in component-based distributed real-time systems, and a new more comprehensive approach is thus needed. To address that need, this paper offers three contributions to the state of the art in verification of component-based distributed real-time systems: (1) it introduces a formal model called real-time component automata that combines and extends interface automata and timed automata models; (2) it presents new component composition operations for single-threaded and cooperative multitasking forms of concurrency; and (3) it describes how the composed models can be combined with task locations, a scheduling model, and a communication delay model, to generate a combined representation of the application components and supporting services that can be verified by existing model checkers. These contributions are embodied in an open-source tool prototype called the Real-time Component Model Translator (RTCMT)

    Design Space Evaluation for Confidentiality under Architectural Uncertainty

    Get PDF
    In den frühen Phasen der Entwicklung einer Softwarearchitektur sind viele Eigenschaften des finalen Systems noch unbekannt und schwer zu ermitteln. Es kann mehrere mögliche Softwarearchitekturen geben, aber es ist ungewiss, welche Architektur die beste Entscheidung ist. Softwarearchitekten können Entwurfsraumerkundung (engl. Design Space Exploration) nutzen, um Qualitätsmetriken einzelner Architekturkandidaten zu ermitteln und den optimalen Kandidaten zu wählen. Entwurfsraumerkundung ist ein ressourcenintensiver Prozess. Ein Architekturkandidat kann bestimmte Eigenschaften aufweisen, die es direkt von weiterer Erwägung als optimalen Kandidaten ausschließt, unabhängig von seinen Qualitätsmetriken. Ein Beispiel solcher Eigenschaften sind Vertraulichkeitsverletzungen, die durch die Nutzung bestimmter Komponenten oder Kombinationen von Komponenten in einer Architektur eingeführt werden. Sollten diese Eigenschaften frühzeitig identifiziert werden können, kann die Ermittlung der Qualitätsmetriken des Architekturkandidaten übersprungen werden und der Kandidat verworfen werden. Dies kann wertvolle Ressourcen einsparen. Zurzeit können solche Analysen wie die Vertraulichkeitsanalyse nur getrennt von dem Entwurfsraumerkundungsprozess durchgeführt werden. Zunächst werden optimale Kandidaten ermittelt, und später erst einzeln analysiert. Unser Ansatz erweitert PerOpteryx um einen zusätzlichen Filter, der es erlaubt existierende generische Analysen auf Architekturkandidaten im Entwurfsraumerkundungsprozess durchzuführen. Dadurch wird das frühzeitige Verwerfen von ungeeigneten Kandidaten vor der Ermittlung von Qualitätsmetriken ermöglicht. Wir nutzen diesen Filter um eine Vertraulichkeitsanalyse in den Entwurfsraumerkundungsprozess zu integrieren, und stellen weitere Beispielanalysen bereit, die in dem Filter genutzt werden können. Wir evaluieren unseren Ansatz indem wir PerOpteryx mit unserem Filter auf Fallstudien ausführen. Unsere Ergebnisse deuten an, dass unser Filter wie erwartet funktioniert und Architekturkandidaten analysieren und verwerfen kann, und die Ermittlung von Qualitätseigenschaften für ungeeignete Kandidaten überspringt
    corecore