[comp.lang.ada] What's a CSU in Ada?

kell@mprgate.mpr.ca (Dave Kell) (05/08/91)

I'm sure I read someone mentioning this before in this group, but I
didn't really see the problem at the time.  What Ada language constructs
meet the requirements of a CSU (per DOD-STD-2167A), and which ones are
CSCs?

Any help would be welcome.

dK
===========================================================================
Dave Kell   (604) 293-5753                 kell@mowgli.mpr.ca
MPR Teltech Ltd.                           mprgate.mpr.ca!kell@uunet.uu.net
8999 Nelson Way
Burnaby, BC, CANADA
V5A 4B5
===========================================================================

jls@netcom.COM (Jim Showalter) (05/09/91)

>What Ada language constructs
>meet the requirements of a CSU (per DOD-STD-2167A), and which ones are
>CSCs?

For two years or so, I supported Rational's Design Facility, which
maps Ada units to 2167A design components (and produces the documentation).
During that time, I would guess your question came up in the above or
similar form about twice a week, and the answer I gave was always the
same: "What would you LIKE the mapping to be?". 2167A is intended to
be tailorable, and as such is open to widely varying interpretations:
I've seen different interpretations used from company to company, site
to site within the same company, and even project to project within
the same site. Some customers have opted for a "weak" mapping, where
the 2167A design components and design hierarchy are pure abstractions,
with the resulting code residing only at the leaves, as CSUs (in some
cases even the CSUs were treated as abstractions that served to group
the actual comp units in some logical manner). Other customers have
tried (usually with much less success) a "strong" mapping, in which
there is a standard pre-defined Ada "meaning" to terms like "CSC". Still
other customers, seeking a more Ada- and OO-compatible standard, have
so radically tailored the baseline standard as to be virtually unrec-
ognizable.

For what it's worth, my personal preference would be to
tailor as much as practicable WHEN A CLEAR ADVANTAGE TO DOING SO CAN
BE PROVEN (tailorings that muck around with purely aesthetic issues,
such as the font used on bulleted lists, are a complete waste of time).
The objective is to adopt the standard to support a quality methodology,
not to distort your methodology to force-fit it into the standard (this
key point seems to be lost on a lot of people, which is kind of surprising
since that's essentially what the first paragraph on the first page of
the standard SAYS). I also prefer a weak mapping, since it provides a
great deal more flexibility when allocating requirements, assigning
responsibility, etc.

You and the others involved in your project need to agree on what strategy
to use, and get your customer signed off on it. To a large extent, which
mapping you decide on is of less importance than deciding on SOMETHING:
it is very easy to get bogged down in endless religious arguments about
the alleged merits of one mapping over another.

I recently read a good collection of papers on this very issue entitled
something like "Implementing the DoD-2167A Design Hierarchy in
Ada", or some such (sorry, don't have it with me at home). I think it
was put out by SIGAda or a similar SIG group. Hopefully someone else
on the net can do better at providing the precise reference.

hawksk@lonex.radc.af.mil (Kenneth B. Hawks) (05/10/91)

The article Jim Showalter refers to is SDSAWG's "Implementing the DOD-STD-
2167A Software Organizational Structure in Ada."... Lewis Gray of Ada Pros,
Inc. was the editor and author of some of the articles contained therein.

In addition to the above,  read MIL-STD-483, Appendix XVII, "Criteria for
Selecting Configuration Items".   The first issue is how to break out CSCIs.

CSCs and CSUs _start_  to fall out after that problem is wrestled with.
The bigest issue is to break them out by compilation unit (but if you are
truely designing the software you won't know this early on!), static design
(how you think its going to work/functional relationships), or dynamic design
(control flow/interupt priority/etc.)...  A library CSC/CSU is a big help
for the math routines, sorts, etc., that everybody (i.e. Ada units) uses.

The biggest cost driver, management and engineering headache, however is
the CSCI selection!!! 

Note that DoD-STD-2167A was designed to try to promulagate software engineering
to the masses.  It is not the universal solvent.  Also there are numerous
major problems with its DIDs.  (All documented at the Los Angles DoD/Industry
workshop prior to their publication.) -- No I don't have a copy of them 
anymore....:(

Kenneth B. Hawks                                   |\   /|   "Fox Forever"
Rome Laboratory, Griffiss AFB, NY                   ^o.o^
hawksk@lonex.radc.af.mil                            =(v)=
Disclaimer:  There is no one else here who thinks like I do; therefore....