Frank J. Furrer
Future-Proof Software-Systems
A Sustainable Evolution Strategy
Frank J. Furrer
Computer Science Faculty, Technical University of Dresden, Dresden, Germany
ISBN 978-3-658-19937-1 e-ISBN 978-3-658-19938-8
https://doi.org/10.1007/978-3-658-19938-8
Library of Congress Control Number: 2019936175
Springer Fachmedien Wiesbaden GmbH, part of Springer Nature 2019
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed.
The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use.
The publisher, the authors and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication. Neither the publisher nor the authors or the editors give a warranty, expressed or implied, with respect to the material contained herein or for any errors or omissions that may have been made. The publisher remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
This Springer Vieweg imprint is published by the registered company Springer Fachmedien Wiesbaden GmbH part of Springer Nature.
The registered company address is: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany
Foreword 1
I believe that the success of agile software development lies in software refactoring with continuous regression testing. When a refactoring takes place, the testing process guarantees that the modifications preserve the functions of the program. Preservation means here to retain the invariant of the semantics of the program, i.e., to keep something very important, the brain of the program, while to change something not so important, the morphology of the program. The developer, so to say, stays on a safe, large enough ice shelf in the sea of cold. That makes up for the success of the method.
However, when software-systems get large and consist of many programs and models, these cannot be refactored together, and regression testing no longer does the job. Maintaining and extending large software-systems destroys another important inside value of a program: its architecture . Then other methods of staying on the safe ice shelf should take effect, methods that preserve the extensibility, the maintainability, the quality of the architecture, and thereby, its business value. However, beyond refactoring, few methods exist for architectural evolution, so that developers often lose their battle against disorder and chaos. It seems that entropy is the winnerand that is the reason why most of our software-systems become legacy after a number of years: They lose their heart, the flexible architecture.
Into this gap, Frank J. Furrer positions his book Future-Proof Software-Systems. The method of Managed Evolution fights entropy, technical debt, and architecture erosion. At any point in time, the Managed Evolution process makes sure that the principles of a clean, flexible architecture are not violated. This is ensured by rigid process rules enforcing well-defined architectural principles, as well as the continuous employment of metrics to measure the flexibility of the architecture so that the software can stay in a quality corridor. It is well known that refactoring a (small) program comes with some effort, because the refactoring does not introduce new functions, but only restructures the program for better quality. For large software, Managed Evolution has the same effect: First, it costs, but overall, it pays off, because the effort of a disciplined evolution retains the business value of the software-system. Therefore, it could be said that Managed Evolution is a form of agile development in the large. Guess, why it will be successful: For huge software-systems, it shows how to stay on the safe ice shelf.
Frank J. Furrer has been teaching Future-Proof Software-Systems here at Technische Universitt Dresden now for more than 5 years, reaching out to many enthusiastic students in seminars and lectures. He has been able to share his longstanding experience in software-systems and software research with these students, and I wish, this experience would now also be shared with you. So, make yourself knowledgeable how software-systems can be kept in the Managed Evolution corridor. Learn how to stay on the safe, large enough ice shelf.
Prof. Dr. Uwe Amann
Institut fr Software- und Multimediatechnik
Fakultt Informatik
Technische Universitat Dresden
D-01062 Dresden/Germany
October 2018
Foreword 2
This book is about software architecture . Software architecture prescribes rules for the organization of the parts of a large software-system and establishes principles that govern the interactions among those parts. The book develops the architecture principles that must be followed in order to arrive at a future-proof software-system. A future-proof software-system is one that is not only of value at the time of its inception but one that can provide a useful service in the future of a changing world. Already the Greek philosopher Heraclitus observed more than 2000 years ago that Pantha rheiAll entities move and nothing remains still . In todays world of accelerating technological and societal change, system requirements are in continuous flux, and only those software-systems will survive that are capable of evolving and integrating the necessary changes without destroying the underlying system architecture.
It is the purpose of a software product to provide an effective service to a person or an organization that use this software in their daily work. This service-oriented view of software includes a deep understanding of the needs of the application environment and is open to alterations that are required to maintain the utility of the software-system in a dynamic world, where the evolving business environment requires the steady modification of existing functions and the addition of new software functions. This service-oriented view is thus much broader than a strictly product-oriented view of software.
The author of this book, Frank J. Furrer, has worked with a world-renown banking organization and has acquired many years of first-hand experience of the impact of a changing business environment on the requirements and operation of large software-systems that are central to the success of an international bank. Out of this real-life experience, he distilled important software architecture principles that should be followed in order to arrive at a future-proof software-system. The comprehensive discussion of these principles forms the core of this interesting book.
The book is an enjoyable read. It is a wonderful experience to absorb a text where the practical wisdom acquired in the life of an outstanding system architect is presented in a succinct form and supported by a number of real-life examples. I am sure that many readers of this bookbeing young students or experienced practitioners in the field of software engineeringwill greatly benefit from the insights gained by working through the text.