r 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 member of the family who monitored their hikes with his dad’s GPS system. He always liked to carry the GPS because he really enjoyed monitoring the routes, distances, and altitudes of their hikes. More recently, though, he had found a new hobby by using his GPS system: geocaching. Geocaching is akin to the treasure hunts that most of us did when we were kids. The difference is that geocaching is a high-tech version of a treasure hunt that uses GPS but also calls on one’s basic treasurehunting skills. 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 that can be found by using GPS coordinates, although even some of these can be difficult if the caches are well hidden and well camouflaged. Some of the activities involve multipoint drops in which there is a set of clues at multiple locations that must be followed in order to arrive at the final cache point. Some activities involve puzzles that must be solved in order to determine the coordinates and location 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, including individuals’ blogs, with geocaching information, caches, and memberships. He joined one of the geocaching Web sites and used it to log his finds. It was fun to log and publish his finds and to post the geocaches that he created. But he decided he would like his own little system for keeping track of all the information he wanted to maintain 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 work together and develop a system to help Wayne keep track of all his geocaching activities. In this end-of-chapter case, you will go through the various core processes of an SDLC and perform some of the activities of a development project. Of course, this is a very small project with very limited requirements. The project and various assignments are divided into days, as was our Tradeshow project. You have not learned all the skills required to effectively produce all the documents illustrated in the chapter. Hence, the daily assignments for this case should be considered as preliminary efforts and rough drafts. The objective of these assignments is simply to help you remember the overall approach to software development. Several assignments have been listed for each day to allow your instructor to select those that best meet the objectives of the course. Day 0: Define the Vision The primary purpose of pre-project activities is to define a vision for the new system. Either by yourself or with another class member, brainstorm all the neat functions this geocaching system might do. Keep it at a very high level. You just want to think of the major functions that Wayne might want the system to do for him. These activities closely relate to Core Process 1: Identify the problem or need and obtain approval to proceed.
Write a rough draft of the System Vision Document based on your brainstorming ideas. [Hint: Think of what Wayne wants the system to do and why this is a benefit to him.] Day 1: Plan the Project Obviously, this is a small project and does not require an elaborate project plan. Based on the scope and vision you described in the System Vision Document, divide the project into at least two separate subsystems or
sets of functions that can be done in two different iterations. For example, perhaps a first version can run on a laptop, with a second version that includes mobile components for a smartphone. Or perhaps the first version can maintain a history of past geocache hunts, and the second version can allow Wayne to record geocaches that he creates. Or the first version can create a simple database system, and the second version can enhance it by linking to photo albums and/or blog posts. As you can see, there are often many different ways that a project can be partitioned. These activities are related to Core Process 2: Plan and monitor the project—what to do, how to do it, and who does it. Assignment D1-1: Divide the system into at least two separate components or subsystems, which can be supported with two iterations. Briefly describe each.
Create a Work Breakdown Structure that lists all the steps to complete the first iteration. Put a time estimate on each step. [Hint: Use the one in this chapter as a model.] Day 2: Define and Understand the Requirements We often describe the activities on Day 2 and Day 3 with the word understanding. On Day 2, we want to get an overall view of what the system needs to do for Wayne. As you learned in this chapter, there are two primary areas we focus on to obtain this high-level understanding of the system: a list of use cases and a list of object classes. We 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 the details of the problem or the need.
Identify a few use cases that apply to one subsystem. [Hint: Think of what Wayne plans to do with the system. He will use the system to “do what”?]
Try to identify the classes that apply to the first project iteration. [Hint: Think of “information things” that Wayne wants the system to “remember.”]
Create a simple use case diagram from the list of use cases. [Hint: Drawing by hand is fine. Use the one in this chapter as a model.]
Create a simple class diagram from the list of classes. [Hint: Drawing by hand is fine. Use the one in this chapter as a model. Think of some other pieces of information that apply to each class.] Day 3: Define the User Experience These activities are a continuation of what we began in Day 2. The objective here is to further understand what Wayne will need and how he will actually use the system. We 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. Unfortunately, this often requires a lot of work. For this case, though, let us keep it simple. These activities primarily support Core Process 3: Discover and understand the details of the problem or the need.
Select a single use case and then identify the individual steps required to perform the use case. [Hint: Think of what Wayne does and how the system responds.]
Make a workflow diagram of the selected use case. [Hint: Drawing by hand is fine. Each step from D3-1 goes in an oval. Connect the ovals with arrows.]
Sketch out one of the screens that will be required to support a use case. The screen should allow for data entry and display of information. [Hint: Don’t make it elaborate. Focus only on the input and output data fields that apply to only one use case.] Day 4: Develop the Architectural Design The high-level architectural design of the system generally includes decisions about how the system will be built and what the database will look like. Design is a technical activity that requires experience in programming, database development, and system architecture. These activities support Core Process 4: Design the system components that solve the problem or satisfy the need.
Design a preliminary database schema for the classes in this iteration. [Hint: Each class becomes a table. The attributes become table columns.]
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 in order to defend your decision. [Hint: Either option is valid. Think of reasons to support your decision.] Day 5: Develop the Detailed Design and Program the System You have learned how to do these activities in your programming classes. You probably have had many class projects where you designed a system and then
programmed it. These kind 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. [Hint: There are many valid solutions. Give reasons for your preference.] Day 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 then deploy the solution. Obviously, you can only do this if you have programmed the system.
Write a paragraph describing the difference between programmer testing and user testing. [Hint: Why is it hard to test your own work? What do the users know that you don’t know?]
Write a paragraph describing all the issues that might need to be addressed to deploy this system. [Hint: You might want to search the Internet to learn about deployment issues.]
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? [Hint: Think about all the issues related to security, robustness, financial protection, high volumes, up-time, different browsers, and so forth.]