A Design Method for People-Oriented Programming: Automating Design of Declarative Language Mashups on the Raspberry Pi

A Design Method for People-Oriented Programming: Automating Design of Declarative Language Mashups on the Raspberry Pi

Steve Goschnick (Swinburne University of Technology, Australia)
DOI: 10.4018/978-1-5225-5969-6.ch006

Abstract

The miniature Raspberry Pi computer has become of interest to many researchers as a platform for building sociotechnical IoT systems for end-users; however, for the end-user to design and build such apps themselves requires new people-oriented tools and design methods. This chapter describes a people-oriented design method called TANDEM and demonstrates the use of it in detail, by way of a case study—the design of a mashup of services and local data stores—that solves the so-called movie-cinema problem. An implementation of the newly designed movie-cinema app is then built within the DigitalFriend, an end-user programmer IDE. Furthermore, a significant part of the TANDEM design method is then automated within the development tool itself. This automation removes the most skilled task required by TANDEM of the end-user: the automation of the process of data normalization. The automation applies data normalization to the initial model of components and data sources that feed into the mashup. The presentation here relies on some understanding of data normalization, so a simple example is presented. After this demonstrated example of the method and the implementation, the authors discuss the applicability of a model achievable by end-users using TANDEM coupled with the automated normalization process built into the IDE vs. using a top-down model by an experienced information analyst. In conclusion, the TANDEM method combined with the automation as demonstrated does empower an end-user to a significant degree in achieving a workable mashup of distributed services and local data stores and feeds. Such a powerful combination of methods and tools will help the Raspberry Pi to become a significant people-oriented platform, beyond just a platform for teaching novices to code. Furthermore, the TANDEM method does have broader applicability to designing a broad class of logic programs, complementing the use of collected patterns in logic programs.
Chapter Preview
Top

Introduction

With 14 million plus units of the Raspberry Pi having sold (up to mid 2017 and growing: Cellan-Jones, 2017) it is not only a formidable platform for makers and to teach school kids something of coding and computer science, but is also a fully functional Linux machine with desktop level tools together with low level interfaces to all sorts of sensors and physical world devices to be controlled. Single board computers like the Raspberry Pi, have become of interest to many researchers as a platform for building sociotechnical IoT systems (Rizzo et al, 2018), for end users, by end users. It is with this in mind that we have ported the DigitalFriend (Goschnick, 2006) to the Raspberry Pi. Using the DigitalFriend, end-users are able to build mashups of REST and SOAP web services, together with local resources and processes, and information sources including IoT sensors and devices, into newly envisaged and often personalised applications (Figure 1).

Figure 1.

A mashup app of services, data stores and feeds, in the DigitalFriend on a Raspberry Pi

While the tools that end-users may use have increased in number and accessibility over the last decade, the methods and design techniques that are targeted at end-user programmers and novice coders, have not followed suit. This chapter describes an end-user-friendly method called TANDEM (Goschnick et al., 2006) and demonstrates the use of it in detail, by way of the design of a mashup of services that solves the so-called movie-cinema problem. An implementation of the newly designed movie-cinema app is then built within an end-user-friendly development environment called the DigitalFriend. While many publications targeted at end-user programmers making mashups, have promoted imperative programming languages for the task, such as JavaScript, PHP and Python (e.g. Orchard, 2005; Feiler, 2008), the DigitalFriend uses CoLoG, a built-in logic programming language. CoLoG features overlap a substantial subset of the Prolog language (Sterling & Shapiro, 1994; Colmerauer & Roussel, 1993), together with added extra-logical predicates concerned with character-based I/O and the GUI interface in order to interact with an end-user, together with some features of a Constraint Logic Language (Marriott & Stuckey, 1998). The use of logic languages is more often associated with AI (Artificial Intelligence) and agent-oriented (AO) software development environments, then it is with IDEs (Integrated Development Environments) targeting end-user programmers; nonetheless, logic languages could have a big role to play in end-user programming, hopefully foreshadowed by the approach taken here. And although the DigitalFriend is usable as a multi-agent system (MAS), it was envisaged from the outset of its development, as an IDE targeted at end-user programming (Goschnick, 2006), via a methodology grounded upon people-oriented programming (Goschnick, 2009).

Even from the early days of Prolog it was recognized as a language that could be used to bring together code, additively over time, that included both descriptive logic (data structures) and procedural logic (algorithms), as Ceri & Gottlob (1986) noted: “Prolog makes possible an integrated description of data structures (‘facts’) and algorithms (‘rules’), where the algorithms are produced and presented additively, as small ‘granules‘ of the overall system.” Although the authors went on to describe incremental development on one computer, the quote remains descriptive of how we use CoLoG today, to bring together data records (facts) from multiple local and distributed web-based sources, including Relational DBMS, often in real-time, and combine them with rules that have been devised for the purpose of a mashup, in the DigitalFriend IDE. And the technology that comes within and on the low-cost Raspberry Pi computer, including Java and the BlueJ development environment (Kölling, 2018), is more than adequate to run the DigitalFriend efficiently.

Complete Chapter List

Search this Book:
Reset