Page 210 -
P. 210
7.3 Implementation issues 193
patterns documented in the original patterns book. However, if your problem is a dif-
ferent one, you may find it difficult to find an appropriate pattern amongst the hun-
dreds of different patterns that have been proposed.
Patterns are a great idea but you need experience of software design to use them
effectively. You have to recognize situations where a pattern can be applied.
Inexperienced programmers, even if they have read the pattern books, will always
find it hard to decide whether they can reuse a pattern or need to develop a special-
purpose solution.
7.3 Implementation issues
Software engineering includes all of the activities involved in software development
from the initial requirements of the system through to maintenance and manage-
ment of the deployed system. A critical stage of this process is, of course, system
implementation, where you create an executable version of the software.
Implementation may involve developing programs in high- or low-level programming
languages or tailoring and adapting generic, off-the-shelf systems to meet the specific
requirements of an organization.
I assume that most readers of this book will understand programming principles
and will have some programming experience. As this chapter is intended to offer a
language-independent approach, I haven’t focused on issues of good programming
practice as this has to use language-specific examples. Instead, I introduce some
aspects of implementation that are particularly important to software engineering
that are often not covered in programming texts. These are:
1. Reuse Most modern software is constructed by reusing existing components or
systems. When you are developing software, you should make as much use as
possible of existing code.
2. Configuration management During the development process, many different
versions of each software component are created. If you don’t keep track of
these versions in a configuration management system, you are liable to include
the wrong versions of these components in your system.
3. Host-target development Production software does not usually execute on the
same computer as the software development environment. Rather, you develop
it on one computer (the host system) and execute it on a separate computer (the
target system). The host and target systems are sometimes of the same type but,
often they are completely different.
7.3.1 Reuse
From the 1960s to the 1990s, most new software was developed from scratch, by
writing all code in a high-level programming language. The only significant reuse or