From 3cb5809c6589d255a244ebcad5973b1fdaf4d271 Mon Sep 17 00:00:00 2001 From: "Amy J. Ko" Date: Fri, 14 Aug 2020 13:53:09 -0700 Subject: [PATCH] Fixed #59, linking to Google blog post. --- architecture.html | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/architecture.html b/architecture.html index 9fa2e80..3a2e1ff 100644 --- a/architecture.html +++ b/architecture.html @@ -33,7 +33,18 @@

When encapsulation strategies fail, one can end up with what some affectionately call a "ball of mud" architecture or "spaghetti code". Ball of mud architectures have no apparent organization, which makes it difficult to comprehend how parts of its implementation interact. A more precise concept that can help explain this disorder is cross-cutting concerns, which are things like features and functionality that span multiple different components of a system, or even an entire system. There is some evidence that cross-cutting concerns can lead to difficulties in program comprehension and long-term design degradation (Walker et al. 2012), all of which reduce productivity and increase the risk of defects. As long-lived systems get harder to change, they can take on technical debt, which is the degree to which an implementation is out of sync with a team's understanding of what a product is intended to be. Many developers view such debt as emerging from primarily from poor architectural decisions (Ernst et al. 2015). Over time, this debt can further result in organizational challenges (Khadka et al. 2014), making change even more difficult.

-

The preventative solution to this problems is to try to design architecture up front, mitigating the various risks that come from cross-cutting concerns (defects, low modifiability, etc.) (Fairbanks 2010). A popular method in the 1990's was the Unified Modeling Language (UML), which was a series of notations for expressing the architectural design of a system before implementing it. Recent studies show that UML generally not used and generally not universal (Petre 2013). More recent developers have investigated ideas of architectural styles, which are patterns of interactions and information exchange between encapsulated components. Some common architectural styles include:

+

+ The preventative solution to this problems is to try to design architecture up front, mitigating the various risks that come from cross-cutting concerns (defects, low modifiability, etc.) (Fairbanks 2010). + A popular method in the 1990's was the Unified Modeling Language (UML), which was a series of notations for expressing the architectural design of a system before implementing it. + Recent studies show that UML generally not used and generally not universal (Petre 2013). + While these formal representations have generally not been adopted, informal, natural language architectural specifications are still widely used. + For example, Google engineers write design specifications to sort through ambiguities, consider alternatives, and clarify the volume of work required. +

+ +

+ More recent developers have investigated ideas of architectural styles, which are patterns of interactions and information exchange between encapsulated components. + Some common architectural styles include: +