Skip to main content
main-content
Top

About this book

This book presents a systematic model-based approach for software architecture according to three complementary viewpoints: structure, behavior, and execution. It covers a unified modeling approach and consolidates theory and practice with well-established learning outcomes.

The authors cover the fundamentals of software architecture description and presents SysADL, a specialization of the OMG Standard Systems Modeling Language (SysML) with the aim of bringing together the expressive power of an Architecture Description Language (ADL) with a standard notation, widely accepted by industry and compliant with the ISO/IEC/IEEE 42010 Standard on Architecture Description in Systems and Software Engineering.

The book is clearly structured in four parts:

The first part focuses on the fundamentals of software architecture, exploring the concepts and constructs for modeling software architecture from differing viewpoints. Each chapter covers a specific viewpoint illustrated with examples of a real system. The second part focuses on how to design software architecture for achieving quality attributes. Each chapter covers a specific quality attribute and presents well-defined approaches to achieve it. Each architectural case study is illustrated with different examples drawn from a real-life system.The third part shows readers how to apply software architecture style to design architectures that meet the quality attributes. Each chapter covers a specific architectural style and gives insights on how to describe substyles. Each style is illustrated by variants and examples of a real-life system.The fourth part presents how to textually represent software architecture models to complement visual notation, including different examples.

Software Architecture in Action is designed for teaching the required modeling techniques to both undergraduate and graduate students, giving them the practical techniques and tools needed to design the architecture of software-intensive systems. Similarly, this book will appeal to software development architects, designers, programmers and project managers too.

Table of Contents

Fundamentals

Frontmatter

Chapter 1. Introduction to Software Architecture

In this chapter, we introduce the concept of software architecture and the SysADL architectural framework for describing, analyzing, and executing software architectures. We present the motivation for defining SysADL and describe the organization of the book for putting software architecture in action with SysADL. We introduce a running example to illustrate software architectures in action along the chapters of this book.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 2. Viewpoints for Describing Software Architectures

In this chapter we present the architectural framework provided by SysADL. We define software architecture and the fundamental notion of software architecture description according to the ISO/IEC Standard 42010 “Systems and Software Engineering—Architecture description.” We present, in detail, the concepts underlying the architecture description in terms of viewpoints and views.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 3. Eliciting Requirements of Software Architectures

In this chapter, we present the SysADL constructs for expressing requirements and decisions related to software architectures. We explain the concepts of requirements (the needs from stakeholders) on one hand, and decisions (the choices of the architect on how requirements will be satisfied by the architecture) on the other. We present, in detail, each of the requirement constructs and illustrate their use by applying them to our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 4. Specifying the Structure of Software Architectures

In this chapter, we present the structural viewpoint provided by SysADL. We explain the SysADL constructs that enable the description of structural views. We also present, in details, the concepts underlying each of these constructs and how each one is applied to specify the different views comprising the architectural structure. Finally, we illustrate each definition and how to use it with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 5. Specifying Behavior of Software Architectures

In this chapter, we present the behavioral viewpoint provided by SysADL. We explain the SysADL constructs that enable the description of behavioral views. We present in details the concepts underlying each of these constructs and how each one is applied to specify the different views comprising the architectural behavior. We illustrate each definition and use of behavioral elements with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 6. Specifying Executable Software Architectures

In this chapter we present the executable viewpoint provided by SysADL. We explain the SysADL constructs that enable the description of the executable view. We describe, in details, the concepts underlying each of these constructs and how each one is applied. We illustrate each definition and how to use it with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 7. Executing Software Architectures

In this chapter, we present the execution semantics of architecture descriptions expressed with SysADL. We explain the SysADL constructs that enable execution as described from the different viewpoints and how the user observes this execution for validating the described architectures. In particular, we explain the operational semantics of each behavioral construct, specified in terms of transition rules where the premise declares the state before the execution and the conclusion, the state after the execution.
Flavio Oquendo, Jair Leite, Thaís Batista

Quality-Based Architectures

Frontmatter

Chapter 8. Introduction to Quality-Based Architectures

Part I introduced the modelling of requirements and presented how to describe a software architecture to meet functional requirements. In Part II, we will present how to design a software architecture with SysADL to satisfy nonfunctional requirements known as quality attributes.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 9. Designing Modifiability in Software Architectures

In this chapter, we present modifiability as an architectural quality and how to express modifiability in software architecture. We explain how to analyse architecture to evaluate its modifiability and how to apply tactics to improve modifiability.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 10. Designing Scalability in Software Architectures

In this chapter we present scalability as an architectural quality and how to express scalability in software architecture. We explain how to analyze an architecture to evaluate its scalability and how to apply tactics to improve scalability.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 11. Designing Fault Tolerance in Software Architectures

In this chapter, we present fault tolerance as an architectural quality and how to express fault tolerance in software architecture. We explain how to analyze an architecture to evaluate its fault tolerance and how to apply tactics to improve fault tolerance.
Flavio Oquendo, Jair Leite, Thaís Batista

Style-Based Architectures

Frontmatter

Chapter 12. Introduction to Style-Based Architectures

Part I presented how to describe a software architecture with SysADL to meet functional requirements. Part II presented how to design a software architecture with SysADL to satisfy nonfunctional requirements known as quality attributes. In this, we introduce the concept of architectural style and how a software architecture can be designed in conformance to a style. In particular, we present how to design a software architecture style with SysADL that can be used in an architecture design process for supporting architecture description.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 13. Pipe-Filter Architectural Style

In this chapter, we present and explain the Pipe-Filter architectural style and how to specify it in SysADL. We specify the style using the structural and behavioral viewpoints. We also present the pipeline architectural style as a substyle of Pipe-Filter. Finally, we illustrate the Pipe-Filter style and how to use it with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 14. Client Server Architectural Style

In this chapter, we present and explain the client–server architectural style and how to specify it in SysADL. We specify the style using the structural and behavioral viewpoints. Finally, we illustrate the client–server style and how to use it with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 15. Feedback Control Loop Architectural Style

In this chapter, we present and explain the Feedback Control Loop architectural style and how to specify it in SysADL. We specify the style using the structural and behavioral viewpoints. Finally, we illustrate the Feedback Control Loop style and how to use it with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Chapter 16. Blackboard Architectural Style

In this chapter, we present and explain the Blackboard architectural style and how to specify it in SysADL. We specify the style using the structural and behavioral views. Finally, we illustrate the Blackboard style and how to use it with our running example.
Flavio Oquendo, Jair Leite, Thaís Batista

Textual Description of Architectures

Frontmatter

Chapter 17. Textually Representing Software Architectures

In this chapter we present the textual notation of SysADL. We describe the SysADL constructs (structural, behavioral, and executable) in the textual notation. We describe, in details, the concepts underlying each of these constructs and how each one is applied to textually describe the architecture.
Flavio Oquendo, Jair Leite, Thaís Batista
Additional information