Automatically generating a program from its specification eliminates a large source of errors that is often unavoidable in a manual approach. This work investigates the theory behind Booster a specification language and automatic code generator, developed by Dr. Ib Sørenson and his group at Oxford University's Computing Laboratory. The work focuses on three contributions: semantics, model completion and code generation. The semantics of a Booster model is a single abstract data type (ADT) where the invariants and the methods of all the model classes are promoted to the ADT. This work argues that this semantics is a better model of object oriented systems than the traditional view where each class is a separate ADT. The second contribution is the idea of model completion a process that augments the postconditions of methods with additional predicates that follow from the system's invariant and the method's intention. The third contribution describes a simple but effective code generation technique that is based on interpreting postconditions as executable statements and uses weakest preconditions to ensure that the generated code refines its specification.