Presentation is loading. Please wait.

Presentation is loading. Please wait.

An Introduction to XFB 1 XFB There's a fine line between genius and insanity. I have erased this line. Oscar Levant.

Similar presentations


Presentation on theme: "An Introduction to XFB 1 XFB There's a fine line between genius and insanity. I have erased this line. Oscar Levant."— Presentation transcript:

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


Download ppt "An Introduction to XFB 1 XFB There's a fine line between genius and insanity. I have erased this line. Oscar Levant."

Similar presentations


Ads by Google