UVL Studio· feature models in the Universal Variability Language
✓ well-formed
Click a feature to edit it · double-click to rename · drag to pan · scroll to zoom
Constraints

Structure

namespace MyModel   // optional

features
	Root
		mandatory
			Child

constraints
	Child => Root

Indentation defines the tree (tabs or spaces — be consistent). Comments: // to end of line, or /* … */ across lines. Names with spaces are quoted: "Full Grain".

Groups

Parent
	mandatory      // always in
		A
	optional       // may be in
		B
	or             // at least one
		C
		D
	alternative    // exactly one
		E
		F
	[1..2]         // 1 to 2 of them
		G
		H
		I

Children always sit under a group keyword, never directly under a feature.

Constraints

constraints
	A => B          // requires
	A => !B         // excludes
	!C | (D & E)
	A <=> B         // equivalence

Precedence, loosest to tightest: <=>, =>, |, &, !. This editor covers the Boolean level of UVL. The editor completes names as you type (or Ctrl/Cmd+Space), shows details on hover, and Ctrl/Cmd-click jumps between a feature and its uses.

Attributes & extras

Engine {abstract}
Cache {size 512, fast}
String Name
Cpu cardinality [1..4]

{abstract} features structure the tree and are drawn dashed. Typed features and feature cardinality (clones) are parsed and displayed; analysis treats them as Boolean presence. See the UVL site for the full language.