Next, we analyze the refined requirements. The goal in the analysis workflow is to describe what the system is supposed to do without defining how it does it (the time to define how the system is expected to be implemented is in the design workflow). For example, the photo_editor requirement key defines what the graphical user interface should look like without describing how it is implemented.
In this book, the analysis and design workflows are done just in time, meaning they are done within the iteration that implements the corresponding requirements. This approach is chosen because the team members are highly experienced programmers in the domain and technology we are using. Because of that, the effort estimates are based solely on the requirements and depend heavily on the experience of the team members. In addition, this approach provides a clearer structure for this book in describing the analysis, design, and implementation of the features within the chapter in which they are to be implemented. However, if a project has less-experienced team members or an unknown domain, it might be necessary to analyze all the requirements in more detail up front and to develop the complete design in the elaboration phase in order to provide a reasonable estimate. The estimates are the basis of the project agreement.
In the following subsections, we analyze, design, implement, and test the requirement keys implemented in this iteration and the requirement keys that define dependencies between the system's modules.
5.3.1 The photo_editor Requirement
The photo editor application will run in its own namespace. For this iteration, the photo editor application will provide basic functionality. The appearance of the GUI is defined in Figure 5.2 as a guideline.
Figure 5.2. The Photo Editor GUI
The figure shows the screen layout and the controls used. It does not define the exact appearance or shapes of the resources that are used to implement the GUI. We're using a toolbar menu containing the items Open, Save, Save As, and Exit. For the image-processing functionality, a TabControl with buttons is provided. The idea is to group related functionality on one tab and to provide other tabs for other groups of functionality.
5.3.2 The error_handling Requirement
Errors are reported via the exception-handling mechanism. Various messages will be available to identify the error that led to the message. The errors will be reported via message boxes and will contain meaningful error messages.
5.3.3 The picture_load_and_save Requirement
Users will be able to load and save rectangular pictures. The load and save option is part of the File menu, as shown in Figure 5.2. Users can browse for files or specify a file manually, and we use the standard Windows Forms Open/Save File dialog.
5.3.4 The image_crop Requirement
Image crop allows users to extract a rectangular part of the image. When the Crop button is pressed, a dialog window opens and the user is asked to type in the width and height of the cropped image. The image is cropped to the size specified by the user if the size specified is smaller than the actual image; otherwise, it is ignored. The cropping is done in a way that the midpoint of the original image is the midpoint of the cropping rectangle defined by the user. The area outside the cropping rectangle is deleted, and the new image in the new size is shown. If the defined cropping rectangle is larger than the image, no cropping is done.
5.3.5 The image_rotate Requirement
The image can be rotated in 90 degree steps clockwise and counterclockwise. The image will be shown in the same location and with the same midpoint as the original image.
5.3.6 The image_flip Requirement
By pressing the image flip buttons, users can flip the image either horizontally or vertically. By "flip," we mean mirroring the image. The position of the midpoint of the image stays the same. The image will be shown in the same location and with the same midpoint as the original image.
5.3.7 The image_format Requirement
The standard formats for pictures are supported. If an image with another format is selected, an error message will be shown.
5.3.8 The platform_os Requirement
All development and testing are done on Windows XP computers. Even though the application might be able to run on other versions of Windows operating systems, this will not be supported.