[2/2] Teaching Software Architecture Design - Building Intuition (Category Architecture)
Continue. first Whitepaper about learning architecture, here I will talk about the rest of the article
Analysis of hypotheses in relation to requirements should ultimately lead to Developing an engineering approach to design decisions Increase the confidence of engineers that the proposed diazine meets the requirements n Promotes discussions about compromises that are made when choosing a particular design option
To do this, the authors suggest using an approach with refutable argumentation. (defeasible argumentation)In which arguments are accepted at the moment, as long as they sound reasonable and are accepted based on the evidence that there is at the moment. But these arguments can be revised as new data emerges. This approach is very similar to how people design software. They rely on current data and make decisions in this context. When new information emerges, they can see that it contradicts the premises on which the design was based before. This will require a new decision that will change the old This is usually done using the RFC and ADR approaches. RFC is a request for comments or decision-making approach. ADR is an architecture decision record that is added to the list of architectural decisions.
At SADM, students learn to ask critical questions about design hypotheses by practising the formulation of argumentation as well as its refutation. There's something here. 2 argumentation
-
Arguments for analyzing use cases If the proposed hypothesis of decomposition helps to realize the desired behavior for a particular scenario, then students can try to ask critical questions of the type. What exceptions to the steps in the scenario render his contribution to the use case invalid? Are there any side effects of the proposed architecture that negatively affect the steps or prevent them from being carried out? Does the proposed architecture contribute negatively to other system requirements? (use cases or quality attribute requirements)? Are there any restrictions in the execution of the script or its exceptions?
-
Arguments for analyzing quality attributes This part is more complicated because it takes many years of experience to make compelling arguments. And for beginners, arguments often sound in the format of “google/aws/netflix works”, which means it scales, which is a very weak argument. Here, the authors invite students to make references to reference architecture as well as conventional architectural patterns. For example, in the second part of Software Architecture in Practice, there are examples of patterns that are associated with the attributes of quality that they support. The following approach can be used to use patterns Show how the proposed architecture is an example of a documented pattern or reference architecture. Show that the pattern or reference architecture is known to satisfy the specified quality attribute. The critical questions students can ask about these arguments go something like this. Does the proposed architecture include other patterns that negatively affect the quality attribute? Does the proposed template/reference architecture interfere with another system requirement?
The authors allowed students to design solutions from different industries, resulting in a different balance between quality attributes. This allowed students to learn how to analyze requirements, put forward design hypotheses, and make arguments in support of their hypotheses. In general, the goal of developing intuition in making design decisions has been achieved.
P.S. It seems to me that here is a logical and easy process of how to tighten your skills in the design of complex systems:)
#Architecture #Software #Engineering #SelfDevelopment