Module 02: Software Engineering
Module 02: Software Engineering
SOFTWARE ENGINEERING
• According to Fritz Bauer, software engineering is the establishment and use of sound
engineering principles in order to obtain economically software that is reliable and
works efficiently on real machines.
• According to IEEE, software engineering is the application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of software
– that is, the application of engineering to software.
• process — the glue that holds the technology layers together and enables
rational and timely development of computer software
• methods — provide the technical “how to’s” for building software
• tools — provide automated or semi-automated support for the process and the
methods
Illustrates the linear sequential model for software engineering, which commonly
referred to as the “classic life” or the “waterfall model”. This model suggests a
systematic, sequential approach to software development that begins at the system
level and processes through analysis, design, coding, testing, and maintenance. It
includes the following activities:
Design – this activity focuses on the four distinct attributes of a program: data structure,
software architecture, interface representations, and procedural details. The design
process translates requirements into a representation of the software that can be
assessed for quality before coding begins.
Code generation – this activity translates the design into a machine-readable form.
Testing – this process focuses on the logical internals of the software, assuring that all
statements have been tested, and on the functional externals – conducting tests to
discover errors and ensure that defined input will produce actual results that agree with
required results.
Maintenance – changes will occur because errors have been encountered, because the
software must be adapted to accommodate changes in its external environment or
because the customer requires functional or performance enhancements.
Spiral Model
SIX TASK REGIONS
• customer communication — tasks required to establish effective communication
between developer and customer
• planning — tasks required to define resources, timelines, and other project related
information
• risk analysis — tasks required to assess both technical and management risks •
engineering — tasks required to build one or more representations of the
application
• construction & release — tasks required to construct, test, install and provide user
support (e.g., documentation and training)
• customer evaluation — tasks required to obtain customer feedback based
on evaluation of the software representations created during the engineering
stage and implemented during the installation stage