A Declarative Approach to Systems Development