310 likes | 705 Views
Domain Engineering. Silvio Romero de Lemos Meira Eduardo Santana de Almeida silvio@cesar.org.br esa2@cin.ufpe.br. Based on. Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki, Ulrich Eisenecker. Agenda. Domain Engineering Concept Components Steps
E N D
Domain Engineering Silvio Romero de Lemos Meira Eduardo Santana de Almeida silvio@cesar.org.br esa2@cin.ufpe.br
Based on Generative Programming: Methods, Tools, and Applications by Krzysztof Czarnecki, Ulrich Eisenecker
Agenda • Domain Engineering • Concept • Components • Steps • Key Concepts • Features and Feature Models • The Importance • Example • Commonality and Variability
What 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
Software Development based on DE Domain Engineering SystemFamilyArchitecture 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
Domain 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.....
Domain 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 model’s 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 • Concept’s descriptions (object diagrams, interaction, state….) • Feature models
Domain 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
Concepts • 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
Domain 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
Relationships between domains • A is contained in B • A uses B • A is analogous to B
Features 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
Example Car Optional Feature Mandatory Features Transmission Horsepower Air Conditioning Composition rule: “Air Conditioning” requires “horsepower” >100 Alternative Features Automatic Manual Rationale “Manual” more Fuel efficient
Feature 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}
Feature 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
Feature Diagrams • Mandatory Features • Optional Features • Alternative Features
Mandatory Features C f1 f2 f3 f4 Feature set {C, f1, f2, f3, f4}
Optional Features C f1 f2 f3 Feature set{C} , {C, f1}, {C, f1, f3}, {C, f2}, {C, f1, f2}, {C, f1, f3, f2}
Alternative 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}
Expressing 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)