Overview of and topical guide to software engineering
The followingoutline is provided as an overview of and topical guide to software engineering:
Software engineering – application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance ofsoftware ; that is the application ofengineering tosoftware .[ 1]
The ACM Computing Classification system is a poly-hierarchical ontology that organizes the topics of the field and can be used in semantic web applications and as a de facto standard classification system for the field. The major section "Software and its Engineering" provides an outline and ontology for software engineering.
Software applications [ edit ] Software engineers buildsoftware (applications ,operating systems ,system software ) 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 Analytics Airline reservationsBanking Commerce Compilers Communication Computer graphics Cryptography Databases , support almost every fieldEmbedded systems Both software engineers and traditional engineers write software control systems for embedded products.Engineering All traditional engineering branches use software extensively. Engineers use spreadsheets, more than they ever used calculators. Engineers use custom softwaretools to design, analyze, and simulate their own projects, like bridges and power lines. These projects resemble software in many respects, because the work exists aselectronic documents and goes through analysis,design ,implementation , and testing phases. Software tools for engineers use the tenets of computer science; as well as the tenets of calculus, physics, and chemistry.File Finance Games Information systems , support almost every fieldLIS Management of laboratory dataMIS Management of financial and personnel dataLogistics Manufacturing Music Network Management Networks andInternet Office suites Operating systems Robotics Signal processing , encoding and interpreting signalsSimulation , supports almost every field.Sciences Traffic Control Training Visualization , supports almost every fieldVoting World Wide Web Software engineering topics [ edit ] Programming paradigm, based on a programming language technology[ edit ] Graphical user interfaces [ edit ] Patterns, document many common programming and project management techniques[ edit ] Processes and methodologies [ edit ] Agile Heavyweight Process Models Metamodels A platform combines computer hardware and an operating system. As platforms grow more powerful and less costly, applications and tools grow more widely available.
Computer science topics [ edit ] Skilled software engineers know a lot ofcomputer science including what is possible and impossible, and what is easy and hard for software.
Discrete mathematics is a key foundation ofsoftware engineering.
Other
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 — schemas and data.Documentation , online and/or print,FAQ ,Readme ,release notes ,Help , for each roleAdministration andMaintenance policy, what should be backed-up, checked, configured, ... Installers MigrationUpgrade from previous installations Upgrade from competitor's installations Training materials, for each roleSupport info for computer support groups.Marketing andsales materialsWhite papers , explain the technologies used in the applicationsSoftware engineering profession [ edit ] History of software engineering [ edit ] History of software engineering
Many people made important contributions to SE technologies, practices, or applications.
John Backus :Fortran , first optimizing compiler,BNF Victor Basili : Experience factory.F.L. Bauer :Stack principle, popularized the termSoftware Engineering Kent Beck :Refactoring ,extreme programming ,pair programming ,test-driven development .Tim Berners-Lee :World Wide Web Barry Boehm :SE economics ,COCOMO ,Spiral model .Grady Booch :Object-oriented design ,UML .Fred Brooks : ManagedSystem 360 andOS 360 . WroteThe Mythical Man-Month andNo Silver Bullet .Larry Constantine :Structured design ,coupling ,cohesion Edsger Dijkstra : WroteNotes on Structured Programming ,A Discipline of Programming andGo To Statement Considered Harmful ,algorithms ,formal methods ,pedagogy .Michael Fagan :Software inspection .Tom Gilb :Software metrics ,Software inspection ,Evolutionary Delivery ("Evo") .Adele Goldstine : Wrote the Operators Manual for theENIAC , the first electronic digital computer, and trained some of the firsthuman computers Lois Haibt :FORTRAN , wrote the firstparser Margaret Hamilton : Coined the term "software engineering", developedUniversal Systems Language Mary Jean Harrold :Regression testing , fault localizationGrace Hopper : The first compiler (Mark 1),COBOL ,Nanoseconds .Watts Humphrey :Capability Maturity Model ,Personal Software Process , fellow of theSoftware Engineering Institute .Jean Ichbiah :Ada Michael A. Jackson :Jackson Structured Programming ,Jackson System Development Bill Joy : BerkeleyUnix ,vi ,Java .Alan Kay :Smalltalk Brian Kernighan : C and Unix.Donald Knuth : WroteThe Art of Computer Programming ,TeX ,algorithms ,literate programming Nancy Leveson : System safetyBertrand Meyer :Design by Contract ,Eiffel programming language .Peter G. Neumann :RISKS Digest , ACM Sigsoft.David Parnas : Module design, social responsibility, professionalism.Jef Raskin : Developed the originalMacintosh GUI , authoredThe Humane Interface Dennis Ritchie :C andUnix .Winston W. Royce :Waterfall model .Mary Shaw : Softwarearchitecture .Richard Stallman : Founder of theFree Software Foundation Linus Torvalds :Linux kernel,free software /open source development.Will Tracz : Reuse, ACM Software Engineering Notes.Gerald Weinberg : WroteThe Psychology of Computer Programming .Elaine Weyuker : Software testingJeannette Wing :Formal specifications .Ed Yourdon :Structured programming , wroteThe Decline and Fall of the American Programmer .See also
Notable publications [ edit ] About Face: The Essentials of User Interface Design byAlan Cooper , about user interface design.ISBN 0-7645-2641-3 The Capability Maturity Model byWatts Humphrey . Written for theSoftware Engineering Institute , emphasizing management and process. (SeeManaging the Software Process ISBN 0-201-18095-2 )The Cathedral and the Bazaar byEric Raymond about open source development.The Decline and Fall of the American Programmer byEd Yourdon predicts the end of software development in the U.S.ISBN 0-13-191958-X Design Patterns byErich Gamma ,Richard Helm ,Ralph Johnson , andJohn Vlissides .ISBN 0-201-63361-2 Extreme Programming Explained byKent Beck ISBN 0-321-27865-8 "Go To Statement Considered Harmful " byEdsger Dijkstra . "Internet, Innovation and Open Source:Actors in the Network" —First Monday article byIlkka Tuomi (2000)source Archived 2013-04-10 at theWayback Machine The Mythical Man-Month byFred Brooks , about project management.ISBN 0-201-83595-9 Object-oriented Analysis and Design byGrady Booch .ISBN 0-8053-5340-2 Peopleware byTom DeMarco and Tim Lister.ISBN 0-932633-43-9 The pragmatic engineer versus the scientific designer byE. W. Dijkstra [1] Principles of Software Engineering Management byTom Gilb about evolutionary processes.ISBN 0-201-19246-2 The Psychology of Computer Programming byGerald Weinberg . Written as an independent consultant, partly about his years at IBM.ISBN 0-932633-42-0 Refactoring: Improving the Design of Existing Code byMartin Fowler ,Kent Beck , John Brant,William Opdyke , and Don Roberts.ISBN 0-201-48567-2 The Pragmatic Programmer: from journeyman to master byAndrew Hunt , andDavid Thomas .ISBN 0-201-61622-X Software Engineering Body of Knowledge (SWEBOK) ISO/IEC TR 19759Professional organizations Professionalism Education Standards Government organizations Agile Other organizations Demographics Surveys Other