330 likes | 452 Views
Introduction to “Oslo”. Jeremy Boyd Director – Mindscape MSDN Regional Director http://turtle.net.nz/blog. Agenda. What is “Oslo”? M Language MSchema MGraph MGrammar So what does this all mean?. What is “Oslo”?. “Platform for Model Driven Applications”
E N D
Introduction to “Oslo” Jeremy Boyd Director – Mindscape MSDN Regional Director http://turtle.net.nz/blog
Agenda • What is “Oslo”? • M Language • MSchema • MGraph • MGrammar • So what does this all mean?
What is “Oslo”? • “Platform for Model Driven Applications” Capture the intent of the business in terms that are equally understood by humans and computers aka Next Generation Application Platform • Language for describing Data and DSL’s • Repository for Models • Tools for building models
What is a Model? DRAWINGS Models used to communicate with others Examples: Dataflow, Use Case, … MODEL-ASSISTED Models used to understand or manipulate code Examples: Static Structure, Sequence, … MODEL-DRIVEN Models executed by runtimes directly Examples: HTML, CSS, XAML, BPEL, …
Domain Models • Complex Domain Designs should be based on a model • If we can decouple from infrastructure • Underpins other patterns • Sits well in an Object Oriented world “An object model of the domain that incorporates both behaviour and domain” - Martin Fowler
Why is this happening? TRANSPARENCY Better understanding of your application FLEXIBLITY Faster changes to your application PRODUCTIVITY “More essence, less ceremony”
Domain Driven • Both a way of thinking, and a set of priorities when building software • Encourages/requires tighter collaboration between development team and domain experts • Evolved by continuous learning “For most software projects the primary focus should be on the domain and the domain logic” - Eric Evans
What is "Oslo"? “M” The language for authoring models & DSLs “Quadrant” The tool for interacting with models & DSLs Repository The database for storing & sharing models
Key "Oslo" Concepts VISUAL DSLs TEXTUALDSLs MODELS RUNTIMES
Domain Specific Languages • A programming or specification language dedicated to a particular problem domain • Less comprehensive as a language • More expressive about the domain • At the level of abstraction of the domain • Enhances reuse and maintainability • Can be used by “lay-programmers”
"Oslo" Architecture RUNTIMES “QUADRANT” [Your Visual DSL] [Your Textual DSL] EDITOR FRAMEWORK LANGUAGE FRAMEWORK Composition [Your Runtime] Generic Viewers MSchema “Dublin” Dataflow MGrammar ASP.NET MGraph XML, Custom Formats, … WF WCF REPOSITORY SQL SERVER REPOSITORY SQL SERVER SQL/EDM ADO .NET Windows Other ISV Runtimes REPOSITORY SQL SERVER [Your Models] [Your Models] Base Models Base Models OTHER TOOLS (VSTS, EXCEL, …) [Your Models] XML, Custom Formats, … “M” Runtime “M” Runtime .Net Models Repository Models
Agenda • What is “Oslo”? • M Language • MSchema • MGraph • MGrammar • So what does this all mean?
What Is “M”? • “M” is a language for defining domain models and textual domain-specific languages (DSLs) • M domain models define schema and query over structured data • Values, Constraints, and Views • Natural projection to SQL • M DSLs define projections from Unicode text to structured data • Rule-based transformation • Grammar-driven text editor integration
Why “M”? • We want creating and interacting with Oslo content to be simple and natural • Having a box-and-line design experience is an important enabler • Having a complementary textual experience is equally important • “M” is how we achieve the latter
3 Basic Concepts • A value is simply data that conforms to the rules of the M language • A type describes a set of values • An extent provides dynamic storage of values
What is “M”? • MSchema • Describes types • What XSD is to XML for MGraph • MGraph • Describes instance data (Entities) • Similar to JSON format • MGrammar • Allows authoring of DSLs over your type system/data
MSchema type Address { Street: Text; City: Text; State: Text; ZipCode: Integer32; } where identity Street;
MGraph Products { LightSpeed { Id = 1, Name = "LightSpeed", Description = “A Domain Modelling Framework" }, WPFPropertyGrid { Id = 2, Name = "WPF Property Grid", Description = “A Property Grid for WPF" } };
MGrammar • Tokens define the “words” of your language • Syntax defines the “sentences” of your language 1,2 e.g. syntax Number = “0”..”9” or h:Number("," v:Number)? => Point { X { h }, Y { v }};
language DemoCoder { syntax Main = Prefix “, “ Suffix; syntax Prefix = “Hello”; syntax Suffix = “World” | “Oslo”; syntax Greetings(pre, suf) = pre suf; syntax Foo = “Foo” => Product { 1 }; };
What “M” Is Not • An object-oriented language • No polymorphism, virtual dispatch • A data access technology • M domain models compile down to T-SQL • Tool chain supports course-grained loading/unloading of schemas and values – not an OLTP solution • A replacement for T-SQL • Far less expansive feature set
“Quadrant” • Tool for building and manipulating visual models and DSLs. • Design workflows, processes and generally manipulate instances of models • Not currently available except on PDC VPC • Has been shown in relation to WF 4.0 editing experience
Agenda • What is “Oslo”? • M Language • MSchema • MGraph • MGrammar • So what does this all mean?
So what does this mean? • Its all about this whole Model Driven Development idea.. • Nicely complements all the other code gen/automation we are likely to be doing currently • Brings the business closer to the software
What are others doing? • Microsoft • “Dublin” process server provides a runtime for hosting workflow models • Windows Workflow 4.0 describes models in M • ISV’s • Leveraging M and Quadrant for CASE style tools • Mschema/Mgraph as input to code generation / software factories within existing tool sets
What we are doing? • Domain Model / ORM Framework • Using M as inputs for domain modelling • Infer validation constraints etc from schema • Mgraph as input for in test data sets
Thank you! • Links: • http://msdn.microsoft.com/oslo • http://www.mindscape.co.nz • Email: jeremy@mindscape.co.nz • Blog: http://turtle.net.nz/blog