No subject


Tue Feb 3 02:35:55 PST 2004


process. Indeed, that is the point of the JCP.org - to create specifications
for portable Java standards that can be implemented in more than one way.
- spec without API - Expresso can evolve as a reference implementation
- comprehensive in approach
- aggregated loosely coupled design
- abstract implementation.

My thoughts are we could begin defining the patterns that comprise an
architectural framework - over time as a group effort.  My thoughts are that
this fits with the work on the Pet Shop Example (also under the Portal
link). The Expresso J2EE Pet Shop example application illustrates Sun's Java
BluePrints guidelines and patterns implemented and leveraging the Expresso
Framework.  So this might be extended to describe the patterns of an
architectural framework that Expresso implements?

I summarized a JavaOne session on the Expresso Users forum on Architectural
Frameworks as presented John Crupi, one of the authors of "Core J2EE
Patterns". It might be useful to summarize here:

To demonstrate how an architect can describe, instrument and share an
application framework.
- identify elements of an application framework
- define the activities for extending the framework
- define patterns for automating framework extensions

An architectural framework (AF) is a "skeletal" application built with the
explicit purpose of being used as a base for rapidly developing instances of
family of applications.

It captures the common parts of the family while providing means to easily
add instance specific functionality.
- Provide a substantial collection of design and implementation artifacts
providing a skeleton for applications with common properties
- Provide a concrete representation of major architectural
- Are usually an instance of an architectural style focusing on an
application's domain
- Are supplemented by a set of guidelines, tools and reuseable assets

Framework Content
-----------------
- Documents (architecture doc,  design guidelines etc)
- Models (Use-Case Model, User eXperience Model, Design Modem,
Implementation Model, Deployment Model)
- Code
- Guidelines (Installations, customizartion, extension and process)
- Code Templates (J2EE paterns, GoF Patterns, Framework-specific Paterns,
Code Patterns).

AFs have been difficult to create and apply due to these factors though this
is rapidly changing:
- their complexity
- lack principles for representing them
- lack of tool support for capturing and applying them

Pattern Representaiton and Application Semantics
------------------------------------------------
A pattern is a solution to a recurring problem in a context.

"Each pattern is a three-part rule, which expresses a relation between a
certain context, a problem, and a solution" (Christopher Alexander)

"A pattern is an idea that has been useful in one practical context and will
probably in others." (Martin Fowler)

Pattern in UML
----------------
- Pattern is a model template
- Model template is a collection of elements designed to be "imported" into
a solution with substitutions
- Patterns describe the participants and the interactions between them

Business Delegate Pattern
--------------------------
Problem: presentation-tier components interact directly with business
services
Solution - Use a Business Delegate to reduce coupling between
presentation-tier clients and business services.

Service Locator Patterns
-------------------------
Problem: J2EE  platform enabled clients interact with service components
such as components based on EJB and JMS specifications

Solution: Use a Service Locator to hide the complexities of initial context
creation lookup and oject recreation.

Pattern Mechanism Can be Used to:
- create new model elements
- modigy existing model elements
- create relationships between new and existing model elements
- add code templates to new and exisiting model elements
- add to and modify applicaitons design and implementation

Use-Case-Driven Framework Extension
------------------------------------
- Most common case of framework extension is adding a use-case
- performed following a well-defined set of activities
- supported by guidelines, patterns and examples







More information about the Opensource mailing list