71
©1998, 1999, 2000, 2001 Rational Software - All rights reserved ©1998, 1999, 2000, 2001 Rational Software - All rights reserved Session MSP11 Session MSP11 Towards Software Manufacturing Towards Software Manufacturing Wojtek Kozaczynski Jack Greenfield Wojtek Kozaczynski Jack Greenfield

Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

©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

Page 2: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 3: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 4: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 5: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 6: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 7: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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)

Page 8: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 9: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 10: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 11: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 12: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 13: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 14: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 15: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 16: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 17: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 18: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 19: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 20: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 21: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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.

Page 22: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 23: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 24: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

Example Container ArchitectureExample Container Architecture

Page 25: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 26: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 27: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

Packaging ArchitecturePackaging Architecture

Page 28: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 29: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 30: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 31: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 32: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 33: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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»

Page 34: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 35: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 36: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 37: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 38: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 39: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 40: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 41: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 42: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 43: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

The Front Controller PatterThe Front Controller Patter

Page 44: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

Front Controller InteractionsFront Controller Interactions

: Client : FrontController : Dispatcher : View : Helper

Send RequestDelegate Request

Forward Request

Send RequestForward Request

Send RequestProcess Request

Page 45: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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..*

Page 46: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

The Business Delegate PatternThe Business Delegate Pattern

Page 47: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 48: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 49: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 50: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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)

Page 51: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 52: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 53: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 54: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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)

Page 55: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 56: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 57: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

Asset Management & Consumption Asset Management & Consumption

Producer

PackagerHarvester

BrokerConsumer

SearchSearch

ApplyApply

Architect Designer Developer Assembler

AnalyzeAnalyzeFitFit

PurchasePurchaseDeliverDeliverManageManagePackagePackageHarvestHarvest

Analyst Tester

MaintainMaintain CatalogCatalog Host Host

Page 58: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 59: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 60: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 61: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 62: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 63: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 64: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 65: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

Four Engineering Processes Four Engineering Processes

SolutionSolutionEngineeringEngineeringPlatformPlatform

EngineeringEngineering

DomainDomainEngineeringEngineering

ComponentComponentEngineeringEngineering

Page 66: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 67: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 68: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 69: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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

Page 70: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship
Page 71: Towards Software Manufacturing - OMG · Software development industry is changing to meet the demand" Natural consequence of industry maturation" Transitioning from craftsmanship

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.