Software engineering

The InSight lander with solar panels deployed in a cleanroom

Systematic engineering approach to software development.

- Software engineering

500 related topics


Software configuration management

The InSight lander with solar panels deployed in a cleanroom

In software engineering, software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software, part of the larger cross-disciplinary field of configuration management.


Any goal-oriented activity requiring, benefiting from, or creating computing machinery.

Computer simulation, one of the main cross-computing methodologies.
ENIAC, the first programmable general-purpose electronic digital computer

Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology and software engineering.

Software development

Process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components.

The TEAF Matrix of Views and Perspectives.
example of the interaction between business process and data models.
Anjuta, a C and C++ IDE for the GNOME environment

Computer-aided software engineering (CASE), in the field software engineering, is the scientific application of a set of software tools and methods to the development of software which results in high-quality, defect-free, and maintainable software products.

Software development process

Rapid Application Development (RAD) Model
The activities of the software development process represented in the waterfall model. There are several other models to represent this process.
Spiral model (Boehm, 1988)
The three basic approaches applied to software development methodology frameworks.
Software development life cycle (SDLC)

In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management.

Institute of Electrical and Electronics Engineers

501(c)(3) professional association for electronic engineering and electrical engineering (and associated disciplines) with its corporate office in New York City and its operations center in Piscataway, New Jersey.

IEEE Human logo

Most IEEE members are electrical and electronics engineers, but the organization's wide scope of interests has attracted people in other disciplines as well (e.g., computer science, software engineering, mechanical engineering, civil engineering, biology, physics, and mathematics).

Software Engineering Institute

American research and development center headquartered in Pittsburgh, Pennsylvania.

Main facility on Fifth Avenue in Pittsburgh.
The tunnel in SEI served as the entrance to Blackgate Prison in The Dark Knight Rises.

Its activities cover cybersecurity, software assurance, software engineering and acquisition, and component capabilities critical to the United States Department of Defense.

Computer programming

Process of performing a particular computation , usually by designing and building an executable computer program.

Ada Lovelace, whose notes added to the end of Luigi Menabrea's paper included the first algorithm designed for processing by an Analytical Engine. She is often recognized as history's first computer programmer.
Data and instructions were once stored on external punched cards, which were kept in order and arranged in program decks.
Wired control panel for an IBM 402 Accounting Machine.
The first known actual bug causing a problem in a computer was a moth, trapped inside a Harvard mainframe, recorded in a log book entry dated September 9, 1947. "Bug" was already a common term for a software defect when this bug was found.

Software engineering combines engineering techniques with software development practices.

Edsger W. Dijkstra

Dijkstra in 2002
The Eindhoven University of Technology, located in Eindhoven in the south of the Netherlands, where Dijkstra was a professor of mathematics from 1962 to 1984.
The University of Texas at Austin, where Dijkstra held the Schlumberger Centennial Chair in Computer Sciences from 1984 until 1999.
Dijkstra's algorithm. It picks the unvisited vertex with the lowest-distance, calculates the distance through it to each unvisited neighbor, and updates the neighbor's distance if smaller. Mark visited (set to red) when done with neighbors.
ALGOL 60 was created as the result of the January 1960 ALGOL conference in Paris. By August 1960, Dijkstra and his colleague Jaap Zonneveld put into operation the first complete working ALGOL 60 compiler (for the Electrologica X1 computer) in the world. The Dijkstra–Zonneveld compiler predates the second ALGOL 60 compiler (by another group) by more than a year.
A semaphore (seinpaal), the term used in Dijkstra's original paper. In the early 1960s Dijkstra proposed the first synchronisation mechanism for concurrent processes, the semaphore with its two operations, P and V.
A simple example of two processes modifying a linked list at the same time causing a conflict. The requirement of mutual exclusion was first identified and solved by Dijkstra in his seminal 1965 paper titled Solution of a problem in concurrent programming control, and is credited as the first topic in the study of concurrent algorithms.
Illustration of the dining philosophers problem
Dijkstra at the blackboard during a conference at ETH Zurich in 1994. He once remarked, "A picture may be worth a thousand words, a formula is worth a thousand pictures."

Edsger Wybe Dijkstra (11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, science essayist, and pioneer in computing science.

Computer science

Study of computation, automation, and information.

Charles Babbage, sometimes referred to as the "father of computing".
Ada Lovelace published the first algorithm intended for processing on a computer.

Human–computer interaction investigates the interfaces through which humans and computers interact, and software engineering focuses on the design and principles behind developing software.


Singular documented physical or functional need that a particular design, product or process aims to satisfy.

Systems engineering techniques are used in complex projects: spacecraft design, computer chip design, robotics, software integration, and bridge building. Systems engineering uses a host of tools that include modeling and simulation, requirements analysis and scheduling to manage complexity.

It is commonly used in a formal sense in engineering design, including for example in systems engineering, software engineering, or enterprise engineering.