LePUS3

From HandWiki
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:

  • 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
  • Generality: 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 languages (e.g., UML): LePUS3 is a visual notation that is used to represent the building-blocks in the design of programs object-oriented programming languages
  • Formal specification 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).
  • Architecture description languages: LePUS3 is a non-functional specification language used to represent design decisions about programs in class-based object-oriented programming languages (such as Java and C++).
  • 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 visualization 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.

LePUS3 Vocabulary

Tool support

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

  • create LePUS3 specifications (Codecharts)
  • verify automatically[8] 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 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.

References

  1. Eden, Amnon; contributions by Jonathan Nicholson (2011). Codecharts: Roadmaps and Blueprints for Object-Oriented Programs. Hoboken, New Jersey: Wiley/Blackwell. http://www.eden-study.org/articles/2011/Codecharts.pdf. 
  2. 2.0 2.1 Amnon H. Eden, with contributions from Jonathan Nicholson. "Modelling Design Patterns, Chapter 11 in Codecharts: Roadmaps and Blueprints for Object-Oriented Programs". http://www.lepus.org.uk/ref/book/ch11-modelling-design-patterns.pdf. 
  3. "LePUS3 and Class-Z Reference Manual". 2007. http://www.lepus.org.uk/ref/refman/refman.xml. 
  4. Gasparis, Epameinondas; Jonathan Nicholson; Amnon H Eden (2008-09-19). "LePUS3: An Object-Oriented Design Description Language". DIAGRAMS 2008. Herrsching, Germany. http://www.eden-study.org/articles/2008/lepus3-oo-design-description-lang.pdf. 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". 30th IEEE International Conference on Software Engineering--ICSE. Leipzig, Germany. http://www.eden-study.org/articles/2008/design-navigator-icse.pdf. Retrieved 2008-06-23. 
  8. 8.0 8.1 Nicholson, Jonathan; Epameinondas Gasparis; Amnon H Eden; Rick Kazman (2009). "Automated Verification of Design Patterns with LePUS3". The 1st NASA Formal Methods Symposium–NFM 2009. Moffett Field, CA. http://www.drjonnicholson.com/wp-content/papercite-data/pdf/nicholson_avdpl.pdf. 

External links