BDI (Belief, Desire, Intention) is a mature and commonly adopted architecture for Intelligent Agents. However, the current computational model adopted by BDI has a number of problems with concurrency control, recoverability and predictability. This has hindered the construction of agents having robust and predictable behaviour. Indeed the conceptual and practical tools needed for building dependable agent systems, resilient to faults and other unexpected situations, are still at an early stage of research. To this end, we propose to use ideas from established database technology as an adjunct to BDI agent systems. In the long term, we envisage a two layer model for distributed system development. The upper layer, called ``behavioural'' in our scheme, consists of concepts and techniques coming from agent research. The lower layer, called ``control'', is based on more traditional computer technologies and implements the actions decided by the upper layer. The emphasis of the upper behavioural layer is on flexibility of the software development process, in order to be effective in application domains that are difficult to analyse or rapidly changing. By contrast, the main focus of the lower control layer is rigorous and efficient implementation within well-known boundaries. We discuss the development of an agent system having a computational model with well-defined correctness criteria. Instead of hardwiring robustness and fault-tolerant behaviour into agent plans, well defined notions of correctness exist at the semantic level. Verification can then be undertaken at the desired level of abstraction.