Lepus3
Encyclopedia
LePUS3 is a language for modelling and visualizing object-oriented (Java
, C++
, C#) programs and design pattern
s. It is defined as a formal specification
language, formulated as an axiomatized subset of First-order predicate logic. A diagram in LePUS3 is also called a Codechart. LePUS, the name of the first version of the language, is an abbreviation for Language for Pattern Uniform Specification.
, including abstract factory
, factory method
, adapter
, decorator
, composite
, proxy
, iterator
, state
, strategy
, template method
, and visitor
. (See "The 'Gang of Four' Companion") 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.
, and object-oriented application framework
s. It is unsuitable for modelling non object-oriented programs, architectural style
s, and undecidable
and semi-decidable properties.
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, C#) programs and design pattern
Design pattern
A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise. The idea was introduced by the architect Christopher Alexander in the field of architecture and has been adapted for various other disciplines,...
s. It is defined as a formal specification
Formal specification
In computer science, a formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it...
language, formulated as an axiomatized subset of First-order predicate logic. A diagram in LePUS3 is also called a Codechart. 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:- Scalability: To model large-scale programs using small Codecharts with only few symbols
- Automated verifiability: To allow programmers to check fully automatically conformance to design so as to keep the design in synch with the implementation
- Program visualization: To allow tools to reverse-engineer legible Codecharts from plain source code modeling their design
- Pattern implementation: To allow tools to determine automatically whether your program implements a design pattern
- Design abstraction: To specify unimplemented programs without committing prematurely to implementation minutiae
- Genericity: To model a design pattern not as a specific implementation but as a design motif
- Rigour: To allow software designers to be sure exactly what Codecharts represent and reason rigorously about them
Context
LePUS3 belongs to the following families of languages:- Object-oriented software modeling languageModeling languageA 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...
s (e.g., UMLUnified Modeling LanguageUnified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...
): LePUS3 is a visual notation that is used to represent the building-blocks in the design of programs object-oriented programmingObject-oriented programmingObject-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
languages - Formal specificationFormal specificationIn computer science, a formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it...
languages: Like other Logic Visual Languages, Codecharts articulate sentences in mathematical logic. LePUS3 is axiomatized in and defined as a recursive (turing-decidable) subset of first-order predicate calculus. Its semantics are defined using finite structure (mathematical logic)Structure (mathematical logic)In universal algebra and in model theory, a structure consists of a set along with a collection of finitary operations and relations which are defined on it....
. - Architecture description languageArchitecture description languageDifferent communities use the term architecture description language. Some important communities are the system engineering community, the software engineering community and the enterprise modelling and engineering community...
s: LePUS3 is a non-functional specification language used to represent design decisions about programs in class-based object-oriented programming languages (such as JavaJava (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
and C++C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
). - Tool supported specification languages: Verification of Codecharts (checking their consistency with a Java 1.4 program) can be established ('verified') by a click of a button, as demonstrated by the Two-Tier Programming Toolkit.
- Software visualizationSoftware visualizationSoftware visualization is the static or animated 2-D or 3-D visual representation of information about software systems based on their structure, size, history, or behavior....
notations are notations which offer a graphical representation of the program, normally generated by reverse-engineering the source code of the program.
Vocabulary
LePUS3 was designed to accommodate for parsimony and for economy of expression. Its vocabulary consists of only 15 visual tokens.Tool support
The Two-Tier Programming Toolkit can be used to- create LePUS3 specifications (Codecharts)
- verify automatically the consistency of LePUS3 Codecharts with Java 1.4 programs; and
- reverse-engineer Codecharts from Java source code.
Design patterns
LePUS3 was specifically designed to model, among others, the 'Gang of Four' design patternsDesign pattern
A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise. The idea was introduced by the architect Christopher Alexander in the field of architecture and has been adapted for various other disciplines,...
, including abstract factory
Abstract factory pattern
The abstract factory pattern is a software design pattern that provides a way to encapsulate a group of individual factories that have a common theme. In normal usage, the client software creates a concrete implementation of the abstract factory and then uses the generic interfaces to create the...
, factory method
Factory method pattern
The factory method pattern is an object-oriented design pattern to implement the concept of factories. Like other creational patterns, it deals with the problem of creating objects without specifying the exact class of object that will be created.The creation of an object often requires complex...
, adapter
Adapter pattern
In computer programming, the adapter pattern is a design pattern that translates one interface for a class into a compatible interface...
, decorator
Decorator pattern
In object-oriented programming, the decorator pattern is a design pattern that allows behaviour to be added to an existing object dynamically.-Introduction:...
, composite
Composite pattern
In software engineering, the composite pattern is a partitioning design pattern. The composite pattern describes that a group of objects are to be treated in the same way as a single instance of an object. The intent of a composite is to "compose" objects into tree structures to represent...
, proxy
Proxy pattern
In computer programming, the proxy pattern is a software design pattern.A proxy, in its most general form, is a class functioning as an interface to something else...
, iterator
Iterator pattern
In object-oriented programming, the iterator pattern is a design pattern in which an iterator is used to traverse a container and access the container's elements...
, state
State pattern
The state pattern, which closely resembles Strategy Pattern, is a behavioral software design pattern, also known as the objects for states pattern. This pattern is used in computer programming to represent the state of an object. This is a clean way for an object to partially change its type at...
, strategy
Strategy pattern
In computer programming, the strategy pattern is a particular software design pattern, whereby algorithms can be selected at runtime. Formally speaking, the strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable...
, template method
Template method pattern
In software engineering, the template method pattern is a design pattern.It is a behavioral pattern, and is unrelated to C++ templates.-Introduction:A template method defines the program skeleton of an algorithm...
, and visitor
Visitor pattern
In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure on which it operates. A practical result of this separation is the ability to add new operations to existing object structures without modifying those...
. (See "The 'Gang of Four' Companion") 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.
Examples
LePUS3 is particularly suitable for modelling large programs, design patternsDesign Patterns
Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design. The book's authors are Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides with a foreword by Grady Booch. The authors are...
, and object-oriented application framework
Application framework
In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment ....
s. It is unsuitable for modelling non object-oriented programs, architectural style
Architectural style
Architectural styles classify architecture in terms of the use of form, techniques, materials, time period, region and other stylistic influences. It overlaps with, and emerges from the study of the evolution and history of architecture...
s, and undecidable
Undecidable
Undecidable may refer to:In mathematics and logic* Undecidable problem - a decision problem which no algorithm can decide* "Undecidable" is sometimes used as a synonym of "independent", where a formula in mathematical logic is independent of a logical theory if neither that formula nor its negation...
and semi-decidable properties.