1 FUSEDOC: AN EMERGING STANDARD Make everything as simple as possible, but not simpler. -Albert Einstein.

Slides:



Advertisements
Similar presentations
Korean War Gazette 50s Automobiles Final EditionJanuary 14, 1951Volume 5, Number 1 Styles of Cars dicta dicta, ipsam ipsa nemo perspiciatis unde error.
Advertisements

Korean War Gazette In The Event of War Final EditionJanuary 14, 1951Volume 5, Number 1 Duck and Cover Lorem ipsum dolor sit amet totam aspernatur fugit.
CSS Basics Hide, Move, or Tweak (Almost) Anything in Your Community Sites.
Korean War Gazette Automobiles of the 50’s Final EditionJanuary 14, 1951Volume 5, Number 1 Hudson dominates racing. Lorem ipsum dolor sit amet totam aspernatur.
Korean War Gazette Automobiles of the 1950’s Shane SingerAutomobiles of the 1950’sPd. 3 American Cultures Design and Safety of Automobiles in the 1950’s.
Korean War Gazette Suburban News Final EditionJanuary 14, 1951Volume 5, Number 1 Why Suburbs? Lorem ipsum dolor sit amet totam aspernatur fugit beatae.
[Speaker] [Title] [Company] Identity management integration options for Office 365.
Korean War Gazette Present War Gazette By Carlos DelvalleJanuary 14, 1951Volume 5, Number 1 Fallout Ready How To Stay Sane In A Fallout Shelter Lorem ipsum.
Korean War Gazette Nuclear Arms Race Final EditionJanuary 14, 1951Volume 5, Number 1 The A-Bomb Lorem ipsum dolor sit amet totam aspernatur fugit beatae.
SharePoint Hybrid Cloud Identity Considerations Infrastructure Considerations Topology Considerations Workload Considerations Resources Agenda.
DT228/3 Web Development multi page applications/ sharing data.
Trebuchet 44 pt Bold Trebuchet Ital 32 pt. Trebuchet Bold 32 Point Section Header Trebuchet Bold 22 Point Trebuchet 18 Point. Sed ut perspiciatis unde.
Acknowledgments (Arial, 36 points, bold) In this template, acknowledgments are set in Times New Roman, 32 points. Try to keep the acknowledgments to one.
Prelude to Fusebox The Basics: - Variable scopes: session/client/application/request/attributes/caller Custom Tags URLToken.
Prelude to Fusebox Prerequisite Understanding: / Variable scopes: session/client/application/request/attributes/caller Custom tags URLToken If you don’t.
Korean War Gazette In The Event of War Final EditionJanuary 14, 1951Volume 5, Number 1 Fallout Shelter Lorem ipsum dolor sit amet totam aspernatur fugit.
More on Fusebox at Fusebox Development Methodology : More on Fusebox at Fusebox Development Methodology.
An Introduction to Fusebox 3.0 Fusebox 3.0. An Introduction to Fusebox 3.0 The Fusebox Philosophy There are two ways of constructing a software design:
Chapter 8 Cookies And Security JavaScript, Third Edition.
Lecture 8 – Cookies & Sessions SFDV3011 – Advanced Web Development 1.
1 Our Business Process Inset your subtitle here. This is a good space for a short subtitle Presentation Sed ut persp iciatis unde om nis iste natus error.
Today’s objectives  Defining web design  Introduction to design precepts  Markup.
An Introduction to FB4 An Introduction to Fusebox 4 If written directions alone would suffice, libraries wouldn't need to have the rest of the universities.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
(—THIS SIDEBAR DOES NOT PRINT—) DESIGN GUIDE This PowerPoint template produces a standard A0 format (84,1cm x 118,9cm) research poster.
Building CF Applications with Fusebox Steve Nelson CTO, Zero-G Commerce, Inc. member, Team Allaire Chairman of Fusebox.org.
ASSIGNMENT 2 Salim Malakouti. Ticketing Website  User submits tickets  Admins answer tickets or take appropriate actions.
ITM © Port,Kazman 1 ITM 352 Cookies. ITM © Port,Kazman 2 Problem… r How do you identify a particular user when they visit your site (or any.
CF_Underground III 1 Architecting Applications with Mindmapping Tools Can anything save me time when designing an application? How can my visual brain.
Fusebox Not Just For Breakfast Anymore! An Introduction to Fusebox Author: Fred T. Sanders, Instant Knowledge Some Content unscrupulously taken from Steve.
What makes PN’s approach different
Solving the CF Programmer Shortage
PERSONAS AND CUSTOMER JOURNEY MAP
Insert Logo of sponsor HERE
Title of Presentation Goes Here
[PLAN DE MARKETING] CUSTOMER JOURNEY MAP.
WOW PRESENTATION SLIDES
INSERT YOUR EVENT TITLE HERE
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
WOW PRESENTATION SLIDES
WOW PRESENTATION SLIDES
Company Presentation Template
DOT4DIGITAL SIMPLE SMART PROJECT TEMPLATE
Human resources slide 1 HUMAN RESOURCES
Scientific Medical Research Conference Poster Title Goes Here
Purpose & General Information This module …. (example: explores basic on-site or field diagnostic skills in order to provide some training to Master.
Scientific Medical Research Conference Poster Title Goes Here
WOW PRESENTATION SLIDES
Research Main subject Title to be placed here in large font, can be enlarged to fit accordingly to your liking Author title bar with titles Affiliation.
PROFESSIONAL ULTIMATE PRESENTATION
BENTUK NEGARA & PEMERINTAHAN
Jeff Peters Fusedoc Success Jeff Peters
WOW Presentation 2 Theme
WOW Presentation 2 Theme
Wow presentation 2 theme
Title Title Title title title
WOW Presentation 2 Theme
WOW PRESENTATION SLIDES
WOW Presentation 2 Theme
WOW PRESENTATION THEME
PRESENTATION TITLE (ALL CAPS)
STUDENT POSTER SESSION 2019
Human resources slide 1 HUMAN RESOURCES
CUSTOM Presentation Theme
Recursos humanos slide 1
Instructions how to use this poster template
Introducción/Background
CUSTOM PRESENTATION THEME
ADD THE COVER TITLE OF THE PRESENTATION
Title Area This is a sample text. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna.
Presentation transcript:

1 FUSEDOC: AN EMERGING STANDARD Make everything as simple as possible, but not simpler. -Albert Einstein

2 WHY FUSEDOC? The purpose of Fusedoc is to provide a standard that will help developers in… – shortening development cycles – reducing development costs – lessen occasion and severity of bugs – make maintenance of programs easier

3 THE CRITICAL PATH B4A2C8D6 F2 E5 G2 H1 I3 J9 Dependent Events Independent Events

4 THE FUSEBOX PATH Data Model & Schema Fusebox Architecture Fusedocs Queries/ Sprocs PrototypeWireframe Queries/ Sprocs Queries/ Sprocs Fusestubs Query Sims

5 THE FUSEBOX PATH Data Model & Schema Fusebox Architecture Fusedocs Queries/ Sprocs PrototypeWireframe Queries/ Sprocs Queries/ Sprocs Fusestubs Query Sims

6 Dependencies Dependencies are broken through strong interfaces Fusedoc provides way to specify the interface of fuses

7 THE GOAL: FUSESTUBS Fusestubs provide a coder with the fuse layout (HTML/CSS, etc.), any applicable query sims and the Fusedoc needed to complete the fuse. HTML Layout Query Sims Fusestub Fusedoc

8 FUSEDOC When asked what was the most frightening thing he had ever experienced, Mark Twain immediately answered, “a blank piece of paper.” We have been taught that we should document our code but now how.

9 A SAMPLE FUSEDOC <!--- || BEGIN FUSEDOC || || RESPONSIBILITIES || I provide the user a login of both userName and password, returning to the fusebox with an RFA of submitForm. If I get a var called ‘badLogin’, the user is returning to me from an invalid login. || HISTORY || Author: || ATTRIBUTES || --> RFA.submitForm:a FUSEACTION --> [badLogin]: a STRING <-- userName: a STRING <-- password: a STRING || END FUSEDOC || --->

10 FUSEDOC DISSECTED <!--- || BEGIN FUSEDOC || || RESPONSIBILITIES || I provide the user a login of both userName and password, returning to the fusebox with an RFA of submitForm. If I get a var called ‘badLogin’, the user is returning to me from an invalid login. || HISTORY || Author: || ATTRIBUTES || --> RFA.submitForm:a FUSEACTION --> [badLogin]: a STRING <-- userName: a STRING <-- password: a STRING || END FUSEDOC || ---> Limit Sections Limit

11 EXTENDED BACKUS-NAUR FORM DESCRIPTION ::= “ || BEGIN FUSEDOC ||” [ ]; ”|| Responsibilities ||” ; [ ]; ( ) ::= “|| ” “ ||” [ ] ; “|| ATTRIBUTES ||” ; ( ) ::= ::= “--> “ | ” ” | ”++>” | ” ”.”] [“]”] “:” [ ] ; “|| END FUSEDOC ||” ; “--->”;

12 BAREBONES FUSEDOC <!--- || BEGIN FUSEDOC || || RESPONSIBILITIES || I provide the user a login of both userName and password, returning to the fusebox with an RFA of submitForm. If I get a var called ‘badLogin’, the user is returning to me from an invalid login. || ATTRIBUTES || --> RFA.submitForm:a FUSEACTION --> [badLogin]: a STRING <-- userName: a STRING <-- password: a STRING || END FUSEDOC || --->

13 CUSTOMIZED FUSEDOC <!--- || BEGIN FUSEDOC || || RESPONSIBILITIES || I provide the user a login of both userName and password, returning to the fusebox with an RFA of submitForm. If I get a var called ‘badLogin’, the user is returning to me from an invalid login. || HISTORY || Author: Revised: changed to default badLogin to || FUSE_PROPERTIES || FusedocSpec:c:\properties\default.cfm Level: 1 HasForm: TRUE Jsrequired: TRUE || SPERFIDIES || Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. || ATTRIBUTES || --> RFA.submitForm:a FUSEACTION --> [badLogin]: a STRING default=“FALSE” <-- userName: a STRING REQUIRED <-- password: a STRING REQUIRED || END FUSEDOC || --->

14 PARSING ENGINES Provides ability to view Fusedoc in browser Formal description of Fusedoc provided in Extended Backus-Naur Form Flexible nature of Fusedoc allows each developer/shop to define the specification a fuse subscribes to

15 ATTRIBUTE IDENTIFIERS --> variable explicitly passed in <-- variable explicitly passed out pass-thru variable (unchanged) ++> persistent variable already available <++ persistent variable to be set +++ additional required files

16 HOW MUCH DOCUMENTATION IS ENOUGH? Responsibilities should allow a competent CF programmer who is unfamiliar with the application to complete the fuse. Attributes should outline all variables the coder needs to be aware of. Any variables that exist but are not needed by the fuse can be omitted for brevity and clarity.

17 TEST HARNESSES Def: A “wrapper” that your fuse slips into, allowing it to be unit tested. Fusedoc lets you know exactly what the test harness must provide for, making testing much easier and less frustrating

18 DOES IT WORK? <!--- || FUSEDOC || || RESPONSIBILITIES || I show the user's cart summary based on the cookie "cartID" that exists. If no cookie exists, I tell the user they don't have anything in their cart. || ATTRIBUTES || --> RFA.continueShopping: a FUSEACTION --> RFA.removeItemFromCart: a FUSEACTION --> RFA.retotalCart: a FUSEACTION called when the Update_&partID&_&quantity& is changed --> RFA.checkout: a FUSEACTION fatherID: a STRING fatherType: a STRING ( Certification | Manufacturer | ProductLine | HotDeals | searchString) fatherName: a STRING <-- partID: PRIMARY KEY from Parts table on The ampersand indicates that this will be replaced by a value at run time. For example, a valid variable name might be "Update_2107_1" <-- Update_&partID&_quantity: a STRING on RFA.retotalCart (may be multiple) ++> [cartID]: a COOKIE PRIMARY KEY from Carts table. +++ qryGetCartSummary.cfm +++ incHeader.cfm +++ incFooter.cfm || END FUSEDOC || --->

19 DOES IT WORK? <!--- || FUSEDOC || || RESPONSIBILITIES || I first try to get credit card authorization. If it fails, I let the customer know there was a problem and I invite them to try again with RFA.checkoutAgain. If auth succeeds, I call qryInsertOrder.cfm to add an order, I show the order summary (qryGetCartSummary.cfm and qrymyShippingInfo.cfm) and thank them for their business. I also an order summary to them and then an order summary to each of the developers who had items in their order. Finally, I clear out the cart (qryClearCart.cfm) and delete the cookie.cartID and the cookie.ShoppingInfo. || ATTRIBUTES || --> RFA.failure: a FUSEACTION --> shipMethod: a STRING ( GNDCOM | 2DA | 1DA ) --> ccType: a STRING ( ax | mc | visa | discover ) --> ccNumber: a STRING --> ccExpirationMonth: a STRING (01 thru 12) --> ccExpirationYear: a STRING (2000 thru 2005) --> ccNameOnCard: a STRING --> shipping: a NUMBER --> tax: a NUMBER --> cartSummary: a NUMBER fatherID: a STRING on RFA.failure fatherType: a STRING on RFA.failure ++> cartID: a COOKIE PRIMARY KEY from Carts table ++> ShippingInfo: a COOKIE WDDX packet of shipping info +++ qryGetCartSummary.cfm +++ qrymyShippingInfo.cfm +++ qryInsertOrder.cfm +++ qryClearCart.cfm +++ incHeader.cfm +++ incFooter.cfm +++ PaymentNet: a CFX tag to communicate withe creditcard auth. || END FUSEDOC || --->

20 DOES IT WORK? – Hal Helms, Fusebox architect – Jeff Bane, database architect – Aaron Newman, layout specialist – A Philippines-based CF shop were coders

21 DOES IT WORK? a Sun ecommerce site – Aaron worked with client on look and feel – Simultaneously, Jeff worked on data model while – I worked on overall Fusebox architecture – I created Fusestubs and query sims and sent them off to the Philippines for coding – We received them back (with test harnesses) and I integrated them and did integrated testing. – Results: 60% cost savings site was done by moonlighting in one month

22 FUSEBOX TRAINING If written directions alone would suffice, libraries wouldn't need to have the rest of the universities attached. - Judith Martin Judith Martin “Developing Applications with ColdFusion & Fusebox”, developed and taught by Hal Helms Oct 16-20, Tampa, FL for more info