Saturday, February 3, 2007

Software engineering

From Wikipedia, the free encyclopedia

Software engineering (SE) is the design, development, documentation and maintenance of software by applying technologies and practices from computer science, project management, engineering, application domains, interface design, digital asset management and other fields.

The term software engineering was popularized after 1968[1], during the 1968 NATO Software Engineering Conference (held in Garmisch, Germany) by its chairman F.L. Bauer, and has been in widespread use since.

The term software engineering has been commonly used with a variety of distinct meanings:

  • As the informal contemporary term for the broad range of activities that was formerly called programming and systems analysis;[2]
  • As the broad term for all aspects of the practice of computer programming, as opposed to the theory of computer programming, which is called computer science;[3]
  • As the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering discipline rather than an art or a craft, and advocates the codification of recommended practices in the form of software engineering methodologies.[4]
  • Software engineering is "(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software," and "(2) the study of approaches as in (1)." – IEEE Standard 610.12
The Scope and Focus

Software engineering is concerned with the conception, development and verification of a software system. This discipline deals with identifying, defining, realizing and verifying the required characteristics of the resultant software. These software characteristics may include: functionality, reliability, maintainability, availability, testability, ease-of-use, portability, and other attributes. Software engineering addresses these characteristics by preparing design and technical specifications that, if implemented properly, will result in software that can be verified to meet these requirements.

Software engineering is also concerned with the characteristics of the software development process. In this regard, it deals with characteristics such as cost of development, duration of development, and risks in development of software.

No comments: