Page 53 -
P. 53

36   Chapter 2   Software processes


                                       There are three types of software component that may be used in a reuse-oriented
                                    process:

                                    1.  Web services that are developed according to service standards and which are
                                        available for remote invocation.
                                    2.  Collections of objects that are developed as a package to be integrated with a
                                        component framework such as .NET or J2EE.
                                    3.  Stand-alone  software  systems  that  are  configured for  use  in  a  particular
                                        environment.

                                       Reuse-oriented software engineering has the obvious advantage of reducing the
                                    amount of software to be developed and so reducing cost and risks. It usually also
                                    leads to faster delivery of the software. However, requirements compromises are
                                    inevitable and this may lead to a system that does not meet the real needs of users.
                                    Furthermore, some control over the system evolution is lost as new versions of the
                                    reusable components are not under the control of the organization using them.
                                       Software reuse is very important and I have dedicated several chapters in the third
                                    part of the book to this topic. General issues of software reuse and COTS reuse are
                                    covered in Chapter 16, component-based software engineering in Chapters 17 and
                                    18, and service-oriented systems in Chapter 19.



                              2.2 Process activities


                                    Real software processes are interleaved sequences of technical, collaborative, and
                                    managerial activities with the overall goal of specifying, designing, implementing,
                                    and testing a software system. Software developers use a variety of different software
                                    tools in their work. Tools are particularly useful for supporting the editing of different
                                    types of document and for managing the immense volume of detailed information
                                    that is generated in a large software project.
                                       The four basic process activities of specification, development, validation, and evo-
                                    lution are organized differently in different development processes. In the waterfall
                                    model, they are organized in sequence, whereas in incremental development they are
                                    interleaved. How these activities are carried out depends on the type of software,
                                    people, and organizational structures involved. In extreme programming, for example,
                                    specifications are written on cards. Tests are executable and developed before the
                                    program itself. Evolution may involve substantial system restructuring or refactoring.


                             2.2.1 Software specification

                                    Software specification or requirements engineering is the process of understanding
                                    and defining what services are required from the system and identifying the con-
                                    straints on the system’s operation and development. Requirements engineering is a
   48   49   50   51   52   53   54   55   56   57   58