330 likes | 461 Vues
"Oslo" is a transformative platform enabling model-driven applications, allowing businesses to capture intents in a way that is understand by both humans and machines. It incorporates the M language for modeling, MSchema for defining types, MGraph for instance data, and MGrammar for DSL creation. The architecture supports domain-driven design, promoting collaboration and flexibility in software development. This session will cover the key concepts of "Oslo" and its tools for creating productive and transparent applications, facilitating rapid changes while maintaining a focus on business logic.
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