Download presentation
Presentation is loading. Please wait.
Published byAbner Evans Modified over 9 years ago
1
2005 Microsoft PAKISTAN DEVELOPER CONFERENCE June 13-15, 2005
2
2 Arvindra Sehmi Head of Enterprise & Architecture Developer & Platform Group Microsoft EMEA HQ asehmi@microsoft.com www.thearchitectexchange.com/asehmi Acknowledgement: Keith Short & Jack Greenfield, Architects Enterprise Tools, Visual Studio, Microsoft Corporation Software Factories & DSL Tools
3
3 Agenda Modeling and Methods What is a Software Factory? A Software Factory Schema Domain Specific Languages Wrap Up
4
4 Agenda Modeling and Methods What is a Software Factory? A Software Factory Schema Domain Specific Languages Wrap Up
5
5 You all know what modeling is…
6
6 Spend a lot of time drawing loads of these…
7
7..throw them away and get on with the code But wait! Isn’t the code also a model? So what exactly do we mean by “model”? Using Microsoft.Fabriq. EnterpriseInstrumentation.Schema; namespace Microsoft.Fabriq.Util { /// /// This class provides unified /// management, eventing, … /// public class Logger { public static void LogErrorMessage( string message, int severity, string errorCode) { ErrorMessageEvent.Raise( FabriqEvents.FabriqEventSource, message, severity, errorCode ); }
8
8 Are our models “mathematical models”?
9
9 Are they “scale models”?
10
10 Are they “theoretical models”?
11
11 Definitely not this kind of model… Copyright: www.gucci.com
12
12 A software “model” is Partly about visualisation Abstraction for clarity Because picture worth a thousand words Sometimes about algorithms Expression in a convenient form Because compact and efficient Often a set of instructions A recipe Because can be automated
13
13 You all know there is a “method in the madness” of software development…
14
14
15
15
16
16 A software “method” is A way of working from requirements to through implementation to deployment Typically process-oriented Identifying a set of artifacts Building those artifacts Producing deliverables
17
17 Customers Want To Know What types of systems can I build? What’s the architecture of each type? How do I go from requirements to deployment? What artifacts and how are they related? Why are methodologies so ineffective? Why aren’t they integrated with my tools? Why can’t I get detailed and specific guidance for my project? Why are modeling tools so ineffective? Why can’t they generate production quality code? Why don’t models stay synchronized with code? Why can’t models fit my file-oriented environment?
18
18 Is Agility The Answer? Agile methods optimize for change Collaborating instead of documenting Building and running in small iterations Continuously validating requirements Continuously refactoring the software Time boxing or cash boxing the project Where do they fall short? Don’t scale up to large or complex projects One-off development of generic systems Lack of metadata limits degree of automation Lack of architecture documentation creates integration and support issues
19
19 Is Formality the Answer? Formal methods optimize for complexity Prescribing roles, artifact, activities Emphasizing requirements, analysis, design Using models to document architecture Where do they fall short? Don’t respond rapidly to change One-off development of generic systems Coding, testing, debugging, instrumentation, deployment, management, maintenance Informal languages and mappings limit degree of automation
20
20 Agenda Modeling and Methods What is a Software Factory? A Software Factory Schema Domain Specific Languages Wrap Up
21
21 Software Development as Craftsmanship Labor Intensive Generic Tools Generic Processes One off applications Hand stitched from scratch Minimal reuse Overruns, defects, security holes, project failures
22
22 Exploiting Commonality We already exploit economies of scale to automate production Stamping out many identical copies of a prototype Used to produce CDs/DVDs Does nothing to help development
23
23 Exploiting Commonality We can also exploit economies of scope Reuse designs & components Build many similar but distinct prototypes Key is supporting variability Define only the unique pieces of each system
24
24 Software Factories Domain-specific process Domain-specific tools & languages Domain-specific content Automate rote and menial tasks General-purpose IDEs become domain-specific software factories
25
25 Software Factories Pillars – TBC Warning: This is a personal perspective Process, Tools & Languages, Content, Automation Software Factories Visual Studio (Whidbey, Orcas) DSL Tools GAT “FALCON” GAT SDM SDK? MSF Process Agile / Formal Trustworthy Metadata Rich Platform
26
26 Agenda Modeling and Methods What is a Software Factory? A Software Factory Schema Domain Specific Languages Wrap Up
27
27 XML, Projects, Configs, Classes, Code Deployment Units packaged into Code Visualization
28
28 Raising The Level Of Abstraction ? ? Config Files.asmx Files.asmx Code Behinds Other Code Projects and Templates Assemblies
29
29 ? ? Raising The Level Of Abstraction Application Connection Model Config Files.asmx Files.asmx Code Behinds Other Code Projects and Templates Assemblies
30
30 Models and Frameworks CustomPartialClasses FrameworkPartialClasses ASP.NET Config Files OtherResources uses uses completes FrameworkTools DSLEditor DSLModel generates OtherEditors edit / build generates Model Files (SDM)
31
31 Effective Transformations Model Application Code Domain Specific Framework Platform Frameworks Model Generated Code Framework Pattern Language Platform Model Application Code Domain Specific Framework Platform Frameworks Model Generated Code Framework Pattern Language Platform Generate to Framework DSLs
32
32 XML, Projects, Configs, Classes, Code Deployment Units packaged into Services, Messages, Applications, Endpoints Abstraction/refinement Vertical Mapping - System Design
33
33 XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints Logical Data Center Host Software Abstraction/refinement Vertical Mapping - Data Center Design
34
34 Providing Traceability Applications Application Hosting Logical Machines & Network Topology Hardware System Definition Model
35
35 XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints Logical Data Center Host Software constraints Horizontal Mapping - Deployment
36
36 DBDefinitions XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints Logical Business Entities, Operations, Rules Implementable Business Processes and Entities User Interface Process Logical Data Center Host Software User Interface Process Design
37
37 DBDefinitions XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints LogicalBusiness Entities, Operations, Rules Biztalk Schedules & Rules Implementable Business Processes and Entities User Interface Process Business Processes and Entities Manual Processes BusinessCapabilities Logical Data Center Host Software Business Entity Implementation
38
38 DBDefinitions XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints Logical Business Entities, Operations, Rules Implementable Business Processes and Entities User Interface Process Business Processes and Entities BusinessCapabilities Logical Data Center Host Software Business Process Modeling
39
39 DBDefinitions XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints LogicalBusiness Entities, Operations, Rules Biztalk Schedules & Rules Implementable Business Processes and Entities User Interface Process Business Processes and Entities Manual Processes BusinessCapabilities Logical Data Center Host Software Business Process Implementation
40
40 DB Definitions XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units Services, Messages, Applications, Endpoints Logical Business Entities Rules, Operations BizTalk Schedules & Rules Implementable Business Processes and Entities User Interface Process Business Processes and Entities Manual Processes Business Capabilities Logical Data Center Host Software A Graph of Interrelated Viewpoints (IEEE1471) Software Factory Schema
41
41 DB Definitions XML, Projects, Configs, Classes, Code Physical Servers and Network Segments Deployment Units packaged into deployed on Services, Messages, Applications, Endpoints Logical Business Entities Operations, Rules WinOE Schedules & Rules Implementable Business Processes and Entities User Interface Process Business Processes and Entities Manual Processes Business Capabilities Logical Data Center Host Software Recipe for a system family Software Factory Schema ModelsPatternsBlocksFrameworksComponentsProcess Test Cases Tools
42
42 …A Software Factory Schema Like a recipe for a specific class of systems A set of viewpoints related by formal mappings Describes artifacts required to build systems in the class and explains how to combine them Implemented by a software factory template Configures Visual Studio to build members of the class Provides the necessary ingredients and tools Solution template, project templates, file templates, patterns, dynamic help, work item types, workflow, check in policy, reports, groups & permissions, phase exit criteria Creates a domain specific IDE called a software factory Integrates tools, process and content for the class of systems Domain specific editing, compilation, debugging, refactoring, building, testing, deployment, configuration management, defect tracking, reporting
43
43 Agenda Modeling and Methods What is a Software Factory? A Software Factory Schema Domain Specific Languages Wrap Up
44
44 Domain-Specific Languages Focused on a single aspect of app building Success in broad horizontal domains: SQL, Windows Form Designer Designed support the concepts defined by an underlying framework Automate rote tasks with effective code generation Increase agility by visualizing concepts, generating code and other artifacts, enabling rapid iteration Building them must be fast, cheap and easy
45
45 Building a DSL Concepts & Well-formedness Rules Generated and Related Artifacts Notations & Well-formedness Rules XML Serialization
46
46 Visual Languages Important Shapes Links, ends, style Labels Nesting Layout, routing property Corona label Shape GroupBase members waiting running pausebegin stop playing +v 0v 0.7CR R C 0.1R C R
47
47 Domain Specific Languages In The Context Of The DSL Tools Visual Languages… To understand or define requirements To understand or define design To generate parts of the solution To implement design patterns for specific frameworks and architectures To customize applications and application components To visualize existing systems
48
48 Building A Designer For Visual Studio Toolbox PropertyBrowser Explorer Validation Drawing surface with domain specific notation
49
49 Visual Studio Team System Change ManagementWork Item TrackingReportingProject Portal Visual Studio Team Foundation Server Integration ServicesProject Management Process and Architecture Guidance Dynamic Code Analyzer Visual Studio Team Edition Software Architects Static Code AnalyzerCode ProfilerUnit TestingCode CoverageTeam Explorer (includes Team Foundation Server CAL)Visual Studio Professional EditionLoad TestingManual TestingTest Case Management Visual Studio Team Edition Software Developers Visual Studio Team Edition Software Testers Visual Studio Industry Partners Team BuildVisio for Enterprise Architects (in MSDN Premium Subscription) Modeling Platform DSL Tools Application Designer System DesignerLogical Datacenter DesignerDeployment DesignerClass Designer (in Visual Studio Standard Edition and higher)
50
50 A SDK To Build Visual Modeling Tools Visual Studio 2005 Microsoft Modeling Platform In Visual Studio DistributedSystemsDesignersClassDesigner DSL Tools for Visual Studio Your new Designer
51
51 Microsoft Modeling Platform In Visual Studio Modeling Platform Domain Model Framework Design Surface FrameworkTemplateEngineShellFrame-workValidationFrame-work In-Memory graph database with rich services (e.g., transactions, serialization…) and queries Extensible drawing surface with support for routing and auto-layout Artifact generation Constraint checking and guides user to resolve issues Visual Studio UI Integration for components like Toolbox, Menus
52
52 A Simple Workflow Language Attend DSL Session Download & Try out DSL Tools Hands-On Lab Go Party Tonight Fascinated by DSL Tools AlreadyBored Too late Bored now Bored now
53
53 Define Domain Model Task Class Attend DSL Session Download & Try out DSL Tools Hands-On Lab Go Party Tonight
54
54 Define Domain Model Inheritance Attend DSL Session Download & Try out DSL Tools Hands-On Lab Go Party Tonight
55
55 Define Domain Model Relationships Attend DSL Session Download & Try out DSL Tools Hands-On Lab Go Party Tonight
56
56 Define Shape Attend DSL Session Rounded Rectangle Outline color: black Outline color: black Fill color: gray Fill color: gray Text Decorator Position: center Position: center
57
57 Define Connector Appearance Attend DSL Session Download & Try out DSL Tools Hands-On Lab Text Decorator Position: Source, Top Position: Source, Top Connector solid solid black black filled arrowhead filled arrowhead Fascinated by DSL Tools
58
58 Define Connector Visual Syntax Attend DSL Session Download & Try out DSL Tools Hands-On Lab Go Party Tonight
59
59 Define Mapping Attend DSL Session Shape Domain Model
60
60 CustomBehavior Building A Designer NotationDefinition MappingDefinition DomainModelDefinition Code generated by DSL Tools Validation/Constraints CustomXMLSerialization Code/ArtifactGeneration Custom Code (SDK)
61
61 Simple UIP Example BA designer based on UIP application block Define a domain model Define shapes Define mapping Generate code Build designer Run designer
62
62 Generators Based On Templates standardStuff;standardStuff; <# foreach Task t in this.Workflow.Tasks {#> class : TaskBase { … } <# } #> moreStandardStuff; … prospect initiated prospective sale empty overflow Sat weekly accumulator 4 £20 1 week delay £30 prospect cancels salesperson’s account 31 monthly bank a/c pay 7 £ standardStuff;standardStuff; class DoFirst : TaskBase {…} class DoNext : TaskBase {…} … Template Generated Code Model Queries
63
63 Software Factories Multiple Designers prospect initiated prospective sale empty overflow Sat weekly accumulator 4 £20 1 week delay £30 prospect cancels salesperson’s account 31 monthly bank a/c pay 7 £ Model 1 – Flow Model 2 – Entities 7 £ Model 3 – Control Flow aspect code Control aspect code Entities aspect code
64
64 Agenda Modeling and Methods What is a Software Factory? A Software Factory Schema Domain Specific Languages Wrap Up
65
65 Why Software Factories Consolidate implicit business and system development knowledge into specialized tools, process, and content Increase productivity and predictability by better organizing and automating the development process Reduce cost and risk by distributing the software life cycle across networks of interdependent groups and partners
66
66 Support For Building Factories Guidance for building Software Factories With Visual Studio 2005 Team System Integration with Visual Studio 2005 Methodology Templates, Dynamic Help Visual tools for building Software Factories Schema Designer, Template Builder Possibilities that we are considering
67
67 Support For Using Factories Guidance for using Software Factories Integration with MSF Agile and Formal Guidance tuned for specific types of systems Distributed across software factory schema Visual tools for using Software Factories Template Installer, Configuration Console Possibilities that we are considering
68
68 DSL - What’s Next? DSL Tools are in an early stage CTP releases for Visual Studio 2005 available Continue to release every 2-3 months with growing feature set Designer SDK Model Data Access Model Validation UI and Designer Behavior Custom XML Serialization Richer design experience for Domain Models, Notation and Mapping Multiple Views and Multiple Models Designer Deployment Support
69
69 Microsoft Domain Specific Language (DSL) Tools For Visual Studio 2005 Generates executable designer based on description of the “Domain Specific Language” (DSL) used in the designer Generated Designer Is a complete usable tool (fully functional, undo, persistence/XML file support… ) Is starting point of designer development (SDK, artifact generation… )
70
70 Resources Book Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools, Jack Greenfield, Keith Short, et al, ISBN 0- 471-20284-3, Wiley Publishing Inc., 2004. Websites Software Factories http://msdn.microsoft.com/architecture/softwarefactories DSL Tools Homepage http://lab.msdn.microsoft.com/teamsystem/workshop/dsltools/ DSL Tools Community Forum http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=6 1 Visual Studio 2005 Team System http://msdn.microsoft.com/vstudio/teamsystem Visual Studio Team System Workshop Domain-Specific Language (DSL) Tools http://lab.msdn.microsoft.com/vs2005/teamsystem/workshop/ Newsgroups Microsoft.private.whidbey.teamsystem.architect Microsoft.private.whidbey.teamsystem.architect.modeling
71
THANK YOU 2005 Microsoft PAKISTAN DEVELOPER CONFERENCE June 13-15, 2005
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.