Declarative Specification of Information System Data Models and Business Logic

Information systems are systems for the collection, organization, storage, and communication of information. Information systems aim to support operations, management and decision-making. In order to do this, these systems filter and process data according to business logic to create new data. Typically these information systems contain large amounts of data and receive frequent updates to this data. Over time requirements for information systems change, from the decision making logic to the number of users interacting with the system. As organizations evolve, so must their information systems. Our reliance on information systems to make decisions and the ever changing requirements poses the following challenges for information system engineering. _Validatability:_ how easy is it for information system developers to establish that a system 'does the right thing'? _Traceability:_ can the origin of decisions made by the system be verified? _Reliability:_ can we trust the system to consistently make decisions and not lose our data? _Performance:_ can the system keep responding promptly to the load of its users? _Availability:_ can we trust that the system performs its functionality all of the time? And finally, _modifiability:_ how easy is it to change the system specification when requirements change? In this dissertation we show the feasibility and usefulness of declarative programming for information systems in light of these challenges. Our research method is _design research_. This iterative method repeats four phases: analysis, design, evaluation, and diffusion. We _analyze_ the challenges of information system engineering, _design_ a new programming language to address these, _evaluate_ our new programming language in practice, and _diffuse_ our knowledge through scholarly articles. This resulted in four new declarative languages: the Relations language, IceDust, IceDust2, and PixieDust. Our contributions can be summarized by the new features of these languages. _Native multiplicities, bidirectional relations, and concise navigation_ improve information system validatability and modifiability over object-oriented and relational approaches. _Derived attribute values_ improve traceability. _Incremental and eventual computing_ based on path analysis and _calculation strategy switching_ improve information system modifiability without sacrificing performance and availability over object-oriented and relational approaches. _Calculation strategy composition_ improves validatability, modifiability, and reliability over reactive programming approaches. And finally, _Bidirectional derived relations_ improve information system validatability over relational approaches. The results of this dissertation can be applied in practice. We applied IceDust2 to the learning management information system WebLab. We found that validatability, traceability, reliability, and modifiability were considerably improved while retaining similar performance and availability. Moreover, the fact that IceDust and PixieDust work in different domains, business logic and user interfaces respectively, suggests that our language features could be applied to more domains.