Page 24 -
P. 24

1.1   Professional software development  7


                                          buy them. Examples of this type of product include software for PCs such as
                                          databases, word processors, drawing packages, and project-management tools.
                                          It also includes so-called vertical applications designed for some specific pur-
                                          pose such as library information systems, accounting systems, or systems for
                                          maintaining dental records.
                                       2.  Customized (or bespoke) products These are systems that are commissioned by
                                          a particular customer. A software contractor develops the software especially
                                          for that customer. Examples of this type of software include control systems for
                                          electronic devices, systems written to support a particular business process, and
                                          air traffic control systems.

                                         An important difference between these types of software is that, in generic products,
                                       the organization that develops the software controls the software specification. For cus-
                                       tom products, the specification is usually developed and controlled by the organization
                                       that is buying the software. The software developers must work to that specification.
                                         However,  the  distinction  between  these  system  product  types  is  becoming
                                       increasingly blurred. More and more systems are now being built with a generic
                                       product as a base, which is then adapted to suit the requirements of a customer.
                                       Enterprise Resource Planning (ERP) systems, such as the SAP system, are the best
                                       examples of this approach. Here, a large and complex system is adapted for a com-
                                       pany by incorporating information about business rules and processes, reports
                                       required, and so on.
                                         When we talk about the quality of professional software, we have to take into
                                       account that the software is used and changed by people apart from its developers.
                                       Quality is therefore not just concerned with what the software does. Rather, it has to
                                       include the software’s behavior while it is executing and the structure and organization
                                       of the system programs and associated documentation. This is reflected in so-called
                                       quality or non-functional software attributes. Examples of these attributes are the soft-
                                       ware’s response time to a user query and the understandability of the program code.
                                         The specific set of attributes that you might expect from a software system obvi-
                                       ously depends on its application. Therefore, a banking system must be secure, an
                                       interactive game must be responsive, a telephone switching system must be reliable,
                                       and so on. These can be generalized into the set of attributes shown in Figure 1.2,
                                       which I believe are the essential characteristics of a professional software system.




                                 1.1.1 Software engineering

                                       Software engineering is an engineering discipline that is concerned with all aspects of
                                       software production from the early stages of system specification through to maintain-
                                       ing the system after it has gone into use. In this definition, there are two key phrases:

                                       1.  Engineering discipline Engineers make things work. They apply theories, meth-
                                          ods, and tools where these are appropriate. However, they use them selectively
   19   20   21   22   23   24   25   26   27   28   29