Tuesday, January 27, 2015

Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.8 Released

by Michał Antkiewicz

The Clafer compiler, Alloy-based instance generator, and wiki 0.3.8 are released on Hackage (clafer, claferIG, claferwiki). The Choco-based instance generator and multi-objective optimizer 0.3.8 is also released. Binary builds are available from Clafer Tools - Binary Distributions.

Major changes include:
  • Allowed having both super and reference parts of a clafer declaration. See pull request.
  • Changed the intersection operator from & to ** to be consistent with ++ and --.
  • Prepared for module system and behavioral Clafer extension.
  • Fixed bugs in HTML and Graph generators.
  • Replaced soft constraint (...) with assertion assert [...]. Soft constraints were never supported in any backend.
  • Phased out Alloy4.1. Alloy 4.2 is now used by default as a compiler mode, for output validation, and instance generation in ClaferIG.
  • The claferwiki.sh script can now run the wiki from sandbox when given the parameter --sandbox.
For detailed changes see pull requests: Clafer, ClaferIG, ClaferWiki

Tuesday, January 20, 2015

Explaining Clafer Semantics by Example

by Michał Antkiewicz

Learning a new language from abstract formal descriptions is hard when lacking strong mathematical background. In the attached presentation, I explain the semantics of Clafer in a simple and intuitive, and yet precise way. I focus on individual language constructs, show small model snippets, and explicitly write down instances of these models as sets and relations. I also explicitly evaluate expressions to show the mechanics of the language. The main goal is to illustrate the application of the abstract semantic rules to concrete cases. This way of presenting the semantics of a modeling language is complementary to the formal presentations.

PowerPoint Slide Show
2015.01.19-Antkiewicz-Clafer-Semantics-By-Example.ppsx

Thursday, January 15, 2015

Behavioral Clafer 0.4.0 Preview Release

by Michał Antkiewicz

We are currently working on the implementation of an extension to Clafer for modeling the evolution of model instances over time: "behavioral Clafer". We published a preview release in Clafer Tools Binary Distributions.

Here's an example model of a PowerWindow system, which includes a feature model, an architecture model, a state machine, and positive and negative execution scenarios. The page is a HTML rendering of the source code in Clafer done by the extended behavioral Clafer compiler. The page was manually edited to add headers explaining the parts of the model.

Friday, December 12, 2014

"Clafer: unifying class and feature modeling" available on-line in Software & Systems Modeling journal

The paper (available from publisher's website) presents formal semantics of Clafer. It precisely explains how a single modeling construct (clafer) can play roles of features, feature groups, classes, attributes, references, associations, and association classes. The paper also explains inheritance, specialization, extension, and redefinition. The semantics is presented in a structure preserving way, that is, the shape of the model is preserved in its semantics, rather than being flattened into a multitude of FOL formulas.

Thursday, October 23, 2014

Clafer, ClaferIG, and ClaferWiki 0.3.7 Released

by Michał Antkiewicz

Clafer compiler, Alloy-based instance generator, and wiki 0.3.7 are released on Hackage (clafer, claferIG, claferwiki).

Major changes include:
  • added support for real numbers [clafer]
  • added not as a synonym to the quantifier no [clafer]
  • moved to the latest Alloy 4.2_2014-05-16 build by default. The .als files are Alloy 4.2 whereas the .als41 files are Alloy 4.1. [clafer, claferIG]
  • added integration with SublimeText 2/3 and VIM.
  • moved to the latest Gitit and Pandoc [claferwiki]
  • many technical improvements
For detailed changes see pull requests: Clafer, ClaferIG, ClaferWiki

Wednesday, October 22, 2014

Clafer syntax highlighter for VIM

by Michał Antkiewicz

Andrzej Wąsowski has contributed an integration of Clafer into VIM featuring
  • syntax highlighting for structural and behavioral Clafer, including marking simple errors
  • indentation based folding for collapsing parts of the model (experimental)
To install, follow the instructions in the README.

Thursday, October 16, 2014

Clafer Tools in Sublime Text 2/3

by Michał Antkiewicz

Clafer Tools get new and improved integration with Sublime Text 2/3, providing the following features:
  • Syntax highlighting of keywords, operators, comments, and integer and string literals
  • Compilation <CTRL>+b
  • Instance generation using
    • Alloy-based instance generator with simple scope inference <CTRL>+i, g, s
    • Alloy-based instance generator with full scope inference <CTRL>+i, g, f
    • Choco-based instance generator with simple scope inference <CTRL>+i, g, c
    • Z3 SMT-based instance generator with simple scope inference <CTRL>+i, g, m
The package Clafer Tools is now an official Sublime Text package available from the central package repository.  To install, follow the instructions in the README.

Thursday, September 25, 2014

Which new features would you like to see in Clafer?

by Michał Antkiewicz

We are thinking of implementing a few new features for Clafer. We opened a poll on the right, above the "Blog Archive". Please vote.

Here's a brief explanation of the features:

Monday, September 8, 2014

Tutorial on Domain Modeling using Clafer

by Michał Antkiewicz

On Aug 25, 2014, as part of the Domain-Specific Modeling Theory and Practice 2014 Summer School, Michał Antkiewicz presented a 6-hour hands-on tutorial on Domain Modeling using Clafer. This year, the school had a common domain: "Traffic Lights", and it was first modeled and analyzed using Clafer.

The tutorial is in the form of the Clafer Wiki 'Traffic Lights' Domain Model Example. It contains four parts:

  • Part 0: Introduction to Domain Engineering (slides)
  • Part I: Feature-Oriented Domain Analysis and Modeling
  • Part II: Domain Concept Modeling
  • Part III: Application Configuration