Title: The Freedom to Achieve
1The Freedom to Achieve
Independent, Open Solutions for Business and
Government www.platinumsolutions.com
2Keel The Next Generation Meta-Framework for Open
Source Development
SD Best Practices 2004 Conference
Expo September 22, 2004 345pm -
515pm Presented by Adam Rossi President,
PlatinumSolutions adam.rossi_at_platinumsolutions.com
3Why Me?
- I am an open source Java developer, one of the
primary developers of the Keel Open Source
meta-framework, contributor to many other OS
projects - Developer of inter-agency web applications on
classified networks high complexity, difficult
deployment environments - I have seen good projects, I have seen bad
projects, and I have witnessed the incredible
impact of open frameworks
4About PlatinumSolutions
- Software development firm specializing in secure
application development, inter-agency
collaboration, and information management - Main clients are law enforcement and intelligence
agencies - Hostage negotiation support, bombing incident
analysis, cryptanalysis, computer forensics,
what-have-you
5PowerPoint
- Power Corrupts.
- PowerPoint Corrupts Absolutely.
- Luckily I am using OpenOffice.
from PowerPoint is Evil
http//www.wired.com/wired/archive/11.09/ppt2.html
6The Bottom Line
- Software development, especially web development,
is growing more (not less) complex - Java 2 Enterprise (J2EE) is the most mature
development environment, but raw API's do not
provide structure - There are a multitude of excellent, high-quality
open source components and toolkits, but they are
difficult to string together into a real
application and to deploy - In order to harness the power of the J2EE
platform and the functionality of open source
software components, while maintaining high
project quality and discipline frameworks are a
NECESSITY - The Keel Meta-Framework provides enormous
benefits under complex development and deployment
scenarios
7Keel Review in March 2004 Issue Software
Development Magazine
think of all the plumbing code you wont have
to write! Especially when it comes to things
like replicating your application over multiple
servers (yes, theyve thought of that,
too).-Software Development Magazine, March 2004
friends, this project is going
places!-Software Development Magazine, March
2004
8A very quick case study LANG
9Case Study LANG
- LANG is an application that facilitates the
sharing of language specialists between agencies
in law enforcement and intelligence - Supported by a consortium of government agencies
interested in sharing scarce resources - Developed by PlatinumSolutions using open source
software
10Why Open Source for LANG?
- Compressed schedule, limited funding
- Can be deployed internally and customized
replaces in-agency systems - Can be deployed at member agencies or centrally,
no licensing restrictions - Paranoid agencies can peak inside
- Flexible Can accommodate other agencies,
implementations
11Why not Proprietary?
- Off the shelf solutions did not exist
- Needed to be able to customize for each agency in
unpredictable areas - Very short development time frame
- Needed to respond to change quickly
- Agencies want full ability to audit code
- Needed to integrate with many components
12LANG Statistics
13LANG Statistics
14Outcome
- Core development done in 4 months with 3
developers - Project Cost very low development cost, no
ongoing fees or licensing - Large number of agencies participate in working
group - Highly effective system that drastically improves
the process of sharing
15Why OSS from PM POV?
- Do more with less
- Reduce project complexity and effort, no
reinventing wheels - Provide structure, logical divisions, separation
of concern - Increase Quality full code audit, better
testing, easier for novice developers - Faster agile development, pre-developed
components
16Other OSS Benefits
- Standards Compliance
- No Proprietary Lock-in, stick ups, and
project-plan killing closed system dead-ends - Consistency
- License Management, Costs
17What is a Framework?
- A framework is a partially complete software
system that is intended to be instantiated. - It defines the architecture for a family of
systems and provides the basic building blocks to
create them. - It also defines the places were adaptations for
specific functionality should be made. - (Buschmann 1996)
18Framework Advantages
- Brings structure and consistency to application
development - Shortens development schedule
- Reduces project risk and cost by removing
complexity, builds on tried and tested
foundations - Provides generic services such as logging,
security, and persistence
19Frameworks Solid Design
- Encourages industry-accepted best practices,
including separation of concerns (SOC) and
component-oriented programming (COP) - Better component and module isolation easier to
manager, distribute tasks, test, and deploy - Design patterns, best of breed components
20 Components
- What Is A Component?
- "An entity that fulfills a specific role or
provides a specific service". - Should be replaceable with another component that
fulfills the same role - Every other technical industry relies on
component manufacturing why not software?
from Mike Nash's Putting the Pieces Together
http//www.platinumsolutions.com/2002-11-12_Puttin
g_The_Pieces_Together.pdf
21Service
- To some degree, overlaps with component
- A service is often made up of several components
working together - All services are a component, but not vice-versa
- Services are more general-purpose than
components. Services provide system functions
not specific to business, such as an
authorization or scheduler service
22Meta-Frameworks
- A toolkit designed to Span, bridge and connect
together multiple application frameworks and
toolkits. - Allow multiple component models to interact
efficiently - Allow the features and benefits of one framework
and toolkit to be used in another. - Use the best component for the job, no matter
what framework or architecture
from Mike Nash's Putting the Pieces Together
23Keel OS Meta-Framework
www.keelframework.org
- An open source framework based on J2EE
- Ideally suited for large scale application
development - Distributed, message-based architecture
- Pluggable spine / implementation-independent
24Keel Offers
- Keel is a highly extensible backbone for
integrating commercial and open source components - Connects multiple frameworks, toolkits, and
services, treating each one as a back box - Extreme deployment flexibility From single
machine to distributed message-driven - Open Source that Already Works
25Before Keel
- Services are bound directly
- Becomes difficult to upgrade and maintain
- Very difficult to switch services
- Ball of Mud
26After Keel
- Commercial and Open Source services plug in to
a backbone - Provides strong guidance for development
- Easy upgrade, modify
27Keel Design
28Implementation Detail
29Keel Container
- Leverages Apache Avalon
- Avalon provides Separation of Concerns (SOC) Do
one thing at a time, don't blur boundaries - The Keel container provides Inversion of Control
(IOC), a specific instance of SOC - The container takes components through a
lifecycle, gives it environment info - The component has no ability to call the
container - Environment can be changed without affecting the
component
30Keel Configs and Lifecycles
- The Keel container takes components through a
lifecycle create, manage, run, and terminate
them - Examples Securable, Poolable, Configurable,
Suspendable, Threadsafe
31Keel Models Explained
- Smallest unit of work in Keel
- Has one required method execute()
- Models have inputs, outputs, and commands
- Models are faceless, they have absolutely no
knowledge of how they will be interacted with in
a GUI, command line, etc.
32Model Example
/ _at_avalon.component _at_avalon.service
typeorg.keel.services.model.Model
_at_x-avalon.info namehoj.hello
_at_x-avalon.lifestyle typesingleton
_at_model.model name"hoj.hello"
id"hoj.hello" logger"hoj" / public class
HelloWorld extends StandardLogEnabledModel
public ModelResponse execute(ModelRequest
request) throws ModelException
ModelResponse res request.createResponse()
res.addOutput("hello", "Hello World")
return res
33Securing the Model
/ _at_avalon.component _at_avalon.service
typeorg.keel.services.model.Model
_at_x-avalon.info namehoj.hello
_at_x-avalon.lifestyle typesingleton
_at_model.model name"hoj.hello"
id"hoj.hello" logger"hoj" / public class
HelloWorld extends StandardLogEnabledModel
implements Securable public ModelResponse
execute(ModelRequest request) throws
ModelException ModelResponse res
request.createResponse()
res.addOutput("hello", "Hello World")
return res
34Putting Models Together
- Sequences provide a simple 1, 2, 3 progression
between models. Configured in XML - Workflows provide a far more powerful, non-linear
progression between models. - Workflows support nester sub-flows, conditional
logic, etc.
35Keel Workflow
36A Complex Workflow
37Keel Build
- Keel provides a powerful ANT-based build system
- Build system will package Keel application into
appropriate deployment form (WAR, EAR, etc.) - Build system will automatically fetch open source
components from web
http//ant.apache.org
38Keel Deployments
- Keel provides incredible deployment flexibility
from a single server, to a fault-tolerant cluster
by changing build parameters - Deployed components can communicate via web
services, asynchronous messages, or direct
channels
39Basic Deployment
All deployment diagrams from Distributed
Web-Applications using the Keel
Meta-Framework by Michael Nash, Keel
Meta-Framework Core Developer http//www.developer
.com/java/ent/article.php/3286461
40Deployment 2
41Deployment 3
42Deployment 4
43Deployment 5
44Keel Demonstrations
45Conclusion
- J2EE / Open Source is a powerful combination, but
it is extremely complex - Frameworks provide order, discipline, building
blocks, and plumbing - The Keel Meta-Framework is a powerful open source
framework that provides incredible benefits to
development and deployment - Don't re-invent the wheel!
46- For a copy of these slides
- http//www.platinumsolutions.com/resources/
email adam.rossi_at_platinumsolutions.com