DH

D.C. Harkes

info

Please Note

9 records found

Doctoral thesis (2019) - Daco Harkes
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. ...
Abstract (2018) - Daco C. Harkes
Our community believes that new domain-specific languages should be as general as possible to increase their impact. However, I argue that we should stop claiming generality for new domain-specific languages. Instead, we should document how domain-specific language based software development is beneficial to the overall software development process. ...

Declarative Incremental User Interface Rendering Through Static Dependency Tracking

Conference paper (2018) - Nick ten Veen, Daco C Harkes, Eelco Visser
Modern web applications are interactive. Reactive programming languages and libraries are the state-of-the-art approach for declaratively specifying these interactive applications. However, programs written with these approaches contain error-prone boilerplate code for efficiency reasons. In this paper we present PixieDust, a declarative user-interface language for browser-based applications. PixieDust uses static dependency analysis to incrementally update a browser-DOM at run- time, without boilerplate code. We demonstrate that applications in PixieDust contain less boilerplate code than state-of-the-art approaches, while achieving on-par performance. ...
Conference paper (2018) - Daco C. Harkes, Elmer van Chastelet, Eelco Visser
To provide empirical evidence to what extent migration of business logic to an incremental computing language (ICL) is useful, we report on a case study on a learning management system. Our contribution is to analyze a real-life project, how migrating business logic to an ICL affects information system validatability, performance, and development effort.
We find that the migrated code has better validatability; it is straightforward to establish that a program ‘does the right thing’. Moreover, the performance is better than the previous hand-written incremental computing solution. The effort spent on modeling business logic is reduced, but integrating that logic in the application and tuning performance takes considerable effort. Thus, the ICL separates the concerns of business logic and performance, but does not reduce effort. ...

Derived Bidirectional Relations and Calculation Strategy Composition

Conference paper (2017) - Daco Harkes, Eelco Visser
Derived values are values calculated from base values. They can be expressed with views in relational databases, or with expressions in incremental or reactive programming. However, relational views do not provide multiplicity bounds, and incremental and reactive programming require significant boilerplate code in order to encode bidirectional derived values. Moreover, the composition of various strategies for calculating derived values is either disallowed, or not checked for producing derived values which will be consistent with the derived values they depend upon. In this paper we present IceDust2, an extension of the declarative data modeling language IceDust with derived bidirectional relations with multiplicity bounds and support for statically checked composition of calculation strategies. Derived bidirectional relations, multiplicity bounds, and calculation strategies all influence runtime behavior of changes to data, leading to hundreds of possible behavior definitions. IceDust2 uses a product-line based code generator to avoid explicitly defining all possible combinations, making it easier to reason about correctness. The type system allows only sound composition of strategies and guarantees multiplicity bounds. Finally, our case studies validate the usability of IceDust2 in applications. ...

Derived Bidirectional Relations and Calculation Strategy Composition (Artifact)

Journal article (2017) - Daco C. Harkes, Eelco Visser

Incremental and eventual computation of derived values in persistent object graphs

Conference paper (2016) - Daco C. Harkes, Danny M. Groenewegen, Eelco Visser
Derived values are values calculated from base values. They can be expressed in object-oriented languages by means of getters calculating the derived value, and in relational or logic databases by means of (materialized) views. However, switching to a different calculation strategy (for example caching) in object-oriented programming requires invasive code changes, and the databases limit expressiveness by disallowing recursive aggregation. In this paper, we present IceDust, a data modeling language for expressing derived attribute values without committing to a calculation strategy. IceDust provides three strategies for calculating derived values in persistent object graphs: Calculate-on-Read, Calculate-on-Write, and Calculate-Eventually. We have developed a path-based abstract interpretation that provides static dependency analysis to generate code for these strategies. Benchmarks show that different strategies perform better in different scenarios. In addition we have conducted a case study that suggests that derived value calculations of systems used in practice can be expressed in IceDust. ...

A first class relationship and first class derivations programming language

Conference paper (2014) - Daco Harkes
Conference paper (2014) - Daco Harkes, Eelco Visser
Object-oriented programming languages support concise navigation of relations represented by references. However, relations are not first-class citizens and bidirectional navigation is not supported. The relational paradigm provides first-class relations, but with bidirectional navigation through verbose queries. We present a systematic analysis of approaches to modeling and navigating relations. By unifying and generalizing the features of these approaches, we developed the design of a data modeling language that features first-class relations, n-ary relations, native multiplicities, bidirectional relations and concise navigation. ...