Every systematic development of any subject ought to begin with a definition, so that everyone may understand what the discussion is about.
Marcus Tullius Cicero (196BC ‒ 16BC), De Officiis, Book 1, Moral Goodness (h/t to Glen Alleman, October 8, 2013 Quote of the Day)
One of the joys of the English language is the overloading of words with multiple meanings. While it’s not hard to start an argument over technical issues under normal circumstances, having multiple definitions to conflate makes it that much easier. Take, for example, the word “architecture”. While different dictionaries give slightly different definitions (e.g. Merriam-Webster Dictionary.com and Wiktionary), the common set of definitions boil down to:
- the practice of architecture (i.e. the discipline of architectural design)
- an architectural style (e.g. layered, RESTful, etc.)
- the result of architectural work (i.e. the architecture of a thing – the “decisions of consequence” that define the structure and behavior of a system as well as constraining its future evolution)
While there is a relationship between these concepts, a person practicing architecture might create an architectural design using one or more architectural styles, there is enough differentiation to cause trouble if we don’t clarify our terms. Far from being an academic exercise, paying attention to semantics can actually save time and frustration when there is ambiguity present.
Gene, if you were going to create a single definition for architecture what would if be?
LikeLike
That’s a tough one. The same problem we have with “architecture” we see also with “law” and “medicine” – referring to the product and practice using the same term.
That being said, if I were to define the product, I’d go with something like this: The essential structure that enables and constrains a system. The form that accomplishes the desired functions within an acceptable quality of service without unduly limiting future change.
LikeLike
Great!
LikeLike
When it comes to the front end of Web UI, it’s the principled organization of files and folders such that simplicity and ease of cognitive load are effected. For instance, a naming convention of Noun-Modifier-Verb for files and abstractions in those files is an architectural pattern. The idea that folders should be named in accordance with Modules or Functional Groups is an architectural idea. The idea that frameworks’ API should be group in accordance with Higher Level Functional Groups (or Modules) is an architectural idea. So, for instance, REST-ful Business Objects have certain low level verbs (GET, PUT, etc.), and this determines what code may look like.
Implementation of an architecture is another question since the architecture of source code may not look like what the user sees. So one might ask how the URL/SEO architecture mirrors or how isomorphic it is with the source code, and would this be a superificial structural similarity put together by hacks, or is the system actually so-and-so elegant?
LikeLike
I like this definition that includes thanks to “acceptable quality of services” all the non functional requirements (a big part, the biggest one ? of the architectural design is about quality attributes, the *lities : usability, scalability, …).
This definition is more specific about constraints in Christopher Alexander definition ( quality of services and futures changes), Notes on the Synthesis of Form, Harvard University Press, 1964
“Architecture : Art of creating and organizing forms for a function in the presence of constraints.”
LikeLike
In re-reading my definition above, I realize that I made a mistake – I should have stopped after the first sentence.
The second sentence makes this more the goal of architectural design. It becomes the general definition of a “good” design rather than just defining the architecture of the thing. The reason I say this is that it’s possible (although certainly not advisable) to have an architecture that fails to provide acceptable quality of service and/or makes future change difficult. That’s still an architecture. A poor one, but one nonetheless.
LikeLike
I totally share.
LikeLike
Reblogged this on healthcare software solutions lava kafle kathmandu nepal lava prasad kafle lava kafle on google+ <a href="https://plus.google.com/102726194262702292606" rel="publisher">Google+</a>.
LikeLike