1 Introduction to Software Engineering
When people think about computers, the first thing that comes to their minds are the physical machines- monitor, keyboard, mouse and CPU. However, the software is the one that makes them useful. A computer software includes a set of programs that execute within a computer of any size and architecture, and data that are being processed by the programs and presented to users as hard or soft copies. It is built by software engineers through the employment of a software process that yields highquality work products that meet the needs of people who will be using the system. Nowadays, software is a very important technology of our lives because it affects nearly every aspects of it, including government, commerce, and culture. In this chapter, we will be discussing software engineering as a discipline in building quality computer software. A layered view will be used to outline the concepts needed to understand software engineering. Then, an understanding on the people involved in the software development effort will be discussed. It will be followed by the need for documentation and how to organize and document software engineering work products.
1.1 Software Engineering- A Layered View
Software Engineering is a discipline that applies principles of engineering to the development of quality software in a timely and cost-effective manner. It uses an approach that is systematic and methodological to produce quantifiable results. It makes use of measurement and metrics to assess quality, not only of the software but also the software process. They are also used to assess and manage the software development project.
Software Engineering is viewed differently by different practitioners. Pressman suggests to view software engineering as a layered technology1. This view consists of four layers, namely, quality focus, process, methods and tools. Figure 1.1 illustrates this software.
1.1.1 Quality Focus
At the very foundation of this layer is a total focus on quality. It is a culture where commitment to continuous improvement on the software development process is fostered. This culture enables the development of more effective approaches to software engineering.
The process integrates the other layers together. It defines a framework that consists of key process areas that define and enable rational and timely delivery of the computer software. The key process areas are the basis for the software project management. They establish what technical methods are applied, what tools are used, what work products need to be produced, and what milestones are defined. They also include assurance that quality is maintained, and that change is properly controlled and managed.
Methods define a systematic and orderly procedures of building software. They provide an overall framework within which activities of the software engineer are performed. These activities include a wide array of tasks such as requirements analysis, design, program construction, testing and maintenance.
Methodology is the science of systematic thinking using the methods or procedures used in a particular discipline. There are several software engineering methodologies that are used today. Some of them are briefly enumerated below.
• Information Engineering
• Software Development Life Cycle/Project Life Cycle
• Rapid Application Development Methodology
• Joint Application Development Methodology
• Booch Method
• Coad and Yourdon Method
• Jacobson Method
• Rambaugh Method
• Wirfs-Brock Method
Tools provide support to the process and methods . Computer-aided software engineering provides a system of support to the software development project where information created by one tool can be used by another. They may be automated or semi-automated.
Most tools are used to develop models....