LePUS3

Last updated
Example: Codechart modelling the Composite pattern in LePUS3 Composite pattern in LePUS3.png
Example: Codechart modelling the Composite pattern in LePUS3

LePUS3 [1] is a language for modelling and visualizing object-oriented (Java, C++, C#) programs and design patterns. [2] It is defined as a formal specification language, [3] [4] formulated as an axiomatized subset of First-order predicate logic. A diagram in LePUS3 is also called a Codechart. [5] LePUS, the name of the first version of the language, is an abbreviation for Language for Pattern Uniform Specification.

Purpose

LePUS3 is tailored for the following purposes:

Context

LePUS3 belongs to the following families of languages:

Vocabulary

LePUS3 was designed to accommodate for parsimony and for economy of expression. Its vocabulary consists of only 15 visual tokens.

LePUS3 Vocabulary LePUS3 vocab.png
LePUS3 Vocabulary

Tool support

The Two-Tier Programming Toolkit [6] [7] can be used to

Design patterns

LePUS3 was specifically designed to model, among others, the 'Gang of Four' design patterns, including abstract factory, factory method, adapter, decorator, composite, proxy, iterator, state, strategy, template method, and visitor. (See "The 'Gang of Four' Companion") [2] The abbreviation LePUS for "Language for Pattern Uniform Specification" is used because the precursor of this language was primarily concerned with design patterns. The implementation of design patterns specified in LePUS3 can be automatically verified by the TTP Toolkit. [8]

Examples

LePUS3 is particularly suitable for modelling large programs, design patterns, and object-oriented application frameworks. It is unsuitable for modelling non object-oriented programs, architectural styles, and undecidable and semi-decidable properties.

Related Research Articles

Object database Type of database management system

An object database is a database management system in which information is represented in the form of objects as used in object-oriented programming. Object databases are different from relational databases which are table-oriented. Object–relational databases are a hybrid of both approaches.

Z notation Formal specification language used for describing and modelling computing systems

The Z notation is a formal specification language used for describing and modelling computing systems. It is targeted at the clear specification of computer programs and computer-based systems in general.

The Common Object Request Broker Architecture (CORBA) is a standard defined by the Object Management Group (OMG) designed to facilitate the communication of systems that are deployed on diverse platforms. CORBA enables collaboration between systems on different operating systems, programming languages, and computing hardware. CORBA uses an object-oriented model although the systems that use the CORBA do not have to be object-oriented. CORBA is an example of the distributed object paradigm.

A specification language is a formal language in computer science used during systems analysis, requirements analysis, and systems design to describe a system at a much higher level than a programming language, which is used to produce the executable code for a system.

In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically rigorous techniques for the specification, development and verification of software and hardware systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

Computer science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. One well known subject classification system for computer science is the ACM Computing Classification System devised by the Association for Computing Machinery.

Software design is the process by which an agent creates a specification of a software artifact intended to accomplish goals, using a set of primitive components and subject to constraints. Software design may refer to either "all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying complex systems" or "the activity following requirements specification and before programming, as ... [in] a stylized software engineering process."

Bertrand Meyer French computer scientist

Bertrand Meyer is a French academic, author, and consultant in the field of computer languages. He created the Eiffel programming language and the idea of design by contract.

A modeling language is any artificial language that can be used to express information or knowledge or systems in a structure that is defined by a consistent set of rules. The rules are used for interpretation of the meaning of components in the structure.

Visual programming language Programming language written graphically by a user

In computing, a visual programming language is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

This is an alphabetical list of articles pertaining specifically to software engineering.

Executable UML is both a software development method and a highly abstract software language. It was described for the first time in 2002 in the book "Executable UML: A Foundation for Model-Driven Architecture". The language "combines a subset of the UML graphical notation with executable semantics and timing rules." The Executable UML method is the successor to the Shlaer–Mellor method.

Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem. It is one approach to software design.

The following outline is provided as an overview of and topical guide to computer programming:

Apache Camel is an open source framework for message-oriented middleware with a rule-based routing and mediation engine that provides a Java object-based implementation of the Enterprise Integration Patterns using an application programming interface to configure routing and mediation rules.

KeY

The KeY tool is used in formal verification of Java programs. It accepts specifications written in the Java Modeling Language to Java source files. These are transformed into theorems of dynamic logic and then compared against program semantics that are likewise defined in terms of dynamic logic. KeY is significantly powerful in that it supports both interactive and fully automated correctness proofs. Failed proof attempts can be used for a more efficient debugging or verification-based testing. There have been several extensions to KeY in order to apply it to the verification of C programs or hybrid systems. KeY is jointly developed by Karlsruhe Institute of Technology, Germany; Technische Universität Darmstadt, Germany; and Chalmers University of Technology in Gothenburg, Sweden and is licensed under the GPL.

Model–view–viewmodel (MVVM) is a software architectural pattern that facilitates the separation of the development of the graphical user interface – be it via a markup language or GUI code – from the development of the business logic or back-end logic so that the view is not dependent on any specific model platform. The viewmodel of MVVM is a value converter, meaning the viewmodel is responsible for exposing (converting) the data objects from the model in such a way that objects are easily managed and presented. In this respect, the viewmodel is more model than view, and handles most if not all of the view's display logic. The viewmodel may implement a mediator pattern, organizing access to the back-end logic around the set of use cases supported by the view.

Grigore Roșu Computer science professor

Grigore Roșu is a computer science professor at the University of Illinois at Urbana-Champaign and a researcher in the Information Trust Institute. He is known for his contributions in runtime verification, K framework, matching logic, and automated coinduction.

References

  1. Eden, Amnon; contributions by Jonathan Nicholson (2011). Codecharts: Roadmaps and Blueprints for Object-Oriented Programs (PDF). Hoboken, New Jersey: Wiley/Blackwell.
  2. 1 2 Amnon H. Eden, with contributions from Jonathan Nicholson. "Modelling Design Patterns, Chapter 11 in Codecharts: Roadmaps and Blueprints for Object-Oriented Programs" (PDF).
  3. Amnon H. Eden; Epameinondas Gasparis; Jonathan Nicholson (2007). "LePUS3 and Class-Z Reference Manual". University of Essex.
  4. Gasparis, Epameinondas; Jonathan Nicholson; Amnon H Eden (2008-09-19). LePUS3: An Object-Oriented Design Description Language (PDF). DIAGRAMS 2008. Herrsching, Germany. Archived from the original (PDF) on 2008-11-19. Retrieved 2008-06-23.
  5. Codechart, formal definition
  6. Two-Tier Programming Toolkit
  7. Gasparis, Epameinondas; Amnon H. Eden; Jonathan Nicholson; Rick Kazman (2008-05-10). The Design Navigator: Charting Java Programs (PDF). 30th IEEE International Conference on Software Engineering--ICSE. Leipzig, Germany. Archived from the original (PDF) on 2008-11-19. Retrieved 2008-06-23.
  8. 1 2 Nicholson, Jonathan; Epameinondas Gasparis; Amnon H Eden; Rick Kazman (2009). Automated Verification of Design Patterns with LePUS3 (PDF). The 1st NASA Formal Methods Symposium–NFM 2009. Moffett Field, CA.