What is software architecture design?


I. Concept of system architecture


By Edward Crawley, Bruce Cameron, And Daniel Selva co-authored SYSTEM ARCHITECTURE: Strategy and Product Development for Complex Systems. In the book, the word "system" is defined in this way: a system is a set of entities and their relationships, whose functions are greater than the sum of their respective functions.


In other words, the function has to be 1+1>2, which is called emergence. For example, a pile of bricks and wood cannot provide shelter from the wind and rain, but they can form a warm house. The function of the house is greater than the sum of the functions of the pile of materials, so the house is a system.


Now that you know what a system is, let's look at what a system architecture does:


1) Determine the form and function of the system. To put it bluntly, it's analyzing requirements.


2) Determine the entities, forms, and functions of the entities in the system. It's dividing up the system. To accomplish this task, the book proposes some points of attention: identifying potential entities, focusing on important entities, abstracting entities, and defining the boundaries of the system and the environment in which the system resides.


3) Determine the relationship between entities. This includes identifying relationships between internal entities and entities located at boundaries and defining the form and function of those relationships. That is to define internal and external interfaces.


4) Forecast emergence. The prediction of final function realization, performance realization, and also the prediction of system failure, is the emergence of non-expectations.


II. The book also explains the architect's function from another perspective:


1) Disambiguation. That is, the architecture is designed so that you don't have a vague understanding of the requirements.


2) Define the system concept. Put forward the overall solution, define the key terms in the system, define the key measurement criteria.


3) Design decomposition. The key to breaking down the system into entities and the relationships between entities is to control the complexity of the system and not overscale it.


It can be seen that the system architecture is a step between the requirements and the implementation, which not only analyzes the requirements but also proposes a feasible implementation scheme.


The system architecture is suitable for a team composed of one or a few people because many people will lead to insufficient integrity of thinking. If multiple people work together, the best form is also to divide up the hierarchy, with a hierarchy of units to be completed by a single person. This requires a high level of knowledge, synthesis, analysis, and imagination on the part of the architect.


Sources:

http://system-architect.org/files/Preface.pdf

Comments

Popular posts from this blog

Detailed and basic usage of Mockito

differences and benefits between JUnit 4 to JUnit 5: