Outline of software engineering
Encyclopedia
The following outline is provided as an overview of and topical guide to software engineering:

Software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

– application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering
Engineering
Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...

 to software.

Technologies and practices

Skilled software engineers use technologies and practices from a variety of fields to improve their productivity in creating software and to improve the quality of the delivered product.

Software applications

Software engineers build software (applications
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...

, operating systems, system software
System software
System software is computer software designed to operate the computer hardware and to provide a platform for running application software.The most basic types of system software are:...

) 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
    This article is about software made for business, if you were looking for the business of selling software, see Software business.Business software is generally any software program that helps a business increase productivity or measure their productivity...

    • Accounting software
      Accounting software
      Accounting software is application software that records and processes accounting transactions within functional modules such as accounts payable, accounts receivable, payroll, and trial balance. It functions as an accounting information system...

  • Analytics
    Analytics
    Analytics is the application of computer technology, operational research, and statistics to solve problems in business and industry. Analytics is carried out within an information system: while, in the past, statistics and mathematics could be studied without computers and software, analytics has...

    • Data mining
      Data mining
      Data mining , a relatively young and interdisciplinary field of computer science is the process of discovering new patterns from large data sets involving methods at the intersection of artificial intelligence, machine learning, statistics and database systems...

       closely related to database
      Database
      A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

    • Decision support systems
      Knowledge management
      Knowledge management comprises a range of strategies and practices used in an organization to identify, create, represent, distribute, and enable adoption of insights and experiences...

  • Airline
    Airline
    An airline provides air transport services for traveling passengers and freight. Airlines lease or own their aircraft with which to supply these services and may form partnerships or alliances with other airlines for mutual benefit...

     reservations
  • Banking
    • Automatic teller machines
    • Cheque processing
      Cheque
      A cheque is a document/instrument See the negotiable cow—itself a fictional story—for discussions of cheques written on unusual surfaces. that orders a payment of money from a bank account...

    • Credit card
      Credit card
      A credit card is a small plastic card issued to users as a system of payment. It allows its holder to buy goods and services based on the holder's promise to pay for these goods and services...

      s
  • Commerce
    Commerce
    While business refers to the value-creating activities of an organization for profit, commerce means the whole system of an economy that constitutes an environment for business. The system includes legal, economic, political, social, cultural, and technological systems that are in operation in any...

    • Trade
      Trade
      Trade is the transfer of ownership of goods and services from one person or entity to another. Trade is sometimes loosely called commerce or financial transaction or barter. A network that allows trade is called a market. The original form of trade was barter, the direct exchange of goods and...

    • Auction
      Auction
      An auction is a process of buying and selling goods or services by offering them up for bid, taking bids, and then selling the item to the highest bidder...

      s (e.g. EBay)
    • Reverse auction
      Reverse auction
      A reverse auction is a type of auction in which the roles of buyers and sellers are reversed. In an ordinary auction , buyers compete to obtain a good or service, and the price typically increases over time...

      s (procurment)
    • Bar code scanners
  • Compiler
    Compiler
    A compiler is a computer program that transforms source code written in a programming language into another computer language...

    s
    • Parsers
    • Compiler optimization
      Compiler optimization
      Compiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...

    • Interpreter
      Interpreter (computing)
      In computer science, an interpreter normally means a computer program that executes, i.e. performs, instructions written in a programming language...

      s
    • Linkers
    • Loader
      Loader (computing)
      In computing, a loader is the part of an operating system that is responsible for loading programs. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution...

      s
  • Communication
    Communication
    Communication is the activity of conveying meaningful information. Communication requires a sender, a message, and an intended recipient, although the receiver need not be present or aware of the sender's intent to communicate at the time of communication; thus communication can occur across vast...

    • E-mail
      E-mail
      Electronic mail, commonly known as email or e-mail, is a method of exchanging digital messages from an author to one or more recipients. Modern email operates across the Internet or other computer networks. Some early email systems required that the author and the recipient both be online at the...

    • Instant messengers
      Instant messaging
      Instant Messaging is a form of real-time direct text-based chatting communication in push mode between two or more people using personal computers or other devices, along with shared clients. The user's text is conveyed over a network, such as the Internet...

    • VOIP
    • Calendar
      Calendar
      A calendar is a system of organizing days for social, religious, commercial, or administrative purposes. This is done by giving names to periods of time, typically days, weeks, months, and years. The name given to each day is known as a date. Periods in a calendar are usually, though not...

      s — scheduling and coordinating
    • Contact manager
      Contact manager
      A contact manager 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 of all information and communication activities linked to contacts...

      s
  • Computer graphics
    Computer graphics
    Computer graphics are graphics created using computers and, more generally, the representation and manipulation of image data by a computer with help from specialized software and hardware....

    • Animation
      Animation
      Animation is the rapid display of a sequence of images of 2-D or 3-D artwork or model positions in order to create an illusion of movement. The effect is an optical illusion of motion due to the phenomenon of persistence of vision, and can be created and demonstrated in several ways...

    • Special effects for video and film
    • Editing
      Editing
      Editing is the process of selecting and preparing written, visual, audible, and film media used to convey information through the processes of correction, condensation, organization, and other modifications performed with an intention of producing a correct, consistent, accurate, and complete...

    • Post-processing
  • Cryptography
    Cryptography
    Cryptography is the practice and study of techniques for secure communication in the presence of third parties...

  • Database
    Database
    A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

    s, support almost every field
  • Embedded systems Both software engineers and traditional engineers write software control systems for embedded products.
    • Automotive software
      Automotive software
      Automotive software refers to any software, , related to automotive industry specific products or services.- See also :* Microsoft Auto* Infotainment* Telematics* *...

    • Avionics 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 and is optimized for safety.It is claimed that the...

    • Heating Ventilation and Air Conditioning (HVAC)
      HVAC
      HVAC refers to technology of indoor or automotive environmental comfort. HVAC system design is a major subdiscipline of mechanical engineering, based on the principles of thermodynamics, fluid mechanics, and heat transfer...

       software
    • Medical device software
      Medical software
      In computers, medical software is a significant branch of software engineering. Many medical devices that monitor or control patients are predominantly controlled by software. Medical devices are frequently regulated and must comply with local and regional laws. In the European Union, these...

    • Telephony
      Telephony
      In telecommunications, telephony encompasses the general use of equipment to provide communication over distances, specifically by connecting telephones to each other....

    • Telemetry
      Telemetry
      Telemetry is a technology that allows measurements to be made at a distance, usually via radio wave transmission and reception of the information. The word is derived from Greek roots: tele = remote, and metron = measure...

  • Engineering
    Engineering
    Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...

     All traditional engineering branches use software extensively. Engineers use spreadsheets, more than they ever used calculators. Engineers use custom software tool
    Tool
    A tool is a device that can be used to produce an item or achieve a task, but that is not consumed in the process. Informally the word is also used to describe a procedure or process with a specific purpose. Tools that are used in particular fields or activities may have different designations such...

    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
    Electronic document
    An electronic document is any electronic media content that are intended to be used in either an electronic form or as printed output....

    s and goes through analysis, design
    Design
    Design as a noun informally refers to a plan or convention for the construction of an object or a system while “to design” refers to making this plan...

    , implementation
    Implementation
    Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.-Computer Science:...

    , 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)
      Electronic design automation
      Electronic design automation is a category of software tools for designing electronic systems such as printed circuit boards and integrated circuits...

    • Numerical Analysis
      Numerical analysis
      Numerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis ....

    • Simulation
      Simulation
      Simulation is the imitation of some real thing available, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviours of a selected physical or abstract system....

  • File
    Computer file
    A computer file is a block of arbitrary information, or resource for storing information, which is available to a computer program and is usually based on some kind of durable storage. A file is durable in the sense that it remains available for programs to use after the current program has finished...

    • FTP
      File Transfer Protocol
      File Transfer Protocol is a standard network protocol used to transfer files from one host to another host over a TCP-based network, such as the Internet. FTP is built on a client-server architecture and utilizes separate control and data connections between the client and server...

    • File sharing
      File sharing
      File sharing is the practice of distributing or providing access to digitally stored information, such as computer programs, multimedia , documents, or electronic books. It may be implemented through a variety of ways...

    • File synchronization
      File synchronization
      File synchronization in computing is the process of ensuring that computer files in two or more locations are updated via certain rules....

  • Finance
    Finance
    "Finance" is often defined simply as the management of money or “funds” management Modern finance, however, is a family of business activity that includes the origination, marketing, and management of cash and money surrogates through a variety of capital accounts, instruments, and markets created...

    • Bond market
      Bond market
      The bond 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, usually in the form of bonds. The primary goal of the bond market is to provide a mechanism for long term funding of public and...

    • Futures market
    • Stock market
      Stock market
      A stock market or equity market is a public entity for the trading of company stock and derivatives at an agreed price; these are securities listed on a stock exchange as well as those only traded privately.The size of the world stock market was estimated at about $36.6 trillion...

  • Game
    Game
    A game is structured playing, usually undertaken for enjoyment and sometimes used as an educational tool. Games are distinct from work, which is usually carried out for remuneration, and from art, which is more often an expression of aesthetic or ideological elements...

    s
    • Poker
      Poker
      Poker is a family of card games that share betting rules and usually hand rankings. Poker games differ in how the cards are dealt, how hands may be formed, whether the high or low hand wins the pot in a showdown , limits on bet sizes, and how many rounds of betting are allowed.In most modern poker...

    • Multiuser Dungeons
      MUD
      A MUD , pronounced , is a multiplayer real-time virtual world, with the term usually referring to text-based instances of these. MUDs combine elements of role-playing games, hack and slash, player versus player, interactive fiction, and online chat...

    • Video games
  • Information systems
    Information systems
    Information Systems is an academic/professional discipline bridging the business field and the well-defined computer science field that is evolving toward a new scientific area of study...

    , support almost every field
    • LIS
      Laboratory information system
      A lab information system is a class of software that receives, processes, and stores information generated by medical laboratory processes. These systems often must interface with instruments and other information systems such as hospital information systems...

       Management of laboratory data
    • MIS Management of financial and personnel data
  • Logistics
    Logistics
    Logistics is the management of the flow of goods between the point of origin and the point of destination in order to meet the requirements of customers or corporations. Logistics involves the integration of information, transportation, inventory, warehousing, material handling, and packaging, and...

    • Supply chain management
      Supply chain management
      Supply chain management is the management of a network of interconnected businesses involved in the ultimate provision of product and service packages required by end customers...

  • Manufacturing
    Manufacturing
    Manufacturing is the use of machines, tools and labor to produce goods for use or sale. The term may refer to a range of human activity, from handicraft to high tech, but is most commonly applied to industrial production, in which raw materials are transformed into finished goods on a large scale...

    • Computer Aided Manufacturing (CAM)
      Computer-aided manufacturing
      Computer-aided manufacturing is the use of computer software to control machine tools and related machinery in the manufacturing of workpieces. This is not the only definition for CAM, but it is the most common; CAM may also refer to the use of a computer to assist in all operations of a...

    • Distributed Control Systems (DCS)
      Distributed control system
      A distributed control system refers to a control system usually of a manufacturing system, process or any kind of dynamic system, in which the controller elements are not central in location but are distributed throughout the system with each component sub-system controlled by one or more...

  • Music
    Music
    Music is an art form whose medium is sound and silence. Its common elements are pitch , rhythm , dynamics, and the sonic qualities of timbre and texture...

    • Music sequencer
      Music sequencer
      The music sequencer is a device or computer software to record, edit, play back the music, by handling note and performance information in several forms, typically :...

      s
    • Sound effects
    • Music synthesis
  • Network Management
    Network management
    Network management refers to the activities, methods, procedures, and tools that pertain to the operation, administration, maintenance, and provisioning of networked systems....

    • Network management system
      Network management system
      A network management system is a combination of hardware and software used to monitor and administer a computer network.Individual network elements in a network are managed by an element management system.-Tasks and operational details:...

    • Element Management System
      Element management system
      An element management system consists of systems and applications for managing network elements on the network element management layer of the Telecommunications Management Network model....

    • Operations Support System
      Operations support system
      Operations support systems are computer systems used by telecommunications service providers. The term OSS most frequently describes "network systems" dealing with the telecom network itself, supporting processes such as maintaining network inventory, provisioning services, configuring network...

    • Business Support Systems
      Business Support Systems
      Business support systems are the components that a telephone operator or telco uses to run its business operations towards customer. BSS and OSS platforms are linked in the need to support various end to end services...

  • Networks
    Computer network
    A computer network, often simply referred to as a network, is a collection of hardware components and computers interconnected by communication channels that allow sharing of resources and information....

     and Internet
    Internet
    The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

    • Domain Name System
      Domain name system
      The Domain Name System is a hierarchical distributed naming system for computers, services, or any resource connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities...

    • Protocols
    • Routers
  • Office suite
    Office suite
    In computing, an office suite, sometimes called an office software suite or productivity suite is a collection of programs intended to be used by knowledge workers...

    s
    • Word processor
      Word processor
      A word processor is a computer application used for the production of any sort of printable material....

      s
    • Spreadsheet
      Spreadsheet
      A spreadsheet is a computer application that simulates a paper accounting worksheet. It displays multiple cells usually in a two-dimensional matrix or grid consisting of rows and columns. Each cell contains alphanumeric text, numeric values or formulas...

      s
    • Presentations
      Presentation program
      A presentation program is a computer software package used to display information, normally in the form of a slide show...

  • Operating system
    Operating system
    An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

    s
    • Embedded
      Embedded system
      An embedded system is a computer system designed for specific control functions within a larger system. often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal...

    • Graphical
      Graphical user interface
      In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...

    • Multitasking
      Computer multitasking
      In computing, multitasking is a method where multiple tasks, also known as processes, share common processing resources such as a CPU. In the case of a computer with a single CPU, only one task is said to be running at any point in time, meaning that the CPU is actively executing instructions for...

    • Real-time
      Real-time operating system
      A real-time operating system is an operating system intended to serve real-time application requests.A key characteristic of a RTOS is the level of its consistency concerning the amount of time it takes to accept and complete an application's task; the variability is jitter...

  • Robotics
    Robotics
    Robotics is the branch of technology that deals with the design, construction, operation, structural disposition, manufacture and application of robots...

  • Signal processing
    Signal processing
    Signal processing is an area of systems engineering, electrical engineering and applied mathematics that deals with operations on or analysis of signals, in either discrete or continuous time...

    , encoding and interpreting signals
    • Image processing
      Image processing
      In electrical engineering and computer science, image processing is any form of signal processing for which the input is an image, such as a photograph or video frame; the output of image processing may be either an image or, a set of characteristics or parameters related to the image...

      , encoding and interpreting visual information
    • Speech processing
      Speech processing
      Speech processing is the study of speech signals and the processing methods of these 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 to speech signal.It is also closely tied to...

    • Text recognition
      Optical character recognition
      Optical character recognition, usually abbreviated to OCR, is the mechanical or electronic translation of scanned images of handwritten, typewritten or printed text into machine-encoded text. It is widely used to convert books and documents into electronic files, to computerize a record-keeping...

    • Handwriting recognition
      Handwriting recognition
      Handwriting recognition is the ability of a computer to receive and interpret intelligible handwritten input from sources such as paper documents, photographs, touch-screens and other devices. The image of the written text may be sensed "off line" from a piece of paper by optical scanning or...

  • Simulation
    Computer simulation
    A computer simulation, a computer model, or a computational model is a computer program, or network of computers, that attempts to simulate an abstract model of a particular system...

    , supports almost every field.
    • Engineering
      Engineering
      Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...

      , A software simulation
      Simulation
      Simulation is the imitation of some real thing available, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviours of a selected physical or abstract system....

       can be cheaper to build and more flexible to change than a physical engineering model.
    • Science
      Science
      Science is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe...

      s
  • Science
    Science
    Science is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe...

    s
    • Genomics
      Genomics
      Genomics is a discipline in genetics concerning the study of the genomes of organisms. The field includes intensive efforts to determine the entire DNA sequence of organisms and fine-scale genetic mapping efforts. The field also includes studies of intragenomic phenomena such as heterosis,...

  • Traffic Control
    • Air traffic control
      Air traffic control
      Air traffic control is a service provided by ground-based controllers who direct aircraft on the ground and in the air. The primary purpose of ATC systems worldwide is to separate aircraft to prevent collisions, to organize and expedite the flow of traffic, and to provide information and other...

    • Ship traffic control
      Sea lane
      A sea lane or shipping lane is a regularly used route for ocean-going and Great Lakes vessels. In the time of sailing ships they were not only determined by the distribution of land masses but also the prevailing winds, whose discovery was crucial for the success of long voyages...

    • Road traffic control
  • Training
    Training
    The term training refers to the acquisition of knowledge, skills, and competencies as a result of the teaching of vocational or practical skills and knowledge that relate to specific useful competencies. It forms the core of apprenticeships and provides the backbone of content at institutes of...

    • Drill
      Drill
      A drill or drill motor is a tool fitted with a cutting tool attachment or driving tool attachment, usually a drill bit or driver bit, used for drilling holes in various materials or fastening various materials together with the use of fasteners. The attachment is gripped by a chuck at one end of...

    • Simulation
      Simulation
      Simulation is the imitation of some real thing available, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviours of a selected physical or abstract system....

    • Testing
  • Visualization
    Spatial Visualization Ability
    Spatial visualization ability or Visual-spatial ability is the ability to mentally manipulate 2-dimensional and 3-dimensional figures. It is typically measured with simple cognitive tests and is predictive of user performance with some kinds of user interfaces.-Measurement:The cognitive tests used...

    , supports almost every field
    • Architecture
      Architecture
      Architecture is both the process and product of planning, designing and construction. Architectural works, in the material form of buildings, are often perceived as cultural and political symbols and as works of art...

    • Engineering
      Engineering
      Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...

    • Science
      Science
      Science is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe...

      s
  • Voting
    Electronic voting
    Electronic voting is a term encompassing several different types of voting, embracing both electronic means of casting a vote and electronic means of counting votes....

  • World wide web
    World Wide Web
    The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

    • Browsers
      Web browser
      A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

    • Servers
      Web server
      Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....


Software engineering topics

Many technologies and practices are (mostly) confined to software engineering,
though many of these are shared with computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

.
Programming Languages
Ada  APL 
COBOL
COBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....

 
Pascal
Pascal (programming language)
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...

 
C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 
C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

C#  Clojure
Clojure
Clojure |closure]]") is a recent dialect of the Lisp programming language created by Rich Hickey. It is a general-purpose language supporting interactive development that encourages a functional programming style, and simplifies multithreaded programming....

 
Common Lisp
Common Lisp
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...

 
D
ColdFusion
ColdFusion
In computing, ColdFusion is the name of a commercial rapid application development platform invented by Jeremy and JJ Allaire in 1995. ColdFusion was originally designed to make it easier to connect simple HTML pages to a database, by version 2 it had...

 
Delphi  Dylan  Eiffel
Eiffel (programming language)
Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...

Erlang  Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

 
F#  Groovy
Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 
Lasso
Lasso programming language
Lasso Professional combines an interpreted programming language and server for developing internet applications which use web browsers for the client user interface to connect to HTTP and database servers...

 
ML  OCaml
Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

 
PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 
PL/SQL
PL/SQL
PL/SQL is Oracle Corporation's procedural extension language for SQL and the Oracle relational database...

 
Prolog
Prolog
Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is declarative: the program logic is expressed in terms of...

Haskell
Haskell (programming language)
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. It is named after logician Haskell Curry. In Haskell, "a function is a first-class citizen" of the programming language. As a functional programming language, the...

 
Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 
Ruby
Ruby (programming language)
Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...

 
Scala
Scheme  Smalltalk
Smalltalk
Smalltalk is an object-oriented, dynamically typed, reflective programming language. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis." It was designed and created in part for educational use, more so for constructionist...

 
Tcl
Tcl
Tcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own...

 
T-SQL
Verilog
Verilog
In the semiconductor and electronic design industry, Verilog is a hardware description language used to model electronic systems. Verilog HDL, not to be confused with VHDL , is most commonly used in the design, verification, and implementation of digital logic chips at the register-transfer level...

 
VHDL  Visual Basic
Visual Basic
Visual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model...

 
Visual Basic .NET
Visual Basic .NET
Visual Basic .NET , is an object-oriented computer programming language that can be viewed as an evolution of the classic Visual Basic , which is implemented on the .NET Framework...

Assembly language • • • Scripting language
Scripting language
A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...

 • • • List of programming languages
Alphabetical list of programming languages
The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in alphabetical order, except for dialects of BASIC and esoteric programming languages.- A :...


Programming paradigm, based on a programming language technology

  • Object-oriented programming
    Object-oriented programming
    Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

  • Aspect-oriented programming
    Aspect-oriented programming
    In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...

  • Functional decomposition
    Functional decomposition
    Functional decomposition refers broadly to the process of resolving a functional relationship into its constituent parts in such a way that the original function can be reconstructed from those parts by function composition...

  • Post-object programming
  • Structured programming
    Structured programming
    Structured programming is a programming paradigm aimed on improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops - in contrast to using simple tests and jumps such as the goto statement which could...

  • Rule-based programming

Databases

  • Hierarchical
  • Object
    Object database
    An object database is a database management system in which information is represented in the form of objects as used in object-oriented programming...

  • Relational
    Relational database
    A relational database is a database that conforms to relational model theory. The software used in a relational database is called a relational database management system . Colloquial use of the term "relational database" may refer to the RDBMS software, or the relational database itself...

  • SQL/XML
    SQL/XML
    SQL/XML or XML-Related Specifications is an extension to the Structured Query Language specification, which defines the use of XML in conjunction with SQL. The XML data type is introduced, as well as several routines, functions, and XML-to-SQL data type mappings to support manipulation and storage...

  • SQL
  • MYSQL
    MySQL
    MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...


Graphical user interfaces

  • wxWidgets
    WxWidgets
    wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...

  • Qt toolkit
    Qt (toolkit)
    Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...

  • GTK+ GIMP Toolkit
    GTK+
    GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...

  • FLTK
    FLTK
    FLTK is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming....


Programming tools

  • Configuration management
    Configuration management
    Configuration management is a field of management that focuses on establishing and maintaining consistency of a system or product's performance and its functional and physical attributes with its requirements, design, and operational information throughout its life.For information assurance, CM...

     and source code management
    • CVS
      Concurrent Versions System
      The Concurrent Versions System , also known as the Concurrent Versioning System, is a client-server free software revision control system in the field of software development. Version control system software keeps track of all work and all changes in a set of files, and allows several developers ...

    • Subversion
    • Git
      Git (software)
      Git is a distributed revision control system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on...

    • Mercurial
      Mercurial (software)
      Mercurial is a cross-platform, distributed revision control tool for software developers. It is mainly implemented using the Python programming language, but includes a binary diff implementation written in C. It is supported on Windows and Unix-like systems, such as FreeBSD, Mac OS X and Linux...

    • RCS
      Revision Control System
      The Revision Control System is a software implementation of revision control that automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, for example programs, documentation, procedural graphics, papers, and form...

    • GNU Arch
    • LibreSource Synchronizer
      LibreSource
      LibreSource is a collaborative development platform for open-source software, groupware, community interaction, electronic archiving and Web publishing....

  • Build tools
    • Make
    • Rake
      Rake (software)
      Rake is a software task management tool. It allows you to specify tasks and describe dependencies as well as to group tasks in a namespace.It is similar to SCons and make, but has a number of differences. The tool is written in the Ruby programming language, and the Rakefiles use Ruby syntax...

    • Cabal
      Cabal (software)
      The Haskell Cabal is the Common Architecture for Building Applications and Libraries; it aids in the packaging and distribution of software packages...

    • Ant
      Apache Ant
      Apache Ant is a software tool for automating software build processes. It is similar to Make but is implemented using the Java language, requires the Java platform, and is best suited to building Java projects....

    • Nant
      NAnt
      NAnt is a free and open source software tool for automating software build processes. It is similar to Apache Ant, but targeted at the .NET environment rather than Java...

    • Maven
      Apache Maven
      Maven is a build automation and software comprehension tool. While primarily used for Java programming, it can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. Maven serves a similar purpose to the Apache Ant tool, but it is based on different concepts and...

    • Final Builder
      FinalBuilder
      FinalBuilder is an integrated tool for carrying out software builds on the Windows platform. Unlike tools such as make or Apache Ant, which require separate tools for authoring, executing and carrying out individual steps, FinalBuilder provides a unified graphical interface to author and execute...

    • Visual Build Pro
  • Editors
    Source code editor
    A source code editor is a text editor program designed specifically for editing source code of computer programs by programmers. It may be a standalone application or it may be built into an integrated development environment ....

    • IDE
      Integrated development environment
      An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

      s
    • text editor
      Text editor
      A text editor is a type of program used for editing plain text files.Text editors are often provided with operating systems or software development packages, and can be used to change configuration files and programming language source code....

      s
    • word processor
      Word processor
      A word processor is a computer application used for the production of any sort of printable material....

      s
  • Parser creation tools
    • Yacc
      Yacc
      The computer program yacc is a parser generator developed by Stephen C. Johnson at AT&T for the Unix operating system. The name is an acronym for "Yet Another Compiler Compiler." It generates a parser based on an analytic grammar written in a notation similar to BNF.Yacc used to be available as...

      /Bison
      GNU bison
      GNU bison, commonly known as Bison, is a parser generator that is part of the GNU Project. Bison reads a specification of a context-free language, warns about any parsing ambiguities, and generates a parser which reads sequences of tokens and decides whether the sequence conforms to the syntax...

  • Static Code Analysis Tools

Patterns, document many common programming and project management techniques

  • Anti-patterns
  • Patterns
    Design pattern (computer science)
    In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that...


Processes and methodologies

  • Agile
    • Agile software development
      Agile software development
      Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...

    • Crystal Clear
      Crystal Clear (software development)
      Crystal Clear is a member of the Crystal family of methodologies as described by Alistair Cockburn and is considered an example of an agile or lightweight methodology....

    • Extreme programming
      Extreme Programming
      Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

    • Lean software development
      Lean manufacturing
      Lean manufacturing, lean enterprise, or lean production, often simply, "Lean," is a production practice that considers the expenditure of resources for any goal other than the creation of value for the end customer to be wasteful, and thus a target for elimination...

    • Rapid application development (RAD)
      Rapid application development
      Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself...

    • Rational Unified Process
      Rational Unified Process
      The Rational Unified Process is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003...

    • Scrum (in management)
  • Heavyweight
    • Cleanroom
      Cleanroom Software Engineering
      The Cleanroom software engineering process is a software development process intended to produce software with a certifiable level of reliability. The Cleanroom process was originally developed by Harlan Mills and several of his colleagues including Alan Hevner at IBM. The focus of the Cleanroom...

    • ISO 12207
      ISO 12207
      ISO/IEC 12207 Systems and software engineering — Software life cycle processes is an international standard for software lifecycle processes...

       — software life cycle processes
    • ISO 9000
      ISO 9000
      The ISO 9000 family of standards relates to quality management systems and is designed to help organizations ensure they meet the needs of customers and other stakeholders . The standards are published by ISO, the International Organization for Standardization, and available through National...

       and ISO 9001
  • Process Models
    • CMM
      Capability Maturity Model
      The Capability Maturity Model is a development model that was created after study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. This model became the foundation from which CMU created the Software Engineering Institute...

       and CMMI
      Capability Maturity Model Integration
      Capability Maturity Model Integration is a process improvement approach whose goal is to help organizations improve their performance. CMMI can be used to guide process improvement across a project, a division, or an entire organization...

      /SCAMPI
    • ISO 15504
      ISO 15504
      ISO/IEC 15504 Information technology — Process assessment, also known as SPICE , is a set of technical standards documents for the computer software development process and related business management functions...

       (SPICE)
  • Metamodels
    • ISO/IEC 24744
      ISO/IEC 24744
      ISO/IEC 24744 Software Engineering — Metamodel for Development Methodologies is an ISO standard for software engineering metamodelling for development methodologies...

    • 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.
  • BREW
  • Cray
    Cray
    Cray Inc. is an American supercomputer manufacturer based in Seattle, Washington. The company's predecessor, Cray Research, Inc. , was founded in 1972 by computer designer Seymour Cray. Seymour Cray went on to form the spin-off Cray Computer Corporation , in 1989, which went bankrupt in 1995,...

     supercomputer
    Supercomputer
    A supercomputer is a computer at the frontline of current processing capacity, particularly speed of calculation.Supercomputers are used for highly calculation-intensive tasks such as problems including quantum physics, weather forecasting, climate research, molecular modeling A supercomputer is a...

    s
  • DEC
    Digital Equipment Corporation
    Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...

     minicomputer
    Minicomputer
    A minicomputer is a class of multi-user computers that lies in the middle range of the computing spectrum, in between the largest multi-user systems and the smallest single-user systems...

    s
  • IBM
    IBM
    International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...

     mainframes
    Mainframe computer
    Mainframes are powerful computers used primarily by corporate and governmental organizations for critical applications, bulk data processing such as census, industry and consumer statistics, enterprise resource planning, and financial transaction processing.The term originally referred to the...

  • Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

     PCs
    Personal computer
    A personal computer is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end-user with no intervening computer operator...

  • Mac OS
    Mac OS
    Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...

     and Mac OS X
    Mac OS X
    Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

     PCs
    Personal computer
    A personal computer is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end-user with no intervening computer operator...

  • Microsoft .NET
  • Palm
    Palm OS
    Palm OS is a mobile operating system initially developed by Palm, Inc., for personal digital assistants in 1996. Palm OS is designed for ease of use with a touchscreen-based graphical user interface. It is provided with a suite of basic applications for personal information management...

     PDAs
    Personal digital assistant
    A personal digital assistant , also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. Current PDAs often have the ability to connect to the Internet...

  • Sun Microsystems
    Sun Microsystems
    Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

     Solaris
  • Windows
    Microsoft Windows
    Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

     PCs
    Personal computer
    A personal computer is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end-user with no intervening computer operator...

     (Wintel
    Wintel
    Wintel is a portmanteau of Windows and Intel, referring to personal computers using Intel x86 compatible processors running Microsoft Windows...

    )
  • Symbian OS

Other Practices

  • Communication
    Communication
    Communication is the activity of conveying meaningful information. Communication requires a sender, a message, and an intended recipient, although the receiver need not be present or aware of the sender's intent to communicate at the time of communication; thus communication can occur across vast...

  • Method engineering
    Method engineering
    Method engineering in the "field of information systems is the discipline to construct new methods from existing methods". It focuses on "the design, construction and evaluation of methods, techniques and support tools for information systems development"....

  • Pair programming
    Pair programming
    Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, types in code while the other, the observer , reviews each line of code as it is typed in...

  • Performance Engineering
    Performance Engineering
    Performance engineering within systems engineering, encompasses the set of roles, skills, activities, practices, tools, and deliverables applied at every phase of the Systems Development Life Cycle which ensures that a solution will be designed, implemented, and operationally supported to meet the...

  • Programming productivity
    Programming productivity
    Programming productivity refers to a variety of software development issues and methodologies affecting the quantity and quality of code produced by an individual or team...

  • Refactoring
    Refactoring
    Code refactoring is "disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior", undertaken in order to improve some of the nonfunctional attributes of the software....

  • Software inspection
    Software inspection
    Inspection in software engineering, refers to peer review of any work product by trained individuals who look for defects using a well defined process...

    s/Code review
    Code review
    Code review is systematic examination of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers' skills...

    s
  • Software reuse
  • Systems integration
  • Teamwork
    Teamwork
    Teamwork is action performed by a team towards a common goal. A team consists of more than one person, each of whom typically has different responsibilities....


Other tools

  • Decision table
    Decision table
    Decision tables are a precise yet compact way to model complicated logic.Decision tables, like flowcharts and if-then-else and switch-case statements, associate conditions with actions to perform, but in many cases do so in a more elegant way....

    s
  • Feature
    Features (pattern recognition)
    In pattern recognition, features are the individual measurable heuristic properties of the phenomena being observed. Choosing discriminating and independent features is key to any pattern recognition algorithm being successful in classification...

  • User stories
    User story
    In computer programming a user story is one or more sentences in the everyday or business language of the end user that captures what the user wants to achieve. User stories are used with Agile software development methodologies for the basis of what features that can be implemented...

  • Use case
    Use case
    In software engineering and systems engineering, a use case is a description of steps or actions between a user and a software system which leads the user towards something useful...

    s

Computer science topics

Skilled software engineers know a lot of computer science
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

 including what is possible and impossible, and what is easy and hard for software.
  • Algorithms, well-defined methods for solving specific problems.
    • Searching
      Search algorithm
      In computer science, a search algorithm is an algorithm for finding an item with specified properties among a collection of items. The items may be stored individually as records in a database; or may be elements of a search space defined by a mathematical formula or procedure, such as the roots...

    • Sorting
      Sorting
      Sorting is any process of arranging items in some sequence and/or in different sets, and accordingly, it has two common, yet distinct meanings:# ordering: arranging items of the same kind, class, nature, etc...

    • Parsing
      Parsing
      In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...

    • Numerical analysis
      Numerical analysis
      Numerical analysis is the study of algorithms that use numerical approximation for the problems of mathematical analysis ....

  • Compiler theory
    • Yacc
      Yacc
      The computer program yacc is a parser generator developed by Stephen C. Johnson at AT&T for the Unix operating system. The name is an acronym for "Yet Another Compiler Compiler." It generates a parser based on an analytic grammar written in a notation similar to BNF.Yacc used to be available as...

      /Bison
      GNU bison
      GNU bison, commonly known as Bison, is a parser generator that is part of the GNU Project. Bison reads a specification of a context-free language, warns about any parsing ambiguities, and generates a parser which reads sequences of tokens and decides whether the sequence conforms to the syntax...

  • Data structures, well-defined methods for storing and retrieving data.
    • Lists
    • Trees
    • Hash table
      Hash table
      In computer science, a hash table or hash map is a data structure that uses a hash function to map identifying values, known as keys , to their associated values . Thus, a hash table implements an associative array...

      s
  • Computability
    Computability theory (computer science)
    Computability is the ability to solve a problem in an effective manner. It is a key topic of the field of computability theory within mathematical logic and the theory of computation within computer science...

    , some problems cannot be solved at all
    • Halting problem
      Halting problem
      In computability theory, the halting problem can be stated as follows: Given a description of a computer program, decide whether the program finishes running or continues to run forever...

  • Complexity
    Complexity
    In general usage, complexity tends to be used to characterize something with many parts in intricate arrangement. The study of these complex linkages is the main goal of complex systems theory. In science there are at this time a number of approaches to characterizing complexity, many of which are...

    , some problems are solvable in principle, yet unsolvable in practice
    • NP completeness
      NP-complete
      In computational complexity theory, the complexity class NP-complete is a class of decision problems. A decision problem L is NP-complete if it is in the set of NP problems so that any given solution to the decision problem can be verified in polynomial time, and also in the set of NP-hard...

    • Computational complexity theory
      Computational complexity theory
      Computational complexity theory is a branch of the theory of computation in theoretical computer science and mathematics that focuses on classifying computational problems according to their inherent difficulty, and relating those classes to each other...

  • Formal methods
    Formal methods
    In computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...

    • Proof of correctness
    • Program synthesis
      Program synthesis
      Program synthesis is a special form of automatic programming that is most often paired with a technique for formal verification. The goal is to automatically construct a program that provably satisfies a given high-level specification...

  • Adaptive Systems
    Adaptive system
    The term adaptation arises mainly in the biological scope as a trial to study the relationship between the characteristics of living beings and their environments...

    • Neural Networks
      Artificial neural network
      An artificial neural network , usually called neural network , is a mathematical model or computational model that is inspired by the structure and/or functional aspects of biological neural networks. A neural network consists of an interconnected group of artificial neurons, and it processes...

    • Evolutionary Algorithms
      Evolutionary algorithm
      In artificial intelligence, an evolutionary algorithm is a subset of evolutionary computation, a generic population-based metaheuristic optimization algorithm. An EA uses some mechanisms inspired by biological evolution: reproduction, mutation, recombination, and selection...


Mathematics topics

Discrete mathematics
Discrete mathematics
Discrete mathematics is the study of mathematical structures that are fundamentally discrete rather than continuous. In contrast to real numbers that have the property of varying "smoothly", the objects studied in discrete mathematics – such as integers, graphs, and statements in logic – do not...

 is a key foundation of software engineering.
  • Number
    Number
    A number is a mathematical object used to count and measure. In mathematics, the definition of number has been extended over the years to include such numbers as zero, negative numbers, rational numbers, irrational numbers, and complex numbers....

     representation
  • Set (computer science)
    Set (computer science)
    In computer science, a set is an abstract data structure that can store certain values, without any particular order, and no repeated values. It is a computer implementation of the mathematical concept of a finite set...

  • Bag
    Multiset
    In mathematics, the notion of multiset is a generalization of the notion of set in which members are allowed to appear more than once...

    s
  • Graph
    Graph (mathematics)
    In mathematics, a graph is an abstract representation of a set of objects where some pairs of the objects are connected by links. The interconnected objects are represented by mathematical abstractions called vertices, and the links that connect some pairs of vertices are called edges...

    s
    • Sequence
      Sequence
      In mathematics, a sequence is an ordered list of objects . Like a set, it contains members , and the number of terms is called the length of the sequence. Unlike a set, order matters, and exactly the same elements can appear multiple times at different positions in the sequence...

      s
    • Tree
      Tree
      A tree is a perennial woody plant. It is most often defined as a woody plant that has many secondary branches supported clear of the ground on a single main stem or trunk with clear apical dominance. A minimum height specification at maturity is cited by some authors, varying from 3 m to...

      s
    • Graph (data structure)
      Graph (data structure)
      In computer science, a graph is an abstract data structure that is meant to implement the graph and hypergraph concepts from mathematics.A graph data structure consists of a finite set of ordered pairs, called edges or arcs, of certain entities called nodes or vertices...

  • Logic
    Logic
    In philosophy, Logic is the formal systematic study of the principles of valid inference and correct reasoning. Logic is used in most intellectual activities, but is studied primarily in the disciplines of philosophy, mathematics, semantics, and computer science...

    • Deduction
      Natural deduction
      In logic and proof theory, natural deduction is a kind of proof calculus in which logical reasoning is expressed by inference rules closely related to the "natural" way of reasoning...

    • First-order logic
      First-order logic
      First-order logic is a formal logical system used in mathematics, philosophy, linguistics, and computer science. It goes by many names, including: first-order predicate calculus, the lower predicate calculus, quantification theory, and predicate logic...

    • Higher-order logic
      Higher-order logic
      In mathematics and logic, a higher-order logic is a form of predicate logic that is distinguished from first-order logic by additional quantifiers and a stronger semantics...

    • Combinatory logic
      Combinatory logic
      Combinatory logic is a notation introduced by Moses Schönfinkel and Haskell Curry to eliminate the need for variables in mathematical logic. It has more recently been used in computer science as a theoretical model of computation and also as a basis for the design of functional programming...

  • Induction
    Mathematical induction
    Mathematical induction is a method of mathematical proof typically used to establish that a given statement is true of all natural numbers...

  • Combinatorics
    Combinatorics
    Combinatorics is a branch of mathematics concerning the study of finite or countable discrete structures. Aspects of combinatorics include counting the structures of a given kind and size , deciding when certain criteria can be met, and constructing and analyzing objects meeting the criteria ,...



Other
  • Domain knowledge
    Domain knowledge
    Domain knowledge is that valid knowledge used to refer to an area of human endeavour, an autonomous computer activity, or other specialized discipline.Specialists and experts use and develop their own domain knowledge...

  • Statistics
    Statistics
    Statistics is the study of the collection, organization, analysis, and interpretation of data. It deals with all aspects of this, including the planning of data collection in terms of the design of surveys and experiments....

  • Decision theory
    Decision theory
    Decision theory in economics, psychology, philosophy, mathematics, and statistics is concerned with identifying the values, uncertainties and other issues relevant in a given decision, its rationality, and the resulting optimal decision...

  • Type theory
    Type theory
    In mathematics, logic and computer science, type theory is any of several formal systems that can serve as alternatives to naive set theory, or the study of such formalisms in general...


Life cycle phases

  • Development
    Software engineering
    Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

     life cycle phase
    Software development process
    A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...

    • Requirements gathering / analysis
      Requirements engineering
      Requirements engineering is a systems and software engineering process which covers all of the activities involved in discovering, documenting and maintaining a set of requirements for a computer-based system...

    • Software architecture
      Software architecture
      The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...

    • Computer programming
      Computer programming
      Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

    • Testing
      Software testing
      Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

      , detects bugs
      • Black box testing
        Black box testing
        Black-box testing is a method of software testing that tests the functionality of an application as opposed to its internal structures or workings . Specific knowledge of the application's code/internal structure and programming knowledge in general is not required...

      • White box testing
        White box testing
        White-box testing is a method of testing software that tests internal structures or workings of an application, as opposed to its functionality...

    • Quality assurance
      Quality Assurance
      Quality assurance, or QA for short, is the systematic monitoring and evaluation of the various aspects of a project, service or facility to maximize the probability that minimum standards of quality are being attained by the production process...

      , ensures compliance with process.
  • Product Life cycle phase and Project lifecycle
    • Inception
    • First development
    • Major release
    • Minor release
    • Bug fix release
    • Maintenance
    • Obsolescence
      Obsolescence
      Obsolescence is the state of being which occurs when an object, service or practice is no longer wanted even though it may still be in good working order. Obsolescence frequently occurs because a replacement has become available that is superior in one or more aspects. Obsolete refers to something...

  • Release development stage
    Development stage
    A software release life cycle refers to the phases of development and maturity for a piece of computer software—ranging from its initial development, to its eventual release, and updated versions of the released version to help improve software or fix bugs still present in the software.- Pre-alpha...

    , near the end of a release cycle
    • Alpha
    • Beta
    • Gold master
    • 1.0; 2.0
  • Software development lifecycle
    System lifecycle
    The system lifecycle in systems engineering is an examination of a system or proposed system that addresses all phases of its existence to include system conception, design and development, production and/or construction, distribution, operation, maintenance and support, retirement, phase-out and...

    • Waterfall model
      Waterfall model
      The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.The waterfall...

       — Structured programming
      Structured programming
      Structured programming is a programming paradigm aimed on improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops - in contrast to using simple tests and jumps such as the goto statement which could...

       and Stepwise refinement
    • SSADM
    • Spiral model
      Spiral model
      The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. Also known as the spiral lifecycle model , it is a systems development method used in information technology...

       — Iterative development
    • V-model
      V-Model (software development)
      The V-model represents a software development process which may be considered an extension of the waterfall model. Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape...

    • Agile software development
      Agile software development
      Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams...

    • DSDM
      Dynamic Systems Development Method
      Dynamic systems development method is an agile project delivery framework, primarily used as a software development method. DSDM was originally based upon the rapid application development method. In 2007 DSDM became a generic approach to project management and solution delivery...

    • Chaos model
      Chaos model
      In computing, the Chaos model is a structure of software development. Its creator, L.B.S. Raccoon, noted that project management models such as the spiral model and waterfall model, while good at managing schedules and staff, didn't provide methods to fix bugs or solve other technical problems...

       — 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
    Database
    A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

     — schemas and data.
  • Documentation
    Software documentation
    Software documentation or source code documentation is written text that accompanies computer software. It either explains how it operates or how to use it, and may mean different things to people in different roles....

    , online and/or print, FAQ
    FAQ
    Frequently asked questions are listed questions and answers, all supposed to be commonly asked in some context, and pertaining to a particular topic. "FAQ" is usually pronounced as an initialism rather than an acronym, but an acronym form does exist. Since the acronym FAQ originated in textual...

    , Readme
    README
    A readme file contains information about other files in a directory or archive and is commonly distributed with computer software. Such a file is usually a text file called README.TXT, README.1ST, READ.ME, or simply README, although some Microsoft Windows software may occasionally include a...

    , release notes
    Release notes
    Release notes are documents that are distributed with software products, often when the product is still in the development or test state...

    , Help
    Online help
    Online help is topic-oriented, procedural or reference information delivered through computer software. It is a form of user assistance. Most online help is designed to give assistance in the use of a software application or operating system, but can also be used to present information on a broad...

    , for each role
    • User
      User (computing)
      A user is an agent, either a human agent or software agent, who uses a computer or network service. A user often has a user account and is identified by a username , screen name , nickname , or handle, which is derived from the identical Citizen's Band radio term.Users are...

    • Administrator
      System administrator
      A system administrator, IT systems administrator, systems administrator, or sysadmin is a person employed to maintain and operate a computer system and/or network...

    • Manager
      Management
      Management in all business and organizational activities is the act of getting people together to accomplish desired goals and objectives using available resources efficiently and effectively...

    • Buyer
      Buyer
      When someone gets characterised by their role as buyer of certain assets, the term "buyer" gets new meaning:A "buyer" or merchandiser is a person who purchases finished goods, typically for resale, for a firm, government, or organization...

  • Administration and Maintenance
    Software maintenance
    Software Maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes....

     policy, what should be backed-up, checked, configured, ...
  • Installers
  • Migration
    • Upgrade from previous installations
    • Upgrade from competitor's installations
  • Training
    Training
    The term training refers to the acquisition of knowledge, skills, and competencies as a result of the teaching of vocational or practical skills and knowledge that relate to specific useful competencies. It forms the core of apprenticeships and provides the backbone of content at institutes of...

     materials, for each role
    • User
      User (computing)
      A user is an agent, either a human agent or software agent, who uses a computer or network service. A user often has a user account and is identified by a username , screen name , nickname , or handle, which is derived from the identical Citizen's Band radio term.Users are...

    • Administrator
    • Manager
      Management
      Management in all business and organizational activities is the act of getting people together to accomplish desired goals and objectives using available resources efficiently and effectively...

    • Buyer
      Buyer
      When someone gets characterised by their role as buyer of certain assets, the term "buyer" gets new meaning:A "buyer" or merchandiser is a person who purchases finished goods, typically for resale, for a firm, government, or organization...

  • Support
    Technical support
    Technical support or tech support refers to a range of services by which enterprises provide assistance to users of technology products such as mobile phones, televisions, computers, software products or other electronic or mechanical goods...

     info for computer support groups.
  • Marketing
    Marketing
    Marketing is the process used to determine what products or services may be of interest to customers, and the strategy to use in sales, communications and business development. It generates the strategy that underlies sales techniques, business communication, and business developments...

     and sales
    Sales
    A sale is the act of selling a product or service in return for money or other compensation. It is an act of completion of a commercial activity....

     materials
    • White papers, explain the technologies used in the applications

Business roles

  • Operations
    Business operations
    Business operations are those ongoing recurring activities involved in the running of a business for the purpose of producing value for the stakeholders...

    • User
      User (computing)
      A user is an agent, either a human agent or software agent, who uses a computer or network service. A user often has a user account and is identified by a username , screen name , nickname , or handle, which is derived from the identical Citizen's Band radio term.Users are...

      s
    • Administrators
    • Managers
      Management
      Management in all business and organizational activities is the act of getting people together to accomplish desired goals and objectives using available resources efficiently and effectively...

    • Buyer
      Buyer
      When someone gets characterised by their role as buyer of certain assets, the term "buyer" gets new meaning:A "buyer" or merchandiser is a person who purchases finished goods, typically for resale, for a firm, government, or organization...

      s
  • Development
    • Analyst
      Business analyst
      A Business Analyst analyzes the organization and design of businesses, government departments, and non-profit organizations; BAs also assess business models and their integration with technology.-Levels:...

      s
    • Programmer
      Programmer
      A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...

      s
    • Tester
      Software testing
      Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

      s
    • Managers
      Management
      Management in all business and organizational activities is the act of getting people together to accomplish desired goals and objectives using available resources efficiently and effectively...

  • Business
    Business
    A business is an organization engaged in the trade of goods, services, or both to consumers. Businesses are predominant in capitalist economies, where most of them are privately owned and administered to earn profit to increase the wealth of their owners. Businesses may also be not-for-profit...

    • Consulting
      Consulting software engineer
      In the field of software engineering, the term consulting software engineer denotes a person who represents the customer's interests with, e.g., the project team actually building a software system, application or software product....

       — customization and installation of applications
    • Sales
      Sales
      A sale is the act of selling a product or service in return for money or other compensation. It is an act of completion of a commercial activity....

    • Marketing
      Marketing
      Marketing is the process used to determine what products or services may be of interest to customers, and the strategy to use in sales, communications and business development. It generates the strategy that underlies sales techniques, business communication, and business developments...

    • Legal
      Law
      Law is a system of rules and guidelines which are enforced through social institutions to govern behavior, wherever possible. It shapes politics, economics and society in numerous ways and serves as a social mediator of relations between people. Contract law regulates everything from buying a bus...

       — contracts, intellectual property rights
    • Support
      Support (technical analysis)
      Support and resistance is a concept in technical analysis that the movement of the price of a security will tend to stop and reverse at certain predetermined price levels.- Support :...

       — helping customers use applications
    • Personnel — hiring and training qualified personnel
    • Finance
      Finance
      "Finance" is often defined simply as the management of money or “funds” management Modern finance, however, is a family of business activity that includes the origination, marketing, and management of cash and money surrogates through a variety of capital accounts, instruments, and markets created...

       — funding new development
  • Academe
    • Educators
    • Researcher
      Researcher
      A researcher is somebody who performs research, the search for knowledge or in general any systematic investigation to establish facts. Researchers can work in academic, industrial, government, or private institutions.-Examples of research institutions:...

      s

Management topics

  • Leadership
    Leadership
    Leadership has been described as the “process of social influence in which one person can enlist the aid and support of others in the accomplishment of a common task". Other in-depth definitions of leadership have also emerged.-Theories:...

    • Coaching
      Coaching
      Coaching, with a professional coach, is the practice of supporting an individual, referred to as the client or mentee or coachee, through the process of achieving a specific personal or professional result....

    • Communication
      Communication
      Communication is the activity of conveying meaningful information. Communication requires a sender, a message, and an intended recipient, although the receiver need not be present or aware of the sender's intent to communicate at the time of communication; thus communication can occur across vast...

    • Listening
    • Motivation
      Motivation
      Motivation is the driving force by which humans achieve their goals. Motivation is said to be intrinsic or extrinsic. The term is generally used for humans but it can also be used to describe the causes for animal behavior as well. This article refers to human motivation...

    • Vision, SEs are good at this
    • Example
      Exemplar
      Exemplar, in the sense developed by philosopher of science Thomas Kuhn, is a well known usage of a scientific theory.According to Kuhn, scientific practice alternates between periods of normal science and extraordinary/revolutionary science...

      , everyone follows a good example best
  • Human resource management
    Human resource management
    Human Resource Management is the management of an organization's employees. While human resource management is sometimes referred to as a "soft" management skill, effective practice within an organization requires a strategic focus to ensure that people resources can facilitate the achievement of...

    • Hiring
      Recruitment
      Recruitment refers to the process of attracting, screening, and selecting qualified people for a job. For some components of the recruitment process, mid- and large-size organizations often retain professional recruiters or outsource some of the process to recruitment agencies.The recruitment...

      , getting people into an organization
    • Training
      Training
      The term training refers to the acquisition of knowledge, skills, and competencies as a result of the teaching of vocational or practical skills and knowledge that relate to specific useful competencies. It forms the core of apprenticeships and provides the backbone of content at institutes of...

    • Evaluation
      Evaluation
      Evaluation is systematic determination of merit, worth, and significance of something or someone using criteria against a set of standards.Evaluation often is used to characterize and appraise subjects of interest in a wide range of human enterprises, including the arts, criminal justice,...

  • Project management
    Project management
    Project management is the discipline of planning, organizing, securing, and managing resources to achieve specific goals. A project is a temporary endeavor with a defined beginning and end , undertaken to meet unique goals and objectives, typically to bring about beneficial change or added value...

    • Goal setting
      Goal setting
      Goal setting involves establishing specific, measurable, achievable, realistic and time-targeted goals. Work on the theory of goal-setting suggests that it's an effective tool for making progress by ensuring that participants in a group with a common goal are clearly aware of what is expected from...

    • Customer interaction (Rethink)
    • Estimation
      Estimation
      Estimation is the calculated approximation of a result which is usable even if input data may be incomplete or uncertain.In statistics,*estimation theory and estimator, for topics involving inferences about probability distributions...

    • Risk management
      Risk management
      Risk management is the identification, assessment, and prioritization of risks followed by coordinated and economical application of resources to minimize, monitor, and control the probability and/or impact of unfortunate events or to maximize the realization of opportunities...

    • Change management
      Change management
      Change management is a structured approach to shifting/transitioning individuals, teams, and organizations from a current state to a desired future state. It is an organizational process aimed at helping employees to accept and embrace changes in their current business environment....

  • Process management
    Process management
    Process management is the ensemble of activities of planning and monitoring the performance of a process. The term usually refers to the management of business processes and manufacturing processes...

    • Software development process
      Software development process
      A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...

      es
    • Metrics
      Software metric
      A software metric is a measure of some property of a piece of software or its specifications. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development...


Business topics

  • Quality programs
    • Malcolm Baldrige National Quality Award
      Malcolm Baldrige National Quality Award
      The Malcolm Baldrige National Quality Award recognizes U.S. organizations in the business, health care, education, and nonprofit sectors for performance excellence. The Baldrige Award is the only formal recognition of the performance excellence of both public and private U.S. organizations given by...

    • Six Sigma
      Six Sigma
      Six Sigma is a business management strategy originally developed by Motorola, USA in 1986. , it is widely used in many sectors of industry.Six Sigma seeks to improve the quality of process outputs by identifying and removing the causes of defects and minimizing variability in manufacturing and...

    • Total Quality Management
      Total Quality Management
      Total quality management or TQM is an integrative philosophy of management for continuously improving the quality of products and processes....

       (TQM)

main qulities

Software engineering profession

  • Software engineering demographics
    Software engineering demographics
    There are many software engineers. Canada, the European Union, Japan, and Australia will probably find corresponding numbers of SE practitioners.- India :There has been a healthy growth in the number of India's IT professionals over the past few years...

  • Software engineering economics
  • CCSE
  • History of software engineering
    History of software engineering
    From its beginnings in the 1940s, writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it...

  • Software engineering professionalism
    Software engineering professionalism
    Software engineering professionalism regards software engineering's struggle to be considered as a profession. It was hampered by the common perception that it's merely the application of computer science...

    • Ethics
      Ethics
      Ethics, also known as moral philosophy, is a branch of philosophy that addresses questions about morality—that is, concepts such as good and evil, right and wrong, virtue and vice, justice and crime, etc.Major branches of ethics include:...

    • Licensing
  • Legal
    • Intellectual property
      Intellectual property
      Intellectual property is a term referring to a number of distinct types of creations of the mind for which a set of exclusive rights are recognized—and the corresponding fields of law...

    • Consumer protection
      Consumer protection
      Consumer protection laws designed to ensure fair trade competition and the free flow of truthful information in the marketplace. The laws are designed to prevent businesses that engage in fraud or specified unfair practices from gaining an advantage over competitors and may provide additional...


Pioneers

Many people made important contributions to SE technologies, practices, or applications.
  • John Backus
    John Backus
    John Warner Backus was an American computer scientist. He directed the team that invented the first widely used high-level programming language and was the inventor of the Backus-Naur form , the almost universally used notation to define formal language syntax.He also did research in...

    : Fortran
    Fortran
    Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

    , first optimizing compiler, BNF
  • Vic Basili: Experience factory.
  • F.L. Bauer: Stack
    Stack (data structure)
    In computer science, a stack is a last in, first out abstract data type and linear data structure. A stack can have any abstract data type as an element, but is characterized by only three fundamental operations: push, pop and stack top. The push operation adds a new item to the top of the stack,...

     principle, popularized the term Software Engineering
  • Kent Beck
    Kent Beck
    Kent Beck is an American software engineer and the creator of the Extreme Programming and Test Driven Development software development methodologies. Beck was one of the 17 original signatories of the Agile Manifesto in 2001....

    : Refactoring
    Refactoring
    Code refactoring is "disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior", undertaken in order to improve some of the nonfunctional attributes of the software....

    , extreme programming
    Extreme Programming
    Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

    , pair programming
    Pair programming
    Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, types in code while the other, the observer , reviews each line of code as it is typed in...

    , test-driven development
    Test-driven development
    Test-driven development is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new...

    .
  • Tim Berners-Lee
    Tim Berners-Lee
    Sir Timothy John "Tim" Berners-Lee, , also known as "TimBL", is a British computer scientist, MIT professor and the inventor of the World Wide Web...

    : World wide web
    World Wide Web
    The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

  • Barry Boehm
    Barry Boehm
    Barry W. Boehm is an American software engineer, TRW Emeritus Professor of Software Engineering at the Computer Science Department of the University of Southern California, and known for his many contributions to software engineering.- Biography :...

    : SE economics, COCOMO
    COCOMO
    **********************************************************************************************The Constructive Cost Model is an algorithmic software cost estimation model developed by Barry W. Boehm...

    , Spiral model
    Spiral model
    The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. Also known as the spiral lifecycle model , it is a systems development method used in information technology...

    .
  • Grady Booch
    Grady Booch
    Grady Booch is an American software engineer. Booch is best known for developing the Unified Modeling Language with Ivar Jacobson and James Rumbaugh. Grady is recognized internationally for his innovative work in software architecture, software engineering, and collaborative development environments...

    : Object-oriented design
    Design
    Design as a noun informally refers to a plan or convention for the construction of an object or a system while “to design” refers to making this plan...

    , UML
    Unified Modeling Language
    Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...

    .
  • Fred Brooks
    Fred Brooks
    Frederick Phillips Brooks, Jr. is a software engineer and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about the process in his seminal book The Mythical Man-Month...

    : Managed System 360 and OS 360. Wrote The Mythical Man-Month
    The Mythical Man-Month
    The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later"...

     and No Silver Bullet
    No Silver Bullet
    "No Silver Bullet — Essence and Accidents of Software Engineering" is a widely discussed paper on software engineering written by Fred Brooks in 1986...

    .
  • Larry Constantine
    Larry Constantine
    Larry LeRoy Constantine is an American software engineer and professor in the Mathematics and Engineering Department at the University of Madeira Portugal, who is considered one of the pioneers of computing...

    : Structured design
    Structured Systems Analysis and Design Method
    Structured systems analysis and design method is a systems approach to the analysis and design of information systems. SSADM was produced for the Central Computer and Telecommunications Agency , a UK government office concerned with the use of technology in government, from 1980 onwards.- Overview...

    , coupling
    Coupling (computer science)
    In computer science, coupling or dependency is the degree to which each program module relies on each one of the other modules.Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion, and vice versa...

    , cohesion
    Cohesion (computer science)
    In computer programming, cohesion is a measure of how strongly-related each piece of functionality expressed by the source code of a software module is...

  • Edsger Dijkstra
    Edsger Dijkstra
    Edsger Wybe Dijkstra ; ) was a Dutch computer scientist. He received the 1972 Turing Award for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000.Shortly before his...

    : Wrote Notes on Structured Programming, A Discipline of Programming and Go To Statement Considered Harmful, algorithms, formal methods
    Formal methods
    In computer science and software engineering, formal methods are a particular kind of mathematically-based techniques for the specification, development and verification of software and hardware systems...

    , pedagogy
    Pedagogy
    Pedagogy is the study of being a teacher or the process of teaching. The term generally refers to strategies of instruction, or a style of instruction....

    .
  • Michael Fagan
    Fagan inspection
    Fagan inspection refers to a structured process of trying to find defects in development documents such as programming code, specifications, designs and others during various phases of the software development process...

    : Software inspection
    Software inspection
    Inspection in software engineering, refers to peer review of any work product by trained individuals who look for defects using a well defined process...

    .
  • Tom Gilb
    Tom Gilb
    Tom Gilb is an American systems engineer, consultant, and author, known for the development of software metric, software inspection, and evolutionary processes.- Biography :...

    : Software metric
    Software metric
    A software metric is a measure of some property of a piece of software or its specifications. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development...

    , Software inspection
    Software inspection
    Inspection in software engineering, refers to peer review of any work product by trained individuals who look for defects using a well defined process...

    , Evolutionary processes.
  • Grace Hopper
    Grace Hopper
    Rear Admiral Grace Murray Hopper was an American computer scientist and United States Navy officer. A pioneer in the field, she was one of the first programmers of the Harvard Mark I computer, and developed the first compiler for a computer programming language...

    : The first compiler (Mark 1), COBOL
    COBOL
    COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....

    , Nanosecond
    Nanosecond
    A nanosecond is one billionth of a second . One nanosecond is to one second as one second is to 31.7 years.The word nanosecond is formed by the prefix nano and the unit second. Its symbol is ns....

    s.
  • Watts Humphrey
    Watts Humphrey
    Watts S. Humphrey was an American software engineer, key thinker in the discipline of software engineering, and was often called the "Father of Software quality".- Biography :...

    : Capability Maturity Model
    Capability Maturity Model
    The Capability Maturity Model is a development model that was created after study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. This model became the foundation from which CMU created the Software Engineering Institute...

    , Personal Software Process
    Personal Software Process
    The Personal Software Process is a structured software development process that is intended to help software engineers understand and improve their performance, by using a "disciplined, data-driven procedure"...

    , fellow of the Software Engineering Institute
    Software Engineering Institute
    The Carnegie Mellon Software Engineering Institute is a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. SEI also has offices in Arlington, Virginia, and Frankfurt, Germany. The SEI operates...

    .
  • Jean Ichbiah
    Jean Ichbiah
    Jean David Ichbiah was a French-born computer scientist and the chief designer of Ada, a general-purpose, strongly typed programming language with certified validated compilers....

    : Ada
  • Michael A. Jackson
    Michael A. Jackson
    Michael Anthony Jackson is a British computer scientist, and independent computing consultant in London, England. He is also part-time researcher at AT&T Research, Florham Park, NJ, U.S., and visiting research professor at the Open University in the UK.- Biography :Jackson was educated at Harrow...

    : Jackson Structured Programming
    Jackson Structured Programming
    Jackson Structured Programming or JSP is a method for structured programming based on correspondences between data stream structure and program structure...

    , Jackson System Development
    Jackson System Development
    Jackson System Development is a linear software development methodology developed by Michael A. Jackson and John Cameron in the 1980s.- History :...

  • Bill Joy
    Bill Joy
    William Nelson Joy , commonly known as Bill Joy, is an American computer scientist. Joy co-founded Sun Microsystems in 1982 along with Vinod Khosla, Scott McNealy and Andy Bechtolsheim, and served as chief scientist at the company until 2003...

    : Berkeley Unix
    Unix
    Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

    , vi
    Vi
    vi is a screen-oriented text editor originally created for the Unix operating system. The portable subset of the behavior of vi and programs based on it, and the ex editor language supported within these programs, is described by the Single Unix Specification and POSIX.The original code for vi...

    , Java.
  • Brian Kernighan
    Brian Kernighan
    Brian Wilson Kernighan is a Canadian computer scientist who worked at Bell Labs alongside Unix creators Ken Thompson and Dennis Ritchie and contributed to the development of Unix. He is also coauthor of the AWK and AMPL programming languages. The 'K' of K&R C and the 'K' in AWK both stand for...

    : C and Unix.
  • Donald Knuth
    Donald Knuth
    Donald Ervin Knuth is a computer scientist and Professor Emeritus at Stanford University.He is the author of the seminal multi-volume work The Art of Computer Programming. Knuth has been called the "father" of the analysis of algorithms...

    : Wrote The Art of Computer Programming
    The Art of Computer Programming
    The Art of Computer Programming is a comprehensive monograph written by Donald Knuth that covers many kinds of programming algorithms and their analysis....

    , TeX
    TeX
    TeX is a typesetting system designed and mostly written by Donald Knuth and released in 1978. Within the typesetting system, its name is formatted as ....

    , algorithm
    Algorithm
    In mathematics and computer science, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning...

    s, literate programming
    Literate programming
    Literate programming is an approach to programming introduced by Donald Knuth as an alternative to the structured programming paradigm of the 1970s....

  • Bertrand Meyer
    Bertrand Meyer
    Bertrand Meyer is an academic, author, and consultant in the field of computer languages. He created the Eiffel programming language.-Education and academic career:...

    : Design by Contract
    Design by contract
    Design by contract , also known as programming by contract and design-by-contract programming, is an approach to designing computer software...

    , Eiffel programming language
    Eiffel (programming language)
    Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...

    .
  • Peter G. Neumann
    Peter G. Neumann
    Peter G. Neumann is a researcher who has worked on the Multics operating system in the 1960s. He edits the Computer Risks columns for ACM Software Engineering Notes and Communications of the ACM. He founded ACM SIGSOFT and is a Fellow of the ACM, IEEE and AAAS.He studied at Harvard University ,...

    : RISKS Digest
    RISKS Digest
    The RISKS Digest or Forum On Risks to the Public in Computers and Related Systems is an online periodical published since 1985 by the Committee on Computers and Public Policy of the Association for Computing Machinery. The editor is Peter G. Neumann....

    , ACM Sigsoft.
  • David Parnas
    David Parnas
    David Lorge Parnas is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object-oriented programming today. He is also noted for his advocacy of precise documentation.- Biography :Parnas earned...

    : Module design, social responsibility, professionalism.
  • Jef Raskin
    Jef Raskin
    Jef Raskin was an American human-computer interface expert best known for starting the Macintosh project for Apple in the late 1970s.-Early years and education:...

    : Developed the original Macintosh GUI
    Gui
    Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...

  • Dennis Ritchie
    Dennis Ritchie
    Dennis MacAlistair Ritchie , was an American computer scientist who "helped shape the digital era." He created the C programming language and, with long-time colleague Ken Thompson, the UNIX operating system...

    : C
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

     and Unix
    Unix
    Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

    .
  • Winston W. Royce
    Winston W. Royce
    Winston W. Royce was an American computer scientist, director at Lockheed Software Technology Center in Austin, Texas, and one of the leaders in software development in the second half of the 20th century...

    : Waterfall model
    Waterfall model
    The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation and Maintenance.The waterfall...

    .
  • Mary Shaw
    Mary Shaw (computer scientist)
    Mary Shaw is an American software engineer, and the Alan J. Perlis Professor of Computer Science in the School of Computer Science at Carnegie Mellon University, Pittsburgh, United States....

    : Software architecture
    Architecture
    Architecture is both the process and product of planning, designing and construction. Architectural works, in the material form of buildings, are often perceived as cultural and political symbols and as works of art...

    .
  • Richard Stallman
    Richard Stallman
    Richard Matthew Stallman , often shortened to rms,"'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman|first= Richard|date= N.D.|work=Richard Stallman's homepage...

    : Founder of the Free Software Foundation
    Free Software Foundation
    The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...

  • Linus Torvalds
    Linus Torvalds
    Linus Benedict Torvalds is a Finnish software engineer and hacker, best known for having initiated the development of the open source Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator...

    : Linux
    Linux
    Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

     kernel, free software
    Free software
    Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

     / open source
    Open-source software
    Open-source software is computer software that is available in source code form: the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, improve and at times also to distribute the software.Open...

     development.
  • Will Tracz: Reuse, ACM Software Engineering Notes.
  • Gerald Weinberg
    Gerald Weinberg
    Gerald Marvin Weinberg is an American computer scientist, author and teacher of the psychology and anthropology of computer software development.- Biography :Gerald Weinberg was born and raised in Chicago...

    : Wrote The Psychology of Computer Programming.
  • Jeanette Wing: Formal specification
    Formal specification
    In computer science, a formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not how the system should do it...

    s.
  • Ed Yourdon: Structured programming
    Structured programming
    Structured programming is a programming paradigm aimed on improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops - in contrast to using simple tests and jumps such as the goto statement which could...

    , wrote The Decline and Fall of the American Programmer
    Decline and Fall of the American Programmer
    Decline and Fall of the American Programmer is a book written by Edward Yourdon in 1992. It was addressed to American programmers and software organizations of the 1990s, warning that they were about to be driven out of business by programmers in other countries who could produce software more...

    .


See also

Disasters

Software has played a role in many high-profile disasters.
  • Ariane 5 Flight 501
    Ariane 5 Flight 501
    Cluster was a constellation of four European Space Agency spacecraft which were launched on the maiden flight of the Ariane 5 rocket, Flight 501, and subsequently lost when that rocket failed to achieve orbit. The launch, which took place on Tuesday, June 4, 1996, ended in failure due to an error...

  • Mars probe
    Mars Climate Orbiter
    The Mars Climate Orbiter was a 338 kilogram robotic space probe launched by NASA on December 11, 1998 to study the Martian climate, atmosphere, surface changes and to act as the communications relay in the Mars Surveyor '98 program, for Mars Polar Lander...

  • Denver International Airport
    Denver International Airport
    Denver International Airport , often referred to as DIA, is an airport in Denver, Colorado. By land size, at , it is the largest international airport in the United States, and the third largest international airport in the world after King Fahd International Airport and Montréal-Mirabel...

  • TAURUS
    TAURUS (share trading)
    Taurus was a program that set out to transfer the London Stock Exchange from paper communication to an automated system...

     — UK share settlement
    Settlement (finance)
    Settlement of securities is a business process whereby securities or interests in securities are delivered, usually against payment of money, to fulfill contractual obligations, such as those arising under securities trades....

     system and dematerialised central share depository.
  • Therac-25
    Therac-25
    The Therac-25 was a radiation therapy machine produced by Atomic Energy of Canada Limited after the Therac-6 and Therac-20 units ....

     — A radiation therapy machine responsible for six overdoses due to faulty software.
  • Airbus A320
    Airbus A320
    The Airbus A320 family is a family of short- to medium-range, narrow-body, commercial passenger jet airliners manufactured by Airbus Industrie.Airbus was originally a consortium of European aerospace companies, and is now fully owned by EADS. Airbus's name has been Airbus SAS since 2001...

     — The Airbus A320
    Airbus A320
    The Airbus A320 family is a family of short- to medium-range, narrow-body, commercial passenger jet airliners manufactured by Airbus Industrie.Airbus was originally a consortium of European aerospace companies, and is now fully owned by EADS. Airbus's name has been Airbus SAS since 2001...

    , while was controversial in software engineering circles, being the first civilian Fly-by-wire
    Fly-by-wire
    Fly-by-wire is a system that replaces the conventional manual flight controls of an aircraft with an electronic interface. The movements of flight controls are converted to electronic signals transmitted by wires , and flight control computers determine how to move the actuators at each control...

     aircraft. In the Airbus flight control systems, the computer has the final say on all decisions, meaning the safety of passengers depends upon the accuracy of the software specification, and the competence of the engineering teams producing the (multiple, independent) software stacks. The Strasbourg A320 crash of Jan 21, 1992 is partially related to software in that poor user interface design was a contributing factor.
  • Failure at Dharan — Patriot Missile clock issue.

Notable publications

  • About Face: The Essentials of User Interface Design by Alan Cooper
    Alan Cooper
    Alan Cooper is known for his role in humanizing technology through his groundbreaking work in software design. Widely recognized as the “Father of Visual Basic," Cooper is the author of the books, About Face 3: The Essentials of Interaction Design and The Inmates Are Running the Asylum: Why...

    , about user interface design. ISBN 0-7645-2641-3
  • The Capability Maturity Model by Watts Humphrey
    Watts Humphrey
    Watts S. Humphrey was an American software engineer, key thinker in the discipline of software engineering, and was often called the "Father of Software quality".- Biography :...

    . Written for the Software Engineering Institute
    Software Engineering Institute
    The Carnegie Mellon Software Engineering Institute is a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. SEI also has offices in Arlington, Virginia, and Frankfurt, Germany. The SEI operates...

    , emphasizing management and process. (See Managing the Software Process ISBN 0-201-18095-2)
  • The Cathedral and the Bazaar
    The Cathedral and the Bazaar
    The Cathedral and the Bazaar is an essay by Eric S. Raymond on software engineering methods, based on his observations of the Linux kernel development process and his experiences managing an open source project, fetchmail. It examines the struggle between top-down and bottom-up design...

     by Eric Raymond
    Eric S. Raymond
    Eric Steven Raymond , often referred to as ESR, is an American computer programmer, author and open source software advocate. After the 1997 publication of The Cathedral and the Bazaar, Raymond was for a number of years frequently quoted as an unofficial spokesman for the open source movement...

     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. ISBN 0-13-191958-X
  • Design Patterns by Erich Gamma
    Erich Gamma
    Erich Gamma is Swiss computer scientist and co-author of the influential Software engineering textbook, Design Patterns: Elements of Reusable Object-Oriented Software. He co-wrote the JUnit software testing framework with Kent Beck and led the design of the Eclipse platform's Java Development Tools...

    , Richard Helm, Ralph Johnson, and John Vlissides
    John Vlissides
    John Matthew Vlissides was a software scientist known mainly as one of the four authors of the book Design Patterns: Elements of Reusable Object-Oriented Software...

    . ISBN 0-201-63361-2
  • Extreme Programming Explained by Kent Beck
    Kent Beck
    Kent Beck is an American software engineer and the creator of the Extreme Programming and Test Driven Development software development methodologies. Beck was one of the 17 original signatories of the Agile Manifesto in 2001....

     ISBN 0-321-27865-8
  • "Go To Statement Considered Harmful" by Edsger Dijkstra
    Edsger Dijkstra
    Edsger Wybe Dijkstra ; ) was a Dutch computer scientist. He received the 1972 Turing Award for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000.Shortly before his...

    .
  • Internet, Innovation and Open Source:Actors in the Network — First Monday
    First Monday
    First Monday was a short-lived U.S. television midseason replacement drama centered on the U.S. Supreme Court. Like another 2002 series, "The Court," it was inspired by the prominent role the Supreme Court played in settling the 2000 presidential election...

     article by Ilkka Tuomi
    Ilkka Tuomi
    Ilkka Tuomi , a native of Finland, is noted for writings on the subject of the Internet.-Works:Ilkka Tuomi has written books, including Networks of Innovation: Change and Meaning in the Age of the Internet which develops theory of open innovation based on analysis of Internet-related innovations...

     (2000) source
  • The Mythical Man-Month
    The Mythical Man-Month
    The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later"...

     by Fred Brooks
    Fred Brooks
    Frederick Phillips Brooks, Jr. is a software engineer and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about the process in his seminal book The Mythical Man-Month...

    , about project management. ISBN 0-201-83595-9
  • Object-oriented Analysis and Design by Grady Booch
    Grady Booch
    Grady Booch is an American software engineer. Booch is best known for developing the Unified Modeling Language with Ivar Jacobson and James Rumbaugh. Grady is recognized internationally for his innovative work in software architecture, software engineering, and collaborative development environments...

    . ISBN 0-8053-5340-2
  • Peopleware
    Peopleware
    Peopleware — Productive Projects and Teams is a popular 1987 book on Peopleware, written by software consultants Tom DeMarco and Timothy Lister, on the inside world of software development. It examines the conflicts between individual work perspective and corporate ideology...

     by Tom DeMarco
    Tom DeMarco
    Tom DeMarco is an American software engineer, author, teacher and speaker on software engineering topics. He is known as one of the developers of Structured analysis in the 1980s.- Biography :...

     and Tim Lister. ISBN 0-932633-43-9
  • The pragmatic engineer versus the scientific designer by E. W. Dijkstra https://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD690.html
  • Principles of Software Engineering Management by Tom Gilb
    Tom Gilb
    Tom Gilb is an American systems engineer, consultant, and author, known for the development of software metric, software inspection, and evolutionary processes.- Biography :...

     about evolutionary processes. ISBN 0-201-19246-2
  • The Psychology of Computer Programming by Gerald Weinberg
    Gerald Weinberg
    Gerald Marvin Weinberg is an American computer scientist, author and teacher of the psychology and anthropology of computer software development.- Biography :Gerald Weinberg was born and raised in Chicago...

    . Written as an independent consultant, partly about his years at IBM. ISBN 0-932633-42-0
  • Refactoring: Improving the Design of Existing Code by Martin Fowler
    Martin Fowler
    -Online presentations:* at RailsConf 2006* at JAOO 2006* at QCon London 2007 * at QCon London 2008 * at ThoughtWorks Quarterly Technology Briefing, October 2008...

    , Kent Beck
    Kent Beck
    Kent Beck is an American software engineer and the creator of the Extreme Programming and Test Driven Development software development methodologies. Beck was one of the 17 original signatories of the Agile Manifesto in 2001....

    , John Brant, William Opdyke
    William Opdyke
    William F. Opdyke is a computer scientist. His 1992 Ph.D. thesis from the University of Illinois at Urbana–Champaign, Refactoring Object-Oriented Frameworks, was the first in-depth study of code refactoring as a software engineering technique...

    , and Don Roberts. ISBN 0-201-48567-2
  • The Pragmatic Programmer: from journeyman to master by Andrew Hunt
    Andy Hunt (author)
    Andy Hunt is a writer of books on software development. Hunt co-authored The Pragmatic Programmer, six other books and many articles,...

    , and David Thomas
    Dave Thomas (programmer)
    Dave Thomas is a computer programmer and author/editor. He has written about Ruby.Dave and partner Andy Hunt wrote The Pragmatic Programmer and run The Pragmatic Bookshelf publishing company.Dave Thomas lives in Flower Mound, Texas...

    . ISBN 0-201-61622-X


See also:
  • Important publications in software engineering in CS.

"Software engineering" in different languages

  • In Arabic , software engineering is called handast albrmjeyat (هندسة البرمجيات).
  • In Catalan
    Catalan language
    Catalan is a Romance language, the national and only official language of Andorra and a co-official language in the Spanish autonomous communities of Catalonia, the Balearic Islands and Valencian Community, where it is known as Valencian , as well as in the city of Alghero, on the Italian island...

    , software engineering is called enginyeria del software.
  • In Chinese
    Chinese language
    The Chinese language is a language or language family consisting of varieties which are mutually intelligible to varying degrees. Originally the indigenous languages spoken by the Han Chinese in China, it forms one of the branches of Sino-Tibetan family of languages...

    , software engineering is called ruǎnjiàn gōngchéng(软件工程 软件工程)
  • In Danish
    Danish language
    Danish is a North Germanic language spoken by around six million people, principally in the country of Denmark. It is also spoken by 50,000 Germans of Danish ethnicity in the northern parts of Schleswig-Holstein, Germany, where it holds the status of minority language...

    , software engineering is called Software ingeniør.
  • In French
    French language
    French is a Romance language spoken as a first language in France, the Romandy region in Switzerland, Wallonia and Brussels in Belgium, Monaco, the regions of Quebec and Acadia in Canada, and by various communities elsewhere. Second-language speakers of French are distributed throughout many parts...

    , software engineering is called Génie logiciel.
  • In Persian
    Persian language
    Persian is an Iranian language within the Indo-Iranian branch of the Indo-European languages. It is primarily spoken in Iran, Afghanistan, Tajikistan and countries which historically came under Persian influence...

    , software engineering is called مهندسی نرم‌افزار.
  • In German
    German language
    German is a West Germanic language, related to and classified alongside English and Dutch. With an estimated 90 – 98 million native speakers, German is one of the world's major languages and is the most widely-spoken first language in the European Union....

    , software engineering is called Softwaretechnik.
  • In Hebrew
    Hebrew language
    Hebrew is a Semitic language of the Afroasiatic language family. Culturally, is it considered by Jews and other religious groups as the language of the Jewish people, though other Jewish languages had originated among diaspora Jews, and the Hebrew language is also used by non-Jewish groups, such...

    , software engineering is called הנדסת תוכנה.
  • In Icelandic
    Icelandic language
    Icelandic is a North Germanic language, the main language of Iceland. Its closest relative is Faroese.Icelandic is an Indo-European language belonging to the North Germanic or Nordic branch of the Germanic languages. Historically, it was the westernmost of the Indo-European languages prior to the...

    , software engineering is called Hugbúnaðarverkfræði.
  • In Italian
    Italian language
    Italian is a Romance language spoken mainly in Europe: Italy, Switzerland, San Marino, Vatican City, by minorities in Malta, Monaco, Croatia, Slovenia, France, Libya, Eritrea, and Somalia, and by immigrant communities in the Americas and Australia...

    , software engineering is called Ingegneria del software,
  • In Korean
    Korean language
    Korean is the official language of the country Korea, in both South and North. It is also one of the two official languages in the Yanbian Korean Autonomous Prefecture in People's Republic of China. There are about 78 million Korean speakers worldwide. In the 15th century, a national writing...

    , software engineering is called 소프트웨어 공학,
  • In Norwegian
    Norwegian language
    Norwegian is a North Germanic language spoken primarily in Norway, where it is the official language. Together with Swedish and Danish, Norwegian forms a continuum of more or less mutually intelligible local and regional variants .These Scandinavian languages together with the Faroese language...

    , software engineering is called Programvareutvikling.
  • In Polish
    Polish language
    Polish is a language of the Lechitic subgroup of West Slavic languages, used throughout Poland and by Polish minorities in other countries...

    , software engineering is called Inżynieria oprogramowania.
  • In Portuguese
    Portuguese language
    Portuguese is a Romance language that arose in the medieval Kingdom of Galicia, nowadays Galicia and Northern Portugal. The southern part of the Kingdom of Galicia became independent as the County of Portugal in 1095...

    , software engineering is called Engenharia de software,
  • In Spanish
    Spanish language
    Spanish , also known as Castilian , is a Romance language in the Ibero-Romance group that evolved from several languages and dialects in central-northern Iberia around the 9th century and gradually spread with the expansion of the Kingdom of Castile into central and southern Iberia during the...

    , software engineering is called Ingeniería del software,
  • In Turkish
    Turkish language
    Turkish is a language spoken as a native language by over 83 million people worldwide, making it the most commonly spoken of the Turkic languages. Its speakers are located predominantly in Turkey and Northern Cyprus with smaller groups in Iraq, Greece, Bulgaria, the Republic of Macedonia, Kosovo,...

    , software engineering is called yazılım mühendisliği.
  • In Urdu
    Urdu
    Urdu is a register of the Hindustani language that is identified with Muslims in South Asia. It belongs to the Indo-European family. Urdu is the national language and lingua franca of Pakistan. It is also widely spoken in some regions of India, where it is one of the 22 scheduled languages and an...

    , software engineering is called سافٹ ویئر انجینئرنگ.
  • In Greek
    Greek language
    Greek is an independent branch of the Indo-European family of languages. Native to the southern Balkans, it has the longest documented history of any Indo-European language, spanning 34 centuries of written records. Its writing system has been the Greek alphabet for the majority of its history;...

    , software engineering is called τεχνολογία λογισμικού.

Related fields

  • Information technology
    Information technology
    Information technology is the acquisition, processing, storage and dissemination of vocal, pictorial, textual and numerical information by a microelectronics-based combination of computing and telecommunications...

  • Traditional engineering
    Engineering
    Engineering is the discipline, art, skill and profession of acquiring and applying scientific, mathematical, economic, social, and practical knowledge, in order to design and build structures, machines, devices, systems, materials and processes that safely realize improvements to the lives of...

    • Computer engineering
      Computer engineering
      Computer engineering, also called computer systems engineering, is a discipline that integrates several fields of electrical engineering and computer science required to develop computer systems. Computer engineers usually have training in electronic engineering, software design, and...

    • Electrical engineering
      Electrical engineering
      Electrical engineering is a field of engineering that generally deals with the study and application of electricity, electronics and electromagnetism. The field first became an identifiable occupation in the late nineteenth century after commercialization of the electric telegraph and electrical...

  • Software engineering
    • Domain engineering
      Domain engineering
      Domain engineering, also called product line engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse. A key idea in systematic software reuse is the application domain, a software area that contains...

    • Information engineering
      Information engineering
      Information engineering or information engineering methodology in software engineering is an approach to designing and developing information systems.-Overview:...

    • Knowledge engineering
      Knowledge engineering
      Knowledge engineering was defined in 1983 by Edward Feigenbaum, and Pamela McCorduck as follows:At present, it refers to the building, maintaining and development of knowledge-based systems...

    • User interface engineering
    • Web engineering
      Web engineering
      The World Wide Web has become a major delivery platform for a variety of complex and sophisticated enterprise applications in several domains. In addition to their inherent multifaceted functionality, these web applications exhibit complex behavior and place some unique demands on their usability,...

  • Arts
    ARts
    aRts, which stands for analog Real time synthesizer, is an audio framework that is no longer under development. It is best known for previously being used in KDE to simulate an analog synthesizer....

     and Science
    Science
    Science is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe...

    s
    • Mathematics
      Mathematics
      Mathematics is the study of quantity, space, structure, and change. Mathematicians seek out patterns and formulate new conjectures. Mathematicians resolve the truth or falsity of conjectures by mathematical proofs, which are arguments sufficient to convince other mathematicians of their validity...

    • Computer science
      Computer science
      Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...

    • Information science
      Information science
      -Introduction:Information science is an interdisciplinary science primarily concerned with the analysis, collection, classification, manipulation, storage, retrieval and dissemination of information...

  • Application software
    • Information systems
      Information systems
      Information Systems is an academic/professional discipline bridging the business field and the well-defined computer science field that is evolving toward a new scientific area of study...

  • Programming

See also

  • List of basic software engineering topics
  • SWEBOK Software engineering body of knowledge
  • CCSE Computing curriculum for software engineering
  • Computer terms etymology, the origins of computer terms
  • Complexity
    Complexity
    In general usage, complexity tends to be used to characterize something with many parts in intricate arrangement. The study of these complex linkages is the main goal of complex systems theory. In science there are at this time a number of approaches to characterizing complexity, many of which are...

     or scaling
  • Software brittleness problem
    Software brittleness problem
    The software brittleness problem is a consequence of the well-known fact that computers carry out commands, rather than exhibiting initiative.A computer system with true initiative would have large amounts of practical knowledge about the real world...

  • Second system syndrome
  • optimization
    Optimization (computer science)
    In computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources...

  • Source code escrow
    Source code escrow
    Source code escrow or source code repository is the deposit of the source code of software with a third party escrow agent. Escrow is typically requested by a party licensing software , to ensure maintenance of the software...

  • Feature interaction problem
    Feature interaction problem
    Feature interaction is a software engineering concept. It occurs when the integration of two features would modify the behavior of one or both features....

  • Certification (software engineering)

External links


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK