>
> On 6/7/07, John D. Heintz jheintz@... wrote:
> >
> > Hi Nick,
> >
> > I don't know if this is what Roy ment, but this is how I internalized it.
> >
> > Generality is prefering generic/shared/common programming models instead of specific/unique/custom ones.
>
> +1, well said. That's how I always interpreted it.
>
> Mark.
>
+1 as well. But let me clarify my original question. I am not seeking to understand what the "principle of generality" as Roy uses it might mean; I have my own interpretation of what I think it means and it is very much in line with these excellent comments. Rather, I am seeking to find out where Roy got the principle in the first place.
He uses the "principle of generality" and "generality principle" three times in the thesis:
1.4
Hence, the architectural constraint is “uniform component interface,” motivated by
the generality principle, in order to obtain two desirable qualities that will become the
architectural properties of reusable and configurable components when that style is
instantiated within an architecture.
2.3.3
Applying the principle of generality to architectural elements also improves
simplicity, since it decreases variation within an architecture. Generality of connectors
leads to middleware [22].
5.1.5
By applying the software engineering principle of generality to the component interface, the
overall system architecture is simplified and the visibility of interactions is improved.
His use of the term (especially the 3rd use) seems to suggest he is merely citing an existing principle that he learned about from some source. What I am looking for is the source of this cite. Sorry I wasn't clearer originally.
Stop the Press! In trying to provide more context for this question, I think I answered it myself. In looking at how Roy used the word "principle" in the thesis, I found the following quote (thank god for Acrobat's search function, which acts as a dynamic concordance):
1.4
Properties are induced by the set of constraints within an architecture. Constraints are
often motivated by the application of a software engineering principle [58] to an aspect of
the architectural elements. For example, the uniform pipe-and-filter style obtains the
qualities of reusability of components and configurability of the application by applying
generality to its component interfaces " constraining the components to a single interface
type. Hence, the architectural constraint is “uniform component interface,” motivated by
the generality principle, in order to obtain two desirable qualities that will become the
architectural properties of reusable and configurable components when that style is
instantiated within an architecture.
[58] is a cite to:
C. Ghezzi, M. Jazayeri, and D. Mandrioli. Fundamentals of Software Engineering .
Prentice-Hall, 1991.
I googled the title and hit paydirt: slides for teaching with the book . And indeed, Chapter 3 deals with the following key "Software Engineering Principles":
- Rigor and formality
- Separation of concerns
- Modularity
- Abstraction
- Anticipation of change
- Generality
- Incrementality
In case you are interested (and don't want to download the ppt) here is the slide on Generality:
I'd only add one other benefit regarding generality (or extend the reuse benefit): serendipity. For an upcoming presentation on WOA I created the following slide:
SOA: Specific-Operation Architecture vs. Serendipity-Oriented Architecture
The Internet and the Web are paradigms of Serendipity-Oriented Architectures. Why? Largely because of their simple generality. It is my belief that generality is one of the major enablers of serendipity. So here I immodestly offer Gall's General Principle of Serendipity: "Just as generality of knowledge is the key to serendipitous discovery, generality of purpose is the key to serendipitous (re)use."
-- Nick
- While solving a problem, try to discover if it is an instance of a more general problem whose solution can be reused in other cases
- Carefully balance generality against performance and cost
- Sometimes a general problem is easier to solve than a special case
I'd only add one other benefit regarding generality (or extend the reuse benefit): serendipity. For an upcoming presentation on WOA I created the following slide:
SOA: Specific-Operation Architecture vs. Serendipity-Oriented Architecture
- Unexpected reuse is the value of the web
- Tim Berners-Lee
- Two of the goals of REST: independent evolvability and design-for-serendipity
- Roy T. Fielding
- Engineer for serendipity
- Roy T. Fielding
The Internet and the Web are paradigms of Serendipity-Oriented Architectures. Why? Largely because of their simple generality. It is my belief that generality is one of the major enablers of serendipity. So here I immodestly offer Gall's General Principle of Serendipity: "Just as generality of knowledge is the key to serendipitous discovery, generality of purpose is the key to serendipitous (re)use."
-- Nick