0% found this document useful (0 votes)
11 views5 pages

Software Engineering

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views5 pages

Software Engineering

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Software engineering

83 languages

 Article
 Talk
 Read
 Edit
 View history
Tools















Appearance
hide

Text

Small

Standard

Large

Width

Standard

Wide

Color (beta)

Automatic

Light

Dark

From Wikipedia, the free encyclopedia

Part of a series on

Software development

hide

Core activities

 Data modeling
 Processes
 Requirements
 Design
 Construction
 Engineering
 Testing
 Debugging
 Deployment
 Maintenance

show

Paradigms and models

show

Methodologies and frameworks

show

Supporting disciplines

show

Practices
show

Tools

show

Standards and bodies of knowledge

show

Glossaries

show

Outlines

 v
 t
 e

Software engineering is a branch of both computer


science and engineering focused on designing, developing, testing, and
maintaining software applications.[1] It involves applying engineering
principles and computer programming expertise to develop software systems that
meet user needs.[2][3][4][5]

The terms programmer and coder overlap software engineer, but they imply only the
construction aspect of a typical software engineer workload.[6]

A software engineer applies a software development process,[2][7] which involves


defining, implementing, testing, managing, and maintaining software systems, as
well as developing the software development process itself.

History
[edit]

Main article: History of software engineering

Beginning in the 1960s, software engineering was recognized as a separate field


of engineering.[8]

The development of software engineering was seen as a struggle. Problems


included software that was over budget, exceeded deadlines, required
extensive debugging and maintenance, and unsuccessfully met the needs of
consumers or was never even completed.
In 1968, NATO held the first software engineering conference, where issues related
to software were addressed. Guidelines and best practices for the development of
software were established.[9]

The origins of the term software engineering have been attributed to various
sources. The term appeared in a list of services offered by companies in the June
1965 issue of "Computers and Automation"[10] and was used more formally in the
August 1966 issue of Communications of the ACM (Volume 9, number 8) in
"President's Letter to the ACM Membership" by Anthony A. Oettinger. [11][12][13] It is also
associated with the title of a NATO conference in 1968 by Professor Friedrich L.
Bauer.[14] Margaret Hamilton described the discipline of "software engineering" during
the Apollo missions to give what they were doing legitimacy.[15] At the time, there was
perceived to be a "software crisis".[16][17][18] The 40th International Conference on
Software Engineering (ICSE 2018) celebrates 50 years of "Software Engineering"
with the Plenary Sessions' keynotes of Frederick Brooks[19] and Margaret Hamilton.[20]

In 1984, the Software Engineering Institute (SEI) was established as a federally


funded research and development center headquartered on the campus of Carnegie
Mellon University in Pittsburgh, Pennsylvania, United States.[21] Watts
Humphrey founded the SEI Software Process Program, aimed at understanding and
managing the software engineering process.[21] The Process Maturity Levels
introduced became the Capability Maturity Model Integration for Development
(CMMI-DEV), which defined how the US Government evaluates the abilities of a
software development team.

Modern, generally accepted best practices for software engineering have been
collected by the ISO/IEC JTC 1/SC 7 subcommittee and published as the Software
Engineering Body of Knowledge (SWEBOK).[7] Software engineering is considered
one of the major computing disciplines.[22]

In modern systems, where concepts such as Edge Computing, Internet of


Things and Cyber-physical Systems are prevalent, software is a critical factor. Thus,
software engineering is closely related to the Systems Engineering discipline.
The Systems Engineering Body of Knowledge claims:

Software is prominent in most modern systems architectures and is often the primary
means for integrating complex system components. Software engineering and
systems engineering are not merely related disciplines; they are intimately
intertwined....Good systems engineering is a key factor in enabling good software
engineering.
Terminology
[edit]

Definition
[edit]

Notable definitions of software engineering include:

 "The systematic application of scientific and technological knowledge, methods, and


experience to the design, implementation, testing, and documentation of software."—
The Bureau of Labor Statistics—IEEE Systems and software engineering –
Vocabulary[23]
 "The application of a systematic, disciplined, quantifiable approach to the development,
operation, and maintenance of software."—IEEE Standard Glossary of Software
Engineering Terminology[24]
 "An engineering discipline that is concerned with all aspects of software production."—
Ian Sommerville[25]
 "The establishment and use of sound engineering principles in order to economically
obtain software that is reliable and works efficiently on real machines."—Fritz Bauer[26]
 "A branch of computer science that deals with the design, implementation, and
maintenance of complex computer programs."—Merriam-Webster[27]
 "'Software engineering' encompasses not just the act of writing code, but all of the tools
and processes an organization uses to build and maintain that code over time. [...]
Software engineering can be thought of as 'programming integrated over time.'"—
Software Engineering at Google[28]
The term has also been used less formally:

 as the informal contemporary term for the broad range of activities that were formerly
called computer programming and systems analysis[29]
 as the broad term for all aspects of the practice of computer programming, as opposed
to the theory of computer programming, which is formally studied as a sub-discipline
of computer science[30]
 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[31]
Suitability
[edit]

Individual commentators have disagreed sharply on how to define software


engineering or its legitimacy as an engineering discipline. David Parnas has said that
software engineering is, in fact, a form of engineering.[32][33] Steve McConnell has said
that it is not, but that it should be.[34] Donald Knuth has said that programming is an
art and a science.[35] Edsger W. Dijkstra claimed that the terms software
engineering and software engineer have been misused in the United States.[36]

You might also like