Defining the requirements

Requirements definition

The first thing is to define the requirements for the application we intend to create. Generally, this can be done without focus on the actual technology used to implement the application. In reality, the requirements usually do impose some restrictions on the technology – for example, if part of the requirements is to create an application which is accessible through the web, we would most likely not choose C/C++ as the implementation language (even though that would certainly be possible). In our case, lets define some initial requirements: 

  • Create a web application to manage tasks
  • Tasks can contain sub tasks
  • Users shall be able to enter tasks for themselves and for other users
  • It should be possible to manage the list of available users
Based on these (somewhat sloppy) requirements, we will now define a simple data model and sketch the UI we want to implement. We will refine the requirements later, when we add additional features to the sample application.

Data Model

The conceptual data model consists of two entities which are connected:

 

So, a user has a name and an eMail address, and a Task has a description and a comment. Also, a Task can have sub tasks (but each task can only have one parent, resulting in a tree structure). A Task has been created by a specific user, and it is also assigned to a (probably different) user. Each user can create multiple tasks and can also have multiple tasks assigned.

User Interface

A useful approach is to create a draft of the user interface before starting to build it. In our case, the application shall start with a small menu on the left side, and an empty area on the right side:

When the user clicks on Manage Users”, the right side area shall change to a table showing all available users:

When the user clicks on “Manage Tasks”, the right side area shall change to a tree table showing all tasks:

Additionally, both the table and the tree table shall have a row of buttons above them for the usual database operations. So far, the application could be built based on many different technologies, like EJBs, JSP, JSF and so forth. For some reason, we choose to use Oracle ADF to build the application. Lets get started.