Ada is a programming language used primarily on mission critical defense projects. Working closely with a large defense contractor, Excel Software mapped a streamlined UML notation to the Ada programming language. When Ada is selected in WinA&D, UML class models allow the designer to easily represent Ada packages and various types of relationships like aggregation (parent/child and parent/nested packages), generalization (generic instantiation) and dependency (Withed packages).
The UML modeling experience has been tailored to fit the conventions, standards and practices used by Ada developers. For example, dialogs with drop-down pick lists make it easy to create records, arrays and other data types, share data types between packages and construct subprogram arguments with minimal typing. Visual relationships between classes (Ada packages) in the UML model determine the code structure. The scope of package components like types, variables, constants and subprograms are visually represented on the UML class model and automatically transferred to the Ada implementation during code generation.
WinA&D runs verification checks to ensure model consistency, completeness and design integrity prior to code generation. Ada code generated from the model is an exact implementation of the design including full package specifications and body files, subprogram files with arguments, data types and stubbed implementations. Ada's With dependencies between files are also included in the generated code. The code is linked directly to the design, enabling the developer to click on the class model and view the code in the integrated code browser.
Together, WinA&D and WinTranslator generate rich UML models from Ada 95 code. This includes sophisticated comment handling features that enable an organization to minimize the effort and maximize the consistency of maintaining comment blocks for packages and subprograms. Information is entered once and output to the appropriate code fragments during code generation.
WinTranslator captures information about each Ada package, relationships between packages and package components like records, arrays and other type definitions, variables, constants, named numbers, exceptions and subprograms. Details captured for subprograms include return data types and argument lists. Generic package parameters and actual parameters of generic instantiations are also captured. The public, private and implementation scope of each package component is expressed on the generated UML class models.
WinTranslator automates the reengineer process with a multi-step dialog that guides the developer to enter project information like programming language and code folder locations. It then generates and executes a script of commands that outputs a dictionary entry list to a text file. That file is imported into WinA&D to populate the data dictionary. WinA&D's Class Model From Ada command lets a developer select a collection of classes (Ada packages) from the dictionary, then generates a rich UML class model.