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
   205   206   207   208   209   210   211   212   213   214   215