Closing D-AC002

More on the goals whose resolution I'm championing


"D-AC002 provides modularity of Web Services components, allowing for a
level of granularity sufficient to meet business goals"   I think the intent
here is to promote modularity as a "best practice" in design, and to note
that the best "granularity" of the modules is a challenge we must face.

The balloting on this wording was  9 Y / 4 L / 2 D, so there is rough
consensus that it is a good idea but not a supermajority favoring the
current wording.  The comments generally reflect a desire for a more
clear/concise statement, not actual disagreement.  I don't see any e-mail
discussion.  

Wordsmithing based on the comments, how about "provides for modular web
services architecture components, with each at a level of granularity
appropriate to meet the other goals."  Hmm, this may be a bit "motherhood
and apple pie".  Anyway, it needs some discussion.


"D-AC002.1 - Provide conceptual clarity to allow developers to share ideas
and code".  I think the idea here is that roughly the same as that F.P.
Brooks' famous (at least to us ol' farts) notion of "conceptual integrity"
espoused in the MYTHICAL MAN MONTH:  "The most important attribute of a
successful architecture is Conceptual Integrity. It is crucial that the
system embody a unified theme and not a hodge-podge of, perhaps creative
but, disjoint ideas and features.  
If conceptual integrity is achieved then it automatically follows that: 
The system will appear simple and straightforward 
The system will be easy to use"  
(quote is actually from 
http://www.esat.kuleuven.ac.be/~targetjr/GE_mirror/manuals/LargeCppClass/Myt
hicalManMonth/myth-man-month.html but definitely captures the flavor of
Brooks even if not a quote from him).

The balloting on this  was 8/3/4/0.  The comments seem to be about the
wordsmithing, not objections to the basic idea.  I'd propose for discussion
"provides conceptual integrity, i.e. a unified theme rather than a set of
disjoint ideas, which generally characterizes designs that are easy to
understand and implement."


"D-AC002.1.2 - Ease development, testing, and maintenance by providing a
logical, easy to understand, and consistent organization"

The balloting was 7/3/5/0.  Comments all referred to confusion as to whether
we're talking about the organization of the WSA document or the WSA itself.

I'd propose for discussion "Eases development and maintenance of
implementations of the architecture by defining architectural components
that are logical, consistent, and thus easy to understand."


"D-AC002.1.3 - Allow the creation of generic rules, methods, and procedures
to aid in consistent development practices." 

The balloting on this was 2/4/4/4 with the comments indicating that many
simply don't understand what it means, or how it relates to the goal/  I'd
suggest invoking the "when in doubt, throw it out" rule and moving on.
  

"D-AC002.2 - Support object-oriented design principles by encouraging
encapsulation and information hiding by components of the architecture"

The balloting on this was 7/1/6/1. [Disclaimer -- I was the "out of scope"
vote] Comments reflected a discomfort with adopting OO principles wholesale
for a distributed object application, and others reflected a discomfort with
treating all web services as distributed object applications.  I suspect
that by the time we wordsmith it to make it generally acceptable, it will
end up sounding like "motherhood and apple pie". Others are welcome to offer
alternate wording for discussion.

"D-AC002.2.1 - Encourage reuse by creating well-defined modules that perform
a particular task"

The balloting on this was 7/4/4/0, comments tended to agree with the
sentiment but not the wording.  How about "Encourages reuse of components by
using widely accepted design principles such as having each module focus on
performing one function well, abstraction in the definition of modules,
encapsulation of the details of their implementation, and loosely coupled
relationships among modules."  That gets at some of the themes implied by
the "OO" requirement I'd like to remove but appeals to more universal
principles.

"D-AC002.2.2 - Allow the creation and deployment of configurable objects
that the end user can tailor for different purposes in a standard way."

The balloting was 6/1/6/2.  Comments reflected general confusion as to what
this really means, although there wasn't disagreement on the basic idea.  I
think the goal is adequately covered by my proposed restatement of 2.1.1,
and by the requirement that the WSA be "declarative" implied by D-AR003.2.
I'd suggest removing it.

"D-AC002.3 - Provide for Increased flexibility and maintainability because
single components can be upgraded or replaced independently of others"

The balloting on this was 8/2/6/0.  Comments were all over the map, from
"who let Marketing write a CSF?" to "what does this mean" to a sense that
other requirements cover this.  I'd agree with the latter sentiment and
suggest that we remove it.  Or, basically, suggest that we make sure that
2.2.1's wording cover the well-understood advantages of modular design:
specialization (each module does one thing well), reusability,
abstraction/encapsulation, loose coupling, customization/configurability,
and the ability to replace/upgrade one component at a time.  

Summary of my suggested dispostion:

D-AC002 -     Discuss suggested rewording
D-AC002.1 -   Discuss suggested rewording
D-AC002.1.2 - Discuss suggested rewording
D-AC002.1.3 - Remove

D-AC002.2     Consolodate into a single CSF that refers to the 
D-AC002.2.1   well-understood advantages of modular, loosely
D-AC002.2.2   coupled software architectures for promoting
D-AC002.2.3   reusability

Received on Tuesday, 16 July 2002 15:47:32 UTC