The Evolution of Software Architecture
We all know what “regular” architecture is – a design approach and practical skills used to build beautiful and stable buildings for some to work and live in and others to admire. But what is software architecture, and how did it change over the decades to reach the shapes it has today? Software architecture is the fundamental organisation of a system with all its individual components and how these relate to each other to follow the system’s core logical structure.
From my experience working in a bespoke software development company with experience in developing solutions for industries like healthcare, banking and insurance, I’ve learned that a stable but flexible architecture plays a central role in building software projects. Although modern approaches allow later changes in some architecture patterns, it is crucial to make the right decisions in advance as the responsiveness and adaptability of any new software projects will reflect in its internal infrastructure. At least the type of architecture can be selected prior ot project’s begin after business goals are discussed.
The purpose behind any well-thought-out architecture design is to help maintain the whole software easily, be extensible and relevant in the long run even if new features and structures have to be added afterwards. From a business perspective, good architectures must be scalable and easily understandable for the business owners, which is often up to the communication skills of the developers involved in the project and the developmental framework they use for the process. That is why it is essential for business executives to get to know their technical partners and feel comfortable working with them as this is crucial for the project’s success.
Table of Contents
1. First Period: Initial Development (1960-1990)
The idea that it is important to design a software system with a clear and stable internal structure dates back to the 1970s and the contributions of computer scientists Edsger Dijkstra and David Parnas. In his influential article from 1972, Parnas shared his views and opinion on how the modularization of a system can improve its flexibility and comprehensibility and shorten its development time as a result. Even though he didn’t use the term software architecture directly, his pioneering ideas for later hierarchical structures and system dependencies.
A decade later, early IT-supported information systems found a way to optimise various processes in their companies. Different types of information systems such as Enterprise Resource Planning (ERP) also began to emerge. Initial information systems were based on a client-server architecture, which allows the host server to deliver and manage the majority of computing resources, whereas the client consumes them.
In the 1990s, with the invention of HTML and HTTP, web-based client-server systems emerged and remain popular to this date. At the end of the 1990s, Java found its way into companies. Web-based information systems with Servlet technology and Jakarta Server Pages (JSP) can be built on the basis of the Java 2 Platform Enterprise Edition (J2EE), still utilised in some modern business applications.
2. Second Period: Establishment (1990-2000)
Software architecture officially became an integral part of software engineering in the 1990es when another groundbreaking article with the purpose to “build the foundation of software architecture” came out. In Foundations for the Study of Software Architecture, the authors E.Perry and A. Wolf get down to a formula to describe the essence: software architecture = design elements, form and rationale.
In mid 90es, the Software Engineering Institute (SEI) in Pittsburgh published another vital article devoted to architecture – Software Architecture Analysis Method. The concept addressed issues such as the lack of unified language describing architectures and grasping architecture as a part of the organisational lifecycle, which is essential today. Software properties such as maintainability, reusability, modularity and portability remain core technical responsibilities of software architects.
1996 was the year when Pattern-oriented Software Architecture was published, covering multiple levels of abstraction, mid-to-high-level architectural patterns, e.g. multitier design, chain-of-responsibility behavioural design or facade architecture in object-oriented programming. Many big enterprises began to show interest in implementing a reusable and flexible software architecture according to their business needs.
3. Third Period: (2000- Today)
We can observe the gradual development of software architecture principles and fundamental concepts take place over the decades. The most widely used types relate to the latest trends in the software development industry like cloud computing, low-code or no-code development practices, reactive programming, Internet of Things (IoT) etc.
Service-oriented architecture (SOA) is particularly interesting as they are useful for various mobile app development approaches. For instance, microservice architecture is loosely coupled and collaborating services that communicate with each other efficiently. Some of the huge benefits of such software architecture are the fast and frequent development stages and independent deployment of individual services within the system, resulting in improved testability and maintenance.
Agile methodologies such as Scrum or Kanban currently have a substantial impact on the whole software development process, including architecture style. The contrasting approach is Big Design Up Front (BDUF) that requires clearly defined project goals and scope prior to the development process. BDUF relies on predictions and used to be a relevant approach in the last few decades but now slowly becomes obsolete. However, various Agile practices established themselves as a more attractive and relevant approach in recent years because of their high adaptability to changing business requirements, which is increasingly important in today’s uncertain post-pandemic economy.
Biography Aleksandrina Vasileva
Aleksandrina is a Content Creator at Dreamix, a custom software development company, and is keen on innovative technological solutions with a positive impact on our world. Her teaching background, mixed with interests in psychology, drives her to share knowledge. She is an avid reader and enthusiastic blogger, always looking for the next inspiration.