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:
https://bennadel.com/444
Reader 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!
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.
Dan,
Take a look here if you want to get the design file:
bennadel.com/index.cfm?dax=blog:445.view
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!
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.
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.
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.