From Requirements to Java Code: An Architecture-Centric Approach for Producing Quality Systems

From Requirements to Java Code: An Architecture-Centric Approach for Producing Quality Systems

Antonio Bucchiarone (IMT of Lucca, Italy), Davide Di Ruscio (University of L’Aquila, Italy), Henry Muccini (University of L’Aquila, Italy) and Patrizio Pelliccione (University of L’Aquila, Italy)
Copyright: © 2009 |Pages: 39
DOI: 10.4018/978-1-60566-006-6.ch011
OnDemand PDF Download:


When engineering complex and distributed software and hardware systems (increasingly used in many sectors, such as manufacturing, aerospace, transportation, communication, energy, and health-care), quality has become a big issue, since failures can have economic consequences and can also endanger human life. Model-based specifications of component-based systems permit to explicitly model the structure and behaviour of components and their integration. In particular Software Architectures (SA) have been advocated as an effective means to produce quality systems. In this chapter by combining different technologies and tools for analysis and development, we propose an architecture-centric model-driven approach to validate required properties and to generate the system code. Functional requirements are elicited and used for identifying expected properties the architecture shall express. The architectural compliance to the properties is formally demonstrated, and the produced architectural model is used to automatically generate Java code. Suitable transformations assure that the code is conforming to both structural and behavioural SA constraints. This chapter describes the process and discusses how some existing tools and languages can be exploited to support the approach.
Chapter Preview

1. Introduction

Software Architectures (SAs) are typically used to specify high level design blueprints of the systems under development and later on for maintenance and reuse purposes (in order to capture and model architectural design alternatives). At the same time, SAs can be used in order to analyze and validate architectural choices, both behavioural and quantitative (by complementing traditional code-level analysis techniques). More recently, architectural artefacts have been used to implicitly or explicitly guide the design and coding process (ArchJava Project, 2005; Fujaba Project, 2006). In summary, SA specifications are nowadays used for many purposes (Mustapic, 2004; Bril, 2005) like documenting, analysing, or guiding the design and coding process.

Even though SA documentation, analysis, and code generation have been intensively analyzed in isolation (e.g., Bernardo, 2003; Muccini, 2006; Fujaba Project, 2006) (code generation only very recently and partially), a tool supported process for selecting and documenting the right architecture and for successively propagating architectural design to the final system implementation is still missing. Analysis techniques and tools have been introduced to understand if the SA satisfies certain expected properties. By using model checking, testing, performance analysis (and others) at the architectural level, a software architect can assess the architectural quality and predict the final system characteristics. In the context of code generation, this verification phase assumes even a more central role, being the selected architectural model used for (automatically) deriving the system implementation. However, most of the analysis techniques rely on formal architectural specifications (e.g., (Bernardo, 2003)) of difficult application in industrial projects and of difficult integration in the software development process.

In this chapter we propose an architecture-centric development approach which enables the Java code generation of a software system from a high quality architectural model-based design. High quality architecture hereafter is referred to the SA ability to fulfil certain functional and temporal constraints as imposed by the requirements. Other qualities (i.e., performance, security, safety, reliability, etc..) are not explicitly taken into consideration. The formally verified SA is then the starting point of model transformations that produce a skeleton of the Java code implementing the specified system. The produced code reflects both structural and behavioural SA constraints and consequently assures the validity of defined, specified, and verified functional requirements.

Thus the goals of this work are twofold: to validate the model-based architectural specification with respect to defined requirements, and to use this validated model to guide the generation of a quality system implementation using model-driven techniques. Moreover, the approach promotes the following key benefits: (i) a model-based specification of the SA is provided, (ii) the conformance relation between functional requirements and architecture is validated, and (iii) Java code is automatically generated from architectural models. The generated code is obliged to respect both structural SA constraints (e.g., each component can only communicate using connectors and ownership domains (Aldrich 04) that are explicitly declared in the SA) and behavioural constraints (i.e., methods provided by components have to be invoked consistently with respect to the architectural specification). The approach is supported by automated tools, which allow formal analysis and permit code generation from the validated architecture. Overall, the approach encourages developers to make a more extensive and practical usage of SA specifications.

The remaining of the chapter is organized as follows: Section 2 outlines the state of the art on functional requirements specification, on SA modelling and analysis, and on code generation. Based on this background information, Section 3 describes our proposal for an architecture-centric model-driven and quality oriented development process from requirements to code. Section 4 introduces an ATM system running case study that is used for detailing the approach. Section 5 draws future research directions. Section 6 discusses related work, while Section 7 concludes the chapter.

Complete Chapter List

Search this Book:
Table of Contents
Colin Atkinson
Jörg Rech, Christian Bunse
Jörg Rech, Christian Bunse
Chapter 1
Ariadi Nugroho
Many studies have been carried out to investigate what makes up good quality software. Some of the early models that define the quality of software... Sample PDF
Managing the Quality of UML Models in Practice
Chapter 2
Teade Punter, Jeroen Voeten
This chapter argues that embedded systems design faces several challenges of which late integration and the difference in development productivity... Sample PDF
Quality in Model Driven Engineering
Chapter 3
Examples and Evidence  (pages 57-77)
Sowmya Karunakaran
This chapter aims at highlighting the increased development productivity and quality that can be achieved by Model Driven Software Development... Sample PDF
Examples and Evidence
Chapter 4
Anna E. Bobkowska
Successful realization of the model-driven software development visions in practice requires high quality models. This chapter focuses on the... Sample PDF
Integrating Quality Criteria and Methods of Evaluation for Software Models
Chapter 5
Heiko Koziolek, Steffen Becker, Ralf Reussner, Jens Happe
Techniques from model-driven software development are useful to analyse the performance of a software architecture during early development stages.... Sample PDF
Evaluating Performance of Software Architecture Models with the Palladio Component Model
Chapter 6
Esther Guerra, Juan de Lara, Paloma Díaz
The goal of this work is to facilitate the task of integrating measurement and redesign tools in modelling environments for Domain Specific Visual... Sample PDF
Integrating Measures and Redesigns in the Definition of Domain Specific Visual Languages
Chapter 7
Measuring Models  (pages 147-169)
Martin Monperrus, Jean-Marc Jézéquel, Joël Champeau, Brigitte Hoeltzener
Model-Driven Engineering (MDE) is an approach to software development that uses models as primary artifacts, from which code, documentation and... Sample PDF
Measuring Models
Chapter 8
Tom Mens, Gabriele Taentzer, Dirk Müller
In this chapter, we explore the emerging research domain of model-driven software refactoring. Program refactoring is a proven technique that aims... Sample PDF
Model-Driven Software Refactoring
Chapter 9
Michael Wahler
Class models are typically specified at a high level of abstraction and subsequently refined with textual constraints to obtain higher maturity... Sample PDF
A Pattern Approach to Increasing the Maturity Level of Class Models
Chapter 10
Miroslaw Staron
Introducing Model Driven Software Development (MDSD) into industrial projects is rarely done as a “green field” development. The usual path is to... Sample PDF
Transitioning from Code-Centric to Model-Driven Industrial Projects: Empirical Studies in Industry and Academia
Chapter 11
Antonio Bucchiarone, Davide Di Ruscio, Henry Muccini, Patrizio Pelliccione
When engineering complex and distributed software and hardware systems (increasingly used in many sectors, such as manufacturing, aerospace... Sample PDF
From Requirements to Java Code: An Architecture-Centric Approach for Producing Quality Systems
Chapter 12
Silvia Abrahão, Marcela Genero, Emilio Insfran, José Ángel Carsí, Isidro Ramos, Mario Piattini
Model-Driven Architecture (MDA) is a software engineering approach that promotes the use of models and model transformations as primary development... Sample PDF
Quality-Driven Model Transformations: From Requirements to UML Class Diagrams
Chapter 13
Pankaj Kamthan
As software systems become ever more interactive, there is a need to model the services they provide to users, and use cases are one abstract way of... Sample PDF
A Framework for Understanding and Addressing the Semiotic Quality of Use Case Models
Chapter 14
Stefan Wagner, Florian Deissenboeck, Stefan Teuchert, Jean-François Girard
In model-driven software development as much as in classical code-driven development maintenance costs make up the bulk of the total life cycle... Sample PDF
Assuring Maintainability in Model-Driven Development of Embedded Systems
Chapter 15
Tibor Farkas
Premium quality and innovation are the cornerstones of the leading positions of car manufacturers and suppliers in the world market. The permanently... Sample PDF
Quality Improvement in Automotive Software Engineering Using a Model-Based Approach
Chapter 16
Claus Pahl, Boškovic Marko, Ronan Barrett, Wilhelm Hasselbring
Service engineering and service-oriented architecture as an integration and platform technology is a recent approach to software systems... Sample PDF
Quality-Aware Model-Driven Service Engineering
Chapter 17
Sven Abels, Wilhelm Hasselbring, Niels Streekmann, Mathias Uslar
This chapter introduces model-driven integration in complex information systems by giving two practical examples. It relies on the experiences the... Sample PDF
Model-Driven Integration in Complex Information Systems: Experiences from Two Scenarios
Chapter 18
Jane M.C. Oh
This chapter examines the experience of using model-based design in the context of development of critical software. The software is being developed... Sample PDF
High-Quality Software Models of the Mid-Infrared Instrument for the James Webb Space Telescope
About the Contributors