Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
©1998, 1999, 2000, 2001 Rational Software - All rights reserved©1998, 1999, 2000, 2001 Rational Software - All rights reserved
Session MSP11Session MSP11
Towards Software ManufacturingTowards Software Manufacturing
Wojtek KozaczynskiJack Greenfield
Wojtek KozaczynskiJack Greenfield
SpeakersSpeakers! Jack Greenfield
" Chief Architect, Practitioner Desktop Group" Leads architecture practice for the organization developing
the Rational Rose family of products " Editor for Wiley Application Development Series" Active contributor to related J2EE and OMG standards
! Wojtek (Voytek) Kozaczynski" Director, Architectures & Application Frameworks " Leads development of reusable software assets on the
Rational e-development Accelerators initiative" Active contributor to related J2EE and OMG standards
! Jack Greenfield" Chief Architect, Practitioner Desktop Group" Leads architecture practice for the organization developing
the Rational Rose family of products " Editor for Wiley Application Development Series" Active contributor to related J2EE and OMG standards
! Wojtek (Voytek) Kozaczynski" Director, Architectures & Application Frameworks " Leads development of reusable software assets on the
Rational e-development Accelerators initiative" Active contributor to related J2EE and OMG standards
Overview Overview ! Economic importance of enterprise applications is growing! Demand for high quality enterprise applications is growing
" Requires quicker, less costly, more reliable provisioning! Software development industry is changing to meet the demand
" Natural consequence of industry maturation" Transitioning from craftsmanship to manufacturing
! Rational is driving and supporting the transition" A process-centric, standards-based approach to automating enterprise
application development
! Economic importance of enterprise applications is growing! Demand for high quality enterprise applications is growing
" Requires quicker, less costly, more reliable provisioning! Software development industry is changing to meet the demand
" Natural consequence of industry maturation" Transitioning from craftsmanship to manufacturing
! Rational is driving and supporting the transition" A process-centric, standards-based approach to automating enterprise
application development
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
Enterprise Application CharacteristicsEnterprise Application Characteristics! Implement all or part of a business process
" Contain a model of a “business reality”! Large amounts of highly structured information
" May have 1000s of data types and associations" May have 1000000s of instances with complex relationships
! Small amounts of complex computation" User interaction" Constraint enforcement" Process automation, …
! Often complex, distributed deployment infrastructure" Multiple processors" Complex interfaces and communication
! Implement all or part of a business process" Contain a model of a “business reality”
! Large amounts of highly structured information" May have 1000s of data types and associations" May have 1000000s of instances with complex relationships
! Small amounts of complex computation" User interaction" Constraint enforcement" Process automation, …
! Often complex, distributed deployment infrastructure" Multiple processors" Complex interfaces and communication
Enterprise Application Characteristics (Cont.)Enterprise Application Characteristics (Cont.)! Stringent quality of service requirements
" Security of critical data and processes with widely exposed interfaces" Scalability to large numbers of clients and transactions
! Overwhelming logistical complexity" Rapid response to constantly changing business conditions" Multiple stakeholders" Different technologies and development methods" Concurrent projects at different stages of development
! Stringent quality of service requirements" Security of critical data and processes with widely exposed interfaces" Scalability to large numbers of clients and transactions
! Overwhelming logistical complexity" Rapid response to constantly changing business conditions" Multiple stakeholders" Different technologies and development methods" Concurrent projects at different stages of development
TimeTo
Market
TimeTo
Market
QualityQualityCostCost
Why Is This Important? Why Is This Important? ! By 2004, the worldwide IT services industry will grow
at a compound annual growth rate (CAGR) of 11% to reach almost $584.6 billion
IDC Worldwide IT Services Industry Forecast Analysis, 1997-2004.
" Systems integration will grow at 13% CAGR; Rising from $59 billion in 1999 to $109 by 2004
" Packaged software support and integration will grow at 15% CAGR; Rising from $35 billion in 1999 to $71 billion in 2004
" Network infrastructure management will grow at 16% CAGR (interoperability is the major issue)
! By 2004, the worldwide IT services industry will grow at a compound annual growth rate (CAGR) of 11% to reach almost $584.6 billion
IDC Worldwide IT Services Industry Forecast Analysis, 1997-2004.
" Systems integration will grow at 13% CAGR; Rising from $59 billion in 1999 to $109 by 2004
" Packaged software support and integration will grow at 15% CAGR; Rising from $35 billion in 1999 to $71 billion in 2004
" Network infrastructure management will grow at 16% CAGR (interoperability is the major issue)
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
Enterprise Applications Are Handcrafted Enterprise Applications Are Handcrafted
! Ad-hoc development! Development at low levels of abstraction! Developers must cope with broad abstraction gap
between requirements and designs! Reliance on labor-intensive activities ! No economically-significant reuse! High levels of discovery! One-off implementations
! Ad-hoc development! Development at low levels of abstraction! Developers must cope with broad abstraction gap
between requirements and designs! Reliance on labor-intensive activities ! No economically-significant reuse! High levels of discovery! One-off implementations
Evidence Of The ProblemEvidence Of The Problem
! According to the Standish Group's Chaos study more than half of the IT development projects undertaken in the United States come in late and over budget
! According to the Standish Group's Chaos study more than half of the IT development projects undertaken in the United States come in late and over budget
32%$0.6Small28%$1.1Medium24%$1.2MLarge
Project Success RateAverage Project CostCompany Size
Standish Group's Chaos Report, 1999
Example Of The Abstraction GapExample Of The Abstraction Gap! A feature (requirement) maps to multiple logical constructs…
" Interfaces, methods, data members, message headers, persistence bindings, schema elements, configuration elements
! …distributed across multiple physical artifacts" Source code, deployment descriptors, external connectors, schemas
! …expressed in multiple implementation technologies" Java, JavaScript, EJB, SQL, JCX, CICS, DTP/XA, JMS, JNDI, LDAP,
NDS, JAAS, Kerberos, JSP, Servlet, XML, HTML, SOAP, WSDL, …! …developed and managed by multiple participants
" Component provider, application developer, application deployer, platform provider, database administrator, system administrator
! A feature (requirement) maps to multiple logical constructs…" Interfaces, methods, data members, message headers, persistence
bindings, schema elements, configuration elements! …distributed across multiple physical artifacts
" Source code, deployment descriptors, external connectors, schemas! …expressed in multiple implementation technologies
" Java, JavaScript, EJB, SQL, JCX, CICS, DTP/XA, JMS, JNDI, LDAP, NDS, JAAS, Kerberos, JSP, Servlet, XML, HTML, SOAP, WSDL, …
! …developed and managed by multiple participants" Component provider, application developer, application deployer,
platform provider, database administrator, system administrator
This Situation Is Not SustainableThis Situation Is Not Sustainable! Low quality, performance, hard
to maintain! High failure rate! Long time to market ! Requires highly skilled resources
! Low quality, performance, hard to maintain
! High failure rate! Long time to market ! Requires highly skilled resources
! Tools tied to changing implementation technology
! Platforms provide proprietary solutions
! Few reusable architectures or frameworks
! Application developers still build infrastructures
! Tools tied to changing implementation technology
! Platforms provide proprietary solutions
! Few reusable architectures or frameworks
! Application developers still build infrastructures
0%
20%
40%
60%
80%
100%
Development Resources
TechnicalDevelopersFunctionalDevelopersOther
Industry In TransitionIndustry In Transition! Market Consolidation
" Number of key deployment infrastructure providers reduced to four or five
" Number of key development infrastructure providers reduced to three or four
! … leads to Comoditization" Enterprise class component architectures" Software development infrastructure and IDEs in particular
! Standardization" MOF, UML, XML, XMI, JMI" UML profiles for specific purposes
! Market Consolidation " Number of key deployment infrastructure providers reduced
to four or five" Number of key development infrastructure providers reduced
to three or four! … leads to Comoditization
" Enterprise class component architectures" Software development infrastructure and IDEs in particular
! Standardization" MOF, UML, XML, XMI, JMI" UML profiles for specific purposes
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
From Craftsmanship To FabricationFrom Craftsmanship To Fabrication! Fabrication: the process by which individual structural [or
behavioral] components of a system are manufactured [and assembled]
Academic Press Dictionary of Science and Technology
! Fabrication: 1) to make or create 2) to construct by combining or assembly 3) the act or process of manufacturing
The American Heritage Dictionary
! Fabricate; to construct from diverse and usually standardized parts
Webster’s
! Fabrication: the process by which individual structural [or behavioral] components of a system are manufactured [and assembled]
Academic Press Dictionary of Science and Technology
! Fabrication: 1) to make or create 2) to construct by combining or assembly 3) the act or process of manufacturing
The American Heritage Dictionary
! Fabricate; to construct from diverse and usually standardized parts
Webster’s
Fabrication ProcessFabrication Process! Guiding principles
" Facilitate use of standard parts" Raise level of abstraction for designers" Generate implementations directly from designs" Automate frequently recurring tasks" Reduce reliance on labor intensive activities" Promote reuse of designs and products
! “ilities” of mature fabrication process" Repeatability" Predictability " Replaceability
! Guiding principles " Facilitate use of standard parts" Raise level of abstraction for designers" Generate implementations directly from designs" Automate frequently recurring tasks" Reduce reliance on labor intensive activities" Promote reuse of designs and products
! “ilities” of mature fabrication process" Repeatability" Predictability " Replaceability
What Is Software Fabrication?What Is Software Fabrication?
! Rapid enterprise application provisioning paradigm! Promoting development from a base of reusable,
standardized software assets ! Based on pattern, model and component technologies! Replacing manual development practices with process
automation and standardized development infrastructure
! Rapid enterprise application provisioning paradigm! Promoting development from a base of reusable,
standardized software assets ! Based on pattern, model and component technologies! Replacing manual development practices with process
automation and standardized development infrastructure
Elements Of Software Fabrication Elements Of Software Fabrication
Use of known solutions to common design problems. Provides a way or representing and communicating best practices and promotes Automated Design and Automated Assembly.
Pattern-Oriented Development
Use of pre-fabricated, self-contained software constructs (components) built to be composed to collaborate with other components and to be managed by component container. Key types of a Standard Parts providing a foundation for Automated Design and Assembly.
Component-Based Development
The underpinning and the “backdrop” of modern software development. Assures predictability and repeatability through describing recommended development workflows, activities, artifacts, skill and roles.
Standard Process
Tool support providing automation of common design, code development, assembly and deployment operations. It is the software realization of Standardized Tools and Automated Design and Assembly.
Automation
Development based on reuse of pre-packaged software assets. It is the software realization of the Standard Parts fabrication principle. The assets include both deployment infrastructure and domain parts.
Asset-BasedDevelopment
Use of a common, unambiguous graphically-oriented (user-friendly) language to represent software artifacts. Provides a semantic foundation for Standard Parts, Tools and Automated Design and Assembly.
Model Driven Development
Putting It All TogetherPutting It All Together
! Component-Based Development " Standardized reusable parts
! Model-Driven Development" Direct specification of concepts
! Pattern-Oriented Development " Solutions to known problems
! Asset-Based Development" Comprehensive approach to deriving
solutions from a base of pre-packaged software assets
! Supported by " Software Development Process" Tools Automation
! Component-Based Development " Standardized reusable parts
! Model-Driven Development" Direct specification of concepts
! Pattern-Oriented Development " Solutions to known problems
! Asset-Based Development" Comprehensive approach to deriving
solutions from a base of pre-packaged software assets
! Supported by " Software Development Process" Tools Automation
ComponentsComponents
PatternsPatterns
ModelsModels
Reusable AssetsReusable Assets
ProcessProcess
AutomationAutomation
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
Herzum & Sims: Business Component Factory: A Comprehensive Overviewof Component-Based Development for the Enterprise.
What’s A Component?What’s A Component?! A component is a self-contained software construct that has a
defined use, has a run-time interface, can be autonomously deployed, and is built with foreknowledge of a specific component socket.
! A component socket is a well-defined and well-known run-timeinterface to a supporting infrastructure into which the component will fit.
! A component is built for composition and collaboration with other components.
! A component socket and the corresponding components are designed for use by a person with a defined set of skills and tools.
! A component is a self-contained software construct that has a defined use, has a run-time interface, can be autonomously deployed, and is built with foreknowledge of a specific component socket.
! A component socket is a well-defined and well-known run-timeinterface to a supporting infrastructure into which the component will fit.
! A component is built for composition and collaboration with other components.
! A component socket and the corresponding components are designed for use by a person with a defined set of skills and tools.
Example – Java 2 Platform, Enterprise EditionExample – Java 2 Platform, Enterprise Edition! Separation of concerns
" Application developers focus on components" Platform developers focus on containers" Resource manager developers focus on
connectors! Containers mediate clients and
components" Transactions, resource pooling, persistence" Policies specified through configuration not
code! Connectors mediate containers and
resource managers" Portable service APIs to external resources" Resolve M-to-N problem across multiple
vendors
! Separation of concerns" Application developers focus on components" Platform developers focus on containers" Resource manager developers focus on
connectors! Containers mediate clients and
components" Transactions, resource pooling, persistence" Policies specified through configuration not
code! Connectors mediate containers and
resource managers" Portable service APIs to external resources" Resolve M-to-N problem across multiple
vendors
ComponentsComponents
ContainersContainers
ConnectorsConnectors
Component TypesComponent Types! Client Components
" Applets, applications" Execute on client virtual
machine" All other types execute on
server virtual machine! Web Components
" Servlets, JavaServer Pages" Respond to requests from
HTTP and other protocols" Generate web-based
application user interface " Deployed, managed, and
executed by web server
! Client Components" Applets, applications" Execute on client virtual
machine" All other types execute on
server virtual machine! Web Components
" Servlets, JavaServer Pages" Respond to requests from
HTTP and other protocols" Generate web-based
application user interface " Deployed, managed, and
executed by web server
! Application Server Components" Enterprise Beans (Session & Entity)" Deployed, managed, and executed by
application server" Maintain conversational or persistent
state in instance variables between method invocations
" Participate in distributed transactions that span multiple resources
" Provide services concurrently to large numbers of clients
" Perform client authentication and authorization to access protected services
! Application Server Components" Enterprise Beans (Session & Entity)" Deployed, managed, and executed by
application server" Maintain conversational or persistent
state in instance variables between method invocations
" Participate in distributed transactions that span multiple resources
" Provide services concurrently to large numbers of clients
" Perform client authentication and authorization to access protected services
Example Container ArchitectureExample Container Architecture
ConnectorsConnectors! Driver based interface to external resource managers! Application contract from component to driver
" Common Client Interface" J2EE standard service APIs
• JDBC, JMS" EIS specific interface
• JBAPI! System contracts from container to driver
" Transaction management, connection management, security! Standard driver packaging format
" JAR with XML based deployment descriptor
! Driver based interface to external resource managers! Application contract from component to driver
" Common Client Interface" J2EE standard service APIs
• JDBC, JMS" EIS specific interface
• JBAPI! System contracts from container to driver
" Transaction management, connection management, security! Standard driver packaging format
" JAR with XML based deployment descriptor
Single application serverconnected to multipleenterprise systems
Single application serverconnected to multipleenterprise systems
Single enterprise systemconnected to multipleapplication servers
Single enterprise systemconnected to multipleapplication servers
AppAppServerServer
AppAppServerServer
Example Connector ConfigurationsExample Connector Configurations
ERPERPSystemSystem
Database Database SystemSystem
TPTPSystemSystem
ERP ERP SystemSystem
AppAppServerServer
AppAppServerServer
Packaging ArchitecturePackaging Architecture
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
Model Driven DevelopmentModel Driven Development! System described by a “family” of models
" A model describes the system from a specific perspective" A model describes the system at a specific level of abstraction
• Requirements # Analysis # Design # Implementation # Deployment
! Mappings between concepts in different models" Refinement of systems concepts/elements " Transformation of higher level elements to one or more lower-level elements" Traceability between elements in different models
! Modeling conventions for specifying a system! Rules of validating model consistency and completeness ! Capability of transforming design, implementation and deployment
elements into code" Developers add code to specialize operations, rules, constraints
! System described by a “family” of models" A model describes the system from a specific perspective" A model describes the system at a specific level of abstraction
• Requirements # Analysis # Design # Implementation # Deployment
! Mappings between concepts in different models" Refinement of systems concepts/elements " Transformation of higher level elements to one or more lower-level elements" Traceability between elements in different models
! Modeling conventions for specifying a system! Rules of validating model consistency and completeness ! Capability of transforming design, implementation and deployment
elements into code" Developers add code to specialize operations, rules, constraints
Commonly Used Models Commonly Used Models
Analys is Model
Design Model
User eXperience Model
Use-Case Model
<<trace>>
<<trace>>
Business Model
<<trace>>Implementation
Model
Deployment Model
<<trace>>
<<trace>>
<<trace>>
RequirementsSet
RequirementsSet
AnalysisSet
AnalysisSet
RealizationSet
RealizationSet
Modeling “Conventions”Modeling “Conventions”
! Agreements on how to represent specific system aspects in the system models" Proposed way of describing (problem) domain concepts in
models! Captured in different forms
" Informal guidelines" Structured guidelines " Formal languages and UML Profiles in particular
! May span multiple models" Capture mappings between concepts in different domains
! Agreements on how to represent specific system aspects in the system models" Proposed way of describing (problem) domain concepts in
models! Captured in different forms
" Informal guidelines" Structured guidelines " Formal languages and UML Profiles in particular
! May span multiple models" Capture mappings between concepts in different domains
Profiles Tighten UML Semantics Profiles Tighten UML Semantics
A profile contains model elements which have been customized for a specific domain or purpose by extending the metamodel using stereotypes, tagged definitions and constraints. A profile may specify model libraries on which it depends and the metamodel subset that it extends.
— UML 1.4 Reference Manual
A profile contains model elements which have been customized for a specific domain or purpose by extending the metamodel using stereotypes, tagged definitions and constraints. A profile may specify model libraries on which it depends and the metamodel subset that it extends.
— UML 1.4 Reference Manual
DomainDomainDomain
ProfileProfileProfile
UMLUMLUML
A domain concept is represented by one more model A domain concept is represented by one more model element(s) in a profileelement(s) in a profile
Model elements in a profile are semantic Model elements in a profile are semantic refinements of UML model elementsrefinements of UML model elements
Example Of Domain Concept RepresentationExample Of Domain Concept Representation
Application ServerComponents
Application ServerApplication ServerComponentsComponents
A domain concept is a component managed A domain concept is a component managed by an EJB application containerby an EJB application container
EJBEJBEJB
UMLUMLUML
UML contains Subsystem modeling UML contains Subsystem modeling element that is used to represent element that is used to represent collective behavior of enclosed elementscollective behavior of enclosed elements
JSR-26JSRJSR--2626
JSRJSR--26 profile stereotyped the 26 profile stereotyped the Subsystem to represent elements of Subsystem to represent elements of Enterprise Java Beans Enterprise Java Beans
«EJB»
Example “Conventions” Example “Conventions”
Analysis Model
Design Model
User eXperience Model
Use-Case Model
Business Model
Implementation Model
Deployment Model
<<trace>>
<<trace>> <<trace>>
<<trace>> <<trace>>
<<trace>>
RUP GuidelinesRUP GuidelinesRUP Guidelines
Example “Conventions” Example “Conventions”
Analysis Model
Design Model
User eXperience Model
Use-Case Model
Business Model
Implementation Model
Deployment Model
<<trace>>
<<trace>> <<trace>>
<<trace>> <<trace>>
<<trace>>
EAI ProfileEAI ProfileEAI Profile
DC ProfileDC ProfileDC Profile
JR-26JRJR--2626
WAE ProfileWAE ProfileWAE Profile
EDOC ProfileEDOC ProfileEDOC Profile
TechnologyTechnologyProfilesProfiles
Examples Of Traceability (and Mappings) Examples Of Traceability (and Mappings)
Analys is Model
Design Model
User eXperience Model
Use-Case Model
<<trace>>
<<trace>>
Business Model
<<trace>>Implementation
Model
Deployment Model
<<trace>>
<<trace>>
<<trace>>
• Design use cases trace to user experience use cases
• Design elements trace to user experience screens and forms
• Design constraints trace to use experience constraints
• Design use case realizations trace to system use cases
• Design constraints trace to use case constraints
• Design use case realizations trace to analysis use cases
• Design elements trace to analysis elements• Design element interactions trace to
analysis element interactions
• Implementation elements trace to design element
• Implementation element packaging traces to design elements distribution and concurrency
RTE Of Executable Artifacts RTE Of Executable Artifacts
Analysis Model
Design Model
User eXperience Model
Use-Case Model
Business Model
Implementation Model
Deployment Model
<<trace>>
<<trace>> <<trace>>
<<trace>> <<trace>>
<<trace>>
EAI ProfileEAI ProfileEAI Profile
DC ProfileDC ProfileDC Profile
JR-26JRJR--2626
TransformationRules
RTE Engine
«derived from»
Executable Artifacts
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development ! Automation! Standardizing the process
What Is A Pattern?What Is A Pattern?
! Expert solution to recurring problem in specific context" Codifies best practices identified by experience" Can be used to recognize, analyze and refactor bad designs
! Constrains structure and behavior of participating elements
! Solution description not solution instance" Applied to create specific solution instances
! Can be combined to create solution frameworks! Variability points permit adaptation and customization
" Class substitution, method override, parameterization
! Expert solution to recurring problem in specific context" Codifies best practices identified by experience" Can be used to recognize, analyze and refactor bad designs
! Constrains structure and behavior of participating elements
! Solution description not solution instance" Applied to create specific solution instances
! Can be combined to create solution frameworks! Variability points permit adaptation and customization
" Class substitution, method override, parameterization
Types of PatternsTypes of Patterns
! Can be differentiated by various factors" Levels of abstraction" Software development life cycle phases" Application domains" Technology domains
! Examples " Language idioms" Design patterns" Analysis patterns," Architectural patterns
! Can be differentiated by various factors" Levels of abstraction" Software development life cycle phases" Application domains" Technology domains
! Examples " Language idioms" Design patterns" Analysis patterns," Architectural patterns
Defining PatternsDefining Patterns
! Pattern template describes pattern information structure" Combination of formal and informal information
! Formal information usually captured via UML models" Class diagram shows static dependencies between elements
(participants) of solution and implementation strategy" Interaction (Sequence or Collaboration) diagram shows
interactions between participants in solution or implementation strategy
! Pattern template describes pattern information structure" Combination of formal and informal information
! Formal information usually captured via UML models" Class diagram shows static dependencies between elements
(participants) of solution and implementation strategy" Interaction (Sequence or Collaboration) diagram shows
interactions between participants in solution or implementation strategy
Architectural PatternArchitectural Pattern
! A “template” for a commonly used solution to a high-level design problem" Handing HTML requests" Security" Locating application server component/service " Passing data collections by value, etc.
! Can be articulated at different levels of detail " “Pattern level” " Implementation strategy level
! A “template” for a commonly used solution to a high-level design problem" Handing HTML requests" Security" Locating application server component/service " Passing data collections by value, etc.
! Can be articulated at different levels of detail " “Pattern level” " Implementation strategy level
Note: Examples taken from the Sun J2EE Architecture Patterns
The Front Controller PatterThe Front Controller Patter
Front Controller InteractionsFront Controller Interactions
: Client : FrontController : Dispatcher : View : Helper
Send RequestDelegate Request
Forward Request
Send RequestForward Request
Send RequestProcess Request
Front Controller Implementation Strategy Front Controller Implementation Strategy
View(from Front Controller)
G SHt tpServlet
( from http)
RequestDispatcher
(from servlet)
HttpServ letResponse
(from http)
HttpServ letRequest
(from http)
Client(from Front Controller) Dispat cherSrv
<<Http_Ser...>>
Dispatchre may include multiple JSPs to prodce dif f erent parts of the same page
FrontControllerSrv<<Http_Serv let>>
ViewJSP
Helper(from Front Controller)
0..*0..*
The Business Delegate PatternThe Business Delegate Pattern
Architectural FrameworkArchitectural Framework
! Systematic application of Front Controller and Business Delegate leads to a very J2EE-characteristic architecture for handling user interactions" All requests handled by the same design element " Web server container handles concurrency and scalability" Front controller responsible for authentication and
authorization " Dispatchers responsible for all interaction business logic" Views (JSP) only responsible for assembling web page
fragments
! Systematic application of Front Controller and Business Delegate leads to a very J2EE-characteristic architecture for handling user interactions" All requests handled by the same design element " Web server container handles concurrency and scalability" Front controller responsible for authentication and
authorization " Dispatchers responsible for all interaction business logic" Views (JSP) only responsible for assembling web page
fragments
Authentication and AuthorizationAuthentication and Authorizationc : Client f c :
FrontControllerSrv f c_request : HttpServ let...
ds : DispatcherSrv
sr : HttpServ let...
rd2 : RequestDisp...
sp : ViewJSP
: RequestDisp. ..
Send Request
identif y Resource
authorize
getRequestDispatcher(String)
getRequestDispatcher(String)
prepocess
include(Serv letRequest, Serv letResponse)
Send Request
return
postporcess
return
postp roces s
return
This sequnce of :
- pre-processing- v iew inv ocation, and - postprocessing
can be repeated multiple times
authenticate
include(Serv letRequest, Serv letResponse)Send Request
Characteristic Structure: Use-case-specific DispatchersCharacteristic Structure: Use-case-specific Dispatchers
Fro ntControl ler<<Http_Servle ...
BidDispatcher(f rom Present ation)
<<Http_Servle...
BrowseDispatcher(f rom Presentation)
<<Ht tp_Servlet>>
CreateAuctionDispatcher(f rom Presentation)
<<Http_Servlet>>
SignInDispatcher(f rom Presentation)
<<Http_Servlet>>
Si gnOutDi spatcher(f rom Presentation)
<<Ht tp_Servlet>>
CreateAccountDispatcher(f rom Pres ent at ion)
<<Http_Servlet>>
ManageAccountDispatcher(f rom Presentation)
<<Http_Servlet>>
Characteristic Structure: Use-case-specific DispatchersCharacteristic Structure: Use-case-specific Dispatchers
FrontController<<Http_Servle...
BidDispatcher(from Presentation)
<<Http_Servle...
BrowseDispatcher(from Presentation)
<<Http_Servlet>>
CreateAuctionDispatcher(from Presentation)
<<Http_Servlet>>
SignInDispatcher(from Presentation)
<<Http_Servlet>>
SignOutDispatcher(from Presentation)
<<Http_Servlet>>
(from Presentation)
ManageAccountDispatcher(from Presentation)
<<Http_Servlet>>
AccountManagerDelegate(from Presentation)
v alidate()AccountManagerDelegate()create()retriev e()hasPendingPay ment()update()
CreditBureauDelegate(from Presentation)
CreditBureauDelegate()v alidate()
CreateAccountDispatcher(from Presentation)
H S
CreateAccountDispatcher()doGet()doPost()
1
+theAccountManagerDelegate
1
1
+theCreditBureauDelegate
1
c reat eacc ount _entry _v iew(from Presentation)
createaccount_v erif y _v iew(from Presentation)
AccountValues( from Pr esentat ion)
username : St ringpassword : Stringemail : St ringunique_id : String
Account Values( )
CreditValues(from Presentation)
name : Stringaddress : Stringcity : Stringstate : Stringzip : Stringaccount_number : Stringexpiration : String
CreditValues()
createaccount_results_v iew(from Presentation)
EmailDelegate(from Presentation)
EmailDelegate()send()
createaccount_email_v iew(from Presentation)
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development! Automation! Standardizing the process
Reusable AssetsReusable Assets
! Architecture Frameworks! Patterns ! Components ! Models
" Business Model, Use-Case Model, etc.
…. are all examples of reusable assets
! Architecture Frameworks! Patterns ! Components ! Models
" Business Model, Use-Case Model, etc.
…. are all examples of reusable assets
What Is A Reusable Asset?What Is A Reusable Asset?
In general terms: a reusable software asset is a software artifact or a set of related artifacts that have been created or harvested with an explicit purpose of applying it repeatedly in subsequent development efforts. An asset has a description of the way(s) in which it should be used and applied.
In general terms: a reusable software asset is a software artifact or a set of related artifacts that have been created or harvested with an explicit purpose of applying it repeatedly in subsequent development efforts. An asset has a description of the way(s) in which it should be used and applied.
Reusable Asset Specification v 1.0.4
Asset-Based DevelopmentAsset-Based Development
! Development based on economically-significant reuse of software assets
! Reusable Asset Specification (RAS) defines standard way of packaging assets
! Development based on economically-significant reuse of software assets
! Reusable Asset Specification (RAS) defines standard way of packaging assets
Asset Package Structure(from a. RAS Core)
Context Information(f rom Asset Packag e Structure)
Usage Information(from Asset Package Structure)
So luti on In formatio n(from Asset Package Structure)
Cla ssif icatio n Informati on(from Asset Package Structure)
Asset Package Structure(from a. RAS Core)
Context Information(f rom Asset Packag e Structure)
Usage Information(from Asset Package Structure)
So luti on In formatio n(from Asset Package Structure)
Cla ssif icatio n Informati on(from Asset Package Structure)
Variability points can be context- independent or relev ant only to a specif ic context.
A Context can impact each artif act in a dif f erent way . Artif act Context represents "interpretation of a Context" f or a specif ic Artif act
For each Artif act there is at least one Context that the Artif act is in => There is at least one context in an Asset (a "root context")
An artif acts can be related to another artif icat in the same or in a dif f erent Assets(s).
Asset
Solution
11
Variabi lit y Point
ContextArtif act
0..n +context-f ree VP0..n
0..n+nested artif acts 0..n
1..n1..n
0..n+relat ed artif acts 0..n
Artif act Context
0..n
+context-dependent VP
0..n
0..n
1
0..n
11
0..n
1
0..n
0..n0..n
Structure Of An AssetStructure Of An Asset
For each variabili ty point there must exist at least one activity that describes how to bind that variabili ty point (what to do with i t).
3. For each Arti fact there may be a set of Activities that describe how to apply the Arti fact. Some of these Activities are context-dependent
1. There may be a set of context-independent Activities that "operate" on a group of Artifacts
2. For each Context there may be a set of activities that apply only to that context. Each Activity in the group may "touch" multiple Artifacts
Variabil ity Point
Arti fact Context
0..n+context-dependent VP
0..n
Asset
Activity0. .n0. .n
0..n
0..n
+var pt binding rule0..n
+con text-fee VP0..n
0..n
0..n
0..n
+context-dependent actv0..n
Context
1..*0..n
1..*0..n
Arti fact
0..n
+context-free VP
0..n
0..n
0..n
+context-independent actv0..n
0..n
10..n
10..n
Usage
11
0..n0..n
0..n0..n
0..n0..n
Application Of An AssetApplication Of An Asset
Asset Management & Consumption Asset Management & Consumption
Producer
PackagerHarvester
BrokerConsumer
SearchSearch
ApplyApply
Architect Designer Developer Assembler
AnalyzeAnalyzeFitFit
PurchasePurchaseDeliverDeliverManageManagePackagePackageHarvestHarvest
Analyst Tester
MaintainMaintain CatalogCatalog Host Host
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development! Automation! Standardizing the process
Automation Of System DevelopmentAutomation Of System Development
! Automation$ development activities supported or preformed by the tools
" Support of model development and transformations " Support of model-to-code transformations (aka RTE) " Support of asset development, analysis and management
! Automation$ development activities supported or preformed by the tools
" Support of model development and transformations " Support of model-to-code transformations (aka RTE) " Support of asset development, analysis and management
Automation Of Model Development & TransformationAutomation Of Model Development & Transformation
! Application of patterns! Integration (assembly) of components! Model transformations ! Model integrity validation
! Application of patterns! Integration (assembly) of components! Model transformations ! Model integrity validation
RTERTE
! Code generation" Driven by general model-to-code transformation rules " Method-level details controlled by context-specific template
! Code reverse-engineering ! Model and code synchronization
! Code generation" Driven by general model-to-code transformation rules " Method-level details controlled by context-specific template
! Code reverse-engineering ! Model and code synchronization
Asset Development, Analysis and ManagementAsset Development, Analysis and Management! Support for asset packaging! Management of asset repositories! Tools for asset search and identification
! Support for asset packaging! Management of asset repositories! Tools for asset search and identification
PackagerHarvester
BrokerConsumer
SearchSearch
ApplyApply
AnalyzeAnalyzeFitFit
PurchasePurchaseDeliverDeliverManageManagePackagePackageHarvestHarvest
Asset Management ToolsAsset Management Tools
MaintainMaintain CatalogCatalog Host Host
AgendaAgenda
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development! Automation! Standardizing the process
! Enterprise Applications! Industry in Transition! Software Fabrication! Component-based development! Model-driven development! Pattern-oriented development! Asset-based development! Automation! Standardizing the process
S/W Manufacturing ProcessesS/W Manufacturing Processes
! S/W manufacturing is about repeatability" Common deployment infrastructure" Common development infrastructure " Common application domain " Common solution elements
… product-line development principles are an example of software manufacturing within a single organization and a closely relates family of systems
! S/W manufacturing is about repeatability" Common deployment infrastructure" Common development infrastructure " Common application domain " Common solution elements
… product-line development principles are an example of software manufacturing within a single organization and a closely relates family of systems
Four Engineering Processes Four Engineering Processes
SolutionSolutionEngineeringEngineeringPlatformPlatform
EngineeringEngineering
DomainDomainEngineeringEngineering
ComponentComponentEngineeringEngineering
Three Supporting ProcessesThree Supporting Processes
! Platform Engineering " Deployment Platform Engineering
• Component platforms" Development Platform Engineering
• Tolling and automation
! Domain Engineering " Domain modeling, scoping, development of architecture
frameworks ! Component Engineering
" Development of domain-and-platform-specific reusable patterns and components
! Platform Engineering " Deployment Platform Engineering
• Component platforms" Development Platform Engineering
• Tolling and automation
! Domain Engineering " Domain modeling, scoping, development of architecture
frameworks ! Component Engineering
" Development of domain-and-platform-specific reusable patterns and components
Emphasis Of Solution Manufacturing Process Emphasis Of Solution Manufacturing Process ! Selection and refinement of application framework(s)! Functional requirements modeling! User experience modeling ! Design of use-case realizations
" Reuse common patterns and components ! Solution component manufacturing ! Solution assembly
" Code generation, code modifications, deployment unit packaging
! Solution testing
! Selection and refinement of application framework(s)! Functional requirements modeling! User experience modeling ! Design of use-case realizations
" Reuse common patterns and components ! Solution component manufacturing ! Solution assembly
" Code generation, code modifications, deployment unit packaging
! Solution testing
Software Fabrication Is Not One Thing Software Fabrication Is Not One Thing
SoftwareFabrication
SoftwareSoftwareFabricationFabrication
ModelsModels
Asset-Based DevelopmentAsset-Based Development
AutomationAutomation Standard Process
Standard Process
PatternsPatterns
ComponentsComponents
Rational Areas of EmphasisRational Areas of Emphasis
! Model-driven development, of course! Automation
" Model-to-model transformations, in particular using patterns" RTE
! Asset-based development " Standardization of software assets " Support for asset market via RDN
! Process, of course ! Component-platform-specific tool support
! Model-driven development, of course! Automation
" Model-to-model transformations, in particular using patterns" RTE
! Asset-based development " Standardization of software assets " Support for asset market via RDN
! Process, of course ! Component-platform-specific tool support
This presentation will be posted in the Partner Resource Libraryshortly after this conference via:
http://www.rational.com/partners_only/index.jspHave your user id and password handy.
This presentation will be posted in the Partner Resource Libraryshortly after this conference via:
http://www.rational.com/partners_only/index.jspHave your user id and password handy.