Page 212 -
P. 212

7.3   Implementation issues  195


                                       3.  The costs of adapting and configuring the reusable software components or sys-
                                          tems to reflect the requirements of the system that you are developing.
                                       4.  The costs of integrating reusable software elements with each other (if you are
                                          using software from different sources) and with the new code that you have
                                          developed. Integrating reusable software from different providers can be diffi-
                                          cult and expensive because the providers may make conflicting assumptions
                                          about how their respective software will be reused.

                                         How to reuse existing knowledge and software should be the first thing you should
                                       think about when starting a software development project. You should consider the
                                       possibilities of reuse before designing the software in detail, as you may wish to adapt
                                       your design to reuse existing software assets. As I discussed in Chapter 2, in a reuse-
                                       oriented development process, you search for reusable elements then modify your
                                       requirements and design to make best use of these.
                                         For a large number of application systems, software engineering really means
                                       software reuse. I therefore devote several chapters in the software technologies sec-
                                       tion of the book to this topic (Chapters 16, 17, and 19).



                                7.3.2 Configuration management
                                       In software development, change happens all the time, so change management is
                                       absolutely essential. When a team of people are developing software, you have to
                                       make sure that team members don’t interfere with each others’ work. That is, if two
                                       people are working on a component, their changes have to be coordinated. Otherwise,
                                       one programmer may make changes and overwrite the other’s work. You also have to
                                       ensure that everyone can access the most up-to-date versions of software components,
                                       otherwise developers may redo work that has already been done. When something
                                       goes wrong with a new version of a system, you have to be able to go back to a work-
                                       ing version of the system or component.
                                         Configuration management is the name given to the general process of managing
                                       a changing software system. The aim of configuration management is to support the
                                       system integration process so that all developers can access the project code and doc-
                                       uments in a controlled way, find out what changes have been made, and compile and
                                       link components to create a system. There are, therefore, three fundamental configu-
                                       ration management activities:

                                       1.  Version management, where support is provided to keep track of the different
                                          versions of software components. Version management systems include facili-
                                          ties to coordinate development by several programmers. They stop one devel-
                                          oper overwriting code that has been submitted to the system by someone else.
                                       2.  System integration, where support is provided to help developers define what
                                          versions of components are used to create each version of a system. This
                                          description is then used to build a system automatically by compiling and link-
                                          ing the required components.
   207   208   209   210   211   212   213   214   215   216   217