List of software engineering topics
Software engineering technologies and practices
- Programming languages
- Relational databases
- Software tools
- make
- cvs
- editors
- text editors
- program editors
- word processors
- design languages
- Patterns and Anti-patterns document many common programming and project management techniques.
- Software development processes
- Platforms. As platforms have become more powerful, tools have become available on less expensive platforms and more widely available.
Approaches to programming practice
- Structured programming
- Software Reuse and Domain Engineering
- Object-oriented programming
- Software components
- State-oriented programming
- Aspect-oriented programming
- Post-object programming
Life cycles and strategies
- Project lifecycle
- Waterfall model - Structured programming and Stepwise refinement
- Spiral model - Iterative development
- Chaos model - Chaos strategy
Life cycle phases
- Requirements gathering and Requirements analysis
- Software architecture
- Functional decomposition
- Computer programming
- Testing, focuses on detecting (preventing?) bugs
- Quality assurance, ensures compliance with process. It is a misnomer because it is not about quality and it is not about testing.
- Development stage
Management issues
- Project management
- Configuration management
- Personnel management
- Change management
- Risk management
- Software metrics
Notable unsolved problems
- Complexity or scaling or Efficient Algorithms
- Software brittleness problem
- Second system syndrome
- Estimation
Notable software engineers
- John Backus: Fortran, first optimizing compiler
- Kent Beck: Refactoring, Extreme programming (pair programming, test driven development).
- Tim Berners-Lee: World wide web
- Barry Boehm: Software economics, COCOMO, Spiral model.
- Grady Booch: Object-oriented design, UML.
- Fred Brooks: Managed System 360 and OS 360. Wrote The Mythical Man-Month and "No Silver Bullet".
- Michael Fagan: Code inspection.
- Grace Hopper: First compiler (Mark 1), COBOL.
- Watts S. Humphrey: Capability Maturity Model, headed (founded?) the Software Engineering Institute.
- Jean Ichbiah: Ada
- Bill Joy: Berkeley Unix, VI, Java.
- Brian Kernighan: C and Unix.
- Bertrand Meyer: Design by Contract, Eiffel programming language.
- Peter G. Neumann: Computer risks, ACM Sigsoft.
- David Parnas: Module design, social responsibility, professionalism.
- Jef Raskin: Developed original Macintosh GUI
- Dennis Ritchie: C and Unix.
- Winston W. Royce: Waterfall model.
- Will Tracz: Reuse, ACM Software Engineering Notes.
- Richard Stallman: Founder of the Free Software Foundation
- Gerald Weinberg: Wrote The Psychology of Computer Programming.
- Ed Yourdon: Structured programming, wrote The Decline and Fall of the American Programmer.
See also
Notable applications
- Accounting / MIS
- Compilers
- Computer graphics
- Special effects for video and film
- Signal analysis
- Image processing
- Signal processing encoding sound and information
- Embedded systems
- Automotive software
- Avionics software
- HVAC controllers
- Graphical user interfaces
- Office suites
- Operating systems
- Relational databases
- Robotics
- Video games
- World wide web
Notable disasters
Notable books
- The Mythical Man-Month, by Fred Brooks: Written at UNC describing what Brooks learned from IBM's OS 360 project.
- The Capability Maturity Model, by Watts Humphrey. Written for the Software Engineering Institute, emphasizing management. Humphreys was a VP at IBM.
- The Psychology of Computer Programming, by Gerald Weinberg. Written as an independent consultant, partly about his IBM years.
- The Fall of the American Programmer by Ed Yourdon.
- Object-oriented Analysis and Design by Grady Booch.
- Design Patterns by Gang of Four.
- Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts