HOME

TheInfoList



OR:

The following
outline Outline or outlining may refer to: * Outline (list), a document summary, in hierarchical list format * Code folding, a method of hiding or collapsing code or text to see content in outline form * Outline drawing, a sketch depicting the outer edge ...
is provided as an overview of and topical guide to software engineering:
Software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
– application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
; that is the application of
engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engineering encompasses a broad range of more speciali ...
to
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
. The ACM Computing Classification system is a poly-hierarchical ontology that organizes the topics of the field and can be used in semantic web applications and as a defacto standard classification system for the field. The major section "Software and its Engineering" provides an outline and ontology for software engineering.


Software applications

Software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
engineers build
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
(
applications Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a c ...
, operating systems,
system software System software is software designed to provide a platform for other software. Examples of system software include operating systems (OS) like macOS, Linux, Android and Microsoft Windows, computational science software, game engines, search engin ...
) that people use. Applications influence software engineering by pressuring developers to solve problems in new ways. For example, consumer software emphasizes low cost, medical software emphasizes high quality, and Internet commerce software emphasizes rapid development. *
Business software Business software (or a business application) is any software or set of computer programs used by business users to perform various business functions. These business applications are used to increase productivity, measure productivity, and perf ...
** Accounting software * Analytics ** Data mining closely related to
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases s ...
**
Decision support systems A decision support system (DSS) is an information system that supports business or organizational decision-making activities. DSSs serve the management, operations and planning levels of an organization (usually mid and higher management) and ...
*
Airline An airline is a company that provides air transport services for traveling passengers and freight. Airlines use aircraft to supply these services and may form partnerships or alliances with other airlines for codeshare agreements, in wh ...
reservations *
Banking A bank is a financial institution that accepts deposits from the public and creates a demand deposit while simultaneously making loans. Lending activities can be directly performed by the bank or indirectly through capital markets. Becau ...
**
Automated teller machine An automated teller machine (ATM) or cash machine (in British English) is an electronic telecommunications device that enables customers of financial institutions to perform financial transactions, such as cash withdrawals, deposits, fun ...
s **
Cheque A cheque, or check (American English; see spelling differences) is a document that orders a bank (or credit union) to pay a specific amount of money from a person's account to the person in whose name the cheque has been issued. The pers ...
processing **
Credit card A credit card is a payment card issued to users (cardholders) to enable the cardholder to pay a merchant for goods and services based on the cardholder's accrued debt (i.e., promise to the card issuer to pay them for the amounts plus the o ...
s *
Commerce Commerce is the large-scale organized system of activities, functions, procedures and institutions directly and indirectly related to the exchange (buying and selling) of goods and services among two or more parties within local, regional, nation ...
**
Trade Trade involves the transfer of goods and services from one person or entity to another, often in exchange for money. Economists refer to a system or network that allows trade as a market. An early form of trade, barter, saw the direct excha ...
**
Auction An auction is usually a process of buying and selling goods or services by offering them up for bids, taking bids, and then selling the item to the highest bidder or buying the item from the lowest bidder. Some exceptions to this definition ex ...
s (e.g. eBay) **
Reverse auction A reverse auction (also known as buyer-determined auction or procurement auction) is a type of auction in which the traditional roles of buyer and seller are reversed. Thus, there is one buyer and many potential sellers. In an ordinary auction al ...
s (procurement) **
Bar code scanner A barcode reader is an optical scanner that can read printed barcodes, decode the data contained in the barcode to a computer. Like a flatbed scanner, it consists of a light source, a lens and a light sensor for translating optical impulses into ...
s *
Compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
s **
Parser Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term ''parsing'' comes from Lat ...
s ** Compiler optimization **
Interpreters Interpreting is a translational activity in which one produces a first and final target-language output on the basis of a one-time exposure to an expression in a source language. The most common two modes of interpreting are simultaneous interp ...
** Linkers ** Loaders *
Communication Communication (from la, communicare, meaning "to share" or "to be in relation with") is usually defined as the transmission of information. The term may also refer to the message communicated through such transmissions or the field of inqui ...
**
E-mail Electronic mail (email or e-mail) is a method of exchanging messages ("mail") between people using electronic devices. Email was thus conceived as the electronic (digital) version of, or counterpart to, mail, at a time when "mail" meant ...
** Instant messengers **
VOIP Voice over Internet Protocol (VoIP), also called IP telephony, is a method and group of technologies for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. The terms Internet t ...
** Calendars — scheduling and coordinating **
Contact manager A contact manager is a software program that enables users to easily store and find contact information, such as names, addresses, and telephone numbers. They are contact-centric databases that provide a fully integrated approach to tracking all in ...
s *
Computer graphics Computer graphics deals with generating images with the aid of computers. Today, computer graphics is a core technology in digital photography, film, video games, cell phone and computer displays, and many specialized applications. A great de ...
** Animation **
Special effects Special effects (often abbreviated as SFX, F/X or simply FX) are illusions or visual tricks used in the theatre, film, television, video game, amusement park and simulator industries to simulate the imagined events in a story or virtual wo ...
for video and film **
Editing Editing is the process of selecting and preparing written, photographic, visual, audible, or cinematic material used by a person or an entity to convey a message or information. The editing process can involve correction, condensation, o ...
**Post-processing *
Cryptography Cryptography, or cryptology (from grc, , translit=kryptós "hidden, secret"; and ''graphein'', "to write", or ''-logia'', "study", respectively), is the practice and study of techniques for secure communication in the presence of adver ...
*
Database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases s ...
s, support almost every field *
Embedded systems An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is ''embedded'' ...
Both software engineers and traditional engineers write software control systems for embedded products. ** Automotive software **
Avionics software Avionics software is embedded software with legally mandated safety and reliability concerns used in avionics. The main difference between avionic software and conventional embedded software is that the development process is ''required by law' ...
**Heating ventilating and air conditioning ( HVAC) software ** Medical device software **
Telephony Telephony ( ) is the field of technology involving the development, application, and deployment of telecommunication services for the purpose of electronic transmission of voice, fax, or data, between distant parties. The history of telephony is i ...
**
Telemetry Telemetry is the in situ collection of measurements or other data at remote points and their automatic transmission to receiving equipment (telecommunication) for monitoring. The word is derived from the Greek roots ''tele'', "remote", an ...
*
Engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engineering encompasses a broad range of more speciali ...
All traditional engineering branches use software extensively. Engineers use spreadsheets, more than they ever used calculators. Engineers use custom software
tool A tool is an object that can extend an individual's ability to modify features of the surrounding environment or help them accomplish a particular task. Although many animals use simple tools, only human beings, whose use of stone tools dates ba ...
s to design, analyze, and simulate their own projects, like bridges and power lines. These projects resemble software in many respects, because the work exists as
electronic document An electronic document is any electronic media content (other than computer programs or system files) that is intended to be used in either an electronic form or as printed output. Originally, any computer data were considered as something inter ...
s and goes through analysis,
design A design is a plan or specification for the construction of an object or system or for the implementation of an activity or process or the result of that plan or specification in the form of a prototype, product, or process. The verb ''to design' ...
,
implementation Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy. Industry-specific definitions Computer science In computer science, an implementation is a real ...
, and testing phases. Software tools for engineers use the tenets of computer science; as well as the tenets of calculus, physics, and chemistry. ** Computer Aided Design (CAD) ** Electronic Design Automation (EDA) **
Numerical Analysis Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of numerical methods ...
**
Simulation A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of models; the model represents the key characteristics or behaviors of the selected system or process, whereas the s ...
*
File File or filing may refer to: Mechanical tools and processes * File (tool), a tool used to ''remove'' fine amounts of material from a workpiece **Filing (metalworking), a material removal process in manufacturing ** Nail file, a tool used to gent ...
**
FTP The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data ...
**
File sharing File sharing is the practice of distributing or providing access to digital media, such as computer programs, multimedia (audio, images and video), documents or electronic books. Common methods of storage, transmission and dispersion include r ...
**
File synchronization File synchronization (or syncing) in computing is the process of ensuring that computer files in two or more locations are updated via certain rules. In ''one-way file synchronization'', also called mirroring, updated files are copied from a sourc ...
* Finance **
Bond market The bond market (also debt market or credit market) is a financial market where participants can issue new debt, known as the primary market, or buy and sell debt securities, known as the secondary market. This is usually in the form of bonds, bu ...
**
Futures market A futures exchange or futures market is a central financial exchange where people can trade standardized futures contracts defined by the exchange. Futures contracts are derivatives contracts to buy or sell specific quantities of a commodity or ...
** Stock market * Games ** Poker ** Multiuser Dungeons **
Video game Video games, also known as computer games, are electronic games that involves interaction with a user interface or input device such as a joystick, controller, keyboard, or motion sensing device to generate visual feedback. This fee ...
s *
Information systems An information system (IS) is a formal, sociotechnical, organizational system designed to collect, process, store, and distribute information. From a sociotechnical perspective, information systems are composed by four components: task, people ...
, support almost every field ** LIS Management of laboratory data **
MIS MIS or mis may refer to: Science and technology * Management information system * Marine isotope stage, stages of the Earth's climate * Maximal independent set, in graph theory * Metal-insulator-semiconductor, e.g., in MIS capacitor * Minimally ...
Management of financial and personnel data *
Logistics Logistics is generally the detailed organization and implementation of a complex operation. In a general business sense, logistics manages the flow of goods between the point of origin and the point of consumption to meet the requirements of ...
** Supply chain management *
Manufacturing Manufacturing is the creation or production of goods with the help of equipment, labor, machines, tools, and chemical or biological processing or formulation. It is the essence of secondary sector of the economy. The term may refer to ...
** Computer Aided Manufacturing (CAM) ** Distributed Control Systems (DCS) *
Music Music is generally defined as the art of arranging sound to create some combination of form, harmony, melody, rhythm or otherwise expressive content. Exact definitions of music vary considerably around the world, though it is an aspe ...
** Music sequencers ** Sound effects **
Music synthesis A synthesizer (also spelled synthesiser) is an electronic musical instrument that generates audio signals. Synthesizers typically create sounds by generating waveforms through methods including subtractive synthesis, additive synthesis and ...
*
Network Management Network management is the process of administering and managing computer networks. Services provided by this discipline include fault analysis, performance management, provisioning of networks and maintaining quality of service. Network managem ...
**
Network management system Network monitoring is the use of a system that constantly monitors a computer network for slow or failing components and that notifies the network administrator (via email, SMS or other alarms) in case of outages or other trouble. Network monitori ...
** Element Management System **
Operations Support System Operations support systems (OSS), operational support systems in British usage, or Operation System (OpS) in NTT, are computer systems used by telecommunications service providers to manage their networks (e.g., telephone networks). They support ...
** Business Support Systems *
Networks Network, networking and networked may refer to: Science and technology * Network theory, the study of graphs as a representation of relations between discrete objects * Network science, an academic field that studies complex networks Mathematics ...
and
Internet The Internet (or internet) is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a '' network of networks'' that consists of private, pub ...
**
Domain Name System The Domain Name System (DNS) is a hierarchical and distributed naming system for computers, services, and other resources in the Internet or other Internet Protocol (IP) networks. It associates various information with domain names assigned t ...
**
Protocols Protocol may refer to: Sociology and politics * Protocol (politics), a formal agreement between nation states * Protocol (diplomacy), the etiquette of diplomacy and affairs of state * Etiquette, a code of personal behavior Science and technology ...
** Routers *
Office suite Productivity software (also called personal productivity software or office productivity software) is application software used for producing information (such as documents, presentations, worksheets, databases, charts, graphs, digital painting ...
s **
Word processor A word processor (WP) is a device or computer program that provides for input, editing, formatting, and output of text, often with some additional features. Early word processors were stand-alone devices dedicated to the function, but current ...
s **
Spreadsheet A spreadsheet is a computer application for computation, organization, analysis and storage of data in tabular form. Spreadsheets were developed as computerized analogs of paper accounting worksheets. The program operates on data entered in c ...
s **
Presentations A presentation conveys information from a speaker to an audience. Presentations are typically demonstrations, introduction, lecture, or speech meant to inform, persuade, inspire, motivate, build goodwill, or present a new idea/product. Present ...
*
Operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs. Time-sharing operating systems schedule tasks for efficient use of the system and may also i ...
s ** Embedded **
Graphical Graphics () are visual images or designs on some surface, such as a wall, canvas, screen, paper, or stone, to inform, illustrate, or entertain. In contemporary usage, it includes a pictorial representation of data, as in design and manufacture ...
** Multitasking **
Real-time Real-time or real time describes various operations in computing or other processes that must guarantee response times within a specified time (deadline), usually a relatively short time. A real-time process is generally one that happens in defined ...
*
Robotics Robotics is an interdisciplinary branch of computer science and engineering. Robotics involves design, construction, operation, and use of robots. The goal of robotics is to design machines that can help and assist humans. Robotics integrate ...
*
Signal processing Signal processing is an electrical engineering subfield that focuses on analyzing, modifying and synthesizing ''signals'', such as sound, images, and scientific measurements. Signal processing techniques are used to optimize transmissions, ...
, encoding and interpreting signals ** Image processing, encoding and interpreting visual information **
Speech processing Speech processing is the study of speech signals and the processing methods of signals. The signals are usually processed in a digital representation, so speech processing can be regarded as a special case of digital signal processing, applied t ...
**Optical character recognition, Text recognition **Handwriting recognition *Computer simulation, Simulation, supports almost every field. **
Engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engineering encompasses a broad range of more speciali ...
, A software simulation can be cheaper to build and more flexible to change than a physical engineering model. **Sciences *Sciences **Genomics *Traffic Control **Air traffic control **Sea lane, Ship traffic control **Road transport#Traffic control, Road traffic control *Training **Military exercise, Drill **
Simulation A simulation is the imitation of the operation of a real-world process or system over time. Simulations require the use of models; the model represents the key characteristics or behaviors of the selected system or process, whereas the s ...
**Testing *Spatial Visualization Ability, Visualization, supports almost every field **Architecture **
Engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engineering encompasses a broad range of more speciali ...
**Sciences *Electronic voting, Voting *World Wide Web **Web browser, Browsers **Web server, Servers


Software engineering topics


Programming paradigm, based on a programming language technology

*Object-oriented programming *Aspect-oriented programming *Functional decomposition *Structured programming *Rule-based programming


Databases

*Hierarchical database, Hierarchical *Object database, Object *Relational database, Relational *SQL/XML *Structured Query Language, SQL *MYSQL *NoSQL


Graphical user interfaces

*GTK+ GIMP Toolkit *wxWidgets *Ultimate++ *Qt (software), Qt toolkit *FLTK


Programming tools

*Configuration management and source code management **Concurrent Versions System, CVS **Subversion (software), Subversion **Git (software), Git **Mercurial (software), Mercurial **Revision Control System, RCS **Arch Revision Control System, GNU Arch **LibreSource Synchronizer **Team Foundation Server **Microsoft Visual Studio#Team Services, Visual Studio Team Services *Build automation, Build tools **make (software), Make **Rake (software), Rake **Cabal (software), Cabal **Apache Ant, Ant **CADES **Nant **Apache Maven, Maven **FinalBuilder, Final Builder **Gradle **Team Foundation Server **Microsoft Visual Studio#Team Services, Visual Studio Team Services **Visual Build Pro *Source code editor, Editors **Integrated development environments (IDEs) **Text editors **
Word processor A word processor (WP) is a device or computer program that provides for input, editing, formatting, and output of text, often with some additional features. Early word processors were stand-alone devices dedicated to the function, but current ...
s *
Parser Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term ''parsing'' comes from Lat ...
creation tools ** Yacc/GNU bison, Bison * List of tools for static code analysis, Static code analysis tools


Libraries

*Component-based software engineering


Design languages

*Unified Modeling Language (UML)


Patterns, document many common programming and project management techniques

*Anti-patterns *Design pattern (computer science), Patterns


Processes and methodologies

*Agile **Agile software development **Extreme programming **Lean manufacturing, Lean software development **Rapid application development, Rapid application development (RAD) **Rational Unified Process **Scrum (in management) *Heavyweight **Cleanroom Software Engineering, Cleanroom **ISO/IEC 12207 — software life cycle processes **ISO 9000 and ISO 9001 *Process Models **Capability Maturity Model, CMM and Capability Maturity Model Integration, CMMI/Standard CMMI Assessment Method for Process Improvement, SCAMPI **ISO 15504 (SPICE) *Metamodels **ISO/IEC 24744 **SPEM


Platforms

A platform combines computer hardware and an operating system. As platforms grow more powerful and less costly, applications and tools grow more widely available. *Qualcomm Brew, BREW *Cray supercomputers *Digital Equipment Corporation, DEC minicomputers *IBM Mainframe computer, mainframes *Linux Personal computer, PCs *Classic Mac OS and macOS Personal computer, PCs *Microsoft .NET *Palm OS, Palm Personal Digital Assistant, PDAs *Sun Microsystems Solaris (operating system), Solaris *Microsoft Windows, Windows Personal computer, PCs (Wintel) *Symbian OS


Other Practices

*
Communication Communication (from la, communicare, meaning "to share" or "to be in relation with") is usually defined as the transmission of information. The term may also refer to the message communicated through such transmissions or the field of inqui ...
*Method engineering *Pair programming *Performance Engineering *Programming productivity *Refactoring *Software inspections/Code reviews *Software reusability, Software reuse *Systems integration *Teamwork


Other tools

*Decision tables *Features (pattern recognition), Feature *User story, User stories *Use cases


Computer science topics

Skilled software engineers know a lot of computer science including what is possible and impossible, and what is easy and hard for software. *Algorithms, well-defined methods for solving specific problems. **Search algorithm, Searching **Sorting **Parsing **Numerical analysis * Compiler theory **Yacc/GNU bison, Bison *Data structures, well-defined methods for storing and retrieving data. **List (computing), Lists **Tree data structure, Trees **Hash tables *Computability theory (computer science), Computability, some problems cannot be solved at all **List of unsolved problems in computer science **Halting problem *Complexity, some problems are solvable in principle, yet unsolvable in practice **NP-complete, NP completeness **Computational complexity theory *Formal methods **Correctness (computer science), Proof of correctness **Program synthesis *Adaptive system, Adaptive Systems **Artificial Neural Network, Neural Networks **Evolutionary algorithm, Evolutionary Algorithms


Mathematics topics

Discrete mathematics is a key foundation of
software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work. ...
engineering. *Number representation *Set (computer science) *Multiset, Bags *Graph (discrete mathematics), Graphs **Sequences **Tree (graph theory), Trees **Graph (data structure) *Logic **Natural deduction, Deduction **First-order logic **Higher-order logic **Combinatory logic *Mathematical induction, Induction *Combinatorics Other *Domain knowledge *Statistics *Decision theory *Type theory


Life cycle phases

*Software engineering, Development Software development process, life cycle phase **Requirements engineering, Requirements gathering / analysis **Software architecture **Computer programming **Software testing, Testing, detects computer bug, bugs ***Black box testing ***White box testing **Quality assurance, ensures compliance with process. *Product (project management), Product Life cycle phase and Project lifecycle **Inception **First development **Major release **Minor release **Bug fix release **knowledge maintenance, Maintenance **Obsolescence *software release, Release development stage, near the end of a release cycle **Software release life cycle#Alpha, Alpha **development stage#Beta, Beta **Software release life cycle#RTM, Gold master **1.0; Software versioning, 2.0 *System lifecycle, Software development lifecycle **Waterfall model — Structured programming and Stepwise refinement **Structured Systems Analysis and Design Methodology, SSADM **Spiral model — Iterative development **V-Model (software development), V-model **Agile software development **Dynamic Systems Development Method, DSDM **Chaos model — Chaos strategy


Deliverables

Deliverables must be developed for many SE projects. Software engineers rarely make all of these deliverables themselves. They usually cooperate with the writers, trainers, installers, marketers, technical support people, and others who make many of these deliverables. *Application software — the software *
Database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases s ...
— schemas and data. *Software documentation, Documentation, online and/or print, FAQ, Readme, release notes, Online help, Help, for each role **User (computing), User **System administrator, Administrator **Management, Manager **Buyer *Administration and Software maintenance, Maintenance policy, what should be backed-up, checked, configured, ... *Installers *Migration **Upgrade from previous installations **Upgrade from competitor's installations *Training materials, for each role **User (computing), User **Administrator **Management, Manager **Buyer *Technical support, Support info for computer support groups. *Marketing and sales materials **White papers, explain the technologies used in the applications


Business roles

*Business operations, Operations **User (computing), Users **Administrators **Management, Managers **Buyers *Development **Business analyst, Analysts **Programmers **Software testing, Testers **Management, Managers *Business **IT Consulting, Consulting — customization and installation of applications **Sales **Marketing **Law, Legal — contracts, intellectual property rights **Privacy and Privacy engineering **Support (technical analysis), Support — helping customers use applications **Personnel — hiring and training qualified personnel ** Finance — funding new development *Academe **Educators **Researchers


Management topics

*Leadership **Coaching **
Communication Communication (from la, communicare, meaning "to share" or "to be in relation with") is usually defined as the transmission of information. The term may also refer to the message communicated through such transmissions or the field of inqui ...
**Listening **Motivation **Vision statement, Vision, SEs are good at this **wikt:exemplar, Example, everyone follows a good example best *Human resource management **Recruitment, Hiring, getting people into an organization **Training **Evaluation *Project management **Goal setting **Customer interaction (Rethink) **Estimation **Risk management **Change management *Process management (Project Management), Process management **Software development processes **Software metric, Metrics


Business topics

*Quality programs **Malcolm Baldrige National Quality Award **Six Sigma **Total Quality Management (TQM)


Software engineering profession

*Software engineering demographics *Software engineering economics *CCSE *History of software engineering *Software engineering professionalism **Ethics **Licensing *Legal **Intellectual property **Consumer protection


History of software engineering

History of software engineering


Pioneers

Many people made important contributions to SE technologies, practices, or applications. *John Backus: Fortran, first optimizing compiler, Backus-Naur form, BNF *Victor Basili: Experience factory. *F.L. Bauer: Stack (data structure), Stack principle, popularized the term ''Software Engineering'' *Kent Beck: Refactoring, extreme programming, pair programming, test-driven development. *Tim Berners-Lee: World Wide Web *Barry Boehm: Software engineering economics, SE economics, COCOMO, Spiral model. *Grady Booch: Object-oriented
design A design is a plan or specification for the construction of an object or system or for the implementation of an activity or process or the result of that plan or specification in the form of a prototype, product, or process. The verb ''to design' ...
, Unified Modeling Language, UML. *Fred Brooks: Managed System 360 and OS 360. Wrote ''The Mythical Man-Month'' and ''No Silver Bullet''. *Larry Constantine: Structured Systems Analysis and Design Method, Structured design, Coupling (computer science), coupling, Cohesion (computer science), cohesion *Edsger Dijkstra: Wrote ''Notes on Structured Programming'', ''A Discipline of Programming'' and ''Go To Statement Considered Harmful'', algorithms, formal methods, pedagogy. *Fagan inspection, Michael Fagan: Software inspection. *Tom Gilb: Software metrics, Software inspection, Software evolution, Evolutionary Delivery ("Evo"). *Adele Goldstine: Wrote the Operators Manual for the ENIAC, the first electronic digital computer, and trained some of the first human computers *Lois Haibt: FORTRAN, wrote the first parsing, parser *Margaret Hamilton (scientist), Margaret Hamilton: Coined the term "software engineering", developed Universal Systems Language *Mary Jean Harrold: Regression testing, fault localization *Grace Hopper: The first compiler (Mark 1), COBOL, Nanoseconds. *Watts Humphrey: Capability Maturity Model, Personal Software Process, fellow of the Software Engineering Institute. *Jean Ichbiah: Ada programming language, Ada *Michael A. Jackson (computer scientist), Michael A. Jackson: Jackson Structured Programming, Jackson System Development *Bill Joy: Berkeley Unix, vi, Java platform, Java. *Alan Kay: Smalltalk *Brian Kernighan: C and Unix. *Donald Knuth: Wrote ''The Art of Computer Programming'', TeX, algorithms, literate programming *Nancy Leveson: System safety *Bertrand Meyer: Design by Contract, Eiffel (programming language), Eiffel programming language. *Peter G. Neumann: RISKS Digest, ACM Sigsoft. *David Parnas: Module design, social responsibility, professionalism. *Jef Raskin: Developed the original Apple Macintosh, Macintosh GUI, authored The Humane Interface *Dennis Ritchie: C (programming language), C and Unix. *Winston W. Royce: Waterfall model. *Mary Shaw (computer scientist), Mary Shaw: Software architecture. *Richard Stallman: Founder of the Free Software Foundation *Linus Torvalds: Linux kernel, free software / open-source software, open source development. *Will Tracz: Reuse, ACM Software Engineering Notes. *Gerald Weinberg: Wrote ''The Psychology of Computer Programming''. *Elaine Weyuker: Software testing *Jeannette Wing: Formal specifications. *Ed Yourdon: Structured programming, wrote ''Decline and Fall of the American Programmer, The Decline and Fall of the American Programmer''. See also *List of programmers *List of computer scientists


Notable publications

*''About Face: The Essentials of User Interface Design'' by Alan Cooper, about user interface design. *''The Capability Maturity Model'' by Watts Humphrey. Written for the Software Engineering Institute, emphasizing management and process. (See ''Managing the Software Process'' ) *''The Cathedral and the Bazaar'' by Eric S. Raymond, Eric Raymond about open source development. *''The Decline and Fall of the American Programmer'' by Ed Yourdon predicts the end of software development in the U.S. *''Design Patterns (book), Design Patterns'' by Erich Gamma, Richard Helm, Ralph Johnson (computer scientist), Ralph Johnson, and John Vlissides. *''Extreme Programming Explained'' by Kent Beck
Go To Statement Considered Harmful
by Edsger Dijkstra. *"Internet, Innovation and Open Source:Actors in the Network" — ''First Monday (journal), First Monday'' article by Ilkka Tuomi (2000
source
*''The Mythical Man-Month'' by Fred Brooks, about project management. *''Object-oriented Analysis and Design'' by Grady Booch. *''Peopleware'' by Tom DeMarco and Tim Lister. *''The pragmatic engineer versus the scientific designer'' by Edsger Wybe Dijkstra, E. W. Dijkstra]

*''Principles of Software Engineering Management'' by Tom Gilb about evolutionary processes. *''The Psychology of Computer Programming'' by Gerald Weinberg. Written as an independent consultant, partly about his years at IBM. *''Refactoring: Improving the Design of Existing Code'' by Martin Fowler (software engineer), Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. *
The Pragmatic Programmer: from journeyman to master
' by Andy Hunt (author), Andrew Hunt, and Dave Thomas (programmer), David Thomas. *''Software Engineering Body of Knowledge (SWEBOK)'' ISO/IEC TR 19759 See also: *List of important publications in computer science#Software engineering, Important publications in software engineering in CS.


Related fields

* Computer Science * Information engineering (field), Information engineering *Information technology *Engineering, Traditional engineering **Computer engineering **Electrical engineering *Software engineering **Domain engineering **Information technology engineering **Knowledge engineering **User interface engineering **Web engineering *Arts and Sciences **Mathematics **Computer science **Information science *Application software **
Information systems An information system (IS) is a formal, sociotechnical, organizational system designed to collect, process, store, and distribute information. From a sociotechnical perspective, information systems are composed by four components: task, people ...
*Computer programming, Programming * Systems Engineering


See also

* Index of software engineering articles * Search-based software engineering * SWEBOK Software engineering body of knowledge * CCSE Computing curriculum for software engineering * List of computer term etymologies, Computer terms etymology, the origins of computer terms * Complexity or scaling * Second system syndrome * optimization (computer science), optimization * Source code escrow * Feature interaction problem * Certification (software engineering) * Engineering disasters#Failure due to software * Outline of software development * List of software development philosophies


References


External links


ACM Computing Classification SystemGuide to the Software Engineering Body of Knowledge (SWEBOK)
;Professional organizations
British Computer Society

Association for Computing Machinery

IEEE Computer Society
; Professionalism



; Education
CCSE Undergraduate curriculum
; Standards:


Internet Engineering Task Force

ISO
; Government organizations:
European Software Institute

Software Engineering Institute
; Agile:
Organization to promote Agile software development

Test driven development

Extreme programming
; Other organizations:
Online community for software engineers

Software Engineering Society
; Demographics

;Surveys:
David Redmiles page from the University of California site
;Other:
Full text in PDF from the NATO conference in Garmisch

Computer Risks
Peter G. Neumann's risks column. {{DEFAULTSORT:Software Engineering Outlines of applied sciences Wikipedia outlines Software engineering, * Computing-related lists, Software engineering, Outline of