Upload
ghodgkinson
View
554
Download
1
Embed Size (px)
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