Page 27 -
P. 27

10   Chapter 1   Introduction


                                    As I discuss in the next section, there are many different types of software. There is no
                                    universal software engineering method or technique that is applicable for all of these.
                                    However, there are three general issues that affect many different types of software:

                                    1.  Heterogeneity Increasingly, systems are required to operate as distributed systems
                                        across networks that include different types of computer and mobile devices. As
                                        well as running on general-purpose computers, software may also have to execute
                                        on mobile phones. You often have to integrate new software with older legacy sys-
                                        tems written in different programming languages. The challenge here is to develop
                                        techniques for building dependable software that is flexible enough to cope with
                                        this heterogeneity.

                                    2.  Business and social change Business and society are changing incredibly quickly
                                        as emerging economies develop and new technologies become available. They
                                        need to be able to change their existing software and to rapidly develop new soft-
                                        ware. Many traditional software engineering techniques are time consuming and
                                        delivery of new systems often takes longer than planned. They need to evolve so
                                        that the time required for software to deliver value to its customers is reduced.
                                    3.  Security and trust As software is intertwined with all aspects of our lives, it is
                                        essential that we can trust that software. This is especially true for remote soft-
                                        ware systems accessed through a web page or web service interface. We have to
                                        make sure that malicious users cannot attack our software and that information
                                        security is maintained.

                                       Of course, these are not independent issues. For example, it may be necessary to
                                    make rapid changes to a legacy system to provide it with a web service interface. To
                                    address these challenges we will need new tools and techniques as well as innovative
                                    ways of combining and using existing software engineering methods.


                              1.1.2 Software engineering diversity

                                    Software engineering is a systematic approach to the production of software that
                                    takes into account practical cost, schedule, and dependability issues, as well as the
                                    needs of software customers and producers. How this systematic approach is actu-
                                    ally implemented varies dramatically depending on the organization developing the
                                    software, the type of software, and the people involved in the development process.
                                    There are no universal software engineering methods and techniques that are suit-
                                    able for all systems and all companies. Rather, a diverse set of software engineering
                                    methods and tools has evolved over the past 50 years.
                                       Perhaps the most significant factor in determining which software engineering
                                    methods and techniques are most important is the type of application that is being
                                    developed. There are many different types of application including:

                                    1.  Stand-alone applications These are application systems that run on a local com-
                                        puter, such as a PC. They include all necessary functionality and do not need to
   22   23   24   25   26   27   28   29   30   31   32