96 research outputs found

    Stateful SOA-conformant Services as Building Blocks for Interactive Software Systems

    Get PDF
    Services implemented through information and communication technology need to provide value for customers, with whom they usually have non-trivial interaction. However, user interface and (Web) service specifications are often disconnected. The most widely used Web services are stateless, hence only trivial user interaction with one-step input and output can be embedded in such a service. Remembering the state is a prerequisite for implementing non-trivial user interaction with a service. We present new stateful SOA-conformant services as building blocks for interactive software systems. This new kind of service has a unified high-level protocol both for (non-trivial) user interaction with a machine and for machine-machine communication. Services with the same protocol can substitute each other (also dynamically at runtime), whether they are machine or user services. Using such services as building blocks, interactive software systems can be composed, also recursively. As a matter of fact, from such service specifications (graphical) user interfaces for non-trivial interaction can be automatically generated

    The Essence of Form Abstraction

    Get PDF
    grant number EP/D046769/1Abstraction is the cornerstone of high-level programming; HTML forms are the principal medium of web interaction. However, most web programming environments do not support abstraction of form components, leading to a lack of compositionality. Using a semantics based on idioms, we show how to support compositional form construction and give a convenient syntax. Supported by EPSRC grant number EP/D046769/1

    Improving interoperability in distributed multi-tier software stacks

    Get PDF
    Distributed multi-tier software stacks organise and deploy software components as a hierarchy of interacting tiers. The components are typically heterogeneous, i.e. each component may be written in a different language and may interoperate using a variety of protocols. Tiered software is modular but leads to a range of interoperability challenges including the following. (1) Interoperating components in multiple languages and paradigms increases developer cognitive load since they must simultaneously reason in multiple languages and paradigms. (2) There must be correct interoperation of components, e.g. adherence to the API or communication protocols between components. (3) Interoperation between different components can lead to diverse modes of failure as each component can fail in unique ways. Many of these challenges are the result of contributing factors like tight coupling or polyglot programmming. This thesis investigates techniques to improve heterogeneous interoperability in distributed multi-tier software stacks. Some common approaches include microservices and tierless languages. Microservices are perceived to offer better reliability than components in multi-tier software stacks through the loose coupling of services. The reliability of microservices is investigated by combining the established properties of dependence and state with reliability. This defines a new three-dimensional space: the Microservices Dependency State Reliability (MDSR) classification with six classes. The feasibility of statically identifying MDSR classes is demonstrated with a prototype analyser that identifies all six classes in Flask microservices web applications. The reliability implications of the different MDSR classes are evaluated by running three case study applications (Hipster-Shop, JPyL & WordPress) against a fault injector. Key results are as follows. (1) All applications fail catastrophically if a critical microservice fails. (2) Applications survive the failure of individual minor microservice(s). (3) The failure of any chain of microservices in JPyL & Hipster is catastrophic. (4) Individual microservices do not necessarily have minor reliability implications. In a tierless language, the compiler generates the code for each component and ensures their correct interoperation. They are mainly used to implement web stacks. However, their use in implementing IoT stacks is less common. This investigation compares interoperation in tiered and tierless IoT stacks through the systematic evaluation of four implementations of the prototype UoG smart campus IoT system: two tierless and two Python-based tiered. Key results of the study are as follows. (1) Tierless languages have the potential to significantly reduce the development effort for IoT systems, requiring 70% less code than the tiered implementations. (2) Tierless languages have the potential to significantly improve the reliability of IoT systems. (3) The first comparison of a tierless codebase for resource-rich sensor nodes and one for resourceconstrained sensor nodes shows that they have very similar functional structure and code sizes - within 7%. Tier elimination is a technique that removes a tier/component by integrating two tiers. Specifically, this thesis investigates the implications of eliminating the Apache web server in a 4-tier web stack: Jupyter Notebook, Apache, Python, Linux (JAPyL) and replacing it with PHP libraries in the frontend webpage to get the 3-tier (JPL). The study reveals the following. (1) The JPL 3-tier web stack requires that the developer uses fewer programming languages and paradigms than JAPyL, i.e two compared with four languages and two compared with three paradigms. (2) JPL requires 42% less code than JAPyL. (3) In JPL, some of the functionalities can be automated due to the decreased abstraction levels at the upper layers of the stack. (4) However, the latency in JPL is two to three times greater than that of JAPyL. So while tier elimination reduces developer effort and semantic friction the tradeoffs are high performance overhead & resource consumption and increasing code complexity

    A proposal of Android Programming Learning Assistant System with implementation of basic application learning

    Get PDF
    Purpose With rapid increase of Android devices and application systems, there is a strong demand for Android application programmers. A lot of schools are offering Android programming courses to meet this demand. However, Android programming can be different from the conventional one because it needs interactive functions through interfaces with users, which makes the study more difficult. This paper aims to propose an Android Programming Learning Assistance System, namely, APLAS, to assist the Java-based Android programming study and education. Design/methodology/approach By adopting the test-driven development method, APLAS is designed to achieve independent learning without the presence of teachers. Using JUnit and Robolectric, the answers from the students are automatically marked in APLAS. To cover extensive materials in Android programming, APLAS offers four stages where each stage involves several topics. Findings To evaluate the effectiveness of APLAS, we implemented the Unit Converter assignment that covers the first two topics, namely, Basic user interface in the first stage and basic activity in the second stage. Through solving the assignment, it is expected to learn basic application development. Forty novice students of an IT department in Indonesia were asked to solve both topics separately. Originality/value The results show that APLAS is useful and helpful for the self-study of Android programming, as they could complete codes with good execution performances

    An idiom’s guide to formlets

    Get PDF
    Formlets in Links decouple user interface from data, a vital form of abstraction supported by very few web frameworks. Formlets are best defined in terms of idioms, not monads or arrows as one might suppose from the existing literature. 1

    Could tierless languages reduce IoT development grief?

    Get PDF
    Internet of Things (IoT) software is notoriously complex, conventionally comprising multiple tiers. Traditionally an IoT developer must use multiple programming languages and ensure that the components interoperate correctly. A novel alternative is to use a single tierless language with a compiler that generates the code for each component and ensures their correct interoperation. We report a systematic comparative evaluation of two tierless language technologies for IoT stacks: one for resource-rich sensor nodes (Clean with iTask), and one for resource-constrained sensor nodes (Clean with iTask and mTask). The evaluation is based on four implementations of a typical smart campus application: two tierless and two Python-based tiered. (1) We show that tierless languages have the potential to significantly reduce the development effort for IoT systems, requiring 70% less code than the tiered implementations. Careful analysis attributes this code reduction to reduced interoperation (e.g. two embedded domain-specific languages (DSLs) and one paradigm versus seven languages and two paradigms), automatically generated distributed communication, and powerful IoT programming abstractions. (2) We show that tierless languages have the potential to significantly improve the reliability of IoT systems, describing how Clean iTask/mTask maintains type safety, provides higher order failure management, and simplifies maintainability. (3) We report the first comparison of a tierless IoT codebase for resource-rich sensor nodes with one for resource-constrained sensor nodes. The comparison shows that they have similar code size (within 7%), and functional structure. (4) We present the first comparison of two tierless IoT languages, one for resource-rich sensor nodes, and the other for resource-constrained sensor nodes

    Context-aware platform for mobile data management

    Get PDF
    Interaction design is a major issue for mobile information systems in terms of not only the choice of input/output channels and presentation of information, but also the application of context-awareness. To support experimentation with these factors, we have developed platforms to support the rapid prototyping of multi-channel, multi-modal, context-aware applications. The Java-based platform presented here is based on an integration of a cross-media link server and an object-oriented framework for advanced content publishing, along with a Client Controller and Context Engine. We also describe how this platform was used to develop a mobile tourist information system for an international arts festival where interaction was based on a combination of interactive paper and speech outpu

    Dealing with imprecise information in group multicriteria decisions: a methodology and a GDSS architecture

    Get PDF
    This paper outlines a distributed GDSS suitable to be used over the Internet, based on the VIP Analysis methodology and software. VIP Analysis incorporates complementary approaches to deal with the aggregation of multicriteria performances by means of an additive value function under imprecise information. This proposed GDSS intends to support a decision panel forming a democratic decision unit, whose members wish to reach a final decision in a choice problem, based on consensus or on some majority rule. Its purpose is not to impose an aggregated model from the individual ones. Rather, the GDSS is designed to reflect to each member the consequences of his/her inputs, confronting them with analogous reflections of the group members' inputs. We propose aggregation procedures to provide a reflection of the group's inputs to each of its members, and an architecture for a GDSS implementing these procedures.http://www.sciencedirect.com/science/article/B6VCT-4B5JR15-7/1/ec69930c867d6cea3058a818f9f33fe

    Partial Orderings as Heuristic for Multi-Objective Model-Based Reasoning

    Full text link
    Model-based reasoning is becoming increasingly common in software engineering. The process of building and analyzing models helps stakeholders to understand the ramifications of their software decisions. But complex models can confuse and overwhelm stakeholders when these models have too many candidate solutions. We argue here that a technique based on partial orderings lets humans find acceptable solutions via a binary chop needing O(log(N))O(log(N)) queries (or less). This paper checks the value of this approach via the iSNEAK partial ordering tool. Pre-experimentally, we were concerned that (a)~our automated methods might produce models that were unacceptable to humans; and that (b)~our human-in-the-loop methods might actual overlooking significant optimizations. Hence, we checked the acceptability of the solutions found by iSNEAK via a human-in-the-loop double-blind evaluation study of 20 Brazilian programmers. We also checked if iSNEAK misses significant optimizations (in a corpus of 16 SE models of size ranging up to 1000 attributes by comparing it against two rival technologies (the genetic algorithms preferred by the interactive search-based SE community; and the sequential model optimizers developed by the SE configuration community~\citep{flash_vivek}). iSNEAK 's solutions were found to be human acceptable (and those solutions took far less time to generate, with far fewer questions to any stakeholder). Significantly, our methods work well even for multi-objective models with competing goals (in this work we explore models with four to five goals). These results motivate more work on partial ordering for many-goal model-based problems
    corecore