SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
This Presentation Courtesy of the
                              International SOA Symposium
                              October 7-8, 2008 Amsterdam Arena
                              www.soasymposium.com
                              info@soasymposium.com


                                                  Founding Sponsors




Platinum Sponsors




Gold Sponsors          Silver Sponsors




        Testable Foundations for Service‐Oriented 
                     Development
                                         Ian Robinson




    http://iansrobinson.com
Tests, Testing and Testability




                                     Design & 
                                     discovery
                             Tests
    Asserted 
    behaviour




Micro Alignment




                                      Stories
                      Business‐IT 
                      Alignment
     Tests
A Map of the Territories: From What to How


                       Why?
    Who?                                            What?                               How?
                 What?

                        Benefits


       Stakeholders                                                                       Processes
                                                                          provide
     want                      deliver
                                                   Capabilities

                                         realise                                      host
                  Outcomes

                                                                                    Services

   motivate
                             prevent
                                                                                                 implement
              Forces



                                                                                                Technologies
                       Obstacles




Stories, Capabilities, Services and Contracts


                                   Stories                        Capabilities
                              Describe goals                        Resources to 
                              & outcomes                            realise 
                                                                    outcomes




                               Contracts
                                                                   Services
                             Assert 
                             interactions                          Host 
                             between                               capabilities
                             services
(Behaviour‐Driven Development) Stories


Outside‐in
                As an rolee Man
                               Outcomes
                     < Ord r > agemen
               I want <felfill orders bast service
                        to fu
                              a offer
                       current ture> ed on 
               So that <cbn m ings
                         I  a eneet
                         ex
                                 ef ct> mer 
                                     i usto
                             pectations

       Value
                                        efficiently
                                                       

                                           External 
                                          behaviour



Capabilities


                    Resources
 People         Processes                  Technology


          Capabilities
   Outcomes                              Stable
                              Processes          Technology
     What not How              change              changes
Contracts




        Consumer‐Driven 
        Contract                                                               Design




                                                      Consumer 
                                        Adopt
                                                      Contract



                                       Communicate



            (Validate according to…)                  (Use according to…)
                                                                               Execute

                Produce                                       Consume




XmlUnit
public class ArtistUpdatedTestCase extends XMLTestCase {

    ...

    protected String xml;

    public void testXPaths() throws Exception {
        assertXpathExists("/n:ArtistUpdated", xml);

          assertXpathExists("/n:ArtistUpdated/a:Artist", xml);
          assertXpathExists("/n:ArtistUpdated/a:Artist/a:GlobalArtistCode", xml);
          assertXpathExists("/n:ArtistUpdated/a:Artist/a:DefaultName", xml);

          assertXpathExists("/n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany",
              xml);
          assertXpathExists("/n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany/" +
              "s:OperatingCompanyCode", xml);
          assertXpathExists("/n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany/" +
              "s:Name", xml);

          assertXpathExists("/n:ArtistUpdated/a:Artist/a:ChangedDate", xml);
    }
}
Schematron
<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns="http://www.ascc.net/xml/schematron">                               XML
                                                                                   XML
    <title>ArtistUpdated Contract</title>

    <ns uri="http://example.com/notifications" prefix="n"/>
    <ns uri="http://example.com/artist" prefix="a"/>
    <ns uri="http://example.com/sharedtypes" prefix="s"/>


    <phase id="validateStructure">
        <active pattern="structure"/>
    </phase>

                 Schematron                    Intermediate 
    <pattern name="Validate structure" id="structure">
                  Schematron                    Intermediate                      XSLT
                                                                                   XSLT
                     rules
        <rule context="/">
                      rules                      transform
                                                  transform
            <assert test="n:ArtistUpdated"/>
        </rule>
        <rule context="n:ArtistUpdated">
            <assert test="a:Artist"/>
        </rule>
        <rule context="n:ArtistUpdated/a:Artist">
            <assert test="a:GlobalArtistCode"/>
            <assert test="a:DefaultName"/>
            <assert test="a:MainRepertoireOwnerCompany"/>
            <assert test="a:ChangedDate"/>
        </rule>
        <rule context="n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany">
            <assert test="s:OperatingCompanyCode"/>                              Results
            <assert test="s:Name"/>                                              Results
        </rule>
    </pattern>

</schema>




An External DSL for Consumer Contracts


 Declarative
                ArtistUpdated [http://example.com/notifications]
                    Artist[http://example.com/artist]
                        GlobalArtistCode : int
                        DefaultName : string
                        MainRepertoireOwnerCompany : companyType (0..1)
                        ChangedDate : datetime

                Company[http://example.com/company] id(companyType)
                    OperatingCompanyCode : string
                    Name : string




            What                                  not           How
Validating XML

 ArtistUpdated [http://example.com/notifications]
     Artist[http://example.com/artist]
         GlobalArtistCode : int
         DefaultName : string
         MainRepertoireOwnerCompany : companyType (0..1)
         ChangedDate : datetime

 Company[http://example.com/company] id(companyType)
     OperatingCompanyCode : string
     Name : string




 <ArtistUpdated xmlns="http://example.com/notifications">
     <Artist xmlns="http://example.com/artist">
         <GlobalArtistCode>13570</GlobalArtistCode>
         <DefaultName>Tom Waits</DefaultName>
         <MainRepertoireOwnerCompany xmlns:c="xmlns="http://example.com/company">
             <c:OperatingCompanyCode>HF32L</c:OperatingCompanyCode>
             <c:Name>Mercury Records Ltd</c:Name>
         </MainRepertoireOwnerCompany>
         <ChangedDate>2008-09-10T13:57:14+01:00</ChangedDate>
         ...
     </Artist>
 <ArtistUpdated>




Validating JSON

 ArtistUpdated [http://example.com/notifications]
     Artist[http://example.com/artist]
         GlobalArtistCode : int
         DefaultName : string
         MainRepertoireOwnerCompany : companyType (0..1)
         ChangedDate : datetime

 Company[http://example.com/company] id(companyType)
     OperatingCompanyCode : string
     Name : string




 {
     "ArtistUpdated": {
         "Artist": {
             "GlobalArtistCode": 13570,
             "DefaultName": "Tom Waits",
             "MainRepertoireOwnerCompany": {
                 "OperatingCompanyCode": "HF32L",
                 "Name": "Mercury Records Ltd",
             },
             "ChangedDate": "2008-09-10T13:57:14+01:00"
          }
     }
 }
Validating YAML

 ArtistUpdated [http://example.com/notifications]
     Artist[http://example.com/artist]
         GlobalArtistCode : int
         DefaultName : string
         MainRepertoireOwnerCompany : companyType (0..1)
         ChangedDate : datetime

 Company[http://example.com/company] id(companyType)
     OperatingCompanyCode : string
     Name : string




 ArtistUpdated:
     Artist:
         GlobalArtistCode: 13570
         DefaultName: Tom Waits
         MainRepertoireOwnerCompany:
             OperatingCompanyCode: HF32L
             Name: Mercury Records Ltd
         ChangedDate: 2008-09-10T13:57:14+01:00




Transformations

                                                                        Validator
                                                                         Validator




               ArtistUpdated [http://example.com/notifications]
                    Artist[http://example.com/artist]
                          GlobalArtistCode : int
                          DefaultName : string
                          MainRepertoireOwnerCompany : companyType (0..1)
                 Contract ChangedDate : datetime
                  Contract                     AST
                                               AST                   Serializer
                                                                      Serializer

               Company[http://example.com/company] id(companyType)
                   OperatingCompanyCode : string
                   Name : string




                                                                         Graph
                                                                         Graph
Validating Forms

 ArtistUpdated [http://example.com/notifications]
     Artist[http://example.com/artist]
         GlobalArtistCode : int
         DefaultName : string
         MainRepertoireOwnerCompany : companyType (0..1)
         ChangedDate : datetime

 Company[http://example.com/company] id(companyType)
     OperatingCompanyCode : string
     Name : string




 POST /notifications HTTP/1.1
 Host: example.com
 Content-Type: application/x-www-form-urlencoded
 Content-Length: 301

 ArtistUpdated_Artist_GlobalArtistCode=13570&ArtistUpdated_Artist_DefaultName=Tom+W
 aits&ArtistUpdated_Artist_MainRepertoireOwnerCompany_OperatingCompanyCode=HF32L&Ar
 tistUpdated_Artist_MainRepertoireOwnerCompany_Name=Mercury+Records+Ltd&ArtistUpdat
 ed_Artist_ChangedDate=2008-09-10T13%3A57%3A14%2B01%3A00




Social Networks for Contracts
                                                  Product Catalog
                                                  Product Catalog
          Warehouse
          Warehouse                                                                  Marketing
                                                                                     Marketing



                                                      offers
                                                      offers
                               expects
                               expects                                   expects
                                                                         expects



                                             Name = ArtistUpdated
                                             Name = ArtistUpdated

                                       expects
                                       expects                      expects
                                                                    expects
                                                      has
                                                      has
            expects
            expects                                                                    expects
                                                                                       expects
                                   expects
                                   expects                              expects
                                                                        expects

                                                  Name = Artist
                                                  Name = Artist



                                                      has
                                                      has
                               has
                               has                                            has



         Name = GlobalArtistCode
         Name = GlobalArtistCode                 Name = ChangedDate
                                                 Name = ChangedDate                 Name = DefaultName
                                                                                    Name = DefaultName
         Type = int
         Type = int                              Type = datetime
                                                 Type = datetime                    Type = string
                                                                                    Type = string
Generating Consumer‐Driven Contracts

  ArtistUpdated
      Artist
          GlobalArtistCode : int
          ChangedDate : datetime




                                                        ArtistUpdated
                                                            Artist
                                                                GlobalArtistCode : int
                                                                DefaultName : string
                                                                ChangedDate : datetime




  ArtistUpdated
      Artist
          DefaultName : string
          ChangedDate : datetime




Services Share Contract, Not Type



                                   Graph                                   Contract
                                                                            Contract
                                   Graph
     Consumer‐Driven 
     Contract                                                                            Design




                                                         Consumer 
                                                         Contract




                                           Validator
                                            Validator                      Serializer
                                                                            Serializer




                                                                                         Execute

             Produce                                             Consume
Summary

• How do we get started?
   – Iteratively fill out map of the territories
• 4 core artefacts:
   – Stories
   – Capabilities
   – Services
   – Contracts
• Consumer and consumer‐driven contracts:
   – Tests exchanged between teams
   – DSL for consumer contracts




Consumer‐Driven Contracts

• http://www.martinfowler.com/articles/consumerDrivenCon
  tracts.html
• http://www.infoq.com/articles/consumer‐driven‐contracts
• http://iansrobinson.com/
Thank you




http://iansrobinson.com

Más contenido relacionado

La actualidad más candente

Agile certification integrated services faq
Agile certification integrated services faqAgile certification integrated services faq
Agile certification integrated services faqjohnlucy
 
Working together frequently asked era questions
Working together   frequently asked era questions Working together   frequently asked era questions
Working together frequently asked era questions Ray Stapleton
 
Presentation To Association Of Strategic Alliance Professionals Feb 12 2009
Presentation To Association Of Strategic Alliance Professionals Feb 12  2009Presentation To Association Of Strategic Alliance Professionals Feb 12  2009
Presentation To Association Of Strategic Alliance Professionals Feb 12 2009Mike Bowes
 
Designing the User Experience
Designing the User ExperienceDesigning the User Experience
Designing the User ExperienceJason Wehmhoener
 
Innovation in Services - LBS Professor Kamalini Ramdas
Innovation in Services - LBS Professor Kamalini RamdasInnovation in Services - LBS Professor Kamalini Ramdas
Innovation in Services - LBS Professor Kamalini RamdasLondon Business School
 
Poseidon Consulting Services - Company Presentation
Poseidon Consulting Services - Company PresentationPoseidon Consulting Services - Company Presentation
Poseidon Consulting Services - Company PresentationTeam_Poseidon
 
Market Vista: Q4 2012
Market Vista: Q4 2012Market Vista: Q4 2012
Market Vista: Q4 2012Everest Group
 
Making service quality improvement work
Making service quality improvement workMaking service quality improvement work
Making service quality improvement workTaylrocentre
 
Frameworks2go business insights delivered socially
Frameworks2go business insights delivered socially Frameworks2go business insights delivered socially
Frameworks2go business insights delivered socially frameworks2go.com
 
Kim.yunjin
Kim.yunjinKim.yunjin
Kim.yunjinNASAPMC
 
Scm pro career transition feb 2013
Scm pro   career transition feb 2013Scm pro   career transition feb 2013
Scm pro career transition feb 2013Darryl Judd
 
Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00
Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00
Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00Paul G. Huppertz
 
IBM Service Science & Innovation Community of Practice 3/6/2012
IBM Service Science & Innovation Community of Practice 3/6/2012IBM Service Science & Innovation Community of Practice 3/6/2012
IBM Service Science & Innovation Community of Practice 3/6/2012Stephen Kwan
 
Infrastructure Trends -Jan 2010
Infrastructure Trends -Jan 2010Infrastructure Trends -Jan 2010
Infrastructure Trends -Jan 2010Shahar Geiger Maor
 

La actualidad más candente (19)

Agile certification integrated services faq
Agile certification integrated services faqAgile certification integrated services faq
Agile certification integrated services faq
 
Working together frequently asked era questions
Working together   frequently asked era questions Working together   frequently asked era questions
Working together frequently asked era questions
 
Presentation To Association Of Strategic Alliance Professionals Feb 12 2009
Presentation To Association Of Strategic Alliance Professionals Feb 12  2009Presentation To Association Of Strategic Alliance Professionals Feb 12  2009
Presentation To Association Of Strategic Alliance Professionals Feb 12 2009
 
Designing the User Experience
Designing the User ExperienceDesigning the User Experience
Designing the User Experience
 
Innovation in Services - LBS Professor Kamalini Ramdas
Innovation in Services - LBS Professor Kamalini RamdasInnovation in Services - LBS Professor Kamalini Ramdas
Innovation in Services - LBS Professor Kamalini Ramdas
 
Poseidon Consulting Services - Company Presentation
Poseidon Consulting Services - Company PresentationPoseidon Consulting Services - Company Presentation
Poseidon Consulting Services - Company Presentation
 
Market Vista: Q4 2012
Market Vista: Q4 2012Market Vista: Q4 2012
Market Vista: Q4 2012
 
Making service quality improvement work
Making service quality improvement workMaking service quality improvement work
Making service quality improvement work
 
Frameworks2go business insights delivered socially
Frameworks2go business insights delivered socially Frameworks2go business insights delivered socially
Frameworks2go business insights delivered socially
 
Kim.yunjin
Kim.yunjinKim.yunjin
Kim.yunjin
 
Service Design
Service DesignService Design
Service Design
 
Scm pro career transition feb 2013
Scm pro   career transition feb 2013Scm pro   career transition feb 2013
Scm pro career transition feb 2013
 
ESF Provision - Cornwall
ESF Provision - CornwallESF Provision - Cornwall
ESF Provision - Cornwall
 
Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00
Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00
Lecture 'Servicialisation - Service Consumers Center Stage' 2012-05-24 V01.02.00
 
IBM Service Science & Innovation Community of Practice 3/6/2012
IBM Service Science & Innovation Community of Practice 3/6/2012IBM Service Science & Innovation Community of Practice 3/6/2012
IBM Service Science & Innovation Community of Practice 3/6/2012
 
Cie 42
Cie 42Cie 42
Cie 42
 
Service Design
Service Design Service Design
Service Design
 
Infrastructure Trends -Jan 2010
Infrastructure Trends -Jan 2010Infrastructure Trends -Jan 2010
Infrastructure Trends -Jan 2010
 
Vendor risk management 2013
Vendor risk management 2013Vendor risk management 2013
Vendor risk management 2013
 

Destacado

Andre Tost Service Models Java
Andre  Tost    Service Models JavaAndre  Tost    Service Models Java
Andre Tost Service Models JavaSOA Symposium
 
Mohamad Afshar Moving Beyond Project Level S O A V1
Mohamad  Afshar    Moving Beyond Project Level S O A V1Mohamad  Afshar    Moving Beyond Project Level S O A V1
Mohamad Afshar Moving Beyond Project Level S O A V1SOA Symposium
 
Dharmes Mistry Tony De Bree S O A Business Persp V1a
Dharmes  Mistry    Tony De  Bree   S O A Business Persp V1aDharmes  Mistry    Tony De  Bree   S O A Business Persp V1a
Dharmes Mistry Tony De Bree S O A Business Persp V1aSOA Symposium
 
Mark Little R E S Tand W S Star
Mark  Little    R E S Tand W S StarMark  Little    R E S Tand W S Star
Mark Little R E S Tand W S StarSOA Symposium
 
Raj Anthony Carrato R E S T Patterns
Raj    Anthony  Carrato    R E S T PatternsRaj    Anthony  Carrato    R E S T Patterns
Raj Anthony Carrato R E S T PatternsSOA Symposium
 
David Booth R D F & S O A
David  Booth    R D F &  S O ADavid  Booth    R D F &  S O A
David Booth R D F & S O ASOA Symposium
 
Chris Riley Design Patterns For Web Service Versioning
Chris  Riley   Design Patterns For Web Service VersioningChris  Riley   Design Patterns For Web Service Versioning
Chris Riley Design Patterns For Web Service VersioningSOA Symposium
 
Anish Karmakar S C A
Anish  Karmakar    S C AAnish  Karmakar    S C A
Anish Karmakar S C ASOA Symposium
 
Robert Schneider 10 Strategies
Robert  Schneider   10  StrategiesRobert  Schneider   10  Strategies
Robert Schneider 10 StrategiesSOA Symposium
 
Paul Butterworth Policy Based Approach
Paul  Butterworth    Policy  Based  ApproachPaul  Butterworth    Policy  Based  Approach
Paul Butterworth Policy Based ApproachSOA Symposium
 

Destacado (10)

Andre Tost Service Models Java
Andre  Tost    Service Models JavaAndre  Tost    Service Models Java
Andre Tost Service Models Java
 
Mohamad Afshar Moving Beyond Project Level S O A V1
Mohamad  Afshar    Moving Beyond Project Level S O A V1Mohamad  Afshar    Moving Beyond Project Level S O A V1
Mohamad Afshar Moving Beyond Project Level S O A V1
 
Dharmes Mistry Tony De Bree S O A Business Persp V1a
Dharmes  Mistry    Tony De  Bree   S O A Business Persp V1aDharmes  Mistry    Tony De  Bree   S O A Business Persp V1a
Dharmes Mistry Tony De Bree S O A Business Persp V1a
 
Mark Little R E S Tand W S Star
Mark  Little    R E S Tand W S StarMark  Little    R E S Tand W S Star
Mark Little R E S Tand W S Star
 
Raj Anthony Carrato R E S T Patterns
Raj    Anthony  Carrato    R E S T PatternsRaj    Anthony  Carrato    R E S T Patterns
Raj Anthony Carrato R E S T Patterns
 
David Booth R D F & S O A
David  Booth    R D F &  S O ADavid  Booth    R D F &  S O A
David Booth R D F & S O A
 
Chris Riley Design Patterns For Web Service Versioning
Chris  Riley   Design Patterns For Web Service VersioningChris  Riley   Design Patterns For Web Service Versioning
Chris Riley Design Patterns For Web Service Versioning
 
Anish Karmakar S C A
Anish  Karmakar    S C AAnish  Karmakar    S C A
Anish Karmakar S C A
 
Robert Schneider 10 Strategies
Robert  Schneider   10  StrategiesRobert  Schneider   10  Strategies
Robert Schneider 10 Strategies
 
Paul Butterworth Policy Based Approach
Paul  Butterworth    Policy  Based  ApproachPaul  Butterworth    Policy  Based  Approach
Paul Butterworth Policy Based Approach
 

Similar a Ian Robinson Testable Foundations

Using Business Architecture To Drive Business Services
Using Business Architecture To Drive Business ServicesUsing Business Architecture To Drive Business Services
Using Business Architecture To Drive Business ServicesDavid Baker
 
Corporate Presentation
Corporate PresentationCorporate Presentation
Corporate Presentationvickgandhi
 
BeachCherry Corporate Presentation
BeachCherry Corporate PresentationBeachCherry Corporate Presentation
BeachCherry Corporate Presentationvimalgandhi1975
 
Testing Rich Domain Models
Testing Rich Domain ModelsTesting Rich Domain Models
Testing Rich Domain ModelsChris Richardson
 
Human scaling on the front end
Human scaling on the front endHuman scaling on the front end
Human scaling on the front endRudy Rigot
 
SOA - Enabling Interoperability And Business Agility March 2009
SOA - Enabling Interoperability And Business Agility   March 2009SOA - Enabling Interoperability And Business Agility   March 2009
SOA - Enabling Interoperability And Business Agility March 2009Mike Wons
 
Visure Solutions Requirements Engineering_The word in a nutshell - Ulf Sandberg
Visure Solutions Requirements Engineering_The word in a nutshell - Ulf SandbergVisure Solutions Requirements Engineering_The word in a nutshell - Ulf Sandberg
Visure Solutions Requirements Engineering_The word in a nutshell - Ulf SandbergVisure Solutions
 
Business processes, business rules, complex event processing, the JBoss way
Business processes, business rules, complex event processing, the JBoss wayBusiness processes, business rules, complex event processing, the JBoss way
Business processes, business rules, complex event processing, the JBoss wayKris Verlaenen
 
SAF 2008 - Analysis and Architecture
SAF 2008 - Analysis  and ArchitectureSAF 2008 - Analysis  and Architecture
SAF 2008 - Analysis and Architecturemhessinger
 
Arena product presentation
Arena product presentationArena product presentation
Arena product presentationjhjsmits
 
Services Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 WorldServices Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 WorldLexumo
 
Web tek labs Services profile
Web tek labs Services profile Web tek labs Services profile
Web tek labs Services profile Mitesh Bhatia
 
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM USSmartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM USIBM Danmark
 
Mandas Deb S O Aand E D A Benefits And Best Practices V1
Mandas  Deb   S O Aand E D A  Benefits And Best Practices V1Mandas  Deb   S O Aand E D A  Benefits And Best Practices V1
Mandas Deb S O Aand E D A Benefits And Best Practices V1SOA Symposium
 
Jimwebber soa
Jimwebber soaJimwebber soa
Jimwebber soad0nn9n
 
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...DVClub
 
Intro to Drools - St Louis Gateway JUG
Intro to Drools - St Louis Gateway JUGIntro to Drools - St Louis Gateway JUG
Intro to Drools - St Louis Gateway JUGRay Ploski
 

Similar a Ian Robinson Testable Foundations (20)

Using Business Architecture To Drive Business Services
Using Business Architecture To Drive Business ServicesUsing Business Architecture To Drive Business Services
Using Business Architecture To Drive Business Services
 
Corporate Presentation
Corporate PresentationCorporate Presentation
Corporate Presentation
 
BeachCherry Corporate Presentation
BeachCherry Corporate PresentationBeachCherry Corporate Presentation
BeachCherry Corporate Presentation
 
Testing Rich Domain Models
Testing Rich Domain ModelsTesting Rich Domain Models
Testing Rich Domain Models
 
Human scaling on the front end
Human scaling on the front endHuman scaling on the front end
Human scaling on the front end
 
SOA - Enabling Interoperability And Business Agility March 2009
SOA - Enabling Interoperability And Business Agility   March 2009SOA - Enabling Interoperability And Business Agility   March 2009
SOA - Enabling Interoperability And Business Agility March 2009
 
Visure Solutions Requirements Engineering_The word in a nutshell - Ulf Sandberg
Visure Solutions Requirements Engineering_The word in a nutshell - Ulf SandbergVisure Solutions Requirements Engineering_The word in a nutshell - Ulf Sandberg
Visure Solutions Requirements Engineering_The word in a nutshell - Ulf Sandberg
 
Business processes, business rules, complex event processing, the JBoss way
Business processes, business rules, complex event processing, the JBoss wayBusiness processes, business rules, complex event processing, the JBoss way
Business processes, business rules, complex event processing, the JBoss way
 
SAF 2008 - Analysis and Architecture
SAF 2008 - Analysis  and ArchitectureSAF 2008 - Analysis  and Architecture
SAF 2008 - Analysis and Architecture
 
Arena product presentation
Arena product presentationArena product presentation
Arena product presentation
 
Soa limitations
Soa limitationsSoa limitations
Soa limitations
 
Services Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 WorldServices Oriented Infrastructure in a Web2.0 World
Services Oriented Infrastructure in a Web2.0 World
 
Next Generation BPM
Next Generation BPMNext Generation BPM
Next Generation BPM
 
Web tek labs Services profile
Web tek labs Services profile Web tek labs Services profile
Web tek labs Services profile
 
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM USSmartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
Smartere test og udvikling med virtualiserede miljøer, Mark Garcia, IBM US
 
Mandas Deb S O Aand E D A Benefits And Best Practices V1
Mandas  Deb   S O Aand E D A  Benefits And Best Practices V1Mandas  Deb   S O Aand E D A  Benefits And Best Practices V1
Mandas Deb S O Aand E D A Benefits And Best Practices V1
 
Jimwebber soa
Jimwebber soaJimwebber soa
Jimwebber soa
 
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
Topics in Verification: Reuse, Coverage, Regression Engineering, Planning, Qu...
 
Shelter Services
Shelter ServicesShelter Services
Shelter Services
 
Intro to Drools - St Louis Gateway JUG
Intro to Drools - St Louis Gateway JUGIntro to Drools - St Louis Gateway JUG
Intro to Drools - St Louis Gateway JUG
 

Más de SOA Symposium

Sven Hakan Olsson Composability Index V2
Sven Hakan Olsson    Composability  Index V2Sven Hakan Olsson    Composability  Index V2
Sven Hakan Olsson Composability Index V2SOA Symposium
 
Thomas Erl Introducing S O A Design Patterns
Thomas  Erl    Introducing  S O A  Design  PatternsThomas  Erl    Introducing  S O A  Design  Patterns
Thomas Erl Introducing S O A Design PatternsSOA Symposium
 
Radovan Janecek Avoiding S O A Pitfalls
Radovan  Janecek   Avoiding  S O A  PitfallsRadovan  Janecek   Avoiding  S O A  Pitfalls
Radovan Janecek Avoiding S O A PitfallsSOA Symposium
 
Natasja Paulssen S A P M D M And E S O A At Philips
Natasja  Paulssen    S A P  M D M And E S O A At  PhilipsNatasja  Paulssen    S A P  M D M And E S O A At  Philips
Natasja Paulssen S A P M D M And E S O A At PhilipsSOA Symposium
 
Anthony Carrato S O A Business Architecture
Anthony  Carrato    S O A  Business  ArchitectureAnthony  Carrato    S O A  Business  Architecture
Anthony Carrato S O A Business ArchitectureSOA Symposium
 
David Chappel S O A Grid
David  Chappel    S O A  GridDavid  Chappel    S O A  Grid
David Chappel S O A GridSOA Symposium
 
Johan Kumps Federal E S B
Johan  Kumps    Federal  E S BJohan  Kumps    Federal  E S B
Johan Kumps Federal E S BSOA Symposium
 
Laurent Tarin B P M Ilog
Laurent  Tarin    B P M  IlogLaurent  Tarin    B P M  Ilog
Laurent Tarin B P M IlogSOA Symposium
 
Jim Webber Guerrilla S O A With Web Services
Jim Webber    Guerrilla  S O A With  Web  ServicesJim Webber    Guerrilla  S O A With  Web  Services
Jim Webber Guerrilla S O A With Web ServicesSOA Symposium
 
Robert Schneider What Every Developer
Robert  Schneider    What Every DeveloperRobert  Schneider    What Every Developer
Robert Schneider What Every DeveloperSOA Symposium
 
Thomas Rischbeck Real Life E S B
Thomas  Rischbeck    Real  Life  E S BThomas  Rischbeck    Real  Life  E S B
Thomas Rischbeck Real Life E S BSOA Symposium
 
Stefan Pappe Making S O A Operational
Stefan  Pappe    Making  S O A  OperationalStefan  Pappe    Making  S O A  Operational
Stefan Pappe Making S O A OperationalSOA Symposium
 
Paul Brown Org Man Issues
Paul  Brown    Org  Man  IssuesPaul  Brown    Org  Man  Issues
Paul Brown Org Man IssuesSOA Symposium
 
Arnaud Simon Flight Data Processing
Arnaud  Simon    Flight  Data ProcessingArnaud  Simon    Flight  Data Processing
Arnaud Simon Flight Data ProcessingSOA Symposium
 
Mark Little Web Services And Transactions
Mark  Little    Web  Services And  TransactionsMark  Little    Web  Services And  Transactions
Mark Little Web Services And TransactionsSOA Symposium
 
S Ven Hakan Olsson Compos Index
S Ven  Hakan  Olsson    Compos IndexS Ven  Hakan  Olsson    Compos Index
S Ven Hakan Olsson Compos IndexSOA Symposium
 
Art Ligthart Service Identification Techniques
Art  Ligthart    Service  Identification  TechniquesArt  Ligthart    Service  Identification  Techniques
Art Ligthart Service Identification TechniquesSOA Symposium
 
Paul C Brown S O A Governance
Paul  C  Brown    S O A  GovernancePaul  C  Brown    S O A  Governance
Paul C Brown S O A GovernanceSOA Symposium
 
Brian Loesgen An Early Look At Oslo
Brian  Loesgen    An  Early  Look At  OsloBrian  Loesgen    An  Early  Look At  Oslo
Brian Loesgen An Early Look At OsloSOA Symposium
 
Chris Riley S O A Modeling
Chris  Riley    S O A ModelingChris  Riley    S O A Modeling
Chris Riley S O A ModelingSOA Symposium
 

Más de SOA Symposium (20)

Sven Hakan Olsson Composability Index V2
Sven Hakan Olsson    Composability  Index V2Sven Hakan Olsson    Composability  Index V2
Sven Hakan Olsson Composability Index V2
 
Thomas Erl Introducing S O A Design Patterns
Thomas  Erl    Introducing  S O A  Design  PatternsThomas  Erl    Introducing  S O A  Design  Patterns
Thomas Erl Introducing S O A Design Patterns
 
Radovan Janecek Avoiding S O A Pitfalls
Radovan  Janecek   Avoiding  S O A  PitfallsRadovan  Janecek   Avoiding  S O A  Pitfalls
Radovan Janecek Avoiding S O A Pitfalls
 
Natasja Paulssen S A P M D M And E S O A At Philips
Natasja  Paulssen    S A P  M D M And E S O A At  PhilipsNatasja  Paulssen    S A P  M D M And E S O A At  Philips
Natasja Paulssen S A P M D M And E S O A At Philips
 
Anthony Carrato S O A Business Architecture
Anthony  Carrato    S O A  Business  ArchitectureAnthony  Carrato    S O A  Business  Architecture
Anthony Carrato S O A Business Architecture
 
David Chappel S O A Grid
David  Chappel    S O A  GridDavid  Chappel    S O A  Grid
David Chappel S O A Grid
 
Johan Kumps Federal E S B
Johan  Kumps    Federal  E S BJohan  Kumps    Federal  E S B
Johan Kumps Federal E S B
 
Laurent Tarin B P M Ilog
Laurent  Tarin    B P M  IlogLaurent  Tarin    B P M  Ilog
Laurent Tarin B P M Ilog
 
Jim Webber Guerrilla S O A With Web Services
Jim Webber    Guerrilla  S O A With  Web  ServicesJim Webber    Guerrilla  S O A With  Web  Services
Jim Webber Guerrilla S O A With Web Services
 
Robert Schneider What Every Developer
Robert  Schneider    What Every DeveloperRobert  Schneider    What Every Developer
Robert Schneider What Every Developer
 
Thomas Rischbeck Real Life E S B
Thomas  Rischbeck    Real  Life  E S BThomas  Rischbeck    Real  Life  E S B
Thomas Rischbeck Real Life E S B
 
Stefan Pappe Making S O A Operational
Stefan  Pappe    Making  S O A  OperationalStefan  Pappe    Making  S O A  Operational
Stefan Pappe Making S O A Operational
 
Paul Brown Org Man Issues
Paul  Brown    Org  Man  IssuesPaul  Brown    Org  Man  Issues
Paul Brown Org Man Issues
 
Arnaud Simon Flight Data Processing
Arnaud  Simon    Flight  Data ProcessingArnaud  Simon    Flight  Data Processing
Arnaud Simon Flight Data Processing
 
Mark Little Web Services And Transactions
Mark  Little    Web  Services And  TransactionsMark  Little    Web  Services And  Transactions
Mark Little Web Services And Transactions
 
S Ven Hakan Olsson Compos Index
S Ven  Hakan  Olsson    Compos IndexS Ven  Hakan  Olsson    Compos Index
S Ven Hakan Olsson Compos Index
 
Art Ligthart Service Identification Techniques
Art  Ligthart    Service  Identification  TechniquesArt  Ligthart    Service  Identification  Techniques
Art Ligthart Service Identification Techniques
 
Paul C Brown S O A Governance
Paul  C  Brown    S O A  GovernancePaul  C  Brown    S O A  Governance
Paul C Brown S O A Governance
 
Brian Loesgen An Early Look At Oslo
Brian  Loesgen    An  Early  Look At  OsloBrian  Loesgen    An  Early  Look At  Oslo
Brian Loesgen An Early Look At Oslo
 
Chris Riley S O A Modeling
Chris  Riley    S O A ModelingChris  Riley    S O A Modeling
Chris Riley S O A Modeling
 

Último

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Último (20)

Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Ian Robinson Testable Foundations

  • 1. This Presentation Courtesy of the International SOA Symposium October 7-8, 2008 Amsterdam Arena www.soasymposium.com info@soasymposium.com Founding Sponsors Platinum Sponsors Gold Sponsors Silver Sponsors Testable Foundations for Service‐Oriented  Development Ian Robinson http://iansrobinson.com
  • 2. Tests, Testing and Testability Design &  discovery Tests Asserted  behaviour Micro Alignment Stories Business‐IT  Alignment Tests
  • 3. A Map of the Territories: From What to How Why? Who? What? How? What? Benefits Stakeholders Processes provide want deliver Capabilities realise host Outcomes Services motivate prevent implement Forces Technologies Obstacles Stories, Capabilities, Services and Contracts Stories Capabilities Describe goals  Resources to  & outcomes realise  outcomes Contracts Services Assert  interactions  Host  between  capabilities services
  • 4. (Behaviour‐Driven Development) Stories Outside‐in As an rolee Man Outcomes  < Ord r > agemen I want <felfill orders bast service to fu a offer current ture> ed on  So that <cbn m ings I  a eneet ex ef ct> mer  i usto pectations Value  efficiently   External  behaviour Capabilities Resources People Processes Technology Capabilities Outcomes Stable Processes Technology What not How change changes
  • 5. Contracts Consumer‐Driven  Contract Design Consumer  Adopt Contract Communicate (Validate according to…) (Use according to…) Execute Produce Consume XmlUnit public class ArtistUpdatedTestCase extends XMLTestCase { ... protected String xml; public void testXPaths() throws Exception { assertXpathExists("/n:ArtistUpdated", xml); assertXpathExists("/n:ArtistUpdated/a:Artist", xml); assertXpathExists("/n:ArtistUpdated/a:Artist/a:GlobalArtistCode", xml); assertXpathExists("/n:ArtistUpdated/a:Artist/a:DefaultName", xml); assertXpathExists("/n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany", xml); assertXpathExists("/n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany/" + "s:OperatingCompanyCode", xml); assertXpathExists("/n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany/" + "s:Name", xml); assertXpathExists("/n:ArtistUpdated/a:Artist/a:ChangedDate", xml); } }
  • 6. Schematron <?xml version="1.0" encoding="utf-8" ?> <schema xmlns="http://www.ascc.net/xml/schematron"> XML XML <title>ArtistUpdated Contract</title> <ns uri="http://example.com/notifications" prefix="n"/> <ns uri="http://example.com/artist" prefix="a"/> <ns uri="http://example.com/sharedtypes" prefix="s"/> <phase id="validateStructure"> <active pattern="structure"/> </phase> Schematron  Intermediate  <pattern name="Validate structure" id="structure"> Schematron  Intermediate  XSLT XSLT rules <rule context="/"> rules transform transform <assert test="n:ArtistUpdated"/> </rule> <rule context="n:ArtistUpdated"> <assert test="a:Artist"/> </rule> <rule context="n:ArtistUpdated/a:Artist"> <assert test="a:GlobalArtistCode"/> <assert test="a:DefaultName"/> <assert test="a:MainRepertoireOwnerCompany"/> <assert test="a:ChangedDate"/> </rule> <rule context="n:ArtistUpdated/a:Artist/a:MainRepertoireOwnerCompany"> <assert test="s:OperatingCompanyCode"/> Results <assert test="s:Name"/> Results </rule> </pattern> </schema> An External DSL for Consumer Contracts Declarative ArtistUpdated [http://example.com/notifications] Artist[http://example.com/artist] GlobalArtistCode : int DefaultName : string MainRepertoireOwnerCompany : companyType (0..1) ChangedDate : datetime Company[http://example.com/company] id(companyType) OperatingCompanyCode : string Name : string What not How
  • 7. Validating XML ArtistUpdated [http://example.com/notifications] Artist[http://example.com/artist] GlobalArtistCode : int DefaultName : string MainRepertoireOwnerCompany : companyType (0..1) ChangedDate : datetime Company[http://example.com/company] id(companyType) OperatingCompanyCode : string Name : string <ArtistUpdated xmlns="http://example.com/notifications"> <Artist xmlns="http://example.com/artist"> <GlobalArtistCode>13570</GlobalArtistCode> <DefaultName>Tom Waits</DefaultName> <MainRepertoireOwnerCompany xmlns:c="xmlns="http://example.com/company"> <c:OperatingCompanyCode>HF32L</c:OperatingCompanyCode> <c:Name>Mercury Records Ltd</c:Name> </MainRepertoireOwnerCompany> <ChangedDate>2008-09-10T13:57:14+01:00</ChangedDate> ... </Artist> <ArtistUpdated> Validating JSON ArtistUpdated [http://example.com/notifications] Artist[http://example.com/artist] GlobalArtistCode : int DefaultName : string MainRepertoireOwnerCompany : companyType (0..1) ChangedDate : datetime Company[http://example.com/company] id(companyType) OperatingCompanyCode : string Name : string { "ArtistUpdated": { "Artist": { "GlobalArtistCode": 13570, "DefaultName": "Tom Waits", "MainRepertoireOwnerCompany": { "OperatingCompanyCode": "HF32L", "Name": "Mercury Records Ltd", }, "ChangedDate": "2008-09-10T13:57:14+01:00" } } }
  • 8. Validating YAML ArtistUpdated [http://example.com/notifications] Artist[http://example.com/artist] GlobalArtistCode : int DefaultName : string MainRepertoireOwnerCompany : companyType (0..1) ChangedDate : datetime Company[http://example.com/company] id(companyType) OperatingCompanyCode : string Name : string ArtistUpdated: Artist: GlobalArtistCode: 13570 DefaultName: Tom Waits MainRepertoireOwnerCompany: OperatingCompanyCode: HF32L Name: Mercury Records Ltd ChangedDate: 2008-09-10T13:57:14+01:00 Transformations Validator Validator ArtistUpdated [http://example.com/notifications] Artist[http://example.com/artist] GlobalArtistCode : int DefaultName : string MainRepertoireOwnerCompany : companyType (0..1) Contract ChangedDate : datetime Contract AST AST Serializer Serializer Company[http://example.com/company] id(companyType) OperatingCompanyCode : string Name : string Graph Graph
  • 9. Validating Forms ArtistUpdated [http://example.com/notifications] Artist[http://example.com/artist] GlobalArtistCode : int DefaultName : string MainRepertoireOwnerCompany : companyType (0..1) ChangedDate : datetime Company[http://example.com/company] id(companyType) OperatingCompanyCode : string Name : string POST /notifications HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded Content-Length: 301 ArtistUpdated_Artist_GlobalArtistCode=13570&ArtistUpdated_Artist_DefaultName=Tom+W aits&ArtistUpdated_Artist_MainRepertoireOwnerCompany_OperatingCompanyCode=HF32L&Ar tistUpdated_Artist_MainRepertoireOwnerCompany_Name=Mercury+Records+Ltd&ArtistUpdat ed_Artist_ChangedDate=2008-09-10T13%3A57%3A14%2B01%3A00 Social Networks for Contracts Product Catalog Product Catalog Warehouse Warehouse Marketing Marketing offers offers expects expects expects expects Name = ArtistUpdated Name = ArtistUpdated expects expects expects expects has has expects expects expects expects expects expects expects expects Name = Artist Name = Artist has has has has has Name = GlobalArtistCode Name = GlobalArtistCode Name = ChangedDate Name = ChangedDate Name = DefaultName Name = DefaultName Type = int Type = int Type = datetime Type = datetime Type = string Type = string
  • 10. Generating Consumer‐Driven Contracts ArtistUpdated Artist GlobalArtistCode : int ChangedDate : datetime ArtistUpdated Artist GlobalArtistCode : int DefaultName : string ChangedDate : datetime ArtistUpdated Artist DefaultName : string ChangedDate : datetime Services Share Contract, Not Type Graph Contract Contract Graph Consumer‐Driven  Contract Design Consumer  Contract Validator Validator Serializer Serializer Execute Produce Consume
  • 11. Summary • How do we get started? – Iteratively fill out map of the territories • 4 core artefacts: – Stories – Capabilities – Services – Contracts • Consumer and consumer‐driven contracts: – Tests exchanged between teams – DSL for consumer contracts Consumer‐Driven Contracts • http://www.martinfowler.com/articles/consumerDrivenCon tracts.html • http://www.infoq.com/articles/consumer‐driven‐contracts • http://iansrobinson.com/