Iteration 1 : Responsibilities
Who Are The Players In This Game?
Now that we have a basic of what we want the application to be doing, we can start to break down our problem domain into different players and responsibilities. Let's just quickly brainstorm the sort of things we will need including object as well as responsibilities. Once we have this list, we will go back and organize it.
For starters, we are going to need an object that can crawl over pages and collect links. That's really the basis of the application. And, let thing about it, there are different type of crawling:
- Searching for links to thumbnail sites.
- Searching for links to video files.
- Downloading video files.
We need to be storing data. Not only that, since we are not using a database, we need to be able to store data to flat files and then read data from the files. What I am thinking is that we can probably store things in light weight XML files but then convert that to ColdFusion query objects and store them in the application scope (or other persistent memory object).
Data Retrieval And Manipulation
In addition to storing data, we need to be able to search, view, edit, and delete it. Here are some data retrieval actions that will need to occur:
- Search the videos.
- View a detail page about a video.
- Update video information including name, description, tags, starring.
- Delete a video.
For this phase, we are not going to worry about security. This is going to be a single-user, non-protected application. We can always come back and factor in security in a different round. And honestly, you probably shouldn't have this application on your computer if security is an issue ;)
Those are all main responsibilities that pop into my mind. Remember, this is an initial responsibilities list. This IS GOING TO CHANGE. That's part of the iterative approach to this demonstration. That's part of the journey. Yahoo for learning!
Now that we have our initial responsibilities laid out, let's work on some prototype designs. Seeing a design will often help codify what the system's real responsibilities are.