Fig 12 - uploaded by Quintin Cutts
Content may be subject to copyright.
New hyper-program and procedure sharing the same location

New hyper-program and procedure sharing the same location

Source publication
Article
Full-text available
Persistent programming systems are designed to provide technology for the construction and maintenance of large, long-lived object-based application systems. Many successful prototypes have been constructed and a large body of application building experience is emerging. Three common attributes of persistent systems are persistent linkage, strong t...

Similar publications

Article
Full-text available
L'objectif de cette thèse est de comparer les apports et les limites de différentes méthodes d'analyse des besoins ergonomique en amont de la conception d'une technologie émergente telle que la Réalité Augmentée (RA). Le cadre applicatif de cette technologie est la formation des mécaniciens automobiles. Après un état de l'art sur l'ergonomie de la...
Article
Full-text available
This work presents the results of experiments on four prototype buckling restrained braces. The devices were designed and built by the authors; consist basically of a steel cylinder as dissipative core and a steel tube filled with mortar as buckling restrainer casing. The design and production issues are accounted for in an integrated way and all t...
Article
Full-text available
Augmented reality is a technology expected to have a big impact as a natural and intuitive user interface to industrial applications. A lot of research has been done in industrial augmented reality but real life applications are still rare. One reason for the slow adoption seems to be that augmented reality applications have been developed without...
Article
Full-text available
Green propellants used for satellite-level propulsion system become attractive in recent years because the non-toxicity and lower requirements of safety protection. One of the green propellants, high-concentration hydrogen peroxide H 2 O 2 solution (≥70% w/w, weight concentration percentage), often known as high-test peroxide (HTP), is considered b...
Conference Paper
Full-text available
Software architecture evolution has become an integral part of the software lifecycle. Thus, the maintenance of a software system involves among others the maintenance of the software system architecture. Component models are widely used as an essential view to describe software archi-tectures. In recent years, the software architecture community h...

Citations

... More importantly, it simplifies the programmer's conceptual model of an application, and it avoids the many coherency problems that result from multiple cached copies of the same information. To quote from [22]: Persistence is used to abstract over the physical properties of data such as where it is kept, how long it is kept and in what form it is kept, thereby simplifying the task of programming. The benefits can be summarised as: improving programming productivity as a consequence of simpler semantics; avoiding ad hoc arrangements for data translation and long term data storage; and providing protection mechanisms over the whole computational environment. ...
Article
The persistent programming systems of the 1980s offered a programming model that integrated computation and long-term storage. In these systems, reliable applications could be engineered without requiring the programmer to write translation code to manage the transfer of data to and from non-volatile storage. More importantly, it simplified the programmer's conceptual model of an application, and avoided the many coherency problems that result from multiple cached copies of the same information. Although technically innovative, persistent languages were not widely adopted, perhaps due in part to their closed-world model. Each persistent store was located on a single host, and there were no flexible mechanisms for communication or transfer of data between separate stores. Here we re-open the work on persistence and combine it with modern peer-to-peer techniques in order to provide support for orthogonal persistence in resilient and potentially long-running distributed applications. Our vision is of an infrastructure within which an application can be developed and distributed with minimal modification, whereupon the application becomes resilient to certain failure modes. If a node, or the connection to it, fails during execution of the application, the objects are re-instantiated from distributed replicas, without their reference holders being aware of the failure. Furthermore, we believe that this can be achieved within a spectrum of application programmer intervention, ranging from minimal to totally prescriptive, as desired. The same mechanisms encompass an orthogonally persistent programming model. We outline our approach to implementing this vision, and describe current progress. Comment: Submitted to EuroSys 2006
... [3] Orthogonally persistent object systems support a uniform treatment of objects irrespective of their types by allowing values of all types to have whatever longevity is required. The benefits of orthogonal persistence have been described extensively in the literature [2,[4][5][6][7][8][9][10][11][12][13][14][15][16][17][18]. They can be summarised as: ...
... Another avenue for investigation is how the unique features of orthogonally persistent systems may be exploited to improve current software development technology [18]. For example, the integration of first-class code and data within a persistent store that enforces referential integrity makes the hyper-code paradigm possible. ...
Conference Paper
The social and economic importance of large bodies of programs and data that are potentially long-lived has attracted much attention in the commercial and research communities. Here we concentrate on a set of methodologies and technologies called persistent programming. In particular we review programming language support for the concept of orthogonal persistence, a technique for the uniform treatment of objects irrespective of their types or longevity. While research in persistent programming has become unfashionable, we show how the concept is beginning to appear as a major component of modern systems. We relate these attempts to the original principles of orthogonal persistence and give a few hints about how the concept may be utilised in the future. Comment: 2nd International Conference on Object Databases (ICOODB 2009), Zurich, Switzerland. pp. 1-22
... [3] Orthogonally persistent object systems support a uniform treatment of objects irrespective of their types by allowing values of all types to have whatever longevity is required. The benefits of orthogonal persistence have been described extensively in the literature [2,[4][5][6][7][8][9][10][11][12][13][14][15][16][17][18]. They can be summarised as: ...
... Another avenue for investigation is how the unique features of orthogonally persistent systems may be exploited to improve current software development technology [18]. For example, the integration of first-class code and data within a persistent store that enforces referential integrity makes the hyper-code paradigm possible. ...
... These can be classified into internal operations that alter the content of a cell and external operations that affect the cell network. From software methods developed over the last 20 years and our own experience [28,15], we have identified the following primitive operations: ...
... This was a major influence in the design of the process-centred software engineering environment IPSE2.5 [28], and research combining formal specification and an evolutionary approach to software design [9]. The problems of designing large process models led to the use of software architecture [17] and exploiting persistent links between software components [15]. In the ArchWare Tower, the module decomposition document of Parnas [20] has been replaced with the software architecture model expressed as a network of cells; rather than reading an overview document developers browse the development environment to learn how different parts of a system fit together. ...
Conference Paper
Full-text available
Modern software development practices show that there is significant diversity in the product, process and geographical location of software development due to economical, technical and logistical constraints. Such diverse development demands flexibility in the software engineering methodology. In this paper, we propose the cellular development methodology (CDM), an architecture-driven approach to flexible software development. CDM derives the development process and its architecture from the software architecture of product. The software development process is structured and customised as a network of cooperating cells. Our contribution is a cellular approach to software development based on the software architecture of the end product whereby a network of configurable cells yield customisable, potentially distributed software development processes which in turn produce software that is highly tailored to user requirements.
... Morrison introduced hyper programming where persistent data can be bound to source texts [21]. In this scenario the linking time is even before compilation and offers further perspectives. ...
Article
Our native Java compiler directly generates runtime structures in a persistent Distributed Shared Memory (DSM). The compiler has been used to build a general purpose PC Operating System (OS) on top of a persistent DSM memory. The persistent DSM operating environment lends itself naturally to an integration of symbol tables, class descriptors and naming during Java program compilation and execution.
... Considerable research has been done in the area of dynamic adaptation at an implementation level. There are a multitude of programming languages and libraries that provide dynamic linking and binding mechanisms, as well as exception handling capabilities (e.g., [6, 12, 13, 18]). Systems of this kind allow self-repair to be programmed on a per-system basis. ...
Conference Paper
Full-text available
An increasingly important requirement for software systems is the capability to adapt at run time in order to accommodate varying resources, system errors, and changing requirements. For such self-repairing systems, one of the hard problems is determining when a change is needed, and knowing what kind of adaptation is required. Recently several researchers have explored the possibility of using architectural models as a basis for run time monitoring, error detection, and repair. Each of these efforts, however, has demonstrated the feasibility of using architectural models in the context of a specific style. In this paper we show how to generalize these solutions by making architectural style a parameter in the monitoring/repair framework and its supporting infrastructure. The value of this generalization is that it allows one to tailor monitoring/repair mechanisms to match both the properties of interest (such as performance or security), and the available operators for run time adaptation.
... Direct links to the objects can be included in the program rather than textual descriptions of the access paths by which they can be located at execution time. A program containing both text and links to objects is a hyper-program [6]. ...
Article
Full-text available
Software architectures are designed to meet the needs of the applications that use them. With conventional architectures this is done by predicting the average needs of the majority of the applications they support. In contrast, a compliant software architecture can accommodate the needs of a particular application. As the application evolves, its requirements change and the supporting software components, if compliant, change accordingly to meet these new requirements
... Many of these problems are closely related to process language issues and therefore the techniques developed can be refined and incorporated in a process language. The two techniques discussed in this paper are Communicating Actions Control System (CACS) [22] and hyper-programming [13,17]. CACS addresses the problem of providing flexible concurrency control mechanisms to support collaborative working. ...
... The technique which we adopt is to base our model development on hyper-programming [13,17]. Traditionally, a program which accesses another potentially shared object during its execution, contains a textual description of how to locate the object. ...
Article
Full-text available
. Over the past decade a variety of process languages have been defined and applied to software engineering environments. The idea of using a process language to encode a software process as a "process model", and enacting this using a process-sensitive environment is now well established. Many prototype process-sensitive environments have been developed; but their use in earnest has been limited. We are designing a second generation process language which is a significant departure from current conventional thinking. Firstly a process is viewed as a set of mediated collaborations rather than a set of partially ordered activities. Secondly emphasis is given to how process models are developed, used, and enhanced over a potentially long lifetime. In particular the issue of composing both new and existing model fragments is central to our development approach. This paper outlines these features, and gives the motivations behind them. It also presents a view of process suppor...
... , taken from [1], shows an example of a Napier88 hyper-program. The program source, which is itself a persistent object, comprises text and hyper-links to other objects in the persistent store. ...
... The address is then written out. Note that the code objects (readString, writeString and lookup) are denoted using exactly the same mechanism as data objects (the table) 1 and all of these are external to the hyper-program but within the persistent environment. A requirement for hyper-programming is the presence of an external value space to which bindings can be constructed during program composition. ...
... The benefits of hyper-programming described in [1,3,4] may be summarised as: ...
Article
. The traditional representation of a program is as a linear sequence of text. At some stage in the execution sequence the source text is checked for type correctness and its translated form is linked to values in the environment. When this is performed early in the execution process, confidence in the correctness of the program is raised. During program execution, tools such as debuggers are used to inspect the running state of programs. Relating this state to the linear text is often problematical. We have developed a technique, hyperprogramming, that allows the representations of source programs to include direct links (hyper-links) to values, including code, that already exist in the environment. Hyper-programming achieves our two objectives of being able to link earlier than before, at program composition time, and to represent sharing and thus closure and through this the run-time state of a program. This paper reviews our work on hyper-programming and proposes some c...
... The Napier88 persistent programming system was originally planned as part of the PISA project [1] with the major goal of constructing a self contained, orthogonally persistent system. The system was also intended as, or turned out to be, a testbed for experiments in: type systems for data modelling [2][3][4][5][6][7], bulk data [8,9] and protection [10,11]; programming language implementation [12,13]; binding mechanisms [14][15][16][17]; programming environments [17][18][19][20]; system evolution [21][22][23]; concurrency control and transactions [24][25][26][27]; object stores [26,[28][29][30][31][32][33][34][35] and software engineering tools [36][37][38][39]. ...
... The Napier88 persistent programming system was originally planned as part of the PISA project [1] with the major goal of constructing a self contained, orthogonally persistent system. The system was also intended as, or turned out to be, a testbed for experiments in: type systems for data modelling [2][3][4][5][6][7], bulk data [8,9] and protection [10,11]; programming language implementation [12,13]; binding mechanisms [14][15][16][17]; programming environments [17][18][19][20]; system evolution [21][22][23]; concurrency control and transactions [24][25][26][27]; object stores [26,[28][29][30][31][32][33][34][35] and software engineering tools [36][37][38][39]. ...
Chapter
Full-text available
Persistent programming systems are designed as an implementation technology for long lived, concurrently accessed and potentially large bodies of data and programs, known here as persistent application systems (PASs). Within a PAS the persistence concept is used to abstract over the physical properties of data such as where it is kept, how long it is kept and in what form it is kept. As such it is seen as having a number of benefits in simplifying the task of PAS programming. Here, we describe the integrated design of the Napier88 persistent programming system and how Napier88 may be used to develop PASs.