An Approach to Maintainable Model Transformations with an Internal DSL

Total Page:16

File Type:pdf, Size:1020Kb

An Approach to Maintainable Model Transformations with an Internal DSL An approach to maintainable model transformations with an internal DSL Master thesis of Georg Hinkel At the Department of Informatics Institute for Program Structures and Data Organization (IPD) Reviewer: Prof. Dr. Ralf Reussner Second reviewer: Prof. Dr. Walther Tichy Advisor: Dr. Lucia Happe Second advisor: Dr. Thomas Goldschmidt Duration:: 1st May 2013 – 31th October 2013 KIT – University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association www.kit.edu I declare that I have developed and written the enclosed thesis completely by myself, and have not used sources or means without declaration in the text. PLACE, DATE ......................................... (Georg Hinkel) iii Abstract In recent years, model-driven software development (MDSD) has gained popularity among both industry and academia. MDSD aims to generate traditional software artifacts from models. This generation process is realized in multiple steps. Thus, before being transformed to software artifacts, models are transformed into models of other metamodels. Such model transformation is supported by dedicated model transformation languages. In many cases, these are entirely new languages (external domain-specific languages, DSLs) for a more clear and concise represen- tation of abstractions. On the other hand, the tool support is rather poor and the transformation developers hardly know the transformation language. A possible solution for this problem is to extend the programming lan- guage typically used by developers (mostly Java or C#) with the re- quired abstractions. This can be achieved with an internal DSL. Thus, concepts of the host language can easily be reused while still creating the necessary abstractions to ease development of model transformations. Furthermore, the tool support for the host language can be reused for the DSL. In this master thesis, NMF Transformations is presented, a frame- work and internal DSL for C#. It equips developers with the ability to specify model transformations in languages like C# without having to give up abstractions known from model transformation standards. Transformation developers get the full tool support provided for C#. The applicability of NMF Transformations as well as the impact of NMF Transformations to quality attributes of model transforma- tions is evaluated in three case studies. Two of them come from the Transformation Tool Contests 2013 (TTC). With these case studies, NMF Transformations is compared with other approaches to model transformation. A further case study comes from ABB Corporate Re- search to demonstrate the advantages of NMF Transformations in an industrial scenario where aspects like testability gain special impor- tance. iii v Zusammenfassung In den letzten Jahren hat sich das Konzept der Modellgetriebenen Softwareentwicklung (MDSD) zunehmend verbreitet. MDSD zielt da- rauf ab, Traditionelle Softwareartefakte aus Modellen zu generieren. Diese Generierung geschieht uber¨ mehrere Stufen, sodass Modelle erst mit Hilfe von Modelltransformationen in andere Modelle transformiert werden. Solche Modelltransformationen werden von dedizierten Mod- elltransformationssprachen unterstutzt,¨ die in vielen F¨allen komplett eigene Sprachen (externe dom¨anenspezifische Sprachen, DSLs) sind. Dies tr¨agt dazu bei, dass Abstraktionen kompakter und klarer repr¨asen- tiert werden k¨onnen. Auf der anderen Seite ist die Werkzeugunter- stutzung¨ meist unzureichend und die Transformationssprache kennen die Sprache nicht. Eine m¨ogliche L¨osung fur¨ dieses Problem ist, mit Hilfe einer internen DSL die fur¨ Modelltransformationen n¨otigen Abstraktionen direkt in die Sprache einzubinden, mit der Entwickler typischerweise arbeiten (in den meisten F¨allen Java oder C#). Dadurch k¨onnen bestehende Konzepte aus der Hostsprache wiederverwendet werden und gleichzeitig Abstrak- tionen geschaffen werden, die die Entwicklung von Modelltransformatio- nen erleichtern. Auf der anderen Seite kann die Werkzeugunterstutzung¨ der Hostsprache teilweise ubernommen¨ werden. In dieser Masterarbeit wird NMF Transformations vorgestellt, das eine interne DSL fur¨ C#, zur Verfugung¨ stellt. Transformationsentwick- lern wird damit die M¨oglichkeit gegeben, Modelltransformationen in C# zu spezifizieren, ohne auf die aus Modelltransformationsstandards bekan- nten Abstraktionen verzichten zu mussen.¨ Transformationsentwickler werden dabei wie aus C# gewohnt von Visual Studio unterstutzt.¨ Die Anwendbarkeit und die Auswirkungen der Sprachgestaltung von NMF Transformations auf Qualit¨atsattribute fur¨ Modelltransforma- tionen wird evaluiert durch drei Fallstudien. Zwei Fallstudien wurden bei dem Transformation Tool Contests 2013 (TTC) eingereicht, um NMF Transformations mit anderen Ans¨atzen vergleichen zu k¨onnen. Eine weitere Fallstudie von ABB Corporate Research wurde bearbeitet, um den Nutzen von NMF Transformations in einem industriellen Um- feld zu demonstrieren, wo Kriterien wie Testbarkeit besondere Bedeu- tung haben. v Contents 1. Introduction 1 1.1. Motivation . .1 1.2. Structure of this Master Thesis . .3 1.3. Contribution . .5 1.4. How to read this thesis . .6 2. Related Work 9 2.1. MTLs with external DSL . .9 2.2. Model Transformation as Graph Transformation . 10 2.3. MTLs with internal DSL . 10 2.4. Comparison of MTLs . 11 2.5. Maintainability of model transformations . 11 3. Foundations 15 3.1. Model-driven software development . 15 3.2. Query-View-Transformation (QVT) . 17 3.2.1. QVT Operational . 17 3.2.2. QVT Relational . 20 3.3. C# language features . 22 3.3.1. Local type inference . 22 3.3.2. Initialization lists and anonymous types . 23 3.3.3. Extension methods . 23 3.3.4. Lambda-expressions (Closures) . 23 3.3.5. Monads . 24 3.4. Quality Attributes of Model Transformations . 26 3.4.1. Understandability . 26 3.4.2. Modifiability . 27 3.4.3. Reusability . 27 3.4.4. Modularity . 27 3.4.5. Completeness . 27 3.4.6. Consistency . 28 3.4.7. Conciseness . 28 4. Example Transformations 29 4.1. Finite State Machines to Petri Nets . 29 4.2. People to Family Relations . 31 5. Supporting model transformation with dedicated languages 33 5.1. The domain of model transformation . 33 5.2. MTLs as External DSLs . 35 5.3. MTLs as Internal DSLs . 36 5.4. Conclusions . 38 vii viii Contents 6. Model Transformation Problems 39 6.1. Correspondence & tracing . 39 6.1.1. Problem description . 39 6.1.2. Solutions in general purpose code . 40 6.1.3. Solutions in QVT-O and QVT-R . 40 6.2. Cyclic object models . 40 6.2.1. Problem description . 40 6.2.2. Solutions in general purpose code . 40 6.2.3. Solutions in QVT-O and QVT-R . 40 6.3. Inheritance . 41 6.3.1. Problem description . 41 6.3.2. Solutions in general purpose code . 41 6.3.3. Solutions in QVT-O and QVT-R . 42 6.4. Patterns . 42 6.4.1. Problem description . 42 6.4.2. Solutions in general purpose code . 42 6.4.3. Solutions in QVT-O and QVT-R . 42 6.5. Optimization Tasks . 42 6.5.1. Problem description . 42 6.5.2. Solutions in general purpose code . 43 6.5.3. Solutions in QVT-O and QVT-R . 43 6.6. Higher-Order Transformations . 44 6.6.1. Problem description . 44 6.6.2. Solutions in general purpose code . 44 6.6.3. Solutions in QVT-O and QVT-R . 45 6.7. Transformation Composition . 45 6.7.1. Problem description . 45 6.7.2. Solutions in general purpose code . 45 6.7.3. Solutions in QVT-O and QVT-R . 46 6.8. Testing . 46 6.8.1. Problem description . 46 6.8.2. Solutions in general purpose code . 46 6.8.3. Solutions in QVT-O and QVT-R . 47 6.9. Conclusions . 47 7. NMF Transformations 49 7.1. Abstract syntax . 50 7.2. Architecture of NMF Transformations Core ............... 53 7.3. Stages of the transformation . 55 7.3.1. Initialization . 56 7.3.2. Create Patterns . 56 7.3.3. Execute dependencies . 56 7.3.4. Create delayed outputs . 56 7.3.5. Transform . 57 7.3.6. Finish Patterns . 57 7.4. NMF Transformations Language (NTL) . 57 7.4.1. Specifying Transformations . 57 7.4.2. Specifying Transformation Rules . 59 7.4.3. Dependencies between transformation rules . 60 7.4.4. Tracing . 64 7.4.5. Transformation rule instantiation . 67 7.4.6. Relational Extensions . 70 viii Contents ix 7.4.7. Composing Transformations . 73 7.4.8. Testing . 76 7.4.9. Extensibility . 78 7.5. Drawbacks & Future Work . 80 7.5.1. Trace serialization . 80 7.5.2. Change propagation . 81 7.5.3. Bidirectionality . 82 7.5.4. Model synchronization . 82 7.5.5. Graphical syntax . 83 7.5.6. Test case generation . 83 7.5.7. Parallelism . ..
Recommended publications
  • Automatically Detecting ORM Performance Anti-Patterns on C# Applications Tuba Kaya Master's Thesis 23–09-2015
    Automatically Detecting ORM Performance Anti-Patterns on C# Applications Tuba Kaya Master's Thesis 23–09-2015 Master Software Engineering University of Amsterdam Supervisors: Dr. Raphael Poss (UvA), Dr. Giuseppe Procaccianti (VU), Prof. Dr. Patricia Lago (VU), Dr. Vadim Zaytsev (UvA) i Abstract In today’s world, Object Orientation is adopted for application development, while Relational Database Management Systems (RDBMS) are used as default on the database layer. Unlike the applications, RDBMSs are not object oriented. Object Relational Mapping (ORM) tools have been used extensively in the field to address object-relational impedance mismatch problem between these object oriented applications and relational databases. There is a strong belief in the industry and a few empirical studies which suggest that ORM tools can cause decreases in application performance. In this thesis project ORM performance anti-patterns for C# applications are listed. This list has not been provided by any other study before. Next to that, a design for an ORM tool agnostic framework to automatically detect these anti-patterns on C# applications is presented. An application is developed according to the designed framework. With its implementation of analysis on syntactic and semantic information of C# applications, this application provides a foundation for researchers wishing to work further in this area. ii Acknowledgement I would like to express my gratitude to my supervisor Dr. Raphael Poss for his excellent support through the learning process of this master thesis. Also, I like to thank Dr. Giuseppe Procaccianti and Prof. Patricia Lago for their excellent supervision and for providing me access to the Green Lab at Vrije Universiteit Amsterdam.
    [Show full text]
  • De La Torre C. Et
    y i EDITION v2.01 DOWNLOAD available at: https://aka.ms/microservicesebook PUBLISHED BY Microsoft Developer Division, .NET and Visual Studio product teams A division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399 Copyright © 2017 by Microsoft Corporation All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher. This book is provided “as-is” and expresses the author’s views and opinions. The views, opinions and information expressed in this book, including URL and other Internet website references, may change without notice. Some examples depicted herein are provided for illustration only and are fictitious. No real association or connection is intended or should be inferred. Microsoft and the trademarks listed at http://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies. Mac and macOS are trademarks of Apple Inc. The Docker whale logo is a registered trademark of Docker, Inc. Used by permission. All other marks and logos are property of their respective owners. Co-Authors: Editors: Cesar de la Torre, Sr. PM, .NET product team, Microsoft Corp. Mike Pope Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp. Steve Hoag Mike Rousos, Principal Software Engineer, DevDiv CAT team, Microsoft Participants and reviewers: Jeffrey Ritcher, Partner Software Eng, Azure team, Microsoft Dylan Reisenberger, Architect and Dev Lead at Polly Jimmy Bogard, Chief Architect at Headspring Steve Smith, Software Craftsman & Trainer at ASPSmith Ltd. Udi Dahan, Founder & CEO, Particular Software Ian Cooper, Coding Architect at Brighter Jimmy Nilsson, Co-founder and CEO of Factor10 Unai Zorrilla, Architect and Dev Lead at Plain Concepts Glenn Condron, Sr.
    [Show full text]
  • NET Technology Guide for Business Applications // 1
    .NET Technology Guide for Business Applications Professional Cesar de la Torre David Carmona Visit us today at microsoftpressstore.com • Hundreds of titles available – Books, eBooks, and online resources from industry experts • Free U.S. shipping • eBooks in multiple formats – Read on your computer, tablet, mobile device, or e-reader • Print & eBook Best Value Packs • eBook Deal of the Week – Save up to 60% on featured titles • Newsletter and special offers – Be the first to hear about new releases, specials, and more • Register your book – Get additional benefits Hear about it first. Get the latest news from Microsoft Press sent to your inbox. • New and upcoming books • Special offers • Free eBooks • How-to articles Sign up today at MicrosoftPressStore.com/Newsletters Wait, there’s more... Find more great content and resources in the Microsoft Press Guided Tours app. The Microsoft Press Guided Tours app provides insightful tours by Microsoft Press authors of new and evolving Microsoft technologies. • Share text, code, illustrations, videos, and links with peers and friends • Create and manage highlights and notes • View resources and download code samples • Tag resources as favorites or to read later • Watch explanatory videos • Copy complete code listings and scripts Download from Windows Store Free ebooks From technical overviews to drilldowns on special topics, get free ebooks from Microsoft Press at: www.microsoftvirtualacademy.com/ebooks Download your free ebooks in PDF, EPUB, and/or Mobi for Kindle formats. Look for other great resources at Microsoft Virtual Academy, where you can learn new skills and help advance your career with free Microsoft training delivered by experts.
    [Show full text]
  • Nhibernate Reference Documentation
    NHibernate Reference Documentation Version: 5.0 Table of Contents Preface ..........................................................................................................................................viii 1. Quick-start with IIS and Microsoft SQL Server ..........................................................................1 1.1. Getting started with NHibernate .......................................................................................... 1 1.2. First persistent class ........................................................................................................... 2 1.3. Mapping the cat ................................................................................................................. 2 1.4. Playing with cats ................................................................................................................ 3 1.5. Finally ...............................................................................................................................6 2. Architecture ................................................................................................................................7 2.1. Overview ...........................................................................................................................7 2.2. Instance states .................................................................................................................... 9 2.3. Contextual Sessions .........................................................................................................
    [Show full text]
  • A Solution to the Object-Relational Mismatch
    Universidade do Minho Escola de Engenharia Miguel Esteves CazDataProvider: A solution to the object-relational mismatch Outubro de 2012 Universidade do Minho Escola de Engenharia Departamento de Informática Miguel Esteves CazDataProvider: A solution to the object-relational mismatch Dissertação de Mestrado Mestrado em Engenharia Informática Trabalho realizado sob orientação de Professor José Creissac Campos Outubro de 2012 To my parents... \Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice." Christopher Alexander Abstract Today, most software applications require mechanisms to store information persistently. For decades, Relational Database Management Systems (RDBMSs) have been the most common technology to provide efficient and reliable persistence. Due to the object-relational paradigm mismatch, object oriented applications that store data in relational databases have to deal with Object Relational Mapping (ORM) problems. Since the emerging of new ORM frameworks, there has been an attempt to lure developers for a radical paradigm shift. However, they still often have troubles finding the best persistence mechanism for their applications, especially when they have to bear with legacy database systems. The aim of this dissertation is to discuss the persistence problem on object oriented applications and find the best solutions. The main focus lies on the ORM limitations, patterns, technologies and alternatives. The project supporting this dissertation was implemented at Cachapuz under the Project Global Weighting Solutions (GWS). Essentially, the objectives of GWS were centred on finding the optimal persistence layer for CazFramework, mostly providing database interoperability with close-to-Structured Query Language (SQL) querying.
    [Show full text]
  • ASP.NET Core 1.0 Documentation
    ASP.NET Core 1.0 Documentation Microsoft 7 06, 2016 Contents 1 Topics 3 1.1 Introduction to ASP.NET Core......................................3 1.2 Getting Started..............................................7 1.3 Tutorials.................................................9 1.4 Fundamentals............................................... 142 1.5 MVC................................................... 243 1.6 Testing.................................................. 365 1.7 Working with Data............................................ 372 1.8 Client-Side Development........................................ 375 1.9 Mobile.................................................. 478 1.10 Publishing and Deployment....................................... 478 1.11 Guidance for Hosting Providers..................................... 513 1.12 Security.................................................. 523 1.13 Performance............................................... 642 1.14 Migration................................................. 656 1.15 Contribute................................................ 710 2 Related Resources 717 3 Contribute 719 i ii ASP.NET Core 1.0 Documentation, : ASP.NET 5 has been renamed to ASP.NET Core 1.0. Read more. : This documentation is a work in progress. Topics marked with a are placeholders that have not been written yet. You can track the status of these topics through our public documentation issue tracker. Learn how you can contribute on GitHub. Contents 1 ASP.NET Core 1.0 Documentation, 2 Contents CHAPTER 1 Topics 1.1 Introduction
    [Show full text]
  • NET Core 1.0 Modern Cross-Platform Development
    C# 6 and .NET Core 1.0 Modern Cross-Platform Development Create powerful cross-platform applications using C# 6, .NET Core 1.0, ASP.NET Core 1.0, and Visual Studio 2015 Mark J. Price BIRMINGHAM - MUMBAI C# 6 and .NET Core 1.0 Copyright © 2016 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: March 2016 Production reference: 1180316 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78528-569-1 www.packtpub.com Credits Author Copy Editor Mark J. Price Pranjali Chury Reviewers Project Coordinator Dustin Heffron Francina Pinto Liviu Ignat Efraim Kyriakidis Proofreader Safis Editing Commissioning Editor Edward Gordon Indexer Tejal Soni Acquisition Editor Kirk D'Costa Production Coordinator Aparna Bhagat Content Development Editor Pooja Mhapsekar Cover Work Aparna Bhagat Technical Editor Vivek Pala About the Author Mark J.
    [Show full text]
  • Modern API Design with ASP.NET Core 2 Building Cross-Platform Back-End Systems
    Modern API Design with ASP.NET Core 2 Building Cross-Platform Back-End Systems Fanie Reynders Modern API Design with ASP.NET Core 2: Building Cross-Platform Back-End Systems Fanie Reynders Odijk, The Netherlands ISBN-13 (pbk): 978-1-4842-3518-8 ISBN-13 (electronic): 978-1-4842-3519-5 https://doi.org/10.1007/978-1-4842-3519-5 Library of Congress Control Number: 2018935910 Copyright © 2018 by Fanie Reynders Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484235188. For more detailed information, please visit http://www.apress.com/source-code. Contents Foreword ����������������������������������������������������������������������������������������������������������������� ix Introduction����������������������������������������������������������������������������������������������������������� xvii Chapter 1: API Design Demystified ��������������������������������������������������������������������������� 1 The Importance of APIs ����������������������������������������������������������������������������������������������������������������� 1 REST: The Good, Bad, and Ugly������������������������������������������������������������������������������������������������������ 3 Principles of REST ������������������������������������������������������������������������������������������������������������������������� 5 Wrapping Up ���������������������������������������������������������������������������������������������������������������������������������
    [Show full text]
  • Backend Designing with Entity Framework Core Database Access for Web Application
    Backend designing with Entity Framework Core Database access for web application Veikko Lintujärvi BACHELOR’S THESIS December 2019 Information and communication technology Software engineering ABSTRACT Tampereen ammattikorkeakoulu Tampere University of Applied Sciences Information and communication technology Software engineering VEIKKO LINTUJÄRVI Backend designing with Entity Framework Core Database access for web application Bachelor's thesis 29 pages, appendices 4 pages December 2019 This bachelor’s thesis reviews Entity Framework Core when used as an Object- Relational Mapper in a backend application. Study will go into detail describing the capabilities of the framework and raises discussion over the features, usability and maturity of it. Preview and discussion is connected by examples to a project called Shop Man- agement Tool. Shop Management Tool is a web application used in a general store and café for monitoring and recording money flow and warehouse balances as well as presenting data in understandable format. Technical capabilities of the framework is compared to the requirements of the problem at hand. The thesis will go through how different features were used to carry out the needed tasks and what impact the possible flaws in them caused for the development of the end product itself. By the course of the thesis Entity Framework Core proved to be useful part of the backend application. Even though some of the minor functionalities weren’t fully complete, it contained sufficient set of tools needed to perform the task of
    [Show full text]
  • Microsoft .NET: Architecting Applications for the Enterprise Ebook
    PUBLISHED BY Microsoft Press A Division of Microsoft Corporation One Microsoft Way Redmond, Washington 98052-6399 Copyright © 2009 by Andrea Saltarello and Dino Esposito All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher. Library of Congress Control Number: 2008935425 Printed and bound in the United States of America. 1 2 3 4 5 6 7 8 9 QWT 3 2 1 0 9 8 Distributed in Canada by H.B. Fenn and Company Ltd. A CIP catalogue record for this book is available from the British Library. Microsoft Press books are available through booksellers and distributors worldwide. For further infor mation about international editions, contact your local Microsoft Corporation office or contact Microsoft Press International directly at fax (425) 936-7329. Visit our Web site at www.microsoft.com/mspress. Send comments to [email protected]. Microsoft, Microsoft Press, Access, ActiveX, IntelliSense, MS, MSDN, MS-DOS, PowerPoint, Silverlight, SQL Server, Visio, Visual Basic, Visual C#, Visual Studio, Windows, and Windows Vista are either registered trademarks or trademarks of the Microsoft group of companies. Other product and company names mentioned herein may be the trademarks of their respective owners. The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred. This book expresses the author’s views and opinions.
    [Show full text]
  • ASP.NET Core Recipes a Problem-Solution Approach — Second Edition — John Ciliberti ASP.NET Core Recipes
    ASP.NET Core Recipes A Problem-Solution Approach — Second Edition — John Ciliberti ASP.NET Core Recipes A Problem-Solution Approach Second Edition John Ciliberti ASP.NET Core Recipes: A Problem-Solution Approach John Ciliberti Sparta, New Jersey, USA ISBN-13 (pbk): 978-1-4842-0428-3 ISBN-13 (electronic): 978-1-4842-0427-6 DOI 10.1007/978-1-4842-0427-6 Library of Congress Control Number: 2017953377 Copyright © 2017 by John Ciliberti This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made.
    [Show full text]
  • NET Domain-Driven Design with C# Problem – Design – Solution
    .NET Domain-Driven Design with C# Problem – Design – Solution Tim McCarthy Wiley Publishing, Inc. ffirs.indd iii 4/14/08 10:39:48 AM ffirs.indd ii 4/14/08 10:39:48 AM .NET Domain-Driven Design with C# Acknowledgments ................................................................ xv Introduction ....................................................................... xvii Chapter 1: Introducing the Project: The SmartCA Application ...1 Chapter 2: Designing the Layered Architecture ......................13 Chapter 3: Managing Projects ...............................................55 Chapter 4: Companies and Contacts ...................................109 Chapter 5: Submittal Transmittals .......................................157 Chapter 6: Requests for Information ....................................199 Chapter 7: Proposal Requests .............................................233 Chapter 8: Change Orders ...................................................265 Chapter 9: Construction Change Directives .........................295 Chapter 10: Synchronizing With the Server ..........................327 Chapter 11: The Client Membership System ........................357 Index .................................................................................391 ffirs.indd i 4/14/08 10:39:48 AM ffirs.indd ii 4/14/08 10:39:48 AM .NET Domain-Driven Design with C# Problem – Design – Solution Tim McCarthy Wiley Publishing, Inc. ffirs.indd iii 4/14/08 10:39:48 AM .NET Domain-Driven Design with C# Published by Wiley Publishing, Inc. 10475 Crosspoint
    [Show full text]