Team Nylon : Interface Driven Architecture Proof Of Concept (POC)

Posted December 26, 2006 at 8:57 AM by Ben Nadel

Tags: ColdFusion, Work

After listening to Clark Valberg at the last NY CFUG, I got all jazzed up about Interface Driven Architecture. I feel that it is definitely the way to go when it comes to successful project life cycles. Of course, right now this is all theory for me as my company's current development model is the more archaic, "develop now, show the client later" mentality.

In order to even approach management with this suggested shift in thinking, I am going to have to prove to them that this is a worthy strategy. I am using a small project called Team Nylon as my proof of concept. Team Nylon is a very small task-management system. More or less, it's a glorified To-Do list that has a sense of clients and teams. It's small, but I think it will be a useful enough application to prove that this is a valid approach to development.

The first stage of my prototyping was purely graphical. No ColdFusion or code of any sort is used during this phase. I used Adobe Fireworks to create slides of what I thought the application should look like. The following slides took me about 3 hours to create. Keep in mind - and this is really the whole point - that NO ColdFusion code has been written at this stage. The idea is that I can get the clients (my management) involved in the process sooner rather than later and with minimal wasted development effort.

After the graphical slides have been signed off on, I will create a non-functioning demo prototype. This will contain mostly HTML, CSS, and Javascript and what ever ColdFusion I will need to make prototyping easier (ex. Headers and Footers), but will not have any state nor will it call and databases. That will be Phase II.

These are the slides that they have signed off on for further prototyping:


 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 

 
 
 

 
 
 
 
 


Reader Comments

Dec 26, 2006 at 11:47 AM // reply »
45 Comments

Ben,
Looks really interesting and I will defiantly be looking to hear more on this. On a side note, how do you create such clean prototype screen shots like this. I need to start doing that more!


Dec 26, 2006 at 11:54 AM // reply »
10,640 Comments

Dan,

I don't know if you have ever used Fireworks, but they use Frames (similar to Photoshop folders maybe???). It make doing this very easy. I will post up the PNG design file later today as well as a link to the "functional" prototype so people can click around.

From the PNG, its just a matter of going to each frame and exporting. There's a way to export each frame automatically, but I have not set up a slice to do that - its really hard to make a "big picture" slice as well as individual small slices (ex. primary nav, logo). I am not that skilled :)

But look for more posts later today.


Dec 26, 2006 at 2:50 PM // reply »
10,640 Comments

Dan,

Take a look here if you want to get the design file:

http://bennadel.com/index.cfm?dax=blog:445.view


Dec 27, 2006 at 9:55 PM // reply »
92 Comments

I really love how you have setup this mock application. If its ok with you I plan to follow along and build it in my framework. I've been having trouble finding something simple I can test and this looks great. I do have one question though about the first screenshot. Why do you allow a user to impersonate someone else? From what I see they are in a way logging in as another user but couldn't this be dangerous? I'm sure I'm just missing something here. You got some great posts going Ben, keep them coming!


Dec 28, 2006 at 7:47 AM // reply »
10,640 Comments

Javi,

I am glad you like the demo. I don't know if you saw the next post on it, but all the prototype code is available for download and an online demo. Feel free to take it and mess with it.

As far as the security goes, you first guess was correct: there is none. I wanted to keep the program very simple, at least to start with. Because all I wanted was a glorified To-Do list for the company, I don't really care who can get on the system and add tasks. Any one of my co-workers can go on, create tasks, and assign them to anyone else in the company.

Being able to "impersonate" people doesn't really change any functionality other than the "MY" page (ex. MY Tasks, MY Teams) will filter based on the "persona" that you have selected. So I guess the only thing that changes is the filtering. No add/update/delete functionality will change.

Is this a security risk? I guess it depends on how you look at it. If we have an employee that is going to go in a purposefully screw with other people's task and do malicious things.... then, honestly, security risk in the application is probably the least of our problems :)

Of course, once the application is up and running and used by my project manager, she might decide that security is an issue and at that point, I can build it in. But currently, I feel that it would not add to the features.


Dec 28, 2006 at 9:19 AM // reply »
92 Comments

Ben, I check your blog regularly to see if there's something new. Are you trying to say I'm blind? Eh? What you trying to say? :) I have seen it and tried out the online demo last night. It confused me a little bit though as the data was constantly changing so I assume you probably just had a query that was being randomized upon display, is that correct?? I had asked my first question rather quickly but I agree as it makes sense. This application would be for administration so no need to be concerned about that. I think what you got here is great and look forward to see where else you go with it.


Dec 28, 2006 at 9:23 AM // reply »
10,640 Comments

No trying to say anything, I swear, I swear :)

Yeah, the data just randomizes. The client list never does I think, but the team structure and the task list randomizes. I did that so I could how the page would look with different amounts of data. I can see that it could be confusing if you are not expecting it.


Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
InVision App - Prototyping Made Beautiful With Prototyping Tools Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
Feb 12, 2012 at 3:37 AM
Learning ColdFusion 8: CFImage Part III - Watermarks And Transparency
Hi Ben, Just to ask currently it is placed bottom right corner, if i need to replace the same rendered image on the bottom left side or in the bottom center, how that can be calculated. bottom ce ... read »
Feb 11, 2012 at 9:29 PM
Use jQuery's SlideDown() With Fixed-Width Elements To Prevent Jumping
I can't say how glad I am that I found your post. Thank you very much. ... read »
Feb 10, 2012 at 7:21 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
Update! Instead of $(eval(options.insertAfter)).after(data['insertData']); I now use: var ajaxNode = document.createElement('span'); var parent = $(eval(options.insertAfter))[0].parentNode; ... read »
Feb 10, 2012 at 6:18 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
encountered this same, what I consider, jQuery bug last week. I'm building a site in which I load some content via AJAX. This content contains Linkedin share button placeholders which Linkedin API ne ... read »
Feb 10, 2012 at 11:30 AM
Cross-Origin Resource Sharing (CORS) AJAX Requests Between jQuery And Node.js
After you understand the concepts here, this is an awesome cheatsheet for enabling CORS in just about anything http://enable-cors.org/ ... read »
JM
Feb 10, 2012 at 9:10 AM
My Safari Browser SQLite Database Hello World Example
@Amy, Here is a very good tutorial on how to use JOIN: http://www.sqltutorial.org/sqljoin-innerjoin.aspx ... read »
Feb 10, 2012 at 4:42 AM
Building A Twitter-Inspired RESTful API Architecture In ColdFusion
This is great, very useful Ben. I spotted a small typo in the api.cgm listing: <cfthrow type="Unauthroized" /> Cheers Stefan ... read »
Feb 9, 2012 at 10:35 PM
CFDirectory Filtering Uses Pipe Character For Multiple Filters (Thanks Steve Withington)
I was wondering if there would be a filter you could apply so that you got everything but what you included in the filter. As in show me all docs that are not a .pdf. ... read »