Object Orientated Analysis (OOA) or Low Level Design (LLD)
The OOD is as close to coding as you can get without actually coding. If you do this document correctly, the code will just fall out naturally. The OOD takes the classes in the OOA a level deeper into the realm of pseudo-code. The OOD defines the datatypes for the attributes. The OOD also defines the algorithms and implementation details of the class methods. However, you are not writing code yet. The OOD should be language-independent. You are merely specifying more exactly what the attributes and methods consist of. Like the OOA, the OOD addresses both the interface and application class hierarchies. Also like the OOA, it keeps the two domains separate and independent of one another.
The OOD goes another step beyond the OOA by identifying the objects, rather than the classes, required to implement the software system. While the user may be able to comprehend the OOA, the OOD goes very deep into software design. The OOD is much more detailed than the OOA and establishes instantiations from the class hierarchy and their relationships to one another, especially associations and cardinality.
The OOD also provides the algorithms for all class/object methods pseudo-code. For a graphical environment, the OOD would specify how the event loop dispatches events to specific objects. For example, a mouse-down in a drawing canvas would activate the pen object to start drawing, while a mouse-up would terminate the line. The OOD often makes use of state and event diagrams that define exactly what happens when the user interacts with the graphical components. It maps the user interactions with graphical components to underlying application subsystems. For the drawing example, the OOD maps the mouse down to the pen object that draws the line. The mouse doesn't draw the line, the pen object does, using the mouse coordinates as a guide.
For non-OO design, the LLD contains essentially the same contents as the OOD, namely, explicit detail of all datatypes and functions. You should provide psuedo-code for all algorithms and flesh out all aspects of the programming effort without yet resorting to actual code. If you were to compare this documentation process to writing a research paper, you could regard the HLD as the chapter and section titles, the LLD as the bullet items for each section, and the code as the text of the paper. Each document just gets more and more detailed.
The OOD and LLD have:
- inner details of class attributes (datatypes) and methods (functions)
- detailed object (as opposed to class) diagrams for OOD
- state diagrams
- event diagrams
- algorithmic descriptions
The OOD and LLD do not have: