Page 49 -
P. 49

20            PART ONE  THE PRODUCT AND THE PROCESS


                          But what exactly is a software process from a technical point of view? Within the
                       context of this book, we define a software process as a framework for the tasks that
                       are required to build high-quality software. Is process synonymous with software engi-
                       neering? The answer is “yes” and “no.” A software process defines the approach that
                       is taken as software is engineered. But software engineering also encompasses tech-
                       nologies that populate the process—technical methods and automated tools.
                          More important, software engineering is performed by creative, knowledgeable
                       people who should work within a defined and mature software process that is appro-
                       priate for the products they build and the demands of their marketplace. The intent
                       of this chapter is to provide a survey of the current state of the software process and
                       pointers to more detailed discussion of management and technical topics presented
                       later in this book.


                 2.1   SOFTWARE ENGINEERING: A LAYERED TECHNOLOGY

                       Although hundreds of authors have developed personal definitions of software engi-
                       neering, a definition proposed by Fritz Bauer [NAU69] at the seminal conference on
         “More than a  the subject still serves as a basis for discussion:
          discipline or a body
          of knowledge,  [Software engineering is] the establishment and use of sound engineering principles in
          engineering is a  order to obtain economically software that is reliable and works efficiently on real machines.
          verb, an action
          word, a way of  Almost every reader will be tempted to add to this definition. It says little about the
          approaching a  technical aspects of software quality; it does not directly address the need for cus-
          problem.”
                       tomer satisfaction or timely product delivery; it omits mention of the importance of
          Scott Whitmire
                       measurement and metrics; it does not state the importance of a mature process. And
                       yet, Bauer’s definition provides us with a baseline. What “sound engineering princi-
                       ples” can be applied to computer software development? How do we “economically”
                       build software so that it is “reliable”? What is required to create computer programs
                       that work “efficiently” on not one but many different “real machines”?  These are the
                       questions that continue to challenge software engineers.
                          The IEEE [IEE93] has developed a more comprehensive definition when it states:
         ?  How do we  Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach
            define
         software      to the development, operation, and maintenance of software; that is, the application of
         engineering?  engineering to software. (2) The study of approaches as in (1).


                       2.1.1    Process, Methods, and Tools
                       Software engineering is a layered technology. Referring to Figure 2.1, any engineer-
                       ing approach (including software engineering) must rest on an organizational com-
                       mitment to quality. Total quality management and similar philosophies foster a
                       continuous process improvement culture, and this culture ultimately leads to the
   44   45   46   47   48   49   50   51   52   53   54