Muutke küpsiste eelistusi

E-raamat: Engineering Modeling Languages: Turning Domain Knowledge into Tools

(RWTH Aachen University and Fraunhofer FIT, Germany), (Inria, France), (University of Rennes 1, France), (Colorado State University, USA), (University of Rennes 1, France), (CSIRO AEHRC, Australia)
Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 58,49 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Written by foremost experts in the field, Engineering Modeling Languages provides end-to-end coverage of the engineering of modeling languages to turn domain knowledge into tools.

The book provides a definition of different kinds of modeling languages, their instrumentation with tools such as editors, interpreters and generators, the integration of multiple modeling languages to achieve a system view, and the validation of both models and tools. Industrial case studies, across a range of application domains, are included to attest to the benefits offered by the different techniques. The book also includes a variety of simple worked examples that introduce the techniques to the novice user.

The book is structured in two main parts. The first part is organized around a flow that introduces readers to Model Driven Engineering (MDE) concepts and technologies in a pragmatic manner. It starts with definitions of modeling and MDE, and then moves into a deeper discussion of how to express the knowledge of particular domains using modeling languages to ease the development of systems in the domains.

The second part of the book presents examples of applications of the model-driven approach to different types of software systems. In addition to illustrating the unification power of models in different software domains, this part demonstrates applicability from different starting points (language, business knowledge, standard, etc.) and focuses on different software engineering activities such as Requirement Engineering, Analysis, Design, Implementation, and V&V.

Each chapter concludes with a small set of exercises to help the reader reflect on what was learned or to dig further into the examples. Many examples of models and code snippets are presented throughout the book, and a supplemental website features all of the models and programs (and their associated tooling) discussed in the book.

Arvustused

"If you are a senior researcher or a newcomer to modeling languages, this book will give you what you need to go further and to understand why and how to use them. The book organization and its redline examples are really appropriate for different experience levels of engineers or academics, you just have to select right chapters to define your own needs." Patrick Farail, Institute of Technology Antoine de Saint Exupéry, France

List of Figures
xv
List of Exercises
xix
List of Sidebars
xxi
List of Listings
xxiii
Preface xxv
Acknowledgments xxxi
Chapter 1 What's a Model?
1(18)
1.1 Introduction
2(2)
1.2 Modeling in Science
4(1)
1.3 Modeling in Engineering
5(4)
1.4 Illustrative Example: Cellular Automata
9(5)
1.4.1 Cellular Automaton Topology
10(1)
1.4.2 Cellular Automaton Evolution Rules
10(1)
1.4.3 Modeling Cellular Automata
11(3)
1.5 Semantic Foundations of MDE: the Meaning of Models
14(3)
1.5.1 Basics of Denotational Semantics
14(1)
1.5.2 Underspecification and Interpretation in the Real World
15(1)
1.5.3 Operations on Models
16(1)
1.6 Exercises
17(2)
Chapter 2 What's a Modeling Language?
19(26)
2.1 Why We Need Modeling Languages
20(1)
2.2 Concrete Syntax
21(9)
2.2.1 Textual Concrete Syntax
22(4)
2.2.2 Graphical Concrete Syntax: Box-and-Line Diagrams
26(2)
2.2.3 Graphical Concrete Syntax: Tabular Notations
28(1)
2.2.4 Graphical Concrete Syntax: Trees
29(1)
2.3 Abstract Syntax
30(5)
2.3.1 Abstract Syntax of Textual Languages
31(1)
2.3.2 Abstract Syntax of Graphical Languages
32(1)
2.3.3 Concrete and Abstract Syntax Relationship
33(2)
2.4 Semantics of a Modeling Language
35(8)
2.4.1 Denotational Semantics
36(5)
2.4.2 Operational Semantics
41(2)
2.5 Exercises
43(2)
Chapter 3 Metamodeling with MOF and Ecore
45(22)
3.1 Metamodel and Meta-Language
46(3)
3.2 Metamodel, Meta-Language, Language Workbench, and Meta-Metamodel
49(2)
3.3 Meta-Object Facility (MOF)
51(3)
3.4 Ecore and EMF
54(4)
3.5 Representations for Machine Consumption
58(4)
3.5.1 Textual Representations for Machine Consumption
60(1)
3.5.2 Database Representation
61(1)
3.6 Illustrative Example: Metamodels for the Cellular Automaton
62(2)
3.7 Exercises
64(3)
Chapter 4 Metamodeling with OCL
67(32)
4.1 The Object Constraint Language
68(8)
4.1.1 Invariant and Its Context
69(1)
4.1.2 Basic Operations
69(2)
4.1.3 Collections
71(2)
4.1.4 Quantification, Collection, Selection
73(1)
4.1.5 Navigation along Associations
74(1)
4.1.6 Derived Attributes
75(1)
4.2 Advanced Features of OCL
76(4)
4.2.1 Nature of OCL: First Order and Expression Language?
76(1)
4.2.2 Specifying Operations in OCL
77(2)
4.2.3 Further Concepts of OCL
79(1)
4.2.4 OCL Used at Different Modeling Levels
79(1)
4.3 Usage of OCL for MOF
80(16)
4.3.1 OCL for Context Conditions
81(2)
4.3.1.1 Illustrative Example: Geometry Constraints
83(2)
4.3.1.2 Illustrative Example: Enhanced Versions of OCL
85(1)
4.3.1.3 Illustrative Example: Filter Constraints
86(1)
4.3.1.4 Illustrative Example: Language Constraints from Metamodel Composition
86(3)
4.3.2 OCL for the Execution Domains (Semantics)
89(1)
4.3.2.1 Illustrative Example: Evaluating Expressions
89(2)
4.3.2.2 Illustrative Example: Describing the Effect of a Regular Geometry
91(2)
4.3.3 Conjunct Use of MOF and OCL
93(3)
4.4 Exercises
96(3)
Chapter 5 Building Editors and Viewers
99(20)
5.1 Introduction
100(1)
5.2 Generic versus Specific Concrete Syntax
101(1)
5.3 Visual Representations for Human Reading
102(1)
5.4 Tree View
103(5)
5.4.1 Generic Tree View
104(1)
5.4.2 Customization of the Tree View
105(1)
5.4.3 Illustrative Example: Tree Editor for CAIR
106(2)
5.5 Diagram View (Box and Line)
108(2)
5.5.1 Generic Diagram View
109(1)
5.5.2 Customization of the Diagram View
109(1)
5.5.3 Illustrative Example: Graphical Editor for Universe Models
110(1)
5.6 Textual View
110(5)
5.6.1 Generic Textual View
113(1)
5.6.2 Customization of the Textual View
113(1)
5.6.3 Illustrative Example: A Textual Editor for Cellular Automation Evolution Rules
114(1)
5.7 Tabular View
115(2)
5.8 Other Views
117(2)
Chapter 6 Model Transformation: from Contemplative to Productive Models
119(16)
6.1 Motivation
120(1)
6.2 Overview of Model Transformations
121(5)
6.2.1 Model-to-Text vs. Model-to-Model
122(1)
6.2.2 Homogeneous vs. Heterogeneous
122(1)
6.2.3 Declarative vs. Imperative
122(3)
6.2.4 Unidirectional vs. Bidirectional
125(1)
6.2.5 Traceability
125(1)
6.3 Kermeta: An Executable Metamodeling Approach
126(7)
6.3.1 Kermeta as an Ecore Extension
126(1)
6.3.2 Kermeta as an Xtend Extension
127(1)
6.3.3 Kermeta as an OCL Extension
127(1)
6.3.4 Kermeta as a Metamodel Integration Platform
128(1)
6.3.5 Examples with Kermeta
129(4)
6.3.6 Scaling Up Transformations in Kermeta
133(1)
6.4 Exercises
133(2)
Chapter 7 Interpreter
135(18)
7.1 Ingredients for Interpretation
136(2)
7.1.1 Runtime Data
136(1)
7.1.2 Computational Steps
137(1)
7.2 Design Pattern Interpreter
138(1)
7.3 Combining the Interpreter and Visitor Design Patterns
139(7)
7.3.1 Approach Overview
139(1)
7.3.2 Illustrative Example: Interpreter for Cellular Automaton Using a Visitor
140(6)
7.4 Aspect Weaving with Static Introduction
146(6)
7.4.1 Approach Overview
146(1)
7.4.2 Illustrative Example: Operational Semantics for Cellular Automaton Using Static Introduction
147(2)
7.4.3 Adding Runtime Data Using Static Introduction
149(1)
7.4.4 Modeling the Interpreter Runtime Data
150(2)
7.5 Exercises
152(1)
Chapter 8 Refactoring and Refinement
153(22)
8.1 Foundations
154(5)
8.1.1 Refactorings
154(2)
8.1.2 Refinement
156(1)
8.1.3 Refinements, Refactorings, and Compositions
157(2)
8.1.4 Testing Refactorings and Refinements
159(1)
8.2 Applying Model Refactoring
159(7)
8.2.1 Illustrative Example: CAIR-Lite Refactoring
160(2)
8.2.2 Illustrative Example: CAER Refactoring
162(4)
8.3 Applying Model Refinement
166(7)
8.3.1 Example and Caveats: Data Structure Refinement
166(3)
8.3.2 Example: Data Structure Refinement with OCL
169(1)
8.3.3 Example: Behavioral Refinement with OCL
170(1)
8.3.4 Example: Behavioral Refinement with State Machines
171(2)
8.4 Exercises
173(2)
Chapter 9 Generators
175(36)
9.1 Usefulness of Text and Code Generation
176(3)
9.2 Model-to-Text Transformations
179(10)
9.2.1 General Purpose Transformation Languages for Text Generation
180(1)
9.2.2 Illustrative Example: Straightforward Approach
181(3)
9.2.3 Template-Based Languages
184(1)
9.2.4 Illustrative Example: Template Approach
185(3)
9.2.5 Pretty Printing
188(1)
9.2.6 Mixing All Approaches
189(1)
9.3 Code Generation
189(2)
9.3.1 Illustrative Example: Code Generation
190(1)
9.4 Documentation Generation
191(4)
9.4.1 Illustrative Example: Documentation Generation for a Universe Model
193(2)
9.5 Model Generation
195(4)
9.5.1 Illustrative Example: Generation of VM Model from Initialization Rules
196(3)
9.6 Test Generation: Model-Based Validation and Verification
199(10)
9.6.1 Introduction
199(1)
9.6.2 Model-Based Testing
200(1)
9.6.2.1 Formal Verification of Properties
200(1)
9.6.2.2 Intensive Simulation
201(1)
9.6.2.3 Testing
201(1)
9.6.3 Automatic Test Generation: A Use Case-Driven Approach
202(1)
9.6.3.1 Principle of the Approach
202(3)
9.6.3.2 Simulating the Use Cases
205(1)
9.6.3.3 Exhaustive Simulation and Transition System
205(2)
9.6.3.4 Generating Test Cases from Test Objectives and Sequence Diagrams
207(2)
9.7 Exercises
209(2)
Chapter 10 "Variability Management
211(22)
10.1 Context of Software Product Lines
212(1)
10.2 Modeling Variability with Feature Diagrams
213(2)
10.3 Advanced Variability Modeling Methods
215(1)
10.4 Amalgamated Approach
216(2)
10.4.1 Annotate a Base Model by Means of Ad hoc Extensions
216(1)
10.4.2 Combine a Reusable Variability Metamodel with Different Domain Metamodels
217(1)
10.5 Separating the Assets and the Variability Concern
218(5)
10.6 Exploitation of Variability Models
223(8)
10.6.1 Automated Analysis of Feature Models
223(2)
10.6.2 Multi-Views and Compositional Approaches
225(1)
10.6.3 Product Derivation
226(1)
10.6.3.1 Derivation in Amalgamated Approaches
226(2)
10.6.3.2 Product Derivation in Separated Approaches: The CVL Example
228(1)
10.6.4 Test Generation
229(2)
10.7 MDE for SPL: Wrapup
231(2)
Chapter 11 "Scaling Up Modeling
233(28)
11.1 Heterogeneous Modeling
234(3)
11.2 Model Merging and Weaving
237(15)
11.2.1 Models and Aspects
238(2)
11.2.2 Design and Aspect Weaving
240(1)
11.2.3 Weaving Aspects at Model Level
241(2)
11.2.4 Weaving Aspects in Sequence Diagrams
243(2)
11.2.5 Weaving More than One Aspect: The Detection Problem
245(2)
11.2.6 Weaving More than One Aspect: The Composition Problem
247(1)
11.2.7 Discussion
248(2)
11.2.8 Building Project-Specific Aspect Weavers with Kermeta
250(1)
11.2.9 Merging and Weaving: Wrapup
251(1)
11.3 Language Reuse with Model Typing
252(4)
11.3.1 Limits of the Conformance Relations
253(1)
11.3.2 Model Typing
254(2)
11.4 Model Slicing
256(2)
11.5 Software Language Engineering
258(2)
11.6 Exercises
260(1)
Chapter 12 "Wrapup: Metamodeling Process
261(12)
12.1 Actors
262(1)
12.2 Tools to Build
262(1)
12.3 Metamodeling Process
263(5)
12.4 Metamodeling Process Variants
268(1)
12.5 Metamodeling Guidelines
269(3)
12.5.1 Decompose Large Transformations into Smaller Ones
270(1)
12.5.2 Illustrative Example: Reusing Existing Smaller Transformations
270(1)
12.5.3 Illustrative Example: Using a Transformation Generator
270(1)
12.5.4 Illustrative Example: Reducing Transformation Complexity
271(1)
12.6 Illustrative Example: Process Followed to Build Cellular Automaton Tooling
272(1)
Chapter 13 "Language Engineering: The Logo Example
273(20)
13.1 Introduction
273(1)
13.2 Metamodeling Logo
274(1)
13.3 Weaving Static Semantics
275(5)
13.3.1 The Object Constraint Language
275(3)
13.3.2 Expressing the Logo Static Semantics in OCL
278(1)
13.3.3 Adding the Logo Static Semantics to Its Metamodel
278(2)
13.4 Weaving Dynamic Semantics to Get an Interpreter
280(6)
13.4.1 Logo Runtime Model
280(2)
13.4.2 Operational Semantics
282(2)
13.4.3 Getting an Interpreter
284(2)
13.5 Compilation as a Kind of Model Transformation
286(2)
13.6 Model-to-Model Transformation
288(2)
13.7 Concrete Syntax
290(2)
13.8 Exercises
292(1)
Chapter 14 "Model-Driven Engineering of a Role-Playing Game
293(26)
14.1 Introduction
294(1)
14.2 Metamodeling the SRD 3.5
295(12)
14.2.1 Main Concepts of the SRD 3.5
295(4)
14.2.2 Metamodeling the SRD Rules
299(1)
14.2.3 Implementing the SRD Metamodel
300(1)
14.2.3.1 The Core Package
300(2)
14.2.3.2 The Expression Package
302(1)
14.2.3.3 The Action Package
303(1)
14.2.3.4 The Bonus Package
303(2)
14.2.4 Example: Creating a Tiny Rule Set
305(2)
14.3 Weaving Dynamic Semantics to Get an Interpreter
307(2)
14.3.1 SRD Runtime Model
307(1)
14.3.2 Mapping the Abstract Syntax to the Runtime Model
308(1)
14.4 Compilation of a Web-Based Editor
309(4)
14.4.1 Requirements
309(1)
14.4.2 Overview of JHipster
309(2)
14.4.3 Targeting JHipster
311(2)
14.5 Testing a Rule Set
313(4)
14.5.1 Random Intensive Testing
314(1)
14.5.2 Exhaustive Testing
315(1)
14.5.3 Pairwise Testing
316(1)
14.6 Exercises
317(2)
Chapter 15 "Civil/Construction Engineering: The BIM Example
319(22)
15.1 Introduction
320(3)
15.2 Abstract Syntax of Buildings
323(1)
15.2.1 Industry Foundation Classes
323(1)
15.3 Model Storage: Large Models
324(2)
15.4 Concrete Syntax
326(1)
15.5 Case Study: Clash Detection
327(1)
15.6 Case Study: Quantity Take-Off
328(13)
15.6.1 Background: Description of the Domain
328(1)
15.6.2 Automated Estimator: Buildings and Bills
329(2)
15.6.2.1 The Intelligent Building Model Language
331(2)
15.6.2.2 The Bill of Quantities Language
333(1)
15.6.3 The Take-Off Rules Language and Tool Support
334(1)
15.6.3.1 Take-Off Rules
335(2)
15.6.3.2 Tool Support for Quantity Take-Off
337(1)
15.6.3.3 Traceability and Debugging
338(3)
References 341(18)
Index 359
Benoit Combemale, Robert France, Jean-Marc Jézéquel, Bernhard Rumpe, James Steel, Didier Vojtisek