software architecture masterclass -

81
IBM Rational Software Conference 2009 Software Architecture Masterclass © 2009 IBM Corporation Software Architecture Masterclass Software Architecture Masterclass Peter Eeles Executive IT Architect, IBM [email protected] Contributions from Grady Booch, Dave Brown, Peter Cripps, Jim Densmore, Celso Gonzalez Software Architecture Masterclass © 2009 IBM Corporation

Upload: others

Post on 12-Feb-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

IBM Rational Software Conference 2009Software Architecture Masterclass

© 2009 IBM Corporation

Software Architecture Masterclass

Software Architecture Masterclass

Peter EelesExecutive IT Architect, [email protected]

Contributions from Grady Booch, Dave Brown, Peter Cripps, Jim Densmore, Celso Gonzalez

Software Architecture Masterclass

© 2009 IBM Corporation

IBM Rational Software Conference 2009

Introductions

� Name, organization, role?

� What are you looking for from the masterclass?

Software Architecture Masterclass 2

IBM Rational Software Conference 2009

Terminology

Software Architecture Masterclass 3

IBM Rational Software Conference 2009

Software-Intensive Systems

� A system in which software is the dominant, essential, and indispensable element

�E-commerce system

� IT (business) system

�Telephone switch

�Flight control system

�Real-time control system (e.g. industrial robot)

Software Architecture Masterclass 4

robot)

�Sophisticated weapons system

�Software development tools

�System software (e.g. operating systems or compilers)

4

IBM Rational Software Conference 2009

10 Keys to Success

Successful Architects … For example, they …

1 Understand end-to-end development Follow a repeatable process

2 Understand their role Understand what an architecture is

Understand what an architect does

Understand the benefits of architecting

3 Manage risk and manage change Derive their architectures iteratively

4 Communicate with stakeholders Document their architectures

Software Architecture Masterclass 5

4 Communicate with stakeholders Document their architectures

5 Reuse assets Embrace different types of assets

6 Right-size their involvement Select relevant viewpoints

7 Influence the requirements Ensure tradeoffs are negotiated

8 Derive solutions from business needs Produce business-driven architectures

9 Refine solutions based on technology Realize architectures in available technology

10 Appreciate the broader context Align their work with the “bigger picture”

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 6

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

Where does architecting fit in a software

Software Architecture Masterclass 7

fit in a software development process?

IBM Rational Software Conference 2009

OpenUP Disciplines

Requirements

Requirements Solution

Architecture Development Test

Software Architecture Masterclass 8

Design

All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

- Grady Booch

[A discipline is a] primary categorization mechanism for organizing tasks that define a major 'area of concern' and/or cooperation of work effort. [OpenUP]

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 9

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

What are the characteristics of a

Software Architecture Masterclass 10

characteristics of a software architecture?

IBM Rational Software Conference 2009

Software Architecture Defined

� Architecture is the fundamental organization of a system embodied in its

components, their relationships to each other, and to the environment, and

the principles guiding its design and evolution. [IEEE 1471]

� The software architecture of a program or computing system is the structure

or structures of the system, which comprise software elements, the externally

visible properties of those elements, and the relationships among them.

[Bass]

� The software architecture of a system or a collection of systems consists of all

Software Architecture Masterclass 11

� The software architecture of a system or a collection of systems consists of all

the important design decisions about the software structures and the

interactions between those structures that comprise the systems. The design

decisions support a desired set of qualities that the system should support to

be successful. The design decisions provide a conceptual basis for system

development, support, and maintenance. (McGovern 2004)

IBM Rational Software Conference 2009

Characteristics of a Software Architecture

� An architecture defines structure

� An architecture defines behaviour

� An architecture meets stakeholder needs

� An architecture is influenced by its environment

� An architecture is concerned with significant elements

� An architecture conforms to an architectural style

Structure

Software Architecture Masterclass 12

� An architecture influences organizational structure

� An architecture is present in every system

� An architecture embodies decisions based on rationale

The life of a software architect is a long and rapid succession of suboptimal design decisions taken partly in the dark.

- Philippe Kruchten

Behavior

IBM Rational Software Conference 2009

An Architecture has a Particular Scope

Software Architecture Masterclass 13

[A system is] a set of resources that provide services that are used by an enterprise to carry out a business purpose or mission. System components typically consist of hardware, software, data, and workers. [Cantor]

IBM Rational Software Conference 2009

What are the characteristics of a

Software Architecture Masterclass 14

characteristics of a software architect?

IBM Rational Software Conference 2009

Characteristics of an Architect

� The architect is a technical leader

� The architect understands the software development process

� The architect has knowledge of the business domain

� The architect has technology knowledge

� The architect has design skills

� The architect has programming skills

Software Architecture Masterclass 15

� The architect is a good communicator

� The architect makes decisions

� The architect is aware of organizational politics

� The architect is a negotiator

� The architect role may be fulfilled by a team

IBM Rational Software Conference 2009

What are the benefits of architecting?

Software Architecture Masterclass 16

architecting?

IBM Rational Software Conference 2009

Benefits of Architecting

� Architecting reduces unnecessary creativity

� Architecting helps manage complexity

� Architecting ensures architectural integrity

� Architecting addresses system qualities

� Architecting reduces maintenance costs

� Architecting drives consensus

Software Architecture Masterclass 17

� Architecting provides a basis for reuse

� Architecting supports impact analysis

� Architecting supports the planning process

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 18

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

Waterfall and Iterative Lifecycles

Software Architecture Masterclass 19

IBM Rational Software Conference 2009

Iteration Focus Changes over Time

Discovery Invention Implementation

Software Architecture Masterclass 2020

Drawn on a napkin by Bran Selic for Philippe Kruchten

IBM Rational Software Conference 2009

Formalizing the Change in Focus

Software Architecture Masterclass 21

OpenUP disciplines shown

IBM Rational Software Conference 2009

Architecture Stability

Software Architecture Masterclass 22

%Resources derived from information in “Software Project Management – A Unified Framework” [Royce]

IBM Rational Software Conference 2009

What about Agile?

� Agile Manifesto

� Individuals and interactions over processes and tools.

�Working software over comprehensive documentation.

�Customer collaboration over contract negotiation.

�Responding to change over following a plan.

� Scrum is a management and control process that cuts through complexity to

focus on building software to meet business needs. Scrum is superimposed on

top of and wraps existing engineering practices, development methodologies and

Software Architecture Masterclass 23

top of and wraps existing engineering practices, development methodologies and

standards. [Schwaber]

There seems to be a fear in the agile community that if we use terms such as “model” or “document” that suddenly the “evil bureaucrats” will dig their claws into our projects and force us to write detailed, big requirements specifications or to take a big-design-up-front approach ... the strange thing is that agilists are, in fact, modeling on a regular basis, even though they're not directly talking about it. [Ambler]

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 24

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

Who are the stakeholders in your architecture?

Software Architecture Masterclass 25

in your architecture?

What are their concerns?

IBM Rational Software Conference 2009

Documenting a Software Architecture

� Core concepts

�Stakeholder - Who is the description for?

�Viewpoint - Defines stakeholder concerns, notations and techniques

�Model - Created to populate the various views

�View - Conforms to a viewpoint, a particular perspective on the architecture

Software Architecture Masterclass 26

Concepts defined in “The IEEE Recommended Practice for Architectural Description of Software-Intensive Systems” [IEEE 1471]

IBM Rational Software Conference 2009

Views, Diagrams and Models

Software Architecture Masterclass 27

IBM Rational Software Conference 2009

What viewpoints might you use to document your

Software Architecture Masterclass 28

you use to document your architecture?

IBM Rational Software Conference 2009

Architecture Description Frameworks

� Software Architecture

�The 4 + 1 View Model of Software Architecture [Kruchten]

�Rozanski and Woods [Rozanski]

�Siemens

�RM-ODP

� Systems Engineering

�Model-Driven Systems Development (MDSD) [MDSD]. Formerly RUP for Systems

Software Architecture Masterclass 29

�Model-Driven Systems Development (MDSD) [MDSD]. Formerly RUP for Systems

Engineering (RUP-SE)

� Enterprise Architecture

�The Open Group Architecture Framework (ToGAF)

�The Zachman Framework [Zachman]

� Domain-Specific

�Department of Defense Architecture Framework (DoDAF)

�Ministry of Defence Architecture Framework (MoDAF)

IBM Rational Software Conference 2009

Examples of Architecture Description Frameworks4 + 1 View Model of Software Architecture [Kruchten]

Rozanski and Woods [Rozanski]

Software Architecture Masterclass 30

The Zachman Framework [Zachman]

IBM Rational Software Conference 2009

Basic and Cross-Cutting Viewpoints

Software Architecture Masterclass 31

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 32

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

What types of assets might you apply in your

Software Architecture Masterclass 33

might you apply in your architecture?

IBM Rational Software Conference 2009

A Metamodel of Architecture Assets

Software Architecture Masterclass 34

One thing expert designers know not to do is to solve every problem from first principles. Rather, they reuse solutions that have worked for them in the past. When they find a good solution, they use it again and again. Such experience is part of what makes them experts. [Gamma]

IBM Rational Software Conference 2009

Observer Pattern

Software Architecture Masterclass 35

IBM Rational Software Conference 2009

IBM Patterns for e-business

Examplesuser-to-businessuser-to-useruser-to-data

ExampleDirectly Integrated Single Channel

Software Architecture Masterclass 36

ExampleDirectly Integrated Single Channel

www.ibm.com/developerworks/patterns/

Also see extensive patterns catalog at:

http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Patterns

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 37

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

A Classic Analogy

Software Architecture Masterclass 38

IBM Rational Software Conference 2009

Architects Right-Size their Involvement

Small Project Large Project

Role • A single person is assigned to play

the roles of Lead Architect,

Application Architect, Infrastructure

Architect and Data Architect.

• Different individuals are assigned to each

of the architecture roles of Lead Architect,

Application Architect, Infrastructure

Architect and Data Architect. In addition,

the team also includes a Security Architect.

Task • An Architecture Overview is created

as a sketch on a whiteboard and then

photographed (it is not kept up to

date).

• An Architecture Overview is created as a

formal work product that is maintained.

Software Architecture Masterclass 39

date).

Work product • An Architecture Proof-of-Concept is

created on paper only (no executable

software needs to be built).

• Requirements, Functional,

Deployment and Performance

viewpoints are used to document the

architecture.

• An Architecture Proof-of-Concept is

created as executable software.

• Requirements, Functional, Deployment,

Validation, Performance and Security

viewpoints are used to document the

architecture. An Information Viewpoint is

added to emphasize this particular aspect

of the architecture.

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 40

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

The “YourTour” Case Study

Software Architecture Masterclass 41

IBM Rational Software Conference 2009

What forces influence the architect’s work?

Software Architecture Masterclass 42

architect’s work?

IBM Rational Software Conference 2009

Making Tradeoffs addresses Opposing Forces

ScheduleResources

Stakeholder input

ScalabilityPerformance

Software Architecture Masterclass 43

DistributionPlatforms

MaintainabilityPortability

IBM Rational Software Conference 2009

What is the architect’s role with respect to

Software Architecture Masterclass 44

role with respect to requirements?

IBM Rational Software Conference 2009

Requirements Discipline

Software Architecture Masterclass 45

IBM Rational Software Conference 2009

Task: Define System Context

Software Architecture Masterclass 46

IBM Rational Software Conference 2009

Task: Outline Functional Requirements

Software Architecture Masterclass 47

IBM Rational Software Conference 2009

Task: Outline Non-Functional Requirements

� Usability Requirements

� Reliability Requirements

� Performance Requirements

� Supportability Requirements

� Constraints

�Business Constraints

�Architecture Constraints

Software Architecture Masterclass 48

�Architecture Constraints

�Development Constraints

�Physical Constraints

“Brownfield sites are those in which redevelopment or reuse of the site is complicated by existing contaminants. Greenfield sites are clean, previously undeveloped land”. [Hopkins]

IBM Rational Software Conference 2009

Task: Prioritize Requirements

� Which use cases should drive the remainder of the iteration?

Software Architecture Masterclass 49

IBM Rational Software Conference 2009

Task: Prioritize Requirements

� We may select particular flows through the use case

Software Architecture Masterclass 50

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 51

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

Architecture Discipline

Software Architecture Masterclass 52

IBM Rational Software Conference 2009

How much logical architecting should be

Software Architecture Masterclass 53

architecting should be performed?

* “Logical” = Technology-independent

IBM Rational Software Conference 2009

How Much Logical Architecture?

� Minimizing Logical Architecture

� None. The requirements for the system are similar

to those of an existing system and moving from

requirements to physical architecture is trivial.

� Just Enough. We can demonstrate that we

understand the current set of requirements and that

those requirements have been appropriately

allocated to parts of the solution.

� Logical Architecture as an Investment

Software Architecture Masterclass 54

� Logical Architecture as an Investment

� Some. A technology change is anticipated and the

logical architecture provides a good starting point

when we make that change.

� Comprehensive. The system is large and complex

and its development will run over a long period of

time and over several releases. We therefore

expect to maintain / enhance the system and want

to evolve the architecture rather than reinventing (or

ignoring) it.

IBM Rational Software Conference 2009

Terminology

� Component

�A component represents a modular part of a system that encapsulates its contents and

whose manifestation is replaceable within its environment. A component defines its

behavior in terms of provided and required interfaces. As such, a component serves as a

type whose conformance is defined by these provided and required interfaces

(encompassing both their static as well as dynamic semantics). One component may

therefore be substituted by another only if the two are type conformant. [UML 2.2]

� Subsystem

Software Architecture Masterclass 55

�A set of related components.

IBM Rational Software Conference 2009

Task: Define Architecture Overview

Software Architecture Masterclass 56

IBM Rational Software Conference 2009

Task: Outline Functional Elements

Software Architecture Masterclass 57

IBM Rational Software Conference 2009

From Requirements to Solution

Attribute Driven

Design (ADD)

Method

�Developed at the Software Engineering Institute

�Quality attributes drive the architecture

�Underpinned by architectural tactics and patterns

Siemens’ 4 Views

(S4V) method

�Developed at Siemens Corporate Research

�An analysis of global factors drive the architecture

�Iteratively addresses challenges across four views (conceptual,

Software Architecture Masterclass 58

�Iteratively addresses challenges across four views (conceptual,

execution, module and code architecture)

The Rational Unified

Process (RUP)

�Developed at Rational Software (now IBM Rational)

�Architecturally-significant requirements drive the architecture

�Each iteration considers the key architectural elements of the

solution, before realizing the requirements across them

IBM Rational Software Conference 2009

Task: Outline Functional Elements

� Boundary (or presentation) components

�Support the boundary between the system and items outside the system with which the

system interacts, such as end users or external systems

� Control (or execution) components

�Support the control logic of the system as well as the business rules and other logic

required to satisfy the functional requirements

� Entity (or data) components

Software Architecture Masterclass 59

�These components support the representation of persistent information

IBM Rational Software Conference 2009

Task: Outline Functional Elements

Software Architecture Masterclass 60

Book Tour use case realization

IBM Rational Software Conference 2009

Task: Outline Functional Elements

Software Architecture Masterclass 61

Book Tour use case realization

IBM Rational Software Conference 2009

Assigning NFRs to Components

Requirement Component Operation Budgeted

Requirement

Booking a tour must take less

than 10 seconds, from the time

the request is submitted, to the

Tour Booking Manager provide payment details() 1 second

Payment Engine Boundary process payment() 3 seconds

Software Architecture Masterclass 62

confirmation of the booking

being presented to the user Reservation System Boundary make reservations() 6 seconds

IBM Rational Software Conference 2009

Task: Detail Functional Elements

Software Architecture Masterclass 63

IBM Rational Software Conference 2009

Task: Detail Functional Elements

Software Architecture Masterclass 64

IBM Rational Software Conference 2009

Task: Outline Deployment Elements

Software Architecture Masterclass 65

IBM Rational Software Conference 2009

Task: Outline Deployment Elements

Software Architecture Masterclass 66

IBM Rational Software Conference 2009

Task: Detail Deployment Elements

Software Architecture Masterclass 67

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 68

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

Technology-Specifics

Software Architecture Masterclass 69

IBM Rational Software Conference 2009

Technology-Specifics

Software Architecture Masterclass 70

IBM Rational Software Conference 2009

Technology-Specifics

Software Architecture Masterclass 71

IBM Rational Software Conference 2009

Agenda

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 72

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

External Influences

Software Architecture Masterclass 73

IBM Rational Software Conference 2009

You’ve been assigned as the architect of a new

system.

Software Architecture Masterclass 74

system.

What’s your worst nightmare? ☺

IBM Rational Software Conference 2009

Challenges of Complex Systems

Software Architecture Masterclass 75

IBM Rational Software Conference 2009

A “System of Systems”

Software Architecture Masterclass 76

IBM Rational Software Conference 2009

Summary

� Architects understand end-to-end development

� Architects understand their role

� Architects manage risk and manage change

� Architects communicate with stakeholders

� Architects reuse assets

� Architects right-size their involvement

Software Architecture Masterclass 77

� Architects influence the requirements

� Architects derive solutions from business needs

� Architects refine solutions based on technology

� Architects appreciate the broader context

IBM Rational Software Conference 2009

Primary References

Software Architecture Masterclass 78

www.handbookofsoftwarearchitecture.com

www2.computer.org/portal/web/computingnow/onarchitecture

www.processofsoftwarearchitecting.com

IBM Rational Software Conference 2009

Other ReferencesReference Description

Ambler 2008 Agile Model-Driven Development. Scott Ambler and Celso Gonzalez.

www.stickyminds.com/BetterSoftware/magazine.asp?fn=cifea&ac=367. 2008

Bass 2003 Software Architecture in Practice. Second edition. Len Bass, Paul Clements and Rick Kazman. Addison Wesley. ISBN 0-321-

15495-9. 2003

Cantor 2003 Rational Unified Process for Systems Engineering. Murray Cantor. Article from The Rational Edge. www.therationaledge.com.

August 2003

Hopkins 2008 Eating the IT Elephant - Moving from Greenfield Development to Brownfield. Richard Hopkins and Kevin Jenkins. IBM Press.

ISBN 0-13-713012-0. 2008

IEEE 1471 2000 Recommended practice for architectural description of software-intensive systems. IEEE Std 1471-2000. IEEE Computer

Society. 2000

Kruchten 1995 The “4+1” View Model of Architecture. Philippe Kruchten. Paper published in IEEE Software vol. 12, no. 6. November 1995, pp.

Software Architecture Masterclass 79

Kruchten 1995 The “4+1” View Model of Architecture. Philippe Kruchten. Paper published in IEEE Software vol. 12, no. 6. November 1995, pp.

42-50

McGovern 2004 A Practical Guide to Enterprise Architecture. James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan

and Elias K. Jo. Prentice Hall. ISBN 0-13-141275-2. 2004

MDSD 2008 Model Driven Systems Development with Rational Products. IBM Redbooks. ISBN 0738485683. 2008.

www.redbooks.ibm.com/abstracts/sg247368.html

OpenUP 2008 Open Unified Process. Version 1.5.0.1. epf.eclipse.org/wikis/openup. 2008

Royce 1998 Software Project Management – A Unified Framework. Walker Royce. Addison Wesley. ISBN 0-201-30958-0. 1998

Rozanski 2005 Software Systems Architecture – Working with Stakeholders using Viewpoints and Perspectives. Nick Rozanski and Eoin

Woods. Addison Wesley. ISBN 0-321-11229-6. 2005

Schwaber 2002 Agile Software Development with Scrum. Ken Schwaber and Mike Beedle. Prentice Hall. ISBN 0-13-067634-9. 2002

UML 2.2 2009 UML 2.2 Superstructure Specification. Object Management. Group, Inc. Document number 09-02-02, February 2009.

www.omg.org/docs/formal/09-02-02.pdf. 2009

Zachman 1987 A Framework for Information Systems Architecture. John Zachman. IBM Systems Journal. Vol.26, No.3. 1987

IBM Rational Software Conference 2009

Software Architecture Masterclass 80

IBM Rational Software Conference 2009

Software Architecture Masterclass 81

© Copyright IBM Corporation 2009. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, these materials. Nothing contained in these materials is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in these materials to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in these materials may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. IBM, the IBM logo, Rational, the Rational logo, Telelogic, the Telelogic logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others.