Keeping Track of Your Geocaching Outings
When Wayne Johansen turned 16, his dad bought him a new Garmin handheld GPS system. His family had always enjoyed camping and hiking, and Wayne was usually the one who monitored their hikes with his dad’s GPS system. He always liked to carry the GPS to monitor the routes, distances, and altitudes of their hikes. More recently, though, he had found a new hobby using his GPS system: geocaching.
Geocaching is a high-tech version of the treasure hunts that most of us did when we were kids. Participants search for geocaches or caches that are small, hidden, waterproof containers that typically contain a logbook and perhaps a small item. When found, the participant sometimes gets instructions for the next move—to either enter information into a logbook or to look for the next cache.
As Wayne became more involved with his hobby, he discovered that there are many different kinds of activities for geocaching enthusiasts. The simplest ones are those that involve caches found by using GPS co- ordinates, although even some of these tasks can be difficult if the caches are well hidden. Some of the activities involve multipoint drops where there is a set of clues in multiple locations that must be followed to arrive at the final cache point. Some activities involve puzzles that must be solved to determine the coordi- nates of the final cache.
Before long, Wayne wanted to make his own caches and post them for people to find. He discovered that there were several Web sites with access to geocaching information, caches, and memberships. He joined one of the geocaching Web sites and used it to log his finds. But he decided he would like to create his own system for tracking all the information he had about his caches. Conveniently, Wayne’s older brother Nick, a college student majoring in information systems, was looking for a semester project for one of his programming classes. The two of them decided to develop a system to help Wayne keep track of all his geocaching activities.
In this case, you will go through the various core processes of an SDLC and perform some of the activities of a development project. The project is divided into tasks and sub-tasks, as was our Tradeshow System project. The daily assignments for this case should be considered as preliminary efforts and rough drafts. The objective of these assignments is to help you remember the overall approach to software development. Several assignments have been listed for each task to allow your instructor to select those that best meet the objectives of the course.
Task 0: Define the Vision
Either by yourself or with another class member, brainstorm all the functions this geocaching system might do. Keep it at a very high level. These activities closely relate to Core Process 1: Identify problem and obtain approval. Write a rough draft of the System Vision Document based on your brain- storming ideas. [Hint: Think of what Wayne wants the system to do and why this helps him.]
Task 1: Plan the Project
Based on the scope and vision you described in the System Vision Document, divide the project into at least two separate subsystems that can be done in separate iterations. For example, perhaps a first version can run on a laptop, with a second version that includes mobile components for a smartphone. These activities are related to Core Process 2: Plan and monitor the project—what to do, how to do it, and who does it.
Sub-Task 1.1: Divide the system into at least two separate components or subsystems, which can be supported with two iterations. Briefly describe each.
Sub-task 1-2: Create a work breakdown structure that lists all the steps to complete the first iteration. Put a time estimate on each step.
Task 2: Define and understand the Requirements
On task 2, you want to get an overall view of what the system needs to do for Wayne. There are two pri- mary areas to focus on to obtain this high-level understanding of the system: a list of use cases and a list of domain classes. You could document this information in lists, but diagrams provide a visual representation that is often easier to remember and understand. These activities support Core Process 3: Discover and understand details.
Sub-task 2-1: Create a simple use case diagram from the list of use cases.
Sub-task 2-2: Create a simple class diagram from the list of classes.
Task 3: Define the user experience
These activities are a continuation of what you began in task 2. The objective here is to further define what Wayne will need and how he will actually use the system. You will determine exactly how each use case works—what steps and options are available with the use case and even what the display and data- entry screens will look like. These activities primarily support Core Process 3: Discover and understand details.
Sub-task 3-1: Select a single use case and identify the steps required to perform the use case Sub-task 3-2: Make a workflow diagram of the selected use case.
Task 4: Develop the Software Architecture Design
The high-level software architectural design of the system generally includes decisions about how the sys- tem will be built and what the database will look like. Design is a technical activity that requires experience in programming, database development, and software architecture. These activities support Core Process 4: Design system components.
Sub-task 4-1: Design a preliminary database schema for the classes in this iteration.
Sub-task 4-2: Decide whether you will build a desktop system or a browser-based system. Write a couple of paragraphs listing the pros and cons of each alternative to defend your decision.
Task 5: Develop the Detailed Design and Program the System
You probably have had many class projects where you designed a system and then programmed it. These kinds of activities support Core Process 5: Build, test, and integrate system components. Write a paragraph describing what programming language(s) you would recommend and what development environment you prefer. For this answer, draw on your previous programming and development experiences.
Task 6: Test and Deploy the System
You may have had opportunities to perform comprehensive testing of your programming class projects, especially if you have developed systems that integrated with other systems. These activities support Core Process 6: Complete system tests and deploy solution. Obviously, you can only do this if you have programmed the system.
Sub-task 6-1: Write a paragraph describing the difference between programmer testing and user testing.
Sub-task 6-2: Look at www.geocaching.com, which is a commercial Web site. What other issues need to be addressed to deploy this type of Web site?