26
Joseph W. Yoder & Rebecca Wirfs-Brock Using Meta to Scale Page - 1 When Should You Consider Meta-Architectures? Joseph W. Yoder [email protected] Copyright 2011, Joseph W. Yoder & The Refactory, Inc. and Wirfs-Brock Associates Slide - 2 Agenda Ways to evolve systems What meta really allows The difference between meta- architectures and DSLs Adaptive Object-Model (AOM) basics Case studies of systems that scale Evolved from a talk given with Rebecca Wirfs-Brock at QCon 2010

When Should You Consider Meta Architectures

Embed Size (px)

DESCRIPTION

There are times when a system must adapt to new requirements within months or weeks rather than years. These new requirements can include complicated rules and new products or services the organization needs to scale to support. As the system scales up and becomes more complicated it can become very hard to adapt quickly to these changing requirements. In fact, the system can even become harder to change and slower to accept new requirements. This can lead to a desired architecture that is designed to scale allowing the system to more easily adapt to changing requirements. Do you have the goal of building a system that can be extended and adapted without programmer intervention? Do you have the itch to explore meta-programming, not just because it is cool or complicated, but because you want your system's behavior or domain representations to scale? If so, consider learning about the design of systems that represent user-defined behavior specifications as metadata. Architects create Adaptive Object-Model systems when they want to enable end-user programmers to adapt their system's behavior and they don't want developers to become the bottleneck. But what does it take to build a system that can be changed and adapted without programming? How do Adaptive Object-Models differ from little languages or DSLs and when is it appropriate to consider stepping into the meta world to build such an extensible system? This talk presents the basic ideas about meta-architecture such as an Adaptive Object-Model architecture and shares experiences that the presenters have had building and tuning various production meta-architecture systems that have enabled organizations to scale them more easily and without programming wizardry.

Citation preview

Page 1: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 1

When Should You Consider Meta-Architectures?

Joseph W. Yoder

[email protected]

Copyright 2011, Joseph W. Yoder & The Refactory, Inc. and Wirfs-Brock Associates

Slide - 2

Agenda

Ways to evolve systems

What meta really allows

The difference between meta-architectures and DSLs

Adaptive Object-Model (AOM) basics

Case studies of systems that scale

Evolved from a talk given withRebecca Wirfs-Brock at QCon 2010

Page 2: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 2

Slide - 3

Contrast: Two Ways to Evolve a Working System

Traditional SW Architecture

Meta-Data Based Architecture

Who implements a requirements change?

A programmer. A domain expert might, if it is a domain object or business rule change.

How are changes verified? Programmer writes tests, QA writes and runs acceptance tests, end-user approves.

Still have to run all unit and acceptance tests. But can also build into end-user tool checks that model changes won’t ―break‖ the existing working system.

How often can the system be updated in production?

At the end of an iteration. Whenever changes are verified. Not tied to dev cycle.

What’s the big deal? Still have to go through some release cycle. Programming and deployment can become bottlenecks.

Significant changes can be made by end-users. Releasing can be simply updating production metadata.

Slide - 4

Stuart Brand’s Shearing Layers

Buildings are a set of components that evolve in different timescales.

Layers: site, structure, skin, services, space plan, stuff. Each layer has its own value, and speed of change (pace).

Buildings adapt because faster layers (services) arenot obstructed by slower ones (structure).

—Stuart Brand, How Buildings Learn

Page 3: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 3

Slide - 5

Yoder and Foote’sSoftware Shearing Layers

―Factor your system so that artifacts that change at similar rates are together.‖—Foote & Yoder, Ball of Mud, PLoPD4

The platform

Infrastructure

Data schema

Standard frameworks, components, and modules

Abstract classes and interfaces

Classes

Code

Data

Layers

Slower

Faster

Slide - 6

Our Design Values

Respect your system’s shearing layers. Understand the rates of what changes.

Determine who should be able to make changes, when, and at what cost. Support them!

Make what is too difficult, time consuming, or tedious easier. Create tools, leverage design patterns,

use data to drive behavior…

Don’t overdesign!!!

Page 4: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 4

Slide - 7

A Disclaimer

This talk is not about

Using metadata to generate code

Building a ―stack‖ of meta-models and/or transforming between various models

This talk focuses on practical techniques and cases studies for using metadata to scale solutions

Slide - 8

What do we want to scale?

Increased

performance

throughput

adaptability/flexibility

rate of supporting new requirements

time to deploy

support for configuration options

Reduced code bulk

Higher-leverage code (frameworks, tools…)

Page 5: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 5

Slide - 9

Alternative Computation Styles

Imperative

Traditional programming

Define a series of steps with conditionals and loops to vary sequence

Declarative

Executable specifications

Many options: DSLs (Special language)

Decision tables

State machines

Production rule systems

Adaptive Model Systems

Domain Specific Languages, Martin Fowler and Rebecca Parsons

Slide - 10

The Power of Metadata

Code is data, data is code. Everything is data. And data can drive behavior.

Meta data simply describes other data.

―If something is going to vary in a predictable way, store the description of the variation in a database so that it is easy to change‖—Ralph Johnson

Page 6: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 6

Slide - 11

Architecture of DSL Processing

__________________________________________________

DSL Script

parsesemanticmodel

generate

________________________________________

________________

_______________

__________

DSL Script target code

optional

Domain Specific Languages, Martin Fowler and Rebecca Parsons

✗We focus on a virtual machine to interpret the semantic model!

Slide - 12

What’s a Semantic Model?

Syntax describes ―legal‖ expressions. Semantics is what it means; what it does when it executes. Could be:

A representation, such as an in-memory object model or an adaptive object model

A data structure with behavior coming from functions acting on the data

Production rules and a rules ―engine‖

A decision table

Page 7: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 7

Slide - 13

Domain Specific Languages

Simple DSLs might be implemented via scripting languages and parameterization.

They may not be interpreted.

Sometimes they can be compiled directly to executable code.

AOMs can be a Domain Specific Language

but don’t have to be and vice-versa

Slide - 14

Motivation:Need to Quickly Adapt to Change

Business Rules or Domain Elements are changing quickly:

New calculations for insurance policies and new types of policies offered

Online store catalog with new products and services and rules applying to them

New cell phone product and services…

Need quick ways to develop and adapt to these changing requirements.

Page 8: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 8

Slide - 15

Adaptive Object-ModelMechanics

Meta information about the domain model and business rules is interpreted at runtime.

Domain classes, attributes, behaviors and relationships

described by metadata

Instance-based

Object-Model stored in a database or in

files and interpreted (can be XML/XMI).

When you change the metadata, system behavior

changes.

Domain experts typically make changes, not programmers.

Slide - 16

AOM―Virtual Machine‖

Database

XML

Persistence

Mechanism

XML ParserInterpreter/

Builder

Metadata

Repository/NamespaceDomain

Objects

Application

A

O

M

A

r

c

h

I

t

e

c

t

u

r

e

Page 9: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 9

Slide - 17

Architecture Elements of Adaptive Object Models

• Metadata

• TypeObject

• Properties

• Type Square

• Strategy/RuleObjects

• Entity-Relationship

• Interpreters/Builders

• Editors/GUIs

If you want something to change quickly,push it into data and build tools geared towards

changemakers’ needs.

Slide - 18

Entity

Property

EntityType

PropertyType

-name : String

-type : Type

0..n type

0..nproperties

0..n type

0..n properties

AOM and TypeSquareConstrains possible properties for an entity

Constrains type of a property

Page 10: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 10

Slide - 19

Type-Object

BeforePLoPD3 - Johnson and Woolf

Symptom: Explosion of classes based on minor attribute differences

Solution: Factor common attributes into ―type‖ classes

After

Slide - 20

Type Square(instance diagram)

anEntityType

<vinylAudioRec>

anAccountabilityType

<PARENT>anEntity

Joe’s Garage

aPropertyType

<AudMedia(Str)>

aProperty

name <SuperFid>

aPropertyType

<RecSpeed (int)>

aProperty

name <45>

Instance-Based!!!

Page 11: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 11

Slide - 21

AOM and TypeSquare(code example)

public class EntityType {private string _typeName;private Type _type;public EntityType (string name, Type type) {_typeName = name;_type = type; }

public string Name {get{return _typeName;}set{_typeName = value;} }…}

http://www.codeproject.com/Christopher G. Lasater

Slide - 22

AOM Support for Different Types of Behavior

If behavior varies, specify rules in meta-data and interpret. Typical behaviors:

Constraints on values, relationships, state changes…(discrete values, ranges, permissible associations)

Functional

Workflow

Event based

Page 12: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 12

Slide - 23

Entity

+valueUsing:()

Attribute

EntityType

+name

+type

AttributeType

-type

1 1

-attributes *

1

1

-type

*

-children *

1

-attributeTypes1

*

+valueUsing:()

Rule

TableLookup BinaryOperation

+value

Constant

1

-rules

*

1 *

*

*

1

*

CompositeRule

Accountability AccountabilityType-type

1 1

1

-children*-children *

1

-accountabilities1

* -children *

1

-accountabilitieTypes1

*

Adaptive Object Model ―Core Domain Architecture‖

Classes with Attributes andRelationships

Behavior

Operational Knowledge (meta)

An AOM Semantic Model is Instance-Based

Slide - 24

Adaptive Object Model ―Describing Your Entities‖

<entities><entity name="President"

entityType="TopLevelExecutiveType" actualAttributes="EmployeeId"/>

<entity name="VicePresident" entityType="ExecutiveType" actualAttributes="EmployeeId"/>

….</entities>

Page 13: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 13

Slide - 25

Adaptive Object Model ―Describing Your Relationships‖<accountibilities>

<!-- Hiring //--><accountability name="PresidentHiresVicePresident"

accountabilityType="TopLevelExecutiveHiresExecutive"actualParent="President"actualChildren="VicePresident" />

<accountability name="VicePresidentHiresSalesManager" accountabilityType="ExecutiveHiresManager"actualParent="VicePresident"actualChildren="SalesManager" />

…</accountibilities>

Slide - 26

Scaling Examples

Industrial (Manufacturing)

Medical (IDPH)

Insurance

Telephony Billing System

Pontis Telephony Marketing

Portugal System

Page 14: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 14

Slide - 27

Manufacturing - SharedCorporate Organization Data

~1,000,000 lines of COBOL code for editing organization data.

Organization data shared by many systems.

Had a common UI editor for adding, and updating this data. Editor was cloned and modified many times…grew to 100+ copies.

Documentation and maintenance cumbersome.

Slide - 28

Manufacturing - SharedCorporate Organization Data

Rewrote in Java code ~ 40k LOC that used XML to describe the mappings to the organization data and generated the GUI and SQL queries.

Documentation could be generated easily from XML mappings.

Easy to change and release new versions for new tables through updates to the XML schema.

Page 15: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 15

Slide - 29

User Defined Product(insurance example)

New types of Policies require new classes and attributes…and changes to rules require updates to methods

Component

Wirfs-Brock’s Policy*

Slide - 30

User Defined Product(insurance example)

Component

+valueUsing:()

Attribute

ComponentType

+name

+type

AttributeType

-type

1 1

-attributes *

1

1

-type

*

1

-children*-children *

1

-attributes1

*

+valueUsing:()

Rule

TableLookup BinaryOperation

+value

Constant

1

-rules

*

1 *

*

*

1

*

CompositeRule

Core Architecture is TypeSquareCould quickly adapt to new rules within weeks or less

http://st-www.cs.illinois.edu/users/johnson/papers/udp/

Page 16: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 16

Slide - 31

Objectiva Business Entities(telephony billing system example)

Originally took a few person years to build.AOM implementation reduced this to few person months

Slide - 32

Objectiva Attributes(telephony example)

Page 17: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 17

Slide - 33

Objectiva Entity Relationships(telephony example)

Slide - 34

How Objectiva Scaled

Initial AOM implementation could handle ~1 million transactions per day

Not enough for larger installations…

So, performance was tackled by adding caching and other point optimizations….increasing throughput to over 10 million transactions

Lesson: Meta Architectures can be tweaked for performance…nothing magic here

Page 18: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 18

Slide - 35

Refugee and Newborn Screening Example

Mother, Infant

Hospital, Lab

Doctor, HealthProf.

Blood Specimen

Slide - 36

Screening Refugees

Page 19: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 19

Slide - 37

Medical Observation –Basic OO Design Model

What happens when a new observation is required?

Had well over 100 observations!

PhysicalMeasure

Blood

Observation Person

Measurement

convertTo:

Trait

traitValue Quantity

unit

amount

expressOnUnit:

expressOnUnits:

EyeColor

HairColor

Gender

Height

Weight

FeedingType

Hearing

Vision

*

Slide - 38

Medical Observations Design

1 descriptor

elements 1..*

1..*

instance

ObservationType

phenomenonType

isValid: obsValue

Party

Primitive Observation

observationValue

CompositeObservation

Observation

recordedDate

comments

isValid

Validator

validatorName

isValid: obsValue

DiscreteValidator

descriptorSet

RangedValidator

intervalSet

validUnitPrimitiveObservation

Type

CompositeObservation

Type

NullValidator

Quantity

unit

quantity

convertTo:

DiscreteValuesOperational level

1..* elements

guard 11..* type

PartyType

1 descriptor

properties

1..*

1..*

value 1..*

dvalue 1..*

Knowledge level

1..* varType

contDescr 1Entities

Attributes

Behavior

Modelled100s of Entities with this core architecture.

Can add new entities or make changes to entities very quickly.

Page 20: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 20

Slide - 39

PONTIS AOM ENGINEERS

Telephony Marketing SystemHighly Flexible

Slide - 40

PONTIS WORKFLOW

―Adaptive Object-Model Metadata Evolver‖, PLoP 2010, Atzmon Hen-Tov, David H. Lorenz, Lena Nikolaev, Lior Schachter, Rebecca Wirfs-Brock, Joseph Yoder

AOM EngineerDeveloper

Page 21: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 21

Slide - 41

How the Pontis System Scales

Reduced deployment from 1 yearto 1 month

Updates every couple of weeks

Deployed to over 30 clients

Code base much smaller 500,000 LOC vs 3,000,000 (previous implementation)

Fastest growing business award

5,500 percent within five years

Slide - 42

Portuguese Historical Artifacts Catalogue

Catalogue of historical artifacts

Mapping of site artifacts, relationships over time, historical site evolution

2 years churning on requirements

Technical team finally made the decision to support easy ways to change the domain…metadata-driven software

1. Hugo Sereno Ferreira, Filipe Figueiredo Correia, Ademar Aguiar, and João Pascoal Faria. "Adaptive Object-Models: a Research Roadmap".

International Journal On Advances in Software, volume 3, numbers 1 and 2, 2010. ISSN: 1942-2628.

2. Hugo Sereno Ferreia, Filipe Figueiredo Correia, Ademar Aguiar. "Design for an Adaptive Object-Model Framework: An Overview". Proceedings

of the 4th International Workshop on [email protected]. Co-located with the 12th International Conference on Model Driven Engineering Languages

and Systems. Denver, Colorado. USA.

3. Hugo Sereno Ferreira, Ademar Aguiar, João Pascoal Faria. "Adaptive Object Modelling: Patterns, Tools and Applications". 3rd Symposium

on Doctoral Students of Software Engineering. Proceedings of the 4th International Conference on Software Engineering Advances. Porto. Portugal.

Page 22: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 22

Slide - 43

Project Timeline: Growth of the System

metadata

code

4 monthsto first deployment

features added rapidly at project end

Slide - 44

Project Timeline: Release Frequency

Once customers realized they could make model changes, they made lots of changes.

The rate of deployment of new releases increased, too.

Page 23: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 23

Slide - 45

Where Metadata Techniques Have been Successfully Used:

Representing Insurance Policies

Telephone Billing and Back Office Systems

Workflow Systems

Medical Observations

Banking and Trading

Validate Equipment Configuration

Documents Management System

Gauge Calibration Systems

Simulation Software

Invoicing Systems

Manufacturing Systems

(some can be found in papers)

www.adaptiveobjectmodel.com

Slide - 46

Requires infrastructure for storing, building, and interpreting metadata.

Requires strong design skills to create.

Interpreting metadata may result in lower performance (this can be remedied by well-known techniques).

Some Disadvantages ofMetadata Based Architectures

Page 24: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 24

Slide - 47

Agile Best Practices for Creating Metadata Solutions

Separate what changes quickly from what changes slowly (hot-spots).

Develop iteratively and incrementally. Get feedback early and often.

Add flexibility using meta-data techniques only when and where needed.

Write tests for expected system behaviors and the meta tools/interpreters.

Slide - 48

Summary

Meta-architectures enable rapid changes to domain objects and rules

Core application code less than with conventional programming

Scale in two dimensions:

support for rapid requirements changes

design leverage (team size ~10^1)

Page 25: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 25

Slide - 49

Meta CollaboratorsAdemar Aguiar

Francis Anderson

Ali Arsanjani

Jean Bezivin

Paulo Borba

Filipe Correia

Krzysztof Czarnecki

Ayla Dantas

Martine Devos

Hugo Ferreira

Brian Foote

Martin Fowler

Richard Gabriel

Atzmon Hen-Tov

Ralph Johnson

David H. Lorenz

Lena Nikolaev

Jeff Oaks

Reza Razavi

Nicolas Revault

Dirk Riehle

Lior Schachter

Dave Thomas

Michel Tilman

Leon Welicki

Rebecca Wirfs-Brock…

Slide - 50

Resources

Adaptive Object Models

www.adaptiveobjectmodel.com

Agile Software

Refactoring www.refactory.com

Agile Alliance: www.agilealliance.org

The Agile Manifesto

12 Principles of Agile Development

Page 26: When Should You Consider Meta Architectures

Joseph W. Yoder & Rebecca Wirfs-Brock

Using Meta to Scale Page - 26

Slide - 51

Obrigado! That’s All

[email protected]

Twitter: @rebeccawb

[email protected]

Twitter: @metayoda