This document discusses pragmatic model driven development using smart use cases and domain driven design. It describes modeling smart use cases at the user goal and sub-function levels and decorating them with stereotypes. The smart use cases are then mapped to a software architecture with separate layers for presentation, process, domain, and data. Domain driven design principles are discussed, including defining entities, value objects, and smart references as properties of classes. Text templating engines are described for generating code from models, with Tobago MDA given as an example tool.