A viewpoint is a perspective of software generation with all conventions for constructing and using it.
The notion of viewpoint is introduced to decouple the generation concerns from the logic of generation itself realized by a factory. For instance, instead of declaring a mapping in code, it is explicitly declared in a mapping viewpoint with a mapping model. A factory uses all the viewpoints necessary to perform its generation. Then, the set of complementary viewpoints must cover all the generation concerns for the involved assets during the generation, and this for the complete lifecycle of each asset. This set of viewpoints is extensible in order to meet evolution of generation needs.
Examples of viewpoints:
The structure of a specific viewpoint is presented in its own section. This section develops the generic concept of viewpoint and is to be related to 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 an actor of the software factory tool 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.
A viewpoint implements a software perspective (e.g., producing a tool infrastructure) with its own rationale, that is 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, and typically a DSL. Then, all the viewpoints jointly formalized the software architecture from the generation consideration.
Figure 1. Viewpoint Structure