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