## Viewpoint

## Definition

A viewpoint is a software perspective with all the conventions for constructing and using it.

## Motivation

The notion of viewpoint is introduced to decouple the generation concerns from the logic of generation itself realized by a activities (factory components, tasks). For instance, instead of declaring a mapping in code, it is explicitly declared in a mapping viewpoint with a mapping model. A generation can use several complementary viewpoints. Conversely, all the complementary viewpoints must cover all the generation concerns.

Examples of viewpoints:

- Model to model mapping (e.g., eCore-to-ecore, ecore-to-UML mappings)
- Generation with patterns
- DSL (Domain-Specific Language)
- Functional description
- Non-functional description (e.g., performance, safety, security)
- Architecture decisions
- Software product line decisions
- Deployment
- Licensing

The structure of a specific viewpoint is presented in its own section. This section develops the generic concept of viewpoint and its relationship with the IEEE 1471-2000 [1] and ISO/IEC WD3 42010 - IEEE P42010/D3 [2] standards. The purpose of a viewpoint is to explicitly describe generation specifications and decisions. A viewpoint actually translates a generation concern and helps a software actor to express or understand a part of the generation description, and this without being polluted by implementation details. Regarding the software architecture description, generation description by viewpoint becomes a sub-part of the software architecture description.

## Structure

A viewpoint implements a software perspective with its own rationale, i.e. a purpose, choices and decisions, and practices. Several viewpoints can mutually implement the same perspective. For instance, the generation of a tool infrastructure requires mapping, non-functional (e.g., persistence), deployment viewpoints. A viewpoint is instatiated and stored in a model. The metamodel of this model formalizes a language, typically expressed with a DSL. Then, all the viewpoints jointly formalized the software architecture from the generation consideration.

Figure 1. Viewpoint Structure

## Extensibility

The list of viewpoints is variable with the project concerns. This implies that the structure where the viewpoints are described must be extensible and to meet evolution of generation needs.

[1] IEEE Standard 1471-2000, IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, 21 September, 2000.
[2] ISO/IEC WD3 42010, IEEE P42010/D3, Systems and software engineering - Architectural description, 2008-09-14.