Software engineering: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Charles F. Radley
(more grammar)
imported>Charles F. Radley
(Typical phases of a waterfall life cycle)
Line 4: Line 4:


Most organizations who are engaged in Software Engineering employ some form of [[Software Development Life Cycle]], either explicitly or implicitly.    The classical SDLC is the [[Waterfall]] model, which employs a sequential series of development phases culminating in a single release milestone.  There are also different processes in use, including [[iterative]], and [[agile]].  In practice most processes employ some elements of the waterfall model phases, but instead of being sequential, they can be iterated multiple times.
Most organizations who are engaged in Software Engineering employ some form of [[Software Development Life Cycle]], either explicitly or implicitly.    The classical SDLC is the [[Waterfall]] model, which employs a sequential series of development phases culminating in a single release milestone.  There are also different processes in use, including [[iterative]], and [[agile]].  In practice most processes employ some elements of the waterfall model phases, but instead of being sequential, they can be iterated multiple times.
Typical phases of a waterfall life cycle are:
* Requirements collection and analysis
* Software Architecture - design analysis and development
* Preliminary code development and unit testing
* Release candidate code development (culminating in Feature Complete internal release)
* Alpha Phase: System level and integration testing
* Beta phase: qualified external users test the pre-release software
* Public Release
* Maintenance / defect fixes


There are many techniques that are used within one or more of these approaches, some being applicable across the board and some only applying in a subset of approaches.  There are [[object-oriented]], [[function-oriented]], [[rules-based]], [[state machine]], and other approaches.   
There are many techniques that are used within one or more of these approaches, some being applicable across the board and some only applying in a subset of approaches.  There are [[object-oriented]], [[function-oriented]], [[rules-based]], [[state machine]], and other approaches.   

Revision as of 18:33, 1 July 2007

Software engineering is "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software".[1]

The approaches used vary greatly.

Most organizations who are engaged in Software Engineering employ some form of Software Development Life Cycle, either explicitly or implicitly. The classical SDLC is the Waterfall model, which employs a sequential series of development phases culminating in a single release milestone. There are also different processes in use, including iterative, and agile. In practice most processes employ some elements of the waterfall model phases, but instead of being sequential, they can be iterated multiple times.

Typical phases of a waterfall life cycle are:

  • Requirements collection and analysis
  • Software Architecture - design analysis and development
  • Preliminary code development and unit testing
  • Release candidate code development (culminating in Feature Complete internal release)
  • Alpha Phase: System level and integration testing
  • Beta phase: qualified external users test the pre-release software
  • Public Release
  • Maintenance / defect fixes

There are many techniques that are used within one or more of these approaches, some being applicable across the board and some only applying in a subset of approaches. There are object-oriented, function-oriented, rules-based, state machine, and other approaches.

One of the leading organizations promoting best practices for the field of Software Engineering is the Carnegie Mellon® Software Engineering Institute(SEI). SEI has established a Capability Maturity Model scale of measuring the maturity of any software engineering organization.

References

  1. “IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.
  1. “IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.