7irene Application Reference Model - Presented at OT2004

Preview:

Citation preview

29 March 2004

The Application Reference Modelfor successful Enterprise Software Development

John Cheesman, Greg Hodgkinsonwww.7irene.com

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

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

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, …

Copyright © 2004

Enterprise Application Requirements

Flexibility / AgilityReconfiguration, Loose-couplingInteroperability standards

Asset reuse – IntegrationCOTS, DBs, Components, …

Technology-independenceDesign-time -> Runtime continuity

Scalable Application Development process

Copyright © 2004

The Core Concepts

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

Application Reference Model

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

Copyright © 2004

Component Levels

TC

TC

TC

FC

FC

OrderMgr

FunctionalComponent

OrderEJB

TechnologyComponent

*

Copyright © 2004

FC Design Pattern

FC

ServiceBinding

TechnologyPort

BusinessLogic

FunctionalInterface

Technology-specificBinding (e.g. JNDI Lookup)

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

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

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

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?

Copyright © 2004

Defining the runtime – Assembly Elements

ApplicationAssembly

Technical Environment

ProvisionFunctionalComponent

Service

State

Assembly

*

LocationManager

DataSource:SouthEast

Copyright © 2004

Functional Specification Architecture

CarInsuranceServices<<ComponentSpec>>

CustomerManager<<ComponentSpec>>

HouseInsuranceServices<<ComponentSpec>>

MarketingPrograms<<ComponentSpec>>

Functional Component Reuse -Does this give application integration?

Copyright © 2004

Runtime Assembly Example

: CarInsuranceServices : HouseInsuranceServices

CarInsCustomers : CustomerManager

HouseInsCustomers : CustomerManager

: MarketingPrograms

Different Assembly ElementsSame Functional Component (Spec)

Copyright © 2004

Interoperability Standards

Runtime Component ModelConstrains Functional Component Spec

Loose-couplingConnectors (Service Mappings)

Application Platform

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

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

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

Copyright © 2004

Application PlatformAssembly Assembly

Element

ServiceBinding

Assembly Element

Assembly ElementService

Mapping

Application Platform

Other Services…

Service Discovery Service

Runtime Component Model

Technology Platform

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.

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

Copyright © 2004

Concept Examples

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

Copyright © 2004

Multiple concept applications

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

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?

Copyright © 2004

Linking Architecture and Assembly

Architect

Provision

Assemble

Logical Assembly Definition

Deploy

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

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

Copyright © 2004

Functional Component Publication

Functional Component Modules

Technology Component Deployment Descriptor

Functional Component Deployment Descriptor

Copyright © 2004

Assembly – Pulling it all together

TechnicalArchitecture Logical Assembly

Definition

AssembleFunctional Component Modules

Functional Component Deployment Descriptor

Technology Component Deployment Descriptor

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

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

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

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

Copyright © 2004

Optimise Your Software Lifecycle-Demonstration

Copyright © 2004

For more information…

John Cheesmanjohn.cheesman@7irene.com

Greg Hodgkinsongreg.hodgkinson@7irene.com

www.7irene.com

Recommended