Sounds like a challenge: a paper is proposing an approach for a formal definition of architecture, design, and implementation, among other things.
The link was offered and commented on a post from Ralph Johnson, that everyone knows for being one of the four in the “Gang of Four”.
Though I have not tried to fully understand the tedious details of the formalism in this paper, the introduction of two particular concepts sounds interesting to me.
First the concept of intensional (Vs. extensional):
Traditionally, intensional specifications define a concept via a list of constraints. For example, mathematical concepts are usually defined intensionally. For instance, “A prime number is a number that divides only by itself and by the number 1”. In contrast, the North Atlantic Treaty defines the set of NATO members extensionally, namely, by itemizing its members: United States, United Kingdom, Norway, and so forth. […] We say that a specification is intensional if and only if it has an unbounded number of instances. […] Conversely, all other expressions are extensional.
I love this concept! In my former projects I have been using the pattern Specification (Eric Evans, Martin Fowler) a lot in the domain model, for example to represent asset classes using the Predicate interface from Apache Commons Collection rather than through explicit lists of assets. Now I can name this concept: it is called intensional.
Then the concept of local (Vs. non-local or global):
Locality criterion: What distinguishes architectural from design specifications is that architectural specifications must be met by every extension of the program.
Then a discussion that is not totally new but still food for thoughts:
“Architecture is the decisions that you wish you could get right early in a project.” Why do people feel the need to get some things right early in the project? The answer, of course, is because they perceive those things as hard to change. So you might end up defining architecture as “things that people perceive as hard to change.”
And again, not sure the difference between design and architecture:
“In a sense, I define architecture as a word we use when we want to talk about design but want to puff it up to make it sound important. developers say so.”
I already heard that as well…