Page 45 -
P. 45

28   Chapter 2   Software processes


                                    A software process is a set of related activities that leads to the production of a soft-
                                    ware product. These activities may involve the development of software from scratch
                                    in a standard programming language like Java or C. However, business applications
                                    are not necessarily developed in this way. New business software is now often devel-
                                    oped by extending and modifying existing systems or by configuring and integrating
                                    off-the-shelf software or system components.
                                       There are many different software processes but all must include four activities
                                    that are fundamental to software engineering:

                                    1.  Software specification The functionality of the software and constraints on its
                                        operation must be defined.
                                    2.  Software design and implementation The software to meet the specification
                                        must be produced.
                                    3.  Software validation The software must be validated to ensure that it does what
                                        the customer wants.
                                    4.  Software evolution The software must evolve to meet changing customer needs.

                                       In some form, these activities are part of all software processes. In practice, of
                                    course, they are complex activities in themselves and include sub-activities such as
                                    requirements validation, architectural design, unit testing, etc. There are also support-
                                    ing process activities such as documentation and software configuration management.
                                       When we describe and discuss processes, we usually talk about the activities in
                                    these processes such as specifying a data model, designing a user interface, etc., and
                                    the ordering of these activities. However, as well as activities, process descriptions
                                    may also include:


                                    1.  Products, which are the outcomes of a process activity. For example, the out-
                                        come of the activity of architectural design may be a model of the software
                                        architecture.
                                    2.  Roles, which reflect the responsibilities of the people involved in the process.
                                        Examples of roles are project manager, configuration manager, programmer, etc.
                                    3.  Pre- and post-conditions, which are statements that are true before and after a
                                        process activity has been enacted or a product produced. For example, before
                                        architectural design begins, a pre-condition may be that all requirements have
                                        been approved by the customer; after this activity is finished, a post-condition
                                        might be that the UML models describing the architecture have been reviewed.

                                       Software processes are complex and, like all intellectual and creative processes,
                                    rely on people making decisions and judgments. There is no ideal process and most
                                    organizations have developed their own software development processes. Processes
                                    have evolved to take advantage of the capabilities of the people in an organization
                                    and the specific characteristics of the systems that are being developed. For some
   40   41   42   43   44   45   46   47   48   49   50