## Asset

## Definition

An asset is a software artifact defined and playing a role in a software development process.

## Motivation

The purpose of a factory component is to automate production of software artifacts from input software artifacts. The term "Asset" is a generic term to designate any software artifact (e.g., a model, a document, code, a framework) used and produce by a factory component.

## Structure

An asset conforms to an asset type (e.g., a model, a language, a framework, a tool) defined in a language. This language is represented or not by a model. The list of asset types is open, however the major ones are: basic types (e.g., Integer, Boolean, etc.), model, (general or specific) language, framework, library, component and tool. Complex assets are broken down into assets. Complex assets can be built at once or at different stages across a software process. For instance, generation of tool code and configuration files of this tool can be built simultaneously or by several factory components.

While an asset type is a logical representation, an asset has a physical representation (e.g., a web site asset is materialized by a set of html files). This physical representation must be taken into account during a generation. For executable assets, an asset behavior conforms to an execution semantics on a specific execution platform.

Software product line engineering differentiates two kinds of asset: reusable assets and products. Reusable assets are usable or not as is, or partially, and need to be customized to give products. In software engineering, a product is for instance a software application.

Figure 1. Example of assets

## In EGF

An Orchestration used input/output data. Those data have a type defined 1) in the extendable default EGF basic type list, or 2) in a viewpoint (e.g., a domain model).