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.
Flavio Oquendo is Full Professor of Computing at the University of South Brittany, France, and Principal Investigator on Software Architecture at the IRISA Research Institute (UMR CNRS 6074). He was awarded the degrees of PhD and HDR (Research Direction Habilitation) in Computing from the University of Grenoble, France. He has been working with Software Architecture since 1986. His research interests are centred on formal languages, processes and tools to support the efficient architecture and engineering of software-intensive systems and their applications in industrial settings. He was Scientific Director of pioneering European Projects on Software Architecture in cooperation with the industry and founding co-chair of the French and European Conferences on Software Architecture. Also on Software Architecture, he has been involved as Program Chair of the French, European, and IEEE/IFIP conferences and has edited many Special Issues in International Journals. Jair Leite has been working with Software Design and Architecture since 1998. His research interests are architecture-based development, human computer interaction, design languages. He has been member of several Program Committees of Brazilian and International conferences involving Software Architecture. Thais Batista is Full Professor of the Informatics Department at the Federal University of Rio Grande do Norte (UFRN), Brazil. She is vice-president of the Brazilian Computer Society (SBC). She has been working with Software Architecture since 2000. Her research interests are architecture-based development, middleware, internet of things, cloud computing, system-of-systems. She has been involved as Program Committee member of several Brazilian and International conferences involving Software Architecture.
Part I: Fundamentals.- Introduction to Software Architecture.- Viewpoints for Describing Software Architectures.- Eliciting Requirements of Software Architectures.- Specifying the Structure of Software Architectures.- Specifying Behaviour of Software Architectures.- Specifying Executable Software Architectures.- Executing Software Architectures.- Part II: Quality-Based Architectures.- Introduction to Quality-Based Architectures.- Designing Modifiability in Software Architecture.- Designing Scalability in Software Architectures.- Designing Fault Tolerance in Software Architectures.- Part III: Style-Based Architectures.- Introduction to Style-Based Architectures.- Pipe Filter Architectural Style.- Client Server Architectural Style.-Feedback Control Loop Architectural Style.- Blackboard Architectural Style.- Part IV: Textual Descriptions of Architectures.-Textually Representing Software Architectures.