Design & Implementation Notes
CSE681 - Software Modeling & Analysis

Note #6 - Bottom-up Design

Build solution language

Bottom-up design starts with a set of cohesive solution operations, perhaps the management of some data structure. You decide how to represent the data, and how to interact with it. That usually means operations to create an empty structure, to add data to the structure, to define transformations consistent with the data being managed, and means to extract and delete data.

The class and public interface names should support a mental model of the data and its transformations. For example, that model could be an abstract data type or a table of symbols or relationships.

Conclusions for Bottom-up Design:

Start your solution-side package design by developing a model that has a consistent set of operations and descriptive interface. Then:
  1. Create a project in your Visual Studio (or Eclipse, ...) solution, seperate from the application project. Temporarily set it as the startup project. Set the properties of this project to define the test stub string so your tests will be compiled.
  2. Decide on a representation for any data the package has to manage in terms of structures of existing types. You will find the Standard Template Library very useful here.
  3. Create public methods that implement the model and use them to make transformations or provide access to the data.
  4. For each method make a test in the package's test stub main function, and exercise it. Don't go on until the current function works as expected.
  5. Use class and member names that are consistent with the package model, e.g., M_AryTree, SymbolTable, etc.
  6. As soon as this solution can support it's application-side parent, embed into the Project solution, make that the startup project, and test.