Only one requirement key is implemented in this iteration (see Table 10.1). Performance improvements can become quite complex, and despite ever-faster computers, performance issues can be observed in almost all types of programs. For example, in image-processing or database applications, in which a lot of data is accessed or processed, performance usually is a big constraint. So far, the implementation of the photo editor application has not been designed for performance but for convenience and fast development. |
Requirement |
Type |
Summary |
---|---|---|
P:editor_optimizations |
Performance |
The application shall be profiled to uncover possible bottlenecks. On the basis of the profiling results, we will decide upon improvements that are implemented in this iteration. The overall goal of this development cycle is to provide better interactivity and to improve the performance of the image-processing algorithms. |
Usually it is a good practice not to consider performance constraints when you first implement a feature. This does not mean that you don't consider performance but rather that you implement the functionalities without spending too much time on performance. When you have developed a working product, you then analyze the whole system to identify any bottlenecks. This practice makes perfect sense because it is very difficult to predict the performance of various subsystems that work together at implementation time. In many cases, guesswork by developers or management turns out to be wrong anyway, in which case you have spent valuable time in improving the performance at the wrong spot.
The first step in making performance improvements is to identify the bottlenecks of the system. To do that, it is advisable to use a profiling tool. Even though people are often tempted to guess what the bottlenecks in a system are, just as often they are wrong. Using a profiling tool is therefore highly recommended and saves the embarrassment of fixing bottlenecks that are not actually the major performance problems at all.
Introducing .NET
Introducing Software Engineering
A .NET Prototype
Project Planning
The Photo Editor Application
GDI+ Graphics Extensions
Advanced GDI+ Operations
Dynamic Loading of Components
Accessing System Resources
Performance Optimization, Multithreading, and Profiling
Building the Web Application with ASP.NET
Security and Database Access
Product Release