Rogers characterises engineering as: ... the practice of organising the design and construction of any artifice which transforms the physical world around us to meet some recognised need. When the artifice is software, a key challenge is learn how to recon- cile the formal world of the computing machine and its software with the non-formal physical world around it. In this paper, we describe an approach that brings both non-formal and formal aspects of software en- gineering together within a single theoretical framework, which sees soft- ware engineering practice as recordable and re-playable design theoretic transformations of software problems. The framework permits the iden- tification and clarification of software requirements, the representation of the problem world into which the software solution will be delivered, and the construction of adequacy arguments for stake-holders. Designs are recordable and re-playable through our adaptation of tactics, a (now standard) form of programming language used in transformational proof theoretic presentations. This brings to our system many other benefits of such approaches, including the ability to abstract from a captured design, and to combine programmatically captured designs. This paper provides an example-driven presentation of our framework.