
Amnon H. Eden- PhD (Tel Aviv) Computer Science (Software Engineering); MSc (Tel Aviv) Computer Science (Machine Learning)
- Principal Scientist at Sapience.org
Amnon H. Eden
- PhD (Tel Aviv) Computer Science (Software Engineering); MSc (Tel Aviv) Computer Science (Machine Learning)
- Principal Scientist at Sapience.org
Studying the utility values of currencies with applications to cryptocurrencies
About
100
Publications
66,823
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,458
Citations
Introduction
Dr Amnon H. Eden is a computer scientist, Principal Scientist at the Sapience.org thinktank, and an adviser to high-tech, fintech, and health organizations. Read more http://eden-study.org
Current institution
Sapience.org
Current position
- Principal Scientist
Additional affiliations
September 2002 - May 2015
Publications
Publications (100)
The terms architecture, design, and implementation are typically used informally in partitioning software specifications into three coarse strata of abstraction. Yet these strata are not well-defined in either research or practice, causing miscommunication and needless debate. To remedy this problem we formalize the Intension and the Locality crite...
We examine the philosophical disputes among computer scientists concerning methodological, ontological, and epistemological questions: Is computer science a branch of mathematics, an engineering discipline, or a natural science? Should knowledge about the behaviour of programs proceed deductively or empirically? Are computer programs on a par with...
Flexibility has been recognized as a desirable quality of software since the earliest days of software engineering. Classic and contemporary software design literature suggest that particular implementations are more flexible than others but stop short of suggesting objective criteria for quantifying such claims. To measure software flexibility in...
Notions of value of currencies such as Bitcoin and the US Dollar presuppose that the exact value of each coin equals its exchange rate or price at each point in time, ie, the price of one coin is only ever defined in terms of another. Alternative notions of value are also defined in relative terms (e.g., the price of gold, or ‘purchasing value’). C...
We checked the correlation between the 'total value' of Bitcoin in terms of its USD market cap and the currency's entropy.
A major impediment to the long-term quality of large and complex programs is inconsistency between design and implementation. Conflicts between intent and execution are common because detecting them is laborious, error-prone, and poorly supported, and because the costs of continuously maintaining design documents outweigh immediate gains. A growing...
Three years have passed since the publication of the volume of essays “The Singularity Hypotheses”. Since 2013 public awareness of the concepts of an intelligence explosion has grown sharply – fuelled, in part, by statements from luminaries such as Stephen Hawking and Elon Musk. We return to update on the controversies about the Singularity: What...
Watch the full presentation and the discussion that followed:
https://www.youtube.com/watch?v=G74Z-0fON9o
This report seeks to inform policy makers on the nature and the merit of the arguments for and against the concerns associated with a potential technological singularity.
Part I describes the lessons learned from our investigation of the subject, separating the arguments of merit from the fallacies and misconceptions that confuse the debate and u...
-- What is the mode of being (ontological category) of computer programs? -- To which ontology are programs committed? -- What is the nature of knowledge about programs? How is it gained? Is it a-priori or a-posteriori? -- What is the difference between testing a program and conducting an experiment? -- What is an implementation? What is its relati...
Major technological changes have a transformative effect on every aspect of human life. Increasingly intelligent programs are responsible to paradigm shifts at a steadily accelerating rate, a trend which acceleration theories suggest is all but guaranteed to continue. We explore some of the most disruptive applications of artificial intelligence, e...
Security design patterns are usually described using a variety of UML diagrams beside textual statements. Because, UML class diagrams are used to describe the structural aspects and UML sequence and/or activity diagrams are used to describe the behavioral aspects. So, when implementing, verifying, and/or detecting instances of those patterns, the i...
We investigate intuitive claims made in security pattern catalogues using the formal language of Codecharts and the Two-Tier Programming Toolkit. We analyse the Check Point pattern's structure and explore claims about conformance (of programs to the pattern), about consistency (between different catalogues), and about the relation between (security...
Software design, development and evolution commonly require programmers to model design decisions, visualize implemented programs, and detect conflicts between design and implementation. However, common design notations rarely reconcile theoretical concerns for rigor and minimality with the practical concerns for abstraction, scalability and automa...
Representing design decisions for complex software systems, tracing them to code, and enforcing them throughout the lifecycle are pressing concerns for software architects and developers. To be of practical use, specification and modeling languages for software design need to combine rigor with abstraction and simplicity, and be supported by automa...
Bill Joy in a widely read but controversial article claimed that the most powerful 21st century technologies are threatening to make humans an endangered species. Indeed, a growing number of scientists, philosophers and forecasters insist that the accelerating progress in disruptive technologies such as artificial intelligence, robotics, genetic en...
The essays included in the special issue dedicated to the philosophy of computer science examine new philosophical questions
that arise from reflection upon conceptual issues in computer science and the insights such an enquiry provides into ongoing
philosophical debates.
Finite StructuresAbstract Semantics FunctionsDesign ModelsProgram Modelling Revisited
Verifying Closed SpecificationsVerifying Open SpecificationsVerifying Pattern ImplementationsTool Support for Automated Verification
modelling design motifs - not part of any specific programs, problems of modelling design motifs, fundamentally different from problems of modelling programs;modelling design motifs - using Java Remote Method Invocation (RMI);variables, serving as placeholders - ranging over specific parts of program (classes, methods, and sets)
motivation, or existing meaning - design decisions being deeply flawed, understanding these difficulties, to motivate presentation;managing complexity of software - conformance to design decisions, enforced throughout life cycle of programs, to maximum possible extent;programming languages, most accurate and detailed specifications - each programmi...
reasoning about charts, and revisiting problem of abstraction - set of abstraction operators, allowing to reason rigorously about Codecharts;abstraction viz. predicate weakening - process of abstracting a chart by replacing ISOMORPHIC edge with a TOTAL edge;abstraction viz. generalization - abstracting a chart, by replacing a constant with a variab...
Object-OrientationVisualizationRigourAutomated VerifiabilityScalabilityGenericityMinimalityInformation Neglect
historical notes, and design patterns - important steps in software design advancement;formal languages of logic languages - and commercial object notations;languages, and mechanisms representing patterns - at once, as well-defined as logic sentences and intuitive
LePUS3 and Class-Z as First-Order LanguagesSpecifications in the Predicate LogicThe Axioms of Class-Based Programs
Case Study: The Composite PatternCase Study: The Iterator PatternCase Study: The Factory Method PatternCase Study: The Abstract Factory PatternConcluding Remarks
modelling early design revisited - design description language, representing program blueprints, articulating requirements without making premature commitments to implementation detail;design description language - representing program blueprints, articulating requirements without making premature commitments to implementation detail;Codechart 98....
schemas, two specification languages - visual tokens, constituting LePUS3 and set of their symbolic transcriptions, referred as Class-Z;Class-Z suggesting, inspiration for schema notation - from the Z specification language;translating a Codechart to a schema
Modelling Individual ClassesModelling Individual Methods
Modelling PropertiesModelling Implementation MinutiaModelling Simple RelationsModelling Indirect RelationsSubtyping
UML versus Codecharts - de facto industry standard modelling language, questions about relationship to Codecharts;UML, rich and expressive set of notations - designed to articulate wide range of functional and nonfunctional specifications of software;composite patterns - modelled in UML's Class Diagram notation
Modelling Sets of ClassesModelling Total Relations Between SetsModelling Sets of Methods (Clans)Modelling Isomorphic RelationsModelling Sets of Methods (Tribes)Modelling Class HierarchiesModelling Methods in HierarchiesModelling Properties of SetsCase Study: Total Versus. IsomorphicCase Study: JDOMCase Study: Java 3D
Modelling Sets of HierarchiesModelling Sets of Sets of Methods (Clans)Modelling Sets of Sets of Methods (Tribes)Modelling Total Relations RevisitedModelling Isomorphic Relations Revisited
Three controlled experiments testing the benefits that Java programmers gain from using the Two-Tier Programming Toolkit have recently been concluded. The first experiment offers statistically significant evidence (p-value: 0.02) that programmers who undertook only minimal (1-hour) training in using the current prototype exhibit 76% productivity ga...
Goal-directed problem solving as originally advocated by Herbert Simon's means-ends analysis model has primarily shaped the course of design research on artificially intelligent systems for problem-solving. We contend that there is a definite disregard ...
This document formally defines the elements in the syntax and the semantics of LePUS3 and the Class-Z specification languages. It was designed to satisfy the rigid requirements of mathematical logic, and it is therefore unsuitable for learning LePUS3 and Class-Z. More suitable for this purpose will be the book "Object-Oriented Modelling " [Eden und...
Specification and [visual] modelling languages are expected to combine strong abstraction mechanisms with rigour, scalability, and parsimony. LePUS3 is a visual, object-oriented design description language axiomatized in a decidable subset of the first-order predicate logic. We demonstrate how LePUS3 is used to formally specify a structural design...
The design navigator is a tool for reverse-engineering object-oriented programs into charts at any level of abstraction. The design navigator discovers the object-oriented building blocks in the design of programs and visualises them in terms of LePUS3, a formal design description language. We demonstrate that program visualization in a formal lang...
LePUS3 [1] (lepus.org.uk) is a logic, visual, object-oriented Design Description Language: a formal specification language designed to capture and convey the building-blocks of object-oriented design. LePUS3 minimal vocabulary constitutes of abstraction mechanisms that can specify effectively and precisely design patterns and the design of JavaTM (...
The Philosophy of Computer Science (PCS) is concerned with philosophical issues that arise from reflection upon the nature and practice of the academic discipline of computer science. But what is the latter? It is certainly not just programming. After all, many people who write programs are not computer scientists. For example, physicists, accounta...
The Design Navigator is a semi-automated design mining tool which reverse engineers LePUS3 design charts from JavaTM 1.4 programs at any level of abstraction in reasonable time. We demonstrate the Design Navigator's step-wise charting process of Java Foundation Classes, generating decreasingly abstract charts of java.awt and discovering building-bl...
Computer science has a significant role in the meta-activity associated with programming such as with the design and development of tools and methodologies that facilitate and aid the specification, development, implementation, and analysis of computing systems. The three caricaturing paradigms for computer science include the mathematical, the eng...
This paper is a summary and evaluation of work presented at the AAAI 2005 Fall Symposium on Machine Ethics that brought together participants from the fields of Computer Science and Philosophy to the end of clarifying the nature of this newly emerging ...
As a first step in the larger project of charting the ontology of computer programs, we pose three central questions: (1) Can programs, hardware, and metaprograms be organized into a meaningful taxonomy? (2) To what ontology are computer programs committed? (3) What explains the proliferation of programming languages and how do they come about? Tak...
We examine the role of semantic theory in determining the ontology of programming languages. We explore how different semantic perspectives result in different ontologies. In particular, we compare the ontological implications of set-theoretic versus type-theoretic semantics. Key terms: Philosophy of computer science Related terms: Mathematical log...
We describe a software development environment that supports Two-Tier Programming (TTP): An approach that redefines programming as the integration of conventional imple- mentation with design specifications. The TTP tool maintains a comprehensive represen- tation of programs by integrating specifications in two ties: 1. Design specifications are re...
We distinguish three abstraction strata in software design statements: (i) Strategic design statements ('architectural design') determine global constraints, such as programming paradigms, architectural styles, component-based software enginering standards, design principles, and law-governed regularities; (ii) Tactical design statements ('detailed...
Flexibility has been hailed as a desirable quality since the earliest days of software engineer-ing. Classic and modern literature suggest that particular programming paradigms, architectural styles and design patterns are more "flexible" than others but stop short of suggesting objective criteria for measur-ing such claims. We suggest that flexibi...
Software co-evolution can be characterised as a way to “adjust” any given software implementation to a change (“shift”) in the software requirements. In this paper, we propose a formal definition of evolution complexity to precisely quantify the cost of adjusting a particular implementation to a change (“shift”) in the requirements. As a validation...
We seek to distinguish Strategic design decisions (e.g., to adopt a programming paradigm, architectural style, CBSE standard or application framework) from tactical design decisions (e.g. to use a design pattern, refactoring or programming idiom). This distinction is important since strategic statements carry far-reaching implications over the impl...
The terms architecture, design, and implementation are typically used informally in partitioning software specifications into three coarse strata of abstraction. But these strata are not well-defined in either research or practice and often overlap causing confusion and needless discussion. To remedy this problem we formally define two criteria: th...
In practice, the development and maintenance (if any) of a system's design specifications are carried out in veritable isolation from the development and maintenance of the implementation. Design decisions are represented independently from the implementation and its analysis and verification are carried out (if at all) by a separate tool set. The...
Definitions of software architecture abound. We've been collecting definitions from visi-tors to our Web site (http://www. sei. cmu. edu/architecture/definitions. html) and already have received dozens. However, we are interested not only in understanding the term "software architecture" but in clarifying the difference between architecture and oth...
Progress was made in the understanding of object-oriented (O-O) design through the introduction of patterns of design and architecture. Few works, however, offer methods of precise specification for O-O design.
This article provides a well-defined ontology and an underlying framework for the formal specification of O-O design: (1) We observe key de...
Progress in the science of programming is reflected by the evolution of programming languages. We propose that the next step in this evolution is a more comprehensive
kind of programs: To redefine the way programs are perceived and, consequently, to redefine what constitutes the activity
of programming. Rather than treating architectural specificat...
We present a visual formalism for the specification of object -oriented design and architectures . LePUS diagrams effectively capture and convey a concise description of design patterns. LePUS diagrams also offer lucid "roadmaps " ("architectural schemata") for elaborated libraries and frameworks, and make a documentation tool that is more powerful...
Software architectures and designs "notations" are typically based on bubble-and-arc diagrams. Embellishing these diagrams may increase their information content but does not make a language. A formal language has syntax, semantics, and inference rules, so that reasoning and automatic manipulation are made possible. We describe LePUS, a formal lang...
Historically, progress in the science of programming has primarily been reflected by the evolution of programming languages.
. Rather than describing a specific implementation, Perry and Wolf [1] have established that architectural specifications set forth abstract constraints that need be met, thereby specifying a set of programs indirectly by means of desired properties (also intentional specifications.) The appropriate level of abstraction may vary, but specifications...
dation, and recognition of architectural specifications [Eden 00]. Documentation of frameworks and programs (such as EJB -- Enterprise JavaBeans^TM in Figure 4.) LePUS diagrams effectively capture and convey concise "roadmaps" to the architecture of O-O programs, allowing for "system browsing" at the appropriate level of abstraction. LePUS is based...
Progress was made in the understanding of objectoriented (O-O) architectures through the introduction of patterns of design and architecture. Few works, however, offer methods of precise specification for O-O architectures. This article provides a well-defined ontology and an underlying framework for the formal specification of O-O architectures: W...
Design patterns describe common features of software systems. Notations intended to describe individual programs are unsuitable for formalizing patterns because they are not su#ciently abstract, expressive, and well-defined. We describe LePUS, a notation that is both formal and su#ciently abstract to represent patterns and provide a framework for r...
Progress was made in the understanding of object-oriented (O-O) architectures through the introduction of patterns of design and architecture. Few works, however, offer methods of precise specification for O-O architectures.This article provides a well-defined ontology and an underlying framework for the formal specification of O-O architectures: W...
. We address the problem of software invisibility and seek means to improve the comprehensibility of software. Architectural schemata are defined as visual "roadmaps" to the design of object oriented programs and construed in a formal language. We present LePUS Schemata, a formal language whose expressions convey architectural configurations and de...
We observe recurring, fundamental motifs in object oriented architectures, discuss the possibility of their rigorous representation, and offer criteria for the evaluation of possible languages for their specification, such as expressiveness and completeness. We define a symbolic logic language, LePUS, whose basic abstractions are the motifs observe...
We identify a compact and sufficient set of building blocks which constitute most design patterns of the GoF catalog: uniform sets of classes or functions, function clans, class hierarchies, and regularities (morphisms) thereof. The abstractions observed are manifested within a model in symbolic logic and defined in LePUS, a declarative, higher ord...
Despite vast interest in design patterns, the specification and application of patterns is generally assumed to rely on manual implementation. We describe a precise method of specifying how a design pattern is applied: by phrasing it as an algorithm in a meta-programming language. We present a prototype of a tool that supports the specification of...
A detailed case study in the representation of the STATE design pattern [1] serves us in providing an intuitive introduction to LePUS -- a symbolic logic language for the specification of recurring motifs in object oriented architectures. LePUS' constructs express accurately and concisely fundamental elements of O-O architecture, such as inheritanc...
A discussion was chronicled in previous issues of C++ Report comparing three [candidate] patterns: OBSERVER, MULTICAST, and TYPED MESSAGE. The comparison took a number of pages to be conveyed, mostly using informal means or concrete instances. We use a formal pattern specification language - LePUS - to define each design pattern and to illuminate t...
We identify a compact and sufficient set of building blocks which constitute most design patterns of the GoF catalog: uniform sets of classes or functions, function clans, class hierarchies, and regularities (morphisms) thereof. The abstractions observed are manifested within a model in symbolic logic and defined in LePUS, a declarative, higher ord...
We discuss the prospects of precise specification of design patterns. We analyze the manuscript of the GoF patterns catalog, and prove that the essence of many design pat- terns can be preserved through the translation to some formal language.
We discuss the prospects of precise specification of design patterns. We analyze the manuscript of the GoF patterns catalog, and prove that the essence of many design patterns can be preserved through the translation to some formal language. Contemporary Means of Specification There is widespread interest in design patterns [GoF 95; Coplien & Schmi...
LePUS is a formal, visual notation proposed for the specification of design patterns a-la GoF. It is described through the diagrams of several patterns. This article is the 1 st of two, focusing on the fundamentals of LePUS. The upcoming 2 nd article will discuss relations between sets of entities and a PROLOG implementation. The Need for a Notatio...
LePUS is a formal, visual notation proposed for the specification of design patterns a-la GoF. It is described through the diagrams of several patterns. This article is the 1 st of two, focusing on the fundamentals of LePUS. The upcoming 2 nd article will discuss relations between sets of entities and a PROLOG implementation. The Need for a Notatio...
At present, the only means used for specifying design patterns are contemporary object notations [Rumbaugh et. al 91; Booch 94], lengthy verbal descriptions, and sample programs. The inherent ambiguity and incompleteness of these means preclude devising tool support and fuel disputes over "their true intention". We identified a compact set of abstr...
Despite vast interest in design patterns, the specification and application of patterns is generally assumed to rely on manual implementation. We describe a precise method of specifying how a design pattern is applied: by phrasing it as an algorithm in a meta-programming language. We present a prototype of a tool that supports the specification of...
Design patterns today form a principal heuristic of OOD and are widely used in numerous application domains. However, lack of suitable formalisms prevents the automation of the technical aspects in their implementation. We present an approach of rigorous specification of design patterns and a prototype of a tool that automates most of their applica...
This is a catalog of micro-patterns, as defined in [Eden, Gil & Yehudai 97b; Eden & Yehudai 97c]. A detailed description of the trick [ibid.] that implements the lattice [ibid.] of the CACHE-PROXY design pattern [GoF 95] by a Smalltalk routine is included, and also the source code of a sample Eiffel program whose elements served as arguments to the...
: Most of the study of patterns has been restricted to the composition of "new" patterns. These authors, however, believe that the investigation of design patterns is ripe for an endeavor at an underlying formal conceptual framework. In this article we address future directions in the investigation of design patterns and stress the significance of...
This article sets forth a rigorous approach to the concept of a `design pattern language.' We present a method of using a programming language to manipulate constructs of ordinary OOP language (such as classes and relations). We show that the specification of many design patterns can be phrased as algorithms in this metaprogramming environment. The...
A survey of cognitive research in concept acquisition and human performance in classification tasks; a comparative view of Machine Learning concept acquisition models; and an implementation of a human-oriented classification scheme
LePUS3 is a specification and modelling language designed to capture the building blocks of O-O design at different levels of abstraction. We identify the set of LePUS3 specifica- tions that agree with (are satisfied by) an O-O program (represented by a LePUS3 design model) as the search space for a host of design mining problems such as: reverse e...
Despite vast interest in design patterns, the specification and application of patterns is generally assumed to rely on manual implementation. We describe a precise method of specifying how a design pattern is applied: by phrasing it as an algorithm in a meta-programming language. We present a prototype of a tool that supports the specification of...
This is a catalog of micro-patterns, as defined in (Eden, Gil & Yehudai 97b; Eden & Ye- hudai 97c). A detailed description of the trick (ibid.) that implements the lattice (ibid.) of t he CACHE-PROXY design pa ttern (GoF 95) by a S malltalk routine is included, and also the source code of a sample Eiffel program whose elements served as arguments t...
The history of programming languages is largely a history of the interaction between on- tology and design. Recursion, abstract data types, objects and classes, were conceived as the direct result of the necessity to provide conceptual tools for problem solving and de- sign. Without them programming would probably have got stuck on translating poly...
We present architectural schemata, visual "roadmaps" that provide a lucid picture of the design of object oriented programs. Construed in a formal language, architectural schemata can contribute significantly to the comprehensibility of large systems and provide a rigorous framework to their analysis. We present LePUS, a formal language for the spe...
Questions
Question (1)
Eg, reasoning mechanisms, knowledge model, existing implementations/demonstrations, ...