Download presentation
Presentation is loading. Please wait.
Published byGeraldine Craig Modified over 9 years ago
1
An Introduction to XFB 1 XFB There's a fine line between genius and insanity. I have erased this line. Oscar Levant
2
An Introduction to XFB 2 Origins of XFB XFB (Extended Fusebox) grew out of a desire to tip the scale of project success. XFB combines technical innovations (XFAs, query sims, nested circuits, nested layouts, integrated security, etc.) with project management features.
3
An Introduction to XFB 3 70% Failure
4
An Introduction to XFB 4 Requirements Design Coding Testing Delivery Time Expended Nike Method www.halhelms.com Architecture
5
An Introduction to XFB 5 Requirements/Design Architecture Testing Delivery Time Expended Extended Fusebox Method www.halhelms.com Coding
6
An Introduction to XFB 6 Main Points of XFB Project Management – wireframes – prototypes – devnotes Technical – xfas – fusedocs – nested circuits – nested layouts – query sims – security – assertions
7
An Introduction to XFB 7 Wireframe
8
An Introduction to XFB 8 Wireframe Wireframes provide a "booster rocket" to help us escape the gravitational pull of our prejudices and assumptions about what clients want.
9
An Introduction to XFB 9 Wireframe The wireframe is a skeleton-model of an application. It is meant to help clients and developers discuss what an application should do.
10
An Introduction to XFB 10 Wireframe
11
An Introduction to XFB 11 Wireframe
12
An Introduction to XFB 12 Wireframe Download available at www.bjork.net
13
An Introduction to XFB 13 Prototype w/DevNotes
14
An Introduction to XFB 14 Why a prototype? "Requirements gathering" doesn't work The Musee d'Orsay in Paris wants to hire you to reproduce a famous painting: Arrangement in Black and Grey No. 1 Specification: "The work shall be oil on canvas, 56-1/4" x 63-1/4"..."
15
An Introduction to XFB 15 Is this what they want?
16
An Introduction to XFB 16 Is this what they want?
17
An Introduction to XFB 17 Is this what they want?
18
An Introduction to XFB 18 Is this what they want?
19
An Introduction to XFB 19 Is this what they want?
20
An Introduction to XFB 20 THIS is what they want!
21
An Introduction to XFB 21 Why the prototype? Clients can only tell you what they want after they see it
22
An Introduction to XFB 22 What is the prototype?
23
An Introduction to XFB 23 Leaving no "wiggle room" The prototypeThe deployed application
24
An Introduction to XFB 24 An iterative process The wireframe forms the basis for the first cut of the prototype Prototypes have minimal code—and are often best handled by non-programmers The prototype is refined through interaction with client and developer using DevNotes
25
An Introduction to XFB 25 What is DevNotes? DevNotes is a simple, threaded message system that sits below each individual prototype page. All issues related to the application are recorded as DevNotes
26
An Introduction to XFB 26 What are DevNotes used for? Client direction: "Move the buttons to the left/Make the blue a little more like cornflower and less like slate" Developer questions: "Where will the product information come from?/Is there an existing database or file with authorized users?" Client answers: "I think the IT people have a spreadsheet or something with users."
27
An Introduction to XFB 27 What are DevNotes used for? Developer self-notes: "Use JavaScript for client processing of this procedure"
28
An Introduction to XFB 28 Prototype freeze We are done with the prototype when both client and developer are confident that – all questions regarding functionality have been resolved – all content has been received from client – graphical interface/look and feel has been approved – any changes occurring after this point will either become a new release or will be exorbitantly expensive
29
An Introduction to XFB 29 Fusebox architecture
30
An Introduction to XFB 30 Unplanned program flow Module A Module B Module D Module E Module F Module C
31
An Introduction to XFB 31 Architected program flow Module AModule BModule D Module EModule FModule C
32
An Introduction to XFB 32 A Fusebox request Fusebox loginUser validateLogin newUser qryValidateLogin.cfm validateLogin actValidateLogin.cfm the fuseaction the fusebox fuseactions fuses
33
An Introduction to XFB 33 Fuses always make requests of the fusebox <input type=“hidden” name=“fuseaction” value=“validateUser”> Fusebox the fusebox a fuse
34
An Introduction to XFB 34 The fusebox copies all URL and form variables into attributes scope url.productID = 1027 form.lastName = ‘Helms’ attributes.productID = 1027 attributes.lastName = ‘Helms’
35
An Introduction to XFB 35 The fusebox …
36
An Introduction to XFB 36 Fuseactions The fuseaction is the motivating force in an application. Suggestion: use name is form of verbNounPhrase such as: – addItemToCart – getUserInfo – showProductInfo
37
An Introduction to XFB 37 The fusebox ….
38
An Introduction to XFB 38 Including a fuse The fusebox …. anotherFuse.cfm yetAnotherFuse.cfm aFuse.cfm “doSomething” The fuseaction The fuses
39
An Introduction to XFB 39 Nested circuits
40
An Introduction to XFB 40 Benefits of nested circuits More and easier code reuse Independent, concurrent development of code modules Descendant modules inherit variables from parents Variables from parents are inherited by children Layout files can be nested Exceptions bubble upwards
41
An Introduction to XFB 41 XFB nested circuits
42
An Introduction to XFB 42 Conflicting circuit names
43
An Introduction to XFB 43 Resolving circuit naming conflicts Create a Circuits.cfm file Alias name conflicts bpcf/completed/circuits.cfm
44
An Introduction to XFB 44 FB3: nested circuits Fusebox 2 worked with the concept of a federation of circuits,each having to know of the existence of each other Fusebox 3 works with the concept of interchangeable circuits that can be reused in different applications
45
An Introduction to XFB 45 Inheritance
46
An Introduction to XFB 46 Bubbling exceptions Lets architect determine where certain exception types will be handled Lets coder write fuses without worrying about handling certain classes of exceptions
47
An Introduction to XFB 47 alert( Example: Bubbling exceptions <cf_LogException message=“#cfcatch.message#”>
48
An Introduction to XFB 48 XFAs
49
An Introduction to XFB 49 XFAs A typical Fusebox 2 page has fuseactions hardcoded in place. Examples: –
50
An Introduction to XFB 50 XFAs XFAs are variables that lets fuseactions be resolved at run time Examples –
51
An Introduction to XFB 51 Identifying XFAs Mark up the prototype for any exit points – any point at which the user or the system can make another fuseaction request
52
An Introduction to XFB 52 Identifying XFAs
53
An Introduction to XFB 53 Assigning values to XFAs Login XFA.submitForm validateUserLogin Login Validation XFA.success showMainCatalogPage Product Detail XFA.buyItem addItemToCart Cart XFA.adjust quantities adjustCartQuantities Cart XFA.removeItem removeItemFromCart Registered User XFA.editInfo editUserInfo Registered User XFA.saveInfoUpdate saveUser Admin Page XFA.newUser newUser Identifying common nouns
54
An Introduction to XFB 54 Identifying circuit and fuseaction
55
An Introduction to XFB 55 Identifying needed fuses
56
An Introduction to XFB 56 Fusedoc
57
An Introduction to XFB 57 Fusedocs Provide documentation/PDL (program design language) for each fuse Tells coder what they need to know to write a fuse without knowledge of the application XML-based with DTD for validation
58
An Introduction to XFB 58 Nested layouts
59
An Introduction to XFB 59 tag Used to capture the output of code and save as a request-scoped variable Replaced in ColdFusion release 5 with
60
An Introduction to XFB 60 Example I am the left side I am the right side
61
An Introduction to XFB 61 Example td{ background-color : #thebg#; color : #thefg#; } #request.me# XMLSpy/FD4 validateLogin.cfm
62
An Introduction to XFB 62 Nested layouts Nested circuits Parent Child GrandChild UKDAXF/SampleFB3/
63
An Introduction to XFB 63 Post-processing decision making Because the child is returned to the parent as a variable (rather than simply output onto the screen), the parent can make decisions based on the results of the child's processing
64
An Introduction to XFB 64 Implementing nested layouts Wrap the code in index.cfm with (version 5) or (version 4) using the circuit's alias as the name of the variable (Illustration next)
65
An Introduction to XFB 65 Implementing nested layouts <!--- I'm going to get one (and only one) fuseaction at a time. Fuseactions correspond to methods or messages in OO languages. ---> I am the #GetDirectoryFromPath( GetCurrentTemplatePath())# fusebox and I received a fuseaction called "#attributes.fuseaction#" that I don't have a handler for.
66
An Introduction to XFB 66 Implementing nested layouts If the child is to display something, call the layout file after the tag
67
An Introduction to XFB 67 Query sims
68
An Introduction to XFB 68 Query sims Provides a simulated query to work with code Allows code architecture to be done before all database decisions have been finalized Provides instruction to SQL coders on what information is needed Lets architect determine data variable names test/QSimSample
69
An Introduction to XFB 69 Test harnesses Provides an easy-to-implement way of unit- testing fuses Should accompany all completed fuses
70
An Introduction to XFB 70 Example: test harness
71
An Introduction to XFB 71 Proving the concept We all agree that your theory is crazy, but is it crazy enough? Niels Bohr
72
An Introduction to XFB 72
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.