At 04:02 PM 10/13/1999 -0500, W. Wesley Groleau x4923 wrote:
>So can I summarize your view as
>- Ada specs is a better design approach than UML for Ada code.
>- UML is a good preliminary design approach, with Ada specs for the detailed design
>- something else.....
The second choice comes close, but better would be: There is a huge advantage to putting a lot of effort into detailed design when programming in
Ada. Using Ada specifications as a compilable PDL for Ada works very well, and
I am not sure that using any other tool can be worth the additional education and or training effort. If you are using UML for preliminary design, the additional effort to use it as a detailed design tool is currently minimal, but it currently lacks expressive power compared to Ada for this purpose. Such extensions to UML however may be very worthwhile when using other programming languages.
I was thinking about this on the way in today. I call the correct detailed design paradigm for Ada "left-to-right" because it makes much more sense to lay out the dependency graphs that way. Of course, you also need at least five colors of arrows to track the various dependencies: compilation, elaboration, call, tasking (really which unit is the master of a unit or object?), and generic instances (different in that they look like they are a compilation dependence on the spec, but are also an elaboration dependence on the body. I also like to use a sixth color for relating spec to body when they are different compilation units. Fortunately, obeying good software engineering principles means that you don't have to look at that graph often, usually only when contemplating major changes in the design. I think that it has been over a year since I had to look at one of these in full gory detail. (Which is the advantage with compiled Ada. If it compiles, there is nothing you need to fix. The only reason to look at the graph, as mentioned above, is to see how much change a design change will cause.)
All these dependencies are important in other languages as well, but they are usually only visible when they result in bugs discovered during integration.
Robert I. Eachus
function Message (Text: in Clever_Ideas) return Better_Ideas is...