jUCMNav Online Help

16 Nov 2012 - 19:56

Part I - Introduction

User Requirements Notation (URN)

jUCMNav is a graphical editor and an analysis and transformation tool for the User Requirements Notation (URN). URN is intended for the elicitation, analysis, specification, and validation of requirements. URN combines modelling concepts and notations for goals and intentions (with GRL, mainly for non-functional requirements and quality attributes) and scenarios (with UCM, mainly for operational requirements, functional requirements, and performance and architectural reasoning). In particular, URN has concepts for the specification of goals, non-functional requirements, rationales, behaviour, scenarios, and structuring. URN allows software and requirements engineers to discover and specify requirements for a proposed system or an evolving system, and analyse such requirements for correctness and completeness. URN is applicable within standards bodies and industry. It helps to describe and communicate requirements, and to develop reasoning about them. The main applications areas include telecommunications systems, services, and business processes, but URN is generally suitable for describing most types of reactive systems and information systems. The range of applications is from business goals and requirements description to high-level design.

The Goal-oriented Requirement Language (GRL)

GRL in a Nutshell

The Goal-oriented Requirement Language is a graphical language for supporting goal-oriented modelling and reasoning about requirements, especially non-functional requirements and quality attributes. It provides constructs for expressing various types of concepts that appear during the requirement process. GRL has its roots in two widespread goal-oriented modelling languages: i* and the NFR Framework. Major benefits of GRL over other popular notations include an integration with a scenario notation and a clear separation of model elements from their graphical representation, enabling a scalable and consistent representation of multiple views/diagrams of the same goal model.

Why use the Goal-oriented Requirement Language?

The Use Case Maps (UCM) Notation

UCMs in a Nutshell

The Use Case Map notation is a graphical language that employ scenario paths to illustrate causal relationships among responsibilities. UCM models provide an integrated view of behaviour and structure by allowing the superimposition of scenario paths on a structure of abstract components. The combination of behaviour and structure enables architectural reasoning after which UCM specifications may be refined into more detailed scenario models such as MSCs and UML sequence diagrams, or into state machines in SDL or UML statechart diagrams and finally into concrete implementations. Validation, verification, performance analysis, interaction detection, and test generation can be performed at all stages. Thus, the UCM notation enables a seamless transition from the informal to the formal by bridging the modeling gap between goal models and natural language requirements (e.g. use cases) and design in an explicit and visual way. The UCM notation allows the user to delay the specification of component states and messages and even, if desired, of concrete components to later, more appropriate, stages of the development process. The goal of the UCM notation is to provide the right degree of formality at the right time in the development process.

Why use Use Case Maps?

Reference

Quick Tour of Eclipse and jUCMNav

Creating and Opening Files

newFile.png

Perspectives

GRL.png

UCM.png

Views and Editor

Outlines.png toolbar.png

Preferences

PreferencesTop.png

Part II - Basic Editing

Note: Many of these features are illustrated with Flash demos (see JUCMNav Tutorials).

Keyboard shortcuts

Diagrams

Adding a GRL or UCM diagram

References versus Definitions

Components (UCM) / Actors (GRL)

Intentional Elements (GRL)

Beliefs (GRL)

Creating Paths (UCM)

Decomposition, Dependencies, and Contributions (GRL)

Elements bound to components (UCM) / actors (GRL)

Working with labels (UCM/GRL)

Forks/Joins (UCM)

Conditions (UCM)

Deletion (UCM/GRL)

Waiting places, timers and connects (UCM)

Part III - Advanced Editing

Zooming and view modes

Auto-layout

Using Stubs

jucmnav-screenshot3.png

Import/Export

Export.png

Exporting Images

Other Import/Exports

Report Generation

ReportGen_Prefs.png

ReportGen_Export_Page1.png

ReportGen_Export_Page2pdf.png

ReportGen_Export_Page2html.png

Report_GRLStrategyTrend.png

Click here to view a series of tutorial videos on jUCMNav's report generation tool as well as a few report samples.

GRL Catalogues

Metadata

Metadata.png

URN Links

URNlinks-menu-expanded.png

URN Link creation dialog:
URNlink-creation-dialog.png

Bilingual models

Comparing Models using EMF Compare.

Part IV GRL Strategies

Managing Strategies

Constraint solver based evaluation (Hao2011 algorithm)

(Now deprecated) Mixed evaluation (Roy2006 algorithm)

Analyzing GRL models

AndOrDecomposition.JPG

Contributions
Contributions must have a label other than "Unknown" to be used in the algorithm. The following diagram shows example of typical contributions for elements.
Contributions.JPG

Dependencies
An element that depends on others elements as an evaluation less or equal (<=) to the minimal value of the elements it depends on. The following figure shows how dependencies are propagated.
Dependencies.JPG

Exporting/Importing Strategies in CSV

Contribution Changes (Contribution Overrides)

Strategy Difference Mode

Ranged Analysis

Switching between the [-100,100] and [0,100] evaluation ranges

Part V UCM Scenarios

Code and Condition Editor

Variables

jucmnav_newvariable.jpg

BNF Grammar

Expression              := Implication   
Implication             := Disjunction (Implies Disjunction)*   
Disjunction             := Conjunction ((Or | Xor ) Conjunction)*   
Conjunction             := Comparison (And Comparison)*   
Comparison              := BooleanUnit ((Equals| NotEquals) BooleanUnit)*   
Negation                := Not BooleanUnit  
BooleanUnit             := Negation | RelationalExpression | BooleanConstant   
RelationalExpression    := AdditiveExpression ((GreaterThan | GreaterOrEqualTo | LowerThan | LowerOrEqualTo) AdditiveExpression)?  
AdditiveExpression      := MultiplicativeExpression ((Addition | Substraction) MultiplicativeExpression)*  
MultiplicativeExpression:= UnaryExpression (Multiplication UnaryExpression)*  
UnaryExpression         := (Addition | Substraction)? ("(" Expression ")" | IntegerConstant | Identifier )  
And                     := "and" | "&&"  
Or                      := "or" | "||"  
Xor                     := "xor" | "^"  
Implies                 := "=&gt;"  
Equals                  := "=" | "=="  
NotEquals               := "/=" | "!="  
Not                      := "not" | "!"  
GreaterThan             := ">"  
GreaterOrEqualTo        := ">="  
LowerThan               := "<"  
LowerOrEqualTo          := "<="  
Addition                := "+"  
Substraction            := "-"  
Multiplication          := "*"  
IntegerConstant         := ["0"-"9"]+  
BooleanConstant         := "true" | "false"  
Identifier              := ["_","a"-"z","A"-"Z"](["_","a"-"z","A"-"Z", "0"-"9"])*
ResponsibilityAction   := Statement+ 
Statement              := Assignment | CompoundStatement  | IfStatement 
Assignment             := Identifier AssignmentOperator Expression StatementTerminator 
CompoundStatement      := "{" Statement* "}" 
IfStatement            := If Expression Statement (Else Statement)?  
AssignmentOperator     := "=" | ":=" 
If                     := "if" 
Else                   := "else" 
StatementTerminator    := ";" 

Examples

  1. Condition Examples
VariableX  
VariableX && VariableY  
(VariableX && !(VariableX || VariableY)) => true  
(IntegerVariableA+IntegerVariableB)*2 <= -10  
_x - 3 == 0  
CurrentState == BLOCKED /* assuming a user-defined enumeration containing BLOCKED exists, and CurrentState is defined of the same type */ 
  1. Responsibility Examples
if (-x - 3 == 0)    { // comments are allowed.
       VariableX=true;
       CurrentState=BLOCKED;
    } 
else {
      VariableX=(-x+3 == 0);
      VariableY=true;
    }  
IntegerVariableB=IntegerVariableB+15; 

Scenario children

Start Points

End Points

Variable initializations, preconditions and postconditions

Included Scenarios

Executing a Scenario

Detecting Problems

Scenario Traversal Preferences

jucmnav_traversalprefs.jpg

Part VI MSC Viewer

MSC.png jucmnav_exportprefs.jpg

Exporting MSC images

Part VII Static Semantics Checking Tool

jUCMNav allows modellers to perform static verification on URN models based on user-defined rules. Rules are described in the Object Constraint Language (OCL). They are invariants described in terms of the metaclasses found in jUCMNav's metamodel. This functionality is available on jUCMNav version 3.1 and above.

Creating a rule

Utility One: ancestorSet(current:Set(ComponentRef)):Set(ComponentRef)=
         let oneStep:Set(ComponentRef)= current->iterate(ar; result : Set(ComponentRef) = Set{} |
            ar.contDef.contRefs->union( if ar.parent->notEmpty() then ar.parent->asSet() else Set{} endif)
                ->;collect(o|o.oclAsType(ComponentRef))-&gt;asSet()
             )
         in
         if current->size() < current->union(oneStep)->size()
            -- The set gets bigger
         then 
            ancestorSet(current->union(oneStep))
         else
            current
         endif 

Utility Two: ancestors():Set(ComponentRef)= ancestorSet(
       if self.parent->notEmpty() then self.parent.contDef.contRefs->union(
               self.parent->asSet() )->collect(o|o.oclAsType(ComponentRef))->asSet()
       else
                 Set{}
       endif ) 

Grouping a rule

Enabling/disabling rules

staticVerif.png

Running a check/verification

Exporting/importing a rule

Part VIII Key Performance Indicators

As of version 3.0, jUCMNav supports extensions to model Key Performance Indicators (KPI) to provide business process monitoring and performance management capabilities, as well as enabling the alignment of processes and goals.

KPI.png

List of Key Performance Indicators view

Key Performance Indicators view

I Attachment Action Size Date Who Comment
pngpng ReportGen_Export_Page1.png manage 40.5 K 05 Nov 2012 - 13:17 Jean Francois Seguin Screenshot of the first page of the Report Wizard
pngpng ReportGen_Export_Page2html.png manage 38.5 K 05 Nov 2012 - 13:18 Jean Francois Seguin Screenshot of the second page of the Report Wizard (when HTML is selected as the Report type)
pngpng ReportGen_Export_Page2pdf.png manage 38.5 K 05 Nov 2012 - 13:18 Jean Francois Seguin Screenshot of the second page of the Report Wizard (when PDF is selected as the Report type)
pngpng ReportGen_Prefs.png manage 116.2 K 05 Nov 2012 - 13:15 Jean Francois Seguin Displays the report generation preferences
pngpng Report_GRLStrategyTrend.png manage 27.8 K 05 Nov 2012 - 23:39 Alexandre Hamel Screenshot of an example of GRL Strategy trends
pngpng URNlink-creation-dialog.png manage 33.2 K 09 Mar 2012 - 17:59 Andrew Miga URN Link creation dialog
pngpng URNlinks-menu-expanded.png manage 99.3 K 01 May 2012 - 21:11 Daniel Amyot URN Links popup menu for Intentional Element
pngpng algorithm_selection.png manage 42.4 K 12 Jul 2011 - 23:57 Hao Luo algorithm_selection
pngpng bottom-up.png manage 16.4 K 14 Jul 2011 - 23:34 Hao Luo  
pngpng c1.png manage 10.4 K 19 Jul 2011 - 23:18 Hao Luo  
pngpng c2.png manage 9.7 K 19 Jul 2011 - 23:18 Hao Luo  
pngpng c3.png manage 9.6 K 19 Jul 2011 - 23:18 Hao Luo  
pngpng c4.png manage 9.0 K 19 Jul 2011 - 23:19 Hao Luo  
pngpng generic-task.png manage 14.2 K 14 Jul 2011 - 23:45 Hao Luo  
pngpng initialized.png manage 16.0 K 14 Jul 2011 - 23:38 Hao Luo  
pngpng metadataIndicators.png manage 19.6 K 21 Apr 2009 - 14:58 Daniel Amyot Metadata, stereotype, and URN link indicators
pngpng top-down-task.png manage 14.2 K 14 Jul 2011 - 23:43 Hao Luo  
pngpng top-down.png manage 14.6 K 14 Jul 2011 - 23:36 Hao Luo  
pngpng unsolvable.png manage 14.7 K 14 Jul 2011 - 23:40 Hao Luo