In the first iteration, I will define only some basic requirements. This is expected because the amount of work in the early phase does not only come from the requirements, but also from infrastructure plumbing. By limiting our scope to only some basic requirements, we increase the chance of better manageability of the project in its first phase.
Normally requirements will be gathered by business analysts from the users. In this case, I also perform the role of a business analyst as well as the user (this should not happen in the real world, but in a demo community project like the one I am doing now, this should be OK). So, here are the requirements I (as the user) want from the system:
| No | Title | Description |
| 1 | The system can host multiple blogs. | The system can host multiple blogs. Each blog is owned by a single user. Every user can have more than one blog. |
| 2 | Home page can display up to latest N posts. | Reader should be able to open the home page to display latest N posts. N should be configurable and saved in the data store, so that later the owner of the blog can change the number to whatever he/she wants. If blog contains more than N posts, the home page can be paged, so that each page precisely contains only N posts. The paging will be implemented by placing [Next Posts] and [Previous Posts] on the bottom of each page. The home page should only display post excerpt, not post detail. There should be no image displayed, and no HTML formatting allowed. |
| 3 | The system can display a post detail in a single page | Reader should be able to display a post detail in a page after the reader clicks on the title of the post that is displayed on the home page, or clicks on the [Read More] label that is placed after post excerpt. |
And then I changed my hat again. This time I perform a role of a system analyst who translates those requirements into a use-case. Proper use-case has its own format. It's rather long and tedious to create. To be honest it's not the one that I like much. So, instead of serving use case description, here I show you the use case diagram. I think the diagram should not be too complex for now:

The open homepage use-case starts when the user opens the browser and navigates it to the blog home page address. The system will display N most recent posts from the blog without filtered.
The read single post use-case starts when the user reads post details from a link published somewhere. The link may come from the home page, web search results, or typed directly into the web browser.
As conclusion, requirements and use-case model of CommunityBlog in the first phase focus on the core functionalities of a blogging system. There are only three requirements modeled into two use-cases. This model should be simple. By having a simple model in the first phase, I also can concentrate on establishing the overall architecture to work.


