Hi Stephen,

Stephen Adams wrote, On 11/8/2006 5:22 AM:
Hi,

I'm thinking about how I go about designing an application from scratch. I've got a wireframe diagram of how the system should look, all the pages and what they will contain, but I trying to think what to do next. Do I:

    * Create the database
    * Create UML diagram
    * List the features of the system

I'm building this system with a Flex front end so its got to be very OO orientated, but where to start. Does anyone have any ideas, thoughts, what do other do?


As Hal mentioned, I would start from the UI design as well (... almost...). However, I wouldn't go very in depth on it. I would start by prioritizing the features by what the customer finds most important - and start mocking them up so we could come to an understanding of what is needed - as Hal said, it is not too unlikely that what you might build without doing so would completely miss the point - and in my own experience, the customers aren't sure what they need or even what is possible without seeing something from you. Frequent feedback, in my experience, is extremely valuable for a successful project. I may even simply start with sketches, rather than an HTML mockup, but unlike Hal, I wouldn't build the real flex front-end (but I don't know how fast/easy it is to build). The idea here is to commit to doing the least work possible at this point, since your understanding of the system is the most incomplete it will be.

So, what I might to is this:

1) List the features. After all, if you don't know what the features are, how do you know what to build? 2) Put a "cost" on each feature. It doesn't have to be a real cost - a relative degree of difficulty, I would think, will do. 3) Prioritize the features according to what the customer finds most valuable, given the knowledge of cost. But, if some feature has to be implemented before another one can be started, obviously you should let the customer know that. 4) Prototype a UI for the most important features that you could get done in a week or two, and get feedback from the client. 5) Work on those features for a short time (the week or two I mentioned above). Keep track of how much in "cost" you get done during the iteration. That will be your guide as to how much "cost" the customer can choose for the next one. 6) Show the features to the client, to get their feedback. Fix what needs to be fixed and let the customer add new features or reprioritize existing ones. Wash, rinse, repeat.

Be sure to let the customer choose the most important features - this ensures they get the most valuable product in the shortest amount of time, and they could start using it as soon as possible as well.

I see little value in prototyping the entire system in the beginning, as you may very well never end up building the whole system as it was initially envisioned. The key, in my estimation, is to produce the most valuable features in order, and go from there.

I also see little value in producing UML diagrams for the whole system. If classes relate to each other in ways it is easy to understand, there is no point in diagramming them. I would only diagram them when they aid understanding.

With all that said, if you want to have a /working/ prototype, there are tools/products out there that can look at your database table, and get your model, view, and controller for simple things up and going, so you can focus on business logic. This could give a crude html implementation that you can use to get feedback, and potentially build the system out of them as well. In particular, I might take a look at cf on wheels, or Transfer ORM, as they may be ready for production (but still haven't reached version 1, to my knowledge). Things like this would allow you to start with the database and effectively give you the front end you want to get feedback from your client.

From what I've seen, cf on wheels is almost an entire CF implementation of Ruby on Rails, but the docs make it sound like it only works on apache, so I haven't tried it. I also heard about Transfer ORM just this morning, so I don't know much about it, except that it appears a lot more mature and requires some more configuration than what I've been working on - cfrails, which you can find at http://cfrails.riaforge.org. As I said, mine isn't as mature as these other two, and in fact I don't know that I'd even call it useful yet, but it is an alternative if you have CFMX 6.1 and MSSQL Server, and allows you to produce working prototypes extremely quickly (there are some glaringly missing features, such as ability to easily change the default form fields to what you what, not working with mysql, no aggregation of foreign key rows, no client-side auto-validation (there is server side though), no "run this method before this action", etc.

For reference, Transfer ORM is also at riaforge: http://transfer.riaforge.org and CF on Wheels is at http://cfwheels.com/

-Sam




You are subscribed to cfcdev. To unsubscribe, please follow the instructions at 
http://www.cfczone.org/listserv.cfm

CFCDev is supported by:
Katapult Media, Inc.
We are cool code geeks looking for fun projects to rock!
www.katapultmedia.com

An archive of the CFCDev list is available at 
www.mail-archive.com/[email protected]

Reply via email to