Title: Selling Fusebox
1Selling Fusebox
2What 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. - Frank Buschmann
- Corporate Research, Siemens, AG, Munich, Germany
3Frameworks are very popular in the object
oriented world
- There are over 50 Frameworks available for Java
including - Struts, Apache
- Java Application Framework - Sun
- Frameworks are important in the object oriented
world. - While frameworks are not yet as popular in the
ColdFusion world, they are gaining in popularity
as companies try to create large scale
applications.
4The first major ColdFusion framework
- Spectra
- First released by Allaire in 1999.
- Cost approximately 12,000
- Discontinued by Macromedia
5The Fusebox Framework
- Community Driven
- Free
- Over 20,000 downloads of the core files.
6The Fusebox Philosophy
- There are two ways of constructing a software
design One way is to make it so simple that
there are obviously no deficiencies, and the
other way is to make it so complicated that there
are no obvious deficiencies. The first method is
far more difficult.C.A.R. Hoare
7What's the problem?
- According to The Standish Group, a research firm
that focuses on mission critical project
management applications, in year 2000, the
percent of successful software projects was 28. - This was cited as "good news" since the figure
was up from only 16 in 1984. - At least three other studies have confirmed these
low success rates.
8Point-to-Point Routing
New York
Tampa
9Hub-and-Spoke System
Chicago
Seattle
New York
Atlanta
Los Angeles
Tampa
10Point-to-Point Programming
Module F
Module E
Module B
Module C
Module A
Module D
11Fusebox Programming
Module E
Module F
Module C
Fusebox
Module A
Module B
Module D
12Perceptions
- Too complicated
- Small Applications
- Takes too long to write FB applications
- Isnt scalable
- Many small files Too fragmented
- URLs
- Too much work
13Benefits - Clients
- Pay less overall costs
- Get software sooner
- Higher quality less costly to maintain
14Benefits - Managers
- Leverage investments in tools and training
- Less dependent on individual employees
- Produce in less time at less cost
- Can easily use outside experts to augment
in-house skills
15Benefits - Developers
- Work at appropriate skill level
- Spend less time maintaining code
- Work together on one application easily
- Active online community
16The Fusebox LifeCycle Process
17Requirements Gathering
18Requirements Gathering
19Analysis and Design
20Coding and Testing
21Testing
22FUSEBOX FOR Federal Agency A
- Project A was designed with the Fusebox 4
framework for several reasons - Standard Framework
- Proven Success
- Easier Maintenance
- Scope Expansion more easily accomplished
- Ability for Reuse
23Proven Success
- Fusebox was used successfully on 2 projects in
2003 for Federal Agency B - Similar Projects
- Requirements were non-existent
- Scope constantly changed
- Timeline was expedited.
24Proven Success
- Project B
- Project C
- Both were Peer Review Management Systems but with
widely divergent requirements.
25Proven Success
- Project B
- 80 Displays
- 388 Files
- 18,032 Lines of Code
- Project C
- 28 Displays
- 197 Files
- 8,586 Lines of Code
Reuse between Systems 40 Total Development
Time of both systems in parallel 5 months with
1 programmer
26Project A Metrics
- Project A started out as one project and ended up
becoming 2 projects (Project A1 and Project A2) - Project A2
- 2 Distinct Displays
- 40 Files
- 2264 Lines of Code
- 732 Lines of Documentation
- 23 Code Reuse within System
27Project A1/Project A2 Metrics
- Project A1
- 6 Distinct Displays
- 61 Files
- 3634 Lines of Code
- 2141 Lines of Documentation
- 30 Code Reuse within System
28Project A1/Project A2 Metrics
- Shared between Systems
- 3 Distinct Displays
- 29 Files
- 718 Lines of Code
- 696 Lines of Documentation
29Easier Maintenance
- Computer Science teaches that each function or
procedure should do one thing only. - Most users of ColdFusion dont follow this.
- This creates scripts which are large (500-1200
lines long) - Long scripts are difficult to maintain.
- Chances are when something changes it affects
something elsewhere which isnt realized until it
breaks.
30Easier Maintenance
- Fusebox operates with the idea of fuses
- Small scripts each doing one thing
- Smaller scripts are easier to reuse
- Much easier to debug using small scripts
31Easier Maintenance (cont)
- Model View Controller Design Pattern
- Common Design Pattern in Interface Development
- Model All Business Logic including DB calls
- View All user interface
- Controller Only publicly accessible area, acts
as a traffic cop and as a map to the model and
the view - Easier to know what is being called
- Easier to know where to go to fix
32Scope Expansion more easily accomplished
- Project A1 went through 3 scope expansions which
changed the architecture dramatically - Went from hitting views for each report to
creating temporary tables for all reports meeting
that criteria as well as saving report criteria
(hit lists) - Database Structural Changes
- Integration with Project A2s and restructuring to
use the same code base between.
33Scope Expansion more easily accomplished
- The architectural changes were limited in nature
each time due entirely to the framework - Hit List Temporary Tables Change
- Most changes took place in the Controller
- One query changed where it took data from
- Extra Circuit was added to support the new hit
list requirement. - Time spent on changes to architecture 1 Day
- Rest of time spent programming the new
requirements.
34Scope Expansion more easily accomplished
- Database Structure Change
- Fields in the database were changed and moved
around. - queries affected were easily found and changed
- Time spent 30 minutes
35Scope Expansion more easily accomplished
- Project A2 Changes
- Project A2 and Project A1 needed to share
- security
- lookup tables
- searches
- A global circuit was created and the required
items were moved into it. - Circuit aliases were changed for Project A1
- Time spent 1 hour
36Scope Expansion
- In each case, there were no side effect bugs
- Fusebox is designed to be loosely coupled
- Each fuse knows all it needs to about what comes
in and what needs to go out. - Any fuse can be reused without fear of side
effects
37Ability for Reuse
- Because of loose coupling all fuses may be reused
within their circuits - All links, form submits and relocations are
accomplished with XFAs - xfa eXit FuseAction
- Ability to set where a fuse goes at runtime
outside the actual fuse. - This means that forms can and are regularly
reused for creating, updating and viewing. - As long as a queries return the same recordset,
the same display may show the results from
multiple queries. - The more fuses are reused, the less chance of
forgetting to make changes in multiple places.
38Research Results (Script penetration)
- In publicly accessible web sites, ColdFusion is
by far the largest scripting language used in the
Federal Government(1) - In the com, org, net, us and edu domains,
ColdFusion is the third most widely used language
coming after php and asp - php is most widely used in the com and net
domains - asp is most widely used in the org and edu
domains. - jsp is the 5th used language in all domains
except gov where it is the 6th used language.
(1) Searches run through Google using
site(domain)
39Research Results (script penetration)
40Research Results (Fusebox/CFM)
- Fusebox comprises the following development in
domains - gov 9.40
- .mil 10.15
- .edu 1.11
- .us 10.86
- .net 7.49
- .org 7.35
- .com 13.28
41Percent of Fusebox Pages in ColdFusion by Domain