Abstract:What is Software Architecture? The rules, paradigmen, pattern that help to construct, build and test a serious piece of software. It is the practical experience boiled down to abstract level. Software Architecture builds on System Engineering and the scientific method as established by Galileo Galilei: Measure what you can and make measureable what you can not. The experiment (test) is more important then the deduction. Pieces of information about software architecture are all over the internet. This paper uses citation as much as possible. The aim is to bring together an overview, not to rephrase the wording.
What problem does this paper attempt to address?
The problem that this paper attempts to solve is the integration and understanding of the core concepts and methodologies in software architecture design. By citing a large amount of existing literature, the author aims to integrate the information about software architecture scattered on the Internet, rather than simply restating the content of these materials. Specifically, the paper explores the following aspects:
1. **Definition of software architecture**: At the beginning of the paper, it discusses what software architecture is, describing it as the rules, paradigms, and patterns for building and testing complex software systems. It emphasizes that software architecture is an abstract concept refined from practical experience.
2. **Software development models**:
- **Spiral model**: The paper introduces the spiral model, which is a development model that combines design and phased prototyping, aiming to combine the advantages of top - down and bottom - up concepts.
- **Hierarchical decomposition**: The paper discusses the method of hierarchical decomposition, which is a technique for dividing large - scale systems into multiple manageable subsystems, helping to "objectify" system design.
- **Bottom - up development**: The paper also explores bottom - up development (such as agile development or extreme programming). This method is the opposite of hierarchical decomposition and emphasizes the importance of iteration and early user feedback.
3. **Design patterns**:
- **MVC pattern**: The paper details the MVC (Model - View - Controller) pattern, which is a design pattern that divides an application into three parts: model, view, and controller, helping to separate concerns and improve the maintainability and extensibility of code.
- **Callback mechanism**: The paper discusses the importance of the callback mechanism in GUI and real - time programming and explains how to handle asynchronous events by registering callback functions.
4. **System behavior description tools**:
- **Message sequence chart**: The paper introduces the message sequence chart (MSC), which is a graphical and text language used to describe and standardize the interactions between system components and their environment.
- **State transition diagram**: The paper also introduces the state transition diagram (STD), which is a diagram used to show the state space in a given context, the events that cause state transitions, and the resulting actions.
5. **Steps of system architecture**: Finally, the paper summarizes the steps of system architecture design, including using the spiral model for overall design, conducting detailed design through hierarchical decomposition and bottom - up development, and using the MVC pattern, message sequence chart, and state transition diagram to implement specific system functions.
In general, the goal of this paper is to provide a comprehensive perspective to help readers understand the core concepts and methods of software architecture design and provide guidance for actual software development.