World Library  
Flag as Inappropriate
Email this Article


Article Id: WHEBN0017354269
Reproduction Date:

Title: LePUS3  
Author: World Heritage Encyclopedia
Language: English
Subject: Adapter pattern, Object-oriented programming, Visitor pattern, Bridge pattern, Specification language
Collection: Formal Specification Languages, Object-Oriented Programming
Publisher: World Heritage Encyclopedia


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 1
  • Context 2
  • Vocabulary 3
  • Tool support 4
  • Design patterns 5
  • Examples 6
  • References 7
  • External links 8


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


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.


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]


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.


  1. ^
  2. ^ a b
  3. ^
  4. ^
  5. ^ Codechart, formal definition
  6. ^ Two-Tier Programming Toolkit
  7. ^
  8. ^ a b

External links

  • Official website
  • An overview of Codecharts
  • Sample specifications in LePUS3
  • Legend: Key to LePUS3 and Class-Z Symbols
  • LePUS3 & Class-Z Reference Manual
  • Tutorial: Object-Oriented Modelling with LePUS3 and Class-Z
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from World eBook Library are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.