Mahbouba Gharbi is managing director and Chief Architect at ITech Progress GmbH, and chairman of the board at the International Software Architecture Qualification Board (iSAQB). She is a self-confessed software architecture enthusiast and the author of many expert articles. She is a welcome guest speaker at numerous international conferences.
Prof. Dr. Arne Koschel is a lecturer at the University of Applied Sciences and Arts, Hannover, Germany specializing in distributed (information) systems. He has many years of industry experience planning and developing distributed information systems. His lectures include a broad range of IT topics, including cloud computing, integration, middleware, microservices, and SOA. He is an active member of the iSAQB board.
Prof. Dr. Andreas Rausch is head of the software systems department at the Technical University of Clausthal. He is a consultant and lead software architect for a number of large-scale distributed software systems.
Mahbouba Gharbi Arne Koschel Andreas Rausch
Software Architecture Fundamentals
A Study Guide for the Certified Professional for Software Architecture
Foundation Level
iSAQB compliant
Content proofreading by Andrew Le Gear
Arne Koschel
Andreas Rausch
Editor: Michael Barabas / Christa Preisendanz
Content proofreading: Andrew Le Gear
Copyeditor: Jeremy Cloot
Layout and type: Josef Hegele
Cover design: Helmut Kraus, www.exclam.de
Library of Congress Control Number: 2019931449
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet ber http://dnb.d-nb.de abrufbar.
978-3-86490-625-1
Copyright 2019 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Title of the German original: Basiswissen fr Softwarearchitekten.
Aus- und Weiterbildung nach iSAQB-Standard zum Certified Professional for Software Architecture Foundation Level.
3., berarb. u. akt. Auflage 2018
ISBN 978-3-86490-499-8
Many of the designations in this book used by manufacturers and sellers to distinguish their products are claimed as trademarks of their respective companies. Where those designations appear in this book, and dpunkt.verlag was aware of a trademark claim, the designations have been printed in caps or initial caps. They are used in editorial fashion only and for the benefit of such companies, they are not intended to convey endorsement or other affiliation with this book. No part of the material protected by this copyright notice may be reproduced or utilized in any form, electronic or mechanical, including photocopying, recording, or by any information storage and retrieval system, without written permission of the copyright owner. While reasonable care has been exercised in the preparation of this book, the publisher and author assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein.
This book is printed on acid-free paper.
Printed in the U.S.A
Preface
In addition to motivated teams and great management, software architecture is an important factor for the success of any software project. In the context of systematic design and construction, solid software architecture ensures the fulfilment of quality requirements such as extensibility, flexibility, performance, and time-to-market.
Software architects reconcile customer requirements with the available technical options and the prevailing conditions and constraints. They ensure the creation of appropriate structures and smooth interaction of all system components. As team players, they work closely with software developers and other parties involved in the project.
The International Software Architecture Qualification Board (iSAQB) is an independent international body that defines standards for training, examination, and certification of software architects. Software Architecture Fundamentals is based on the curriculum for the iSAQBs Certified Professional for Software Architecture Foundation Level (CPSA-F) course.
The text is based on the revised version 4.1.1 of the curriculum, which has been expanded to cover new aspects of domain-driven design (DDD). DDD enables software architects to design large-scale functional structures and gain a better understanding of the overall interaction of functional components. The current curriculum also covers numerous new architectural patterns such as microservices.
CPSA-F certification ensures that software architects have sound levels of knowledge and expertise for the design of small and medium-sized systems. Based on a detailed requirements specification, they can then design and document appropriate software architectures. CPSA-F graduates have the requisite skills for making problem-specific design decisions that build on their previous practical experience.
This self-study book enables you to prepare for the certification examination. It assumes that you have practical experience designing and developing software systems, command of a high-level programming language, and an understanding of the basics of UML. Because lectures alone cannot replace interaction with other software architects, we also recommend participation at iSAQB attendance-based events.
Benefit from our many years of experience in software and systems engineering, and in the design and construction of medium- and large-scale IT systems.
We hope you enjoy reading our book and wish you every success with your CPSA-F training and certification!
Mahbouba Gharbi, Arne Koschel, Andreas Rausch
December 2018
Content
Table of Contents
1Introduction
Nowadays, software is everywhere, from commercial enterprises to virtually all areas of our day-to-day professional, public, and private lives. Air travel, phone calls, bank transfers, or driving would all be next to impossible without software. Software-controlled components can be found in every home and in many everyday devices, from washing machines to cars .
The value and commercial success of companies and products is increasingly determined by software and software quality (see ). Software engineers are thus faced with the challenge of implementing increasingly complex requirements at ever-increasing speed using ever-decreasing budgets while maintaining a high level of software quality.
Continual increase in the size and complexity of software systems has made them some of the most complex human-made systems ever created. The best example is the Internet, which is a truly global software-based system. Internet is now available beyond the bounds of our home planet on the International Space Station (ISS).