lessons Learned

Assumptions

Many Web-based systems that include a significant DBMS component include a substantial amount of function that can be derived from basic CRUDS methods.

Lessons

  1. These systems are often highly layered.
     
  2. Many of these systems include threads that are orthogonal to the layers and correspond to basic objects in the application domain (e.g., customer, product, order).
     
  3. The threads are often associated with CRUDS methods at each layer interface.
     
  4. Many applications can be described as a set of Data Objects, including their relations to one another, and a layered implementation that satisfies their requirements.
     
  5. The objects passed between layers are often DataBeans that correspond to data objects (e.g., UserBean, ProductBean, OrderBean).
     
  6. Layer objects can be generalized as abstract classes that include CRUDS methods generalized for different types of data and a set of specialized methods that support specific databean objects.
     
  7. Implementations of layered objects that extend the abstract classes can be generated from templates using well-defined descriptions of the data objects.
     
  8. Well-defined descriptions of layered designs, sufficient to meet application requirements, can be used to drive the generation process.
     
  9. The two descriptions can be used to generate an application embedded in an IDE and including most configuration and relationship files.
     
  10. Doing so provides a test of the adequacy of the two descriptions as a representation of system design.
     
  11. A trade-off exists between the completeness of the generated application and the amount of time and effort required to program the support system.