Le Moyne College CSC-151 Software Engineering Overview

Software engineering is the art and science associated with developing, acquiring, and deploying software.

When an organization identifies a need for an information system, a basic decision they must make is whether to develop the software themselves or buy the software from a software manufacturer. Regardless of this decision, the organization will use software engineering practices to help them develop/acquire the software, and then deploy (i.e., install) the software.

Developing software involves the use of a software development process (SDP), also known as a software development life cycle (SDLC). While there are hundreds of SDLCs that an organization may choose to use, most of these combine characteristics associated with the following categorization. (This categorization is based on here, here, and here.)

SDP (aka SDLC)

Description

WaterfallThis is a sequential process where software is developed by following the phases, which flow steadily downward toward the completion of the software.
The ten phases shown below illustrate this downward flow.

Generally, the next phase is started only after the artifacts produced from the previous phase have been reviewed and approved.
While the diagram above shows ten phases, a waterfall process may have any number of phases.

See Wikipedia for more details.

IterativeThis is cyclical process where software is developed in small chunks, where each chunk is added to the software thereby increasing its size.
At some point, enough functionality has been added to the software to deem the software complete.

Most software development companies follow this approach when developing new versions of their products.
There are many types of iterative software development processes, including:

PrototypingThis can be a sequential or iterative process where software is quickly developed into a working model (i.e., prototype) in order to illustrate ideas and/or features and gather early feedback from users.

The diagram on the left is used to develop a throwaway prototype, where the software prototype is discarded after it is developed and used.
The diagram on the right describes an evolutionary prototyping approach, where the software prototype evolves into the final product.

FormalThis approach utilizes mathematical notation to describe the requirements, specifications, and design artifacts produced during software development. See Wikipedia for more details on this approach.

Last updated on Monday, July 30, 2007