Post on 23-Dec-2015
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
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 );
}} }}}}
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
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