A viewpoint definition is a kind of requirement definition that frames the concerns of one or more stakeholders regarding information about a modeled system or domain of interest. The subject of a viewpoint is a view that is required to address the stakeholder concerns. A viewpoint frames the concerns that will be addressed by a view that satisfies the viewpoint. A viewpoint can be specified with assumed and required constraints. 

Creating viewpoint usage and definition elements

Creating viewpoint usage and definition elements via the Textual Editor

To create viewpoint usage and definition elements via the Textual Editor


  1. In the Textual Editor, place the cursor where you want to create the element and declare the keyword: 
    1.  viewpoint def for a viewpoint definition.

    2.  viewpoint for a viewpoint usage.
  2. Specify the element name.
  3. Specify the viewpoint's features in the element body.
  4. Click the Synchronize button.

    concern 'system breakdown' {
        stakeholder se : 'Systems Engineer';
        stakeholder ivv : 'IV&V';
    }
    concern modularity {
        stakeholder se : 'Systems Engineer';
    }
    viewpoint def 'System Structure Perspective' {
        frame 'system breakdown';
        frame 'modularity';
        require constraint {
            doc
            /* A system structure view shall show the hierarchical part decomposition of a system, starting with a specified root part. */
        }
    }

Auto-creating viewpoint definition elements via the Extract Definition command

To auto-create viewpoint definition elements via the Extract Definition command


Specifying viewpoints

Framing concerns for viewpoints

It is typical for a viewpoint definition to be structured as framing a set of stakeholder concerns regarding information about a modeled system or domain of interest. The viewpoint then models the requirement for the view in order to address the framed concerns.

Textual notation example of a viewpoint definition with framed concern

concern 'system breakdown' {
    stakeholder se : 'Systems Engineer';
    stakeholder ivv : 'IV&V';
}

viewpoint def 'System Structure Perspective' {
    frame 'system breakdown';
}

Specifying assumed and required constraints for viewpoints

A viewpoint can be specified with assumed and required constraints.

  • You can specify assumed and required constraints for viewpoints the same way as for requirements. For procedures on assumed and required constraints creation, see the Requirement constraints page.
Textual notation example of a viewpoint definition with a require constraint

viewpoint def 'System Structure Perspective' {
    require constraint {
        doc
        /* A system structure view shall show the hierarchical
        * part decomposition of a system, starting with a
        * specified root part.
    */
    }
}

Satisfying viewpoints

Since a viewpoint usage is a kind of requirement usage, a view usage can be declared to satisfy a viewpoint usage using a satisfy requirement usage. However, as a shortcut, any composite viewpoint usage nested in a view definition or usage is asserted to be satisfied by that view.

Textual notation example of a viewpoint usage satisfied by a view definition

view def 'Part Structure View' {
    // This viewpoint is asserted to be satisfied by any instance of the view definition.
    viewpoint vp : 'System Structure Perspective';
    //...
}

Alternatively, a satisfy requirement usage can be used explicitly between a viewpoint and a view. In particular, a satisfy requirement usage for a viewpoint that is nested in a view definition or usage will, by default, have the containing view as its satisfying feature.

Textual notation example of a viewpoint usage satisfied by a view usage

viewpoint 'vehicle structure perspective' : 'System Structure Perspective' {
    subject : Vehicle;
}
view 'vehicle parts view' : 'Part Structure View' {
    // This asserts that the given viewpoint 'vehicle structure perspective' is satisfied by the 'vehicle parts view'.
    satisfy 'vehicle structure perspective';
    // ...
}