In this section, we will give you a high-level overview of our development approach. In general, we will follow an agile, iterative process to build TimeTracker. An alternate approach would entail using the waterfall methodology, in which the entire application is designed first, then coded, tested, and finally deployed, thus leaving integration and testing to the very end. Consequently, the waterfall approach is inherently more risky and is increasingly losing favor. Unlike the waterfall method, the iterative approach allows us to quickly see the results of our efforts, and make necessary course corrections as early as possible.
In the spirit of agile development, we will build TimeTracker in several iterations. In the first iteration, we will design and build the search functionality. This will include a complete vertical slice of the application starting from the front-end screen all the way to the database. In subsequent iterations, we will implement the functionality to create, submit, and approve timecards.
Another important aspect of the agile approach is test-driven development, which suggests that you write a test before you write the production code to fulfill that test. The test defines the requirements of your application and forces you to write only the code that is necessary, thus reducing unguided effort. In addition, you now have a suite of tests that can be used for regression testing your application. As an example, consider the search screen from our prototype. To support this screen, the service layer needs to provide only two functions:
We will first tackle the requirement of getting all users from the service layer as follows:
The same process will be then repeated to implement the second function above -- "get timecards for the specified search criteria".
Now that we understand the basic development process, click the here to create a starter application.