37
29 March 2004 The Application Reference Model for successful Enterprise Software Development John Cheesman, Greg Hodgkinson www.7irene.com

7irene Application Reference Model - Presented at OT2004

Embed Size (px)

Citation preview

Page 1: 7irene Application Reference Model - Presented at OT2004

29 March 2004

The Application Reference Modelfor successful Enterprise Software Development

John Cheesman, Greg Hodgkinsonwww.7irene.com

Page 2: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Agenda

What is an Application Reference Model?

Enterprise Application RequirementsEnterprise Application Concepts– Functional Component, Service– Assembly, Application Platform

Applying the Reference ModelSoftware Lifecycle ManagementDemonstration

Page 3: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Business Requirements from IT

Seamless technology-independent, software development life-cycleAccelerated development, integration and management of EnterpriseapplicationsGreater quality, flexibility and reliabilityFaster ROI for business solutions

Page 4: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

What is an Enterprise Application?

BusinessCross-discipline: Large, distributed teams which involve multiple stakeholdersHigh-level visibility and sign-off: large budgets and large numbers of resources are involved.Mission-critical

TechnicalTransaction-based; Large number of transactionsOne to Many and Many to One TransactionsLarge volumes of dataLarge numbers of usersRelatively simple user interactionSecure, reliable, available, scalable, …

Page 5: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Enterprise Application Requirements

Flexibility / AgilityReconfiguration, Loose-couplingInteroperability standards

Asset reuse – IntegrationCOTS, DBs, Components, …

Technology-independenceDesign-time -> Runtime continuity

Scalable Application Development process

Page 6: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

The Core Concepts

Functional Component (Design Time)Assembly Element (Run Time)Loose-couplingApplication PlatformApplication Layering

Application Reference Model

Page 7: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Functional Component (FC)provided

requiredspec

*

*

1..*

realization

*

*1

*instance

1

0..1 1

source

FunctionalComponent Spec

FunctionalInterface Spec

FunctionalComponent

FunctionalComponent Object

FunctionalComponent

Implementation

FunctionalComponent Module

1..*

1..*module

Specification Unit

Implementation Unit

Deployment Unit

Execution Unit

Page 8: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Component Levels

TC

TC

TC

FC

FC

OrderMgr

FunctionalComponent

OrderEJB

TechnologyComponent

*

Page 9: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

FC Design Pattern

FC

ServiceBinding

TechnologyPort

BusinessLogic

FunctionalInterface

Technology-specificBinding (e.g. JNDI Lookup)

Technology-specific Interface (e.g. EJB Home Interface)

Page 10: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

J2EE FunctionalComponent Implementation

Refinement Stages

Refine – Apply:- Language Constraints- Application Platform Standards

Model

Java FunctionalComponent Specification

Refine/Implement – Apply:- Technology Platform-specific Design Patterns

“Pure” FunctionalComponent Specification

UML

UML + Java

J2EE

Source

Page 11: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

CustomerMgtBean

CustomerMgtBean()ejbActivate() : voidejbPassivate() : voidejbRemove() : voidsetSessionContext(sessioncontext : SessionContext) : void<<EJBRemoteMethod>> createCustomer(inContext : IContext, inCustomer : ICustomerTO) : IIDTO<<EJBRemoteMethod>> getCustomer(inContext : IContext, inCustomerId : IIDTO) : ICustomerTO

(from e jb)

<<EJBSession>>

CustomerManagerCS(from spec)

<<Interface>>ICustomerMgt

getCustomer(inContext : IContext, inCustomerId : IIDTO) : ICustomerTOcreateCustomer(inContext : IContext, inCustomer : ICustomerTO) : IIDTO

(from provided)

<<Interface>>

ICustomerMgtEJB(from e jb)

<<EJBRemoteInterface>>

EJBObject(from ejb)

<<Interface>>

SessionBean(from ejb)

<<Interface>>

CustomerMgtServiceBinding

getCustomer(inContext : IContext, inCustomerId : IIDTO) : ICustomerTOcreateCustomer(inContext : IContext, inCustomer : ICustomerTO) : IIDTO

(from service)FC

FC Implementation - Example

TC

FunctionalInterface

Technology-specificBinding (e.g. JNDI Lookup)

Technology-specific Interface

Page 12: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Service and Component

ComponentService Definition

Component:ObjectService

instance-of

Service –Client’s View

Design Time

Run Time

Component –Supplier’s View

What does it do for me? What is the unit of change?

Page 13: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Defining the runtime – Assembly Elements

ApplicationAssembly

Technical Environment

ProvisionFunctionalComponent

Service

State

Assembly

*

LocationManager

DataSource:SouthEast

Page 14: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Functional Specification Architecture

CarInsuranceServices<<ComponentSpec>>

CustomerManager<<ComponentSpec>>

HouseInsuranceServices<<ComponentSpec>>

MarketingPrograms<<ComponentSpec>>

Functional Component Reuse -Does this give application integration?

Page 15: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Runtime Assembly Example

: CarInsuranceServices : HouseInsuranceServices

CarInsCustomers : CustomerManager

HouseInsCustomers : CustomerManager

: MarketingPrograms

Different Assembly ElementsSame Functional Component (Spec)

Page 16: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Interoperability Standards

Runtime Component ModelConstrains Functional Component Spec

Loose-couplingConnectors (Service Mappings)

Application Platform

Page 17: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Runtime Component ModelInterface Language (Java)DataType standard (ITransferObject)Exception standardInteraction Context (IContext)

Context-sensitivity enables an application to adapt at runtime

IContext

setPlatformContext()getPlatformContext()setImplementationContext()getImplementationContext()

<<Interface>>

IImplementationContext<<Interface>>

1

IPlatformContext

getAssemblyDefinition() : IAssemblyInfosetAssemblyDefinition(inAssemblyDefinition : IAssemblyInfo) : voidgetUserInfo() : IUserInfosetUserInfo(inUserInfo : IUserInfo) : void

<<Interface>>

11

1

Page 18: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Loose-Coupling – Service Discovery

ICustMgt Separate Service Request from Service Provision via a Service Discovery Service

Client depends only on service spec, Assembler decides which instances.

IClaims : Insurance

Claim

InsuranceCustomers:CustomerManager

3. provide2. request 1. publish

:Service Discovery

technology-platform-independent. Keep service connection

platform-independent to allow for alternative suppliers using different implementations

Service binding binds the service specification to the implementation.Only the binding needs to be published to the Discovery Service.

Insurance Customers: Customer Manager Imp

: InsuranceClaim Imp

IClaims ICustMgt

:Service Discovery

2. request 1. publish3. provide

ServiceBinding

Service Implementation

Page 19: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Loose-Coupling – Service Mappings

Service requests can be fulfilled by “functionally-equivalent” services using service mappings. Service mappings are technology-platform-independent.Useful when assembling elements developed independently.

Insurance Customers: Customer Manager Imp

: InsuranceClaim Imp

IClaims ICustMgt

:Service Discovery

2. request (1. publish)3. provide

ServiceBinding

Service ImplementationICustMgt2

ServiceMapping

1. publish

Page 20: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Application PlatformAssembly Assembly

Element

ServiceBinding

Assembly Element

Assembly ElementService

Mapping

Application Platform

Other Services…

Service Discovery Service

Runtime Component Model

Technology Platform

Page 21: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Application Layers - Example

APPLIC

ATIO

N

User Interface

User Dialogue

System Services

Domain Services

InfrastructureServices

What the user sees.UI Logic.

Workflow dialogue.Use Case Logic.

Business process transactions.

SYSTEM

Domain entity services.

Domain-independent services.

Page 22: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Application Reference ModelBusiness Process

Application User Interface

automatesUser Dialogue

ServiceBinding

Technology Platform

System Services

Domain ServicesApplication Platform

InfrastructureServices

supports

Service Discovery Service

Runtime Component Model applies

Page 23: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Concept Examples

Page 24: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Topics

What is an Application Reference Model?

Enterprise Application RequirementsEnterprise Application Concepts– Functional Component, Service– Assembly, Application Platform

Applying the Reference ModelSoftware Lifecycle MgtDemonstration

Page 25: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Multiple concept applications

FC implementation exchangeLife-cycle traceabilityTechnology-abstractionAsynchronous service bindingsData IntegrationEnvironment DeploymentCOTS integration…

Page 26: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Software Lifecycle traceability

How do you link what is assembled and

deployed back to your original architecture?

Do your logical constructs get

“compiled away”?

Can you distinguish the logical runtime

architecture from your physical runtime environments?

Is your lifecycle broken?

Page 27: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Linking Architecture and Assembly

Architect

Provision

Assemble

Logical Assembly Definition

Deploy

Page 28: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Technology Independent Architecture

: CarInsuranceServices : HouseInsuranceServices

CarInsCustomers : CustomerManager

HouseInsCustomers : CustomerManager

: MarketingPrograms

Architect

FunctionalComponent Specs

CarInsuranceServices<<ComponentSpec>>

CustomerManager<<ComponentSpec>>

HouseInsuranceServices<<ComponentSpec>>

MarketingPrograms<<ComponentSpec>>

Logical Assembly Definition

Page 29: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Managing Technology Dependencies

Provision

FunctionalComponent Specs Functional Component

Modules

Functional Component Deployment Descriptor

Technology Component Deployment Descriptor

CustomerMgtBean

CustomerMgtBean()ejbActivate() : voidejbPassivate() : voidejbRemove() : voidsetSessionContext(sessioncontext : SessionContext) : void<<EJBRemoteMethod>> createCustomer(inContext : IContext, inCustomer : ICustomerTO) : IIDTO<<EJBRemoteMethod>> getCustomer(inContext : IContext, inCustomerId : IIDTO) : ICustomerTO

(f rom e jb)

<<EJBSes sion>>

CustomerManagerCS(from spec)

<<Interface>>ICustomerMgt

getCustomer(inContext : IContext, inCustomerId : IIDTO) : ICustomerTOcreateCustomer(inContext : IContext, inCustomer : ICustomerTO) : IIDTO

(from provided)

<<Interface>>

ICustomerM gtEJB(from e jb)

<<EJBRemoteInterface>>

EJBObject(from ejb)

<<Interface>>

SessionBean(from ejb)

<<Interface>>

CustomerMgtServiceBinding

getCustomer(inContext : IContext, inCustomerId : IIDTO) : ICustomerTOcreateCustomer(inContext : IContext, inCustomer : ICustomerTO) : IIDTO

(from service)

FC

TC

Page 30: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Functional Component Publication

Functional Component Modules

Technology Component Deployment Descriptor

Functional Component Deployment Descriptor

Page 31: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Assembly – Pulling it all together

TechnicalArchitecture Logical Assembly

Definition

AssembleFunctional Component Modules

Functional Component Deployment Descriptor

Technology Component Deployment Descriptor

Page 32: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Linking Architecture and Assembly

FC

FCSpec

FCImp

FCSpec

ConnectionFunc Spec

ConnectorImp

Functional Spec Architecture

FCOFCO ConnectionQoS

FCFCImp

Connection

Functional Componentfunctional-component.xmlejb-jar.xml

AE AE

ConnectorSpec

Logical Assembly Definitionlogical-assembly.xml

Technical Environmentstate/

config

Assembly Element Definitionassembly-element.xmlejb-jar.xmlweblogic*.xml/ibm*.xml

AEAE

Physical Assemblyphysical-assembly.xml

Page 33: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

logical assembly xml

<logical-assembly><name>CarInsuranceAssembly</name><version>1-0</version>

<connections><connection>

<name>CarInsServToCarInsuranceCustomersConnection</name><requesting-assembly-element>CarInsuranceServices-A</requesting-assembly-element><required-interface>

com.sevenirene.demo.component.carInsuranceServices.spec.required.ICarInsCustomerMgt</required-interface><providing-assembly-element>CarInsuranceCustomers-A</providing-assembly-element>

</connection></connections>

</logical-assembly>

: CarInsuranceServices : HouseInsuranceServices

CarInsCustomers : CustomerManager

HouseInsCustomers : CustomerManager

: MarketingPrograms

Page 34: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

assembly element xml

<assembly-element name="CarInsuranceCustomers-A" type="functional-component"><functional-component-specification name="CustomerManager" version="1-0"/><functional-component name="CustomerManager" version="1-0-0"/>

<service-binding><class-name>

com.sevenirene.demo.component.customerManager.impl.service.CustomerMgrServiceBinding</class-name><properties>

<property><name>jndi-name</name><value>ejb/insurancecompany/CustomerManager</value>

</property></properties>

</service-binding></assembly-element>

Service BindingImplementation

Technology Platform link

Page 35: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

physical assembly xml<physical-assembly>

<version>1-0-0</version><logical-assembly>

<name>CarInsuranceAssembly</name><version>1-0</version>

</logical-assembly>

<assembly-elements><assembly-element>

<name>CarInsuranceCustomers-A</name></assembly-element><assembly-element>

<name>CarInsuranceServices-A</name></assembly-element>

</assembly-elements>

<connections><connection>

<name>CarInsServToCarInsuranceCustomersConnection</name><connector>

<name>CarInsServToCustomerMgr</name><version>1-0-0</version>

</connector></connection>

</connections></physical-assembly>

Logical Assembly

Assembly Elements

Connectionimplementations

Page 36: 7irene Application Reference Model - Presented at OT2004

Copyright © 2004

Optimise Your Software Lifecycle-Demonstration