Professional Documents
Culture Documents
Steve Cook
Software Architect
Enterprise Tools, Visual Studio
Software Industrialization
Domain Specific Languages
Viewpoints and Languages
A Software Factory Schema
MDA and UML
Mass Craftsmanship
Product change
Customization
Stable
Mass Continuous
Production Improvement
Stable Dynamic
Process change
Labour Intensive
Generic Tools
Generic Processes
One off applications
Hand stitched from
scratch
Minimal reuse
Mass Craftsmanship
Product change
Customization
Stable
Mass Continuous
Production Improvement
Stable Dynamic
Process change
Mass Craftsmanship
Product change
Customization D
yn
am
ic
s ta
bi l
i ty
Stable
Mass Continuous
Production Improvement
Stable Dynamic
Process change
Domain-specific process
Domain-specific tools &
languages
Domain-specific content
Automate rote and menial
tasks
Improve through
experience and
measurement
Software Industrialization
Domain Specific Languages
Viewpoints and Languages
A Software Factory Schema
MDA and UML
Increasing Abstraction
Gap
Executables
Executables
Requirements
Increasing Abstraction
Executables
Gap
The history of programming is an
exercise in hierarchical Language
abstraction. In each generation,
language designers produce Language
constructs for lessons learned in Executables
the previous generation, and then
architects use them to build more
complex and powerful
abstractions. (Smith and Stotts)
Microsoft Architects Forum
Domain Specific Languages
C(x) h C(x) Declarative
ih = –
t 2m x
<CallRecord>
<caller><number>07713248</number>
Employee Job
Textual name
address 0..*
description
pay Pictorial
promote assign
Call
Record base rate: £/s
store
{
call
Notations &
Mappings
XML Serialization
Generated and
Related Artifacts
Developer
adds detail to design
generate e.g. extra metadata to drive code generation
code Software /
Generated
Generated systems
designer
MDF
API
MDF
adds code
(optional)
Generated
Application
Generated CodeCode
Code
Platform
Platform
Platform
Frameworks Generated
Application
Generated CodeCode
Code
Platform
Platform
Platform
Generate Frameworks
Software Industrialization
Domain Specific Languages
Viewpoints and Languages
A Software Factory Schema
MDA and UML
Class
Class Designer
Designer
and
and
two-way
two-way code
code synch
synch
XML, Projects,
Configs, Classes,
Code
Assemblies
? Projects and
Templates
Services,
Messages, Applications,
Endpoints
Abstraction/
refinement
XML, Projects,
Configs, Classes,
Code
Services,
Messages, Applications, Logical Data Center
Endpoints Host Software
Abstraction/
refinement
XML, Projects,
Physical Servers
Configs, Classes,
and Network
Code
Segments
Applications
System
Definition Application
Model
Hosting
Hardware
constraints
Services,
Messages, Applications, Logical Data Center
Endpoints Host Software
XML, Projects,
Physical Servers
Configs, Classes,
and Network
Code
Segments
Implementable Business
Processes and Entities
User Interface
Process
XML, Projects, DB
Definitions Physical Servers
Configs, Classes,
and Network
Code
Segments
User Interface
Process
Biztalk
Schedules & Rules
Services,
Messages, Applications, LogicalBusiness Entities, Logical Data Center
Endpoints Operations, Rules Host Software
XML, Projects, DB
Physical Servers
Definitions
Configs, Classes, and Network
Code Segments
Implementable Business
Processes and Entities
User Interface
Process
Services,
Messages, Applications, Logical Business Entities, Logical Data Center
Endpoints Operations, Rules Host Software
XML, Projects, DB
Definitions Physical Servers
Configs, Classes,
and Network
Code
Segments
User Interface
Process
Biztalk
Schedules & Rules
Services,
Messages, Applications, LogicalBusiness Entities, Logical Data Center
Endpoints Operations, Rules Host Software
XML, Projects, DB
Definitions Physical Servers
Configs, Classes,
and Network
Code
Segments
User Interface
Process
Biztalk
Schedules & Rules
Services,
Messages, Applications, LogicalBusiness Entities, Logical Data Center
Endpoints Operations, Rules Host Software
XML, Projects, DB
Definitions Physical Servers
Configs, Classes,
and Network
Code
Segments
Software Industrialization
Domain Specific Languages
Viewpoints and Languages
A Software Factory Schema
MDA and UML
A Graph of
Capabilities
Services,
Messages, Applications, Logical Business Entities Logical Data Center
Endpoints Rules, Operations Host Software
XML, Projects, DB
Definitions Physical Servers
Configs, Classes,
and Network
Code
Segments
Deployment
Units
Microsoft Architects Forum
Software Factory Schema
Business
Capabilities
Recipe for a
system family
Business Processes and
Entities
Implementable Business
Models
Patterns
Manual
Processes and Entities Processes
Blocks
User Interface
Process
WinOE
Schedules & Rules
Frameworks
Services,
Components
Messages, Applications,
Endpoints Process
Logical Business Entities
Operations, Rules
Logical Data Center
Host Software
Test Cases
XML, Projects, Tools
DB
Definitions Physical Servers
Configs, Classes,
and Network
Code
Segments
Software Industrialization
Domain Specific Languages
Viewpoints and Languages
A Software Factory Schema
MDA and UML
Software Industrialization
Domain Specific Languages
Viewpoints and Languages
A Software Factory Schema
MDA and UML