Introduction
Today we live in a software-world: Most of our products and services are based on software. Many enterprises and numerous cyber-physical systems heavily depend on software. Many of these software-systems are very large: They consist of millions of lines of code. While implementing functionality in software is efficient and versatile, also a risk exists: Failures, errors or malfunctions of the software may have grave consequences: Danger to life, property, or the environment, loss of revenue or reputation, etc. Software-systems should therefore be built to be highly trustworthy and dependable. To do so, the systems need a strong foundation: An adequate and sound architecture. Architecture is the key to the creation, evolution, and maintenance of viable, dependable software-systems.
This lecture focusses on the architecture of a specific type of software: Mission-critical, business-essential and long-lived software. Mission-critical means that a malfunction or unavailability of the software inhibits the use of the product or service and may cause damage, accidents or even loss of life. Business-essential implies that the software is key to the success and development of a company or organization. Finally, long-lived signifies that the software-system must be maintained, extended and evolved over many years, possibly decades. This type of software is called future-proof software-system” and is the topic of this lecture.