31
Tools for Architects and Tools for Architects and Future Directions in Future Directions in Modeling Modeling Beat Schwegler Beat Schwegler Architect, Enterprise Architect, Enterprise Team Team Microsoft EMEA D&PE Microsoft EMEA D&PE blogs.msdn.com/beatsch blogs.msdn.com/beatsch Arvindra Sehmi Arvindra Sehmi Architect & Head of Enterprise Team Architect & Head of Enterprise Team Microsoft EMEA D&PE Microsoft EMEA D&PE www.thearchitectexchange.com/asehmi www.thearchitectexchange.com/asehmi

Tools for Architects and Future Directions in Modeling Beat Schwegler Architect, Enterprise Team Microsoft EMEA D&PE blogs.msdn.com/beatsch Arvindra Sehmi

Embed Size (px)

Citation preview

Tools for Architects and Tools for Architects and Future Directions in ModelingFuture Directions in Modeling

Beat SchweglerBeat Schwegler Architect, Enterprise TeamArchitect, Enterprise TeamMicrosoft EMEA D&PEMicrosoft EMEA D&PEblogs.msdn.com/beatschblogs.msdn.com/beatsch

Arvindra SehmiArvindra Sehmi Architect & Head of Enterprise Team Architect & Head of Enterprise Team Microsoft EMEA D&PEMicrosoft EMEA D&PEwww.thearchitectexchange.com/asehmiwww.thearchitectexchange.com/asehmi

3

You all know what You all know what modelingmodeling is… is…

4

Spend a lot of time drawing loads of Spend a lot of time drawing loads of these…these…

{creditCardDetails->isEmpty( ) =customer.creditAccount->notEmpty( )}

DeliveryAddress

addLine1addLine2postCodetown

CreditAccount

numberbalance

GeneralLedger

Supplier

name

StockReplacementOrder

orderDateorderQuantity

1

0..*

1

0..*

Catalogue

CatalogueItem

stockLeveltitleeditioncomposerminStockLevelstockRequestsidreorderQtypriceExVAT

1

*

1

*

*

1

*

1

CreditCardDetails

accountNumberexpiryDate

Customer

firstNamesecondNameprefixcustomerNumberpasswordemailAddress

*

1

*

1

1

0..1

1

0..1

OrderItem

qty

*

1

*

1

Posting

amountdate

1

0..*

1

0..*

Order

expectedDeliveryDateorderCreationDate*0..1 *0..1

0..*

1

0..*

1

1

1..*

1

1..*

0..*

1

0..*

1

5

..throw them away and get on with the ..throw them away and get on with the codecode

But isn’t the But isn’t the code also a code also a model?model?

So what exactly So what exactly do we mean by do we mean by “model”?“model”?

UsingUsingMicrosoft.Fabriq.Microsoft.Fabriq.EnterpriseInstrumentation.Schema;EnterpriseInstrumentation.Schema;

namespace Microsoft.Fabriq.Utilnamespace Microsoft.Fabriq.Util{{ /// <summary>/// <summary> /// This class provides unified/// This class provides unified /// management, eventing, …/// management, eventing, … /// </summary>/// </summary> public class Loggerpublic class Logger {{ public static void LogErrorMessage(public static void LogErrorMessage(

string message, int severity, string message, int severity, string errorCode) string errorCode)

{{ ErrorMessageEvent.Raise(ErrorMessageEvent.Raise(

FabriqEvents.FabriqEventSource, FabriqEvents.FabriqEventSource, message, severity, errorCode ); message, severity, errorCode );

}} }}}}

6

Are our models “mathematical Are our models “mathematical models”?models”?

7

Are they “scale models”?Are they “scale models”?

8

Are they “theoretical Are they “theoretical models”?models”?

9

Definitely not this kind of Definitely not this kind of model…model…

Copyright: www.gucci.comCopyright: www.gucci.com

10

A software “model” isA software “model” is

Partly about visualisationPartly about visualisationAbstraction for clarityAbstraction for clarity

Because picture worth a thousand wordsBecause picture worth a thousand words

Sometimes about algorithmsSometimes about algorithmsExpression in a convenient formExpression in a convenient form

Because compact and efficientBecause compact and efficient

Often a set of instructionsOften a set of instructionsA recipeA recipe

Because can be automatedBecause can be automated

11

We need models We need models because…because…

We need to capture theWe need to capture the““methodmethod” in the ” in the

madness of software madness of software development?development?

Bad Stuff Happens!Bad Stuff Happens!

12

32

Core Component BuilderDev Lead

-Build core reusable components-Build business objects

-Refine DB schemas on developmentdatabases

-Extend core components

Solution Structure DesignerProgrammer Analyst, Application Architect

-Design applications that implement business processes-Analyze and design solution structures

-Validate an application’s viability against corporatedata model

CoderDeveloper

-Use existing components-Code forms

Business AnalystBusiness Analyst, Executive

-Champion projects-Make go/no go decisions

-Define business process flow

Programming/Platforms ExpertArchitect

-Provide organizations strategic technology direction-Define organizations technology standards

-Oversee design of applications throughout theorganization

15

4

1 Mistakes in application architecture are costly, but so is having a hands on architect for every project.

2 Requirements are often vague or incomplete.

3 Business analysts find it hard to tell if an app design properly implements a business process.

4 Programmer analysts can’t be sure that dev implement what was specified.

5 Mistakes in defining data access patterns are costly, but so is having a hands on data architect for every project.

6 Talent for implementing solutions is too expensive, or requires too much oversight.

7 Following architectural guidance requires copious reading and double checking of policies, which takes time away from actual coding.

6

2

7

13

Expensive to do thisfor every project

Too much hand holding

Senior User-Domain expert

-Consults on app design-Represents rank and file users

Business Analyst-Champions Project

-Makes Go/No Go Decisions-Defines business process flow

Graphic Designer-Design Look and Feel-Customer Advocate

Data Modeler(Data Atchitect)

-Analyze business requirements-Create conceptual models of information

-Detailed analysis

Solution Structure Designer(Programmer Analyst)

-Design applications that implement biz processes-Validate an application's viability against corporate data model

Web Dev(HTML Centric)

-HTML and Scripting-Script client side and server side behavior

-Implement styles/look and Feel

DBA/Ops-Keep systems running

-Installing/setting up servers and other computers-Setting up/maintaining databases

Lead Developer-Uses VS to build core reusable components

-Builds Biz Objects (data APIs)-Defines DB Schemas

-Uses VS to extend core components

Developer-Uses VS to use components

-Uses VS to code forms

Users

Interaction/Experience Manager

Domain Info<Informal, Verbal>

<Word Docs>

Project/IT Manager-Overall Responsibility

-Keep schedule up to data-Set timelines and key dates

-Set delivery Data

Description of Process<Visio Diagram>

Description of Application-Flow Diagram-Prototype

Policies and restrictions

Programming/Platform Expert(Architect)

-Provide Strategic Direction-Determines Company Tech Standards-Oversees design of app architectures

throughout the organization

Feedback on errors/intent

Database Specs

Possible Solutions

Spec

Feedback

Spec

Spec

Feedback

Description of Application-Flow Diagram-Prototype

Visual Spec

Path to physical DB

Feedback on errors/intent

Status Reports

Estimates

Status Reports

Estimates

Data Access API

Requirements often vague, incomplete

Hard to tell ifapp design correctlydefines biz process

PM has to trust these estimates No way to guarantee

spec is followed

No way to guaranteespec is followed

Requirements(often new)

Logical/physicalarchitecture

Requirements(QOSs)

Work Items

DB Scripts

Feedback on DB Scripts

Policies and restrictions

Advice and designs fortricky parts of the app

Domain Info<Informal, Verbal>

<Word Docs>

15

Software Development as Software Development as CraftsmanshipCraftsmanship

Labor IntensiveLabor Intensive

Generic ToolsGeneric Tools

Generic ProcessesGeneric Processes

One off One off applicationsapplications

Hand stitched Hand stitched from scratchfrom scratch

Minimal reuseMinimal reuse

Overruns, defects, security holes, project failures

16

Exploiting CommonalityExploiting Commonality

We already exploit We already exploit economies of scale economies of scale to automate to automate productionproductionStamping out many Stamping out many identical identical copiescopies of a of a prototypeprototypeUsed to produce Used to produce CDs/DVDs CDs/DVDs Does nothing to Does nothing to help help developmentdevelopment

17

Exploiting CommonalityExploiting Commonality

We can also We can also exploit exploit economies economies of scopeof scope

Reuse Reuse designsdesigns & & componentscomponents

Build many similar Build many similar but distinct but distinct prototypesprototypes

Key is supporting Key is supporting variabilityvariabilityDefine only the unique pieces

of each system

18

Software FactoriesSoftware Factories

Domain-specificDomain-specific processprocess

Domain-specificDomain-specific toolstools & & languageslanguages

Domain-specificDomain-specific contentcontent

AutomateAutomate rote and rote and menial tasksmenial tasks

General-purpose IDEs become domain-specific software factories

19

Software Factories PillarsSoftware Factories Pillars

Process, Tools & Languages, Content, Automation

Software Factories

Visual Studio 2005

DS

L T

ools

GA

T

Pro

ject

Man

ag

em

en

t

Gu

idan

ce

Au

tom

ati

on

Mod

elin

gP

latf

orm

MS

F P

rocesses

(Ag

ile /

Form

al)

Tru

stw

ort

hy

Meta

data

-Ric

h P

latf

orm

21

Software Factories VisionSoftware Factories Vision

BusinessBusinessRequiremenRequiremen

tsts

BusinessBusinessProcessProcess

System System DesignDesign

ApplicationApplicationDesignDesign

ContractContractDesignDesign

DatabaseDatabaseDesignDesign

DeploymentDeploymentDesignDesign

OrchestratioOrchestrationn

DesignDesign

Viewpoints of an applicationViewpoints of an application

ModelsModelsPatternsPatternsProcessProcessToolsToolsFrameworksFrameworks

22

Systems Design Systems Design

Business Business Requirements Requirements

Two Designers And Two Designers And MappingMapping

Use CaseUse CaseDesignerDesigner

ActivityActivityDesignerDesigner

23

Application & Logical Datacenter Application & Logical Datacenter Designers in Visual Studio 2005Designers in Visual Studio 2005

25

Domain Specific Languages Domain Specific Languages In The Software Life CycleIn The Software Life Cycle

The aim is to create languages…The aim is to create languages…To understand or define To understand or define requirements requirements To understand or define designTo understand or define designTo generate parts of the solutionTo generate parts of the solutionTo implement design patterns for To implement design patterns for specific frameworks and specific frameworks and architecturesarchitecturesTo customize applications and To customize applications and application componentsapplication componentsTo visualize existing systemsTo visualize existing systems……

26

Building A Designer For Visual Building A Designer For Visual StudioStudio

ToolboxToolbox

PropertiesPropertiesWindowWindow

ModelModelExplorerExplorer

ValidationValidation

Drawing surface Drawing surface with domain- with domain-

specific notationspecific notation

27

Microsoft Modeling PlatformMicrosoft Modeling PlatformIn Visual StudioIn Visual Studio

Modeling Platform Modeling Platform ArchitectureArchitecture

Domain ModelDomain ModelFrameworkFramework

Design SurfaceDesign SurfaceFrameworkFramework

TemplateTemplateEngineEngine

ShellShellFrame-Frame-workwork

ValidationValidationFrame-Frame-workwork

In-memory graph In-memory graph database with rich database with rich

services (e.g., services (e.g., transactions, transactions,

serialization…) and serialization…) and queries queries

Extensible Extensible drawing surface drawing surface with support for with support for

routing and routing and auto-layout auto-layout

Artifact Artifact generatigenerati

on on

Checks constraints Checks constraints and guides user to and guides user to

resolve issuesresolve issues

Visual Studio Visual Studio UI integration UI integration

for for components components like Toolbox like Toolbox and menusand menus

28

The Modeling PlatformThe Modeling Platform

MicrosoftMicrosoftDesignerDesigner

MicrosoftMicrosoftDesignerDesigner

PartnerPartnerDesignerDesigner

Your OwnYour OwnDomain-Domain-SpecificSpecificDesignerDesigner

??

Microsoft Modeling PlatformMicrosoft Modeling Platformin Visual Studioin Visual Studio

ArchitectArchitect DeveloperDeveloperBusinessBusinessAnalystAnalystDeveloperDeveloper

29

A Simple Activity A Simple Activity LanguageLanguage

AttendDSL Session

Download &Try out

DSL Tools

Drink Beer

Fascinated Fascinated by DSL Toolsby DSL Tools

Already Already thirstythirsty

AmazedAmazed

Thirsty Thirsty nownow

30

Building A DSLBuilding A DSL

Define the domain modelDefine the domain model

AttendDSL Session

Download &Try out

DSL Tools

Drink Beer

31

Building Use Case Designer Building Use Case Designer with DSL Toolswith DSL Tools

32

Artifact GenerationArtifact Generation

33

Interaction Design using Interaction Design using Statecharts Statecharts

www.statesoft.comwww.statesoft.com

35

Summary - Key PointsSummary - Key PointsSoftware FactoriesSoftware Factories

Consolidate implicit Consolidate implicit knowledgeknowledge

Increase Increase productivityproductivity and and predictabilitypredictability

Reduce Reduce costcost and and riskrisk

DSLsDSLs

Exploit Exploit commonalitycommonality & support & support variabilityvariability

Generate Generate executable domain executable domain specific designersspecific designers based language based language descriptiondescription

GoalGoal

Modeling Modeling supportsupport everywhere everywhere

© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.