Title: Domain Engineering
1Domain Engineering
- Silvio Romero de Lemos Meira
- Eduardo Santana de Almeida
- silvio_at_cesar.org.br
- esa2_at_cin.ufpe.br
2Based on
Generative Programming Methods, Tools, and
Applications by Krzysztof Czarnecki, Ulrich
Eisenecker
3Agenda
- Domain Engineering
- Concept
- Components
- Steps
- Key Concepts
- Features and Feature Models
- The Importance
- Example
- Commonality and Variability
4What is Domain Engineering?
- Domain Engineering (DE) is the activity of
collecting, organizing, and storing past
experience in building systems or parts of
systems in a particular domain in the form of
reusable assets, as well as providing an
adequate means for reusing these assets when
building (i.e., retrieval, qualification,
dissemination, adaptation, assembly, and so on)
new systems. - Steps
- Domain Analysis
- Domain Design
- Domain Implementation
5Software Development based on DE
Domain Engineering
System Family Architecture
Domain knowledge
Domain Model
Domain Analysis
Domain Design
Domain Implem.
Domain-specific languages Components Generators
New Requirements
Custom Development
Custom Design
New Requirements
Customer Needs
Requirements Analysis
Product Configuration
Integration and Test
Features
Product Configuration
Product
Application Engineering
6Domain Engineerings Components
Domain Engineering Process Component Main Purpose
Domain Analysis Domain scooping and defining a set of reusable, configurable requirements for the systems in the domain
Domain Design Developing a common architecture for the system in the domain and devising a production plan
Domain Implementation Implementing the reusable assets, for example, reusable components, domain-specific languages, generators, a reuse infrastructure, and a production plan
7Domain Analysis
- Purpose
- Select and define the domain of focus
- Collect the relevant domain information and
integrate it into a coherent domain model - Sources of domain information
- Existing systems, domain experts, textbooks,
experiments.....
8Domain Model
- A domain model is an explicit representation of
the common and the variable properties of the
system in a domain, the semantics of the
properties and domain concepts, and the
dependencies between the variable properties - Domain models components
- Domain Definition
- Defines
- the scope of a domain
- existing systems
- rationale for including or excluding a given
system. - Domain Lexicon
- Domain vocabulary
- Concept models
- Concepts descriptions (object diagrams,
interaction, state.) - Feature models
9Domain Design and Domain Implementation
- Purpose
- To develop an architecture for the family of
systems in the domain and to devise a production
plan - Input Application Engineering
10Concepts
- Domain
- Infinite
- Domain as the real world
- An area of knowledge or activity characterized by
a set of concepts and terminology understood by
practitioners in that area - Domain as a set of systems
- knowledge real world How to build software
systems - Domain An area of knowledge
- Scoped to maximize the satisfaction of the
requirements of its stakeholders - Includes a set of concepts and terminology
understood by practitioners in that area - Includes the knowledge of how to build software
systems in that area
11Domain Scope and Scoping
- Horizontal scope
- How many different systems are in the domain?
- Vertical scope
- Which parts of these systems are in the domain?
- Encapsulated x Diffused domains
12Relationships between domains
- A is contained in B
- A uses B
- A is analogous to B
13Features and Feature Model
- Feature
- An end-user-visible characteristic of a system
- A distinguishable characteristic of a concept
that is relevant to some stakeholder of the
concept - Elements
- Feature diagram
- Feature definitions
- Composition rules
- Rationale for features
14Example
Car
Optional Feature
Mandatory Features
Transmission
Horsepower
Air Conditioning
Composition rule Air Conditioning requires
horsepower gt100
Alternative Features
Automatic
Manual
Rationale Manual more Fuel efficient
15Feature Modeling The importance
- Reusable software
- Variability
- Key technique
- To Identity and capture variability
- To avoid
- Relevant features and variations points are not
included in the reusable software - Many features and variations points are included
but never used complexity, costs
16Feature Models
- Represents the common and the variable features
of concept instances and the - Dependencies between the variable features
- Elements
- Feature Diagram
- Semantic descriptions of each features
- Client programs
- Exemplar systems
- Constraints
- Priorities
17Feature Diagrams
- Mandatory Features
- Optional Features
- Alternative Features
18Mandatory Features
C
f1
f2
f4
f3
Feature set C, f1, f2, f3, f4
19Optional Features
C
f1
f2
f3
Feature set C , C, f1, C, f1, f3, C, f2,
C, f1, f2, C, f1, f3, f2
20Alternative Features
C
f1
f2
f3
f4
f5
Feature set C, f1, f3 , C, f1, f4, C, f1,
f5, C, f2, f3, C, f2, f4, C, f2, f5
21Expressing Commonality and Variability
- Commonality
- What features are common to all instances of the
concept? focus on concept - What features are common to all instances of the
concept that have that particular feature? focus
on feature - Variability
- Use of optional or alternative features
- Variation points (nodes)
22Questions ?
23Next class Cap 02.