![]() |
||
![]() |
![]() |
|
![]() |
As is typical with software requirements, the mapplet requirements are a mixture of high- and low-level functional requirements and ad-hoc implementation details.
Normally, you try to keep design and implementation details out of the requirements. However, with this example, the project is extending an existing website using an existing technology (ArcGIS Server). Therefore, the design is constrained by the website that the project must fit into, and some of the requirements are about how the product should leverage ArcGIS’ out-of-the-box functionality. So (within reason) it’s important to include some of these design details in the requirements.
The complete set of mapplet requirements is shown in the “Mapplet Requirements” sidebar. We’ve presented these requirements exactly as they were written for the project; there’s been a small amount of tidying up and reformatting, but the essence is basically the same.
An example of how we’ve left the original style/formatting in the preceding requirements is the way in which the requirements meander from formal “the system shall” wording to brief, informal note form. This is an important agile principle: if the customer is happy with this form of requirements, then we can save a lot of time by not having to dot every “i” and cross every “t.” Whatever gets the point across. The requirements aren’t the finished product, and they’re not the goal in themselves—they just describe the goal, so we shouldn’t spend ages perfecting them.
You’ll also notice that the requirements talk about “applets” rather than “mapplets,” because the original idea was to create a Java applet to perform the map-based hotel search functions. This was partly because the customer’s website already has a hotel search applet that the new system will replace. However, it was soon decided that a web-based user interface (making heavy use of DHTML in the browser) would be more suitable, so the mapplet was born.
At this stage, we haven’t decided which requirements will go into which release. Once we’ve done a small amount of initial use case modeling (where the use cases are derived from the requirements), we’ll prioritize the use cases and divide them into different releases (we show this process later in this chapter). Further into the project, new requirements will be added and some of the existing requirements will change (or they’ll be dropped altogether). It’s a fluid process, but it’s still important to get the requirements written down so that we have a baseline from which to work.
![]() |
||
![]() |
![]() |
|
![]() |