Software Engineering -------------------- [(Up)](../../README.md#topics) | _Wikipedia: [Software engineering](https://en.wikipedia.org/wiki/Software_engineering)_ | _See also: [Formal Specification](../Formal%20Specification/README.md#formal-specification), [Reactive Systems](../Reactive%20Systems/README.md#reactive-systems), [Agile Development](../Agile%20Development/README.md#agile-development)_ - - - - ### Web resources [1968 NATO Software Engineering Conference](https://isthisit.nz/posts/2022/1968-nato-software-engineering-conference/) ★★ [💭](commentary/cpressey.md#1968-nato-software-engineering-conference) [language agnostic - What is the difference between concurrency and parallelism?](https://stackoverflow.com/questions/1050222/what-is-the-difference-between-concurrency-and-parallelism) ★ [Exceptions, error codes and discriminated unions](https://softwareengineering.stackexchange.com/questions/372034/exceptions-error-codes-and-discriminated-unions) ★ [How deep is redundancy on avionics computers?](https://aviation.stackexchange.com/questions/44349/how-deep-is-redundancy-on-avionics-computers) ★ [Is it really possible to decouple the UI from the business logic?](https://softwareengineering.stackexchange.com/questions/423680/is-it-really-possible-to-decouple-the-ui-from-the-business-logic) ★ [Is it typical for there to be no real design prior to someone being assigned a task?](https://softwareengineering.stackexchange.com/questions/411106/is-it-typical-for-there-to-be-no-real-design-prior-to-someone-being-assigned-a-t)) ★ [How do we get a tech team to make a big technical change?](https://stackoverflow.blog/2023/05/10/how-do-we-get-a-tech-team-to-make-a-big-technical-change/) ★ [Classic SE Mistakes by Steve McConnell • Jonathan Cook](https://www.cs.nmsu.edu/~jcook/posts/classic-se-mistakes-mcconnell/) ★★ [💭](commentary/cpressey.md#classic-se-mistakes-by-steve-mcconnell-jonathan-cook) [Making Wrong Code Look Wrong -- Joel on Software](https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/) ★★★ [💭](commentary/cpressey.md#making-wrong-code-look-wrong-joel-on-software) [Things You Should Never Do, Part I -- Joel on Software](https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/) ★★★ [The Twelve-Factor App](https://12factor.net/) ★ [Use One Big Server - Speculative Branches](https://specbranch.com/posts/one-big-server/) ★ [💭](commentary/cpressey.md#use-one-big-server-speculative-branches) [Is there a general solution to the problem of "sudden unexpected bursts of errors" in software?](https://softwareengineering.stackexchange.com/questions/419570/is-there-a-general-solution-to-the-problem-of-sudden-unexpected-bursts-of-error) ★ [Using Kafka as a (CQRS) Eventstore. Good idea?](https://stackoverflow.com/questions/17708489/using-kafka-as-a-cqrs-eventstore-good-idea) ★ [What makes Python more used as an implementation language than the others?](https://softwareengineering.stackexchange.com/questions/27666/what-makes-python-more-used-as-an-implementation-language-than-the-others) ★ [What is database pooling?](https://stackoverflow.com/questions/4041114/what-is-database-pooling#4041136) ★ [How to maintain dependencies shared among microservices?](https://softwareengineering.stackexchange.com/questions/453955/how-to-maintain-dependencies-shared-among-microservices) ★ [How to set up Nginx as a caching reverse proxy? - Server Fault](https://serverfault.com/questions/30705/how-to-set-up-nginx-as-a-caching-reverse-proxy) ★ _(in [Game Development](../Game%20Development/README.md#game-development))_ [What exactly is a softlock?](https://gaming.stackexchange.com/questions/357095/what-exactly-is-a-softlock) ★ _(in [Game Development](../Game%20Development/README.md#game-development))_ [When to carry on with a buggy game state versus terminate the process?](https://gamedev.stackexchange.com/questions/186888/when-to-carry-on-with-a-buggy-game-state-versus-terminate-the-process) ★ _(in [PLDI](../PLDI/README.md#pldi))_ [What blocks Ruby, Python to get Javascript V8 speed?](https://stackoverflow.com/questions/5168718/what-blocks-ruby-python-to-get-javascript-v8-speed) ★ _(in [PLDI](../PLDI/README.md#pldi))_ [Why is JavaScript not compiled to bytecode before sending over the network?](https://softwareengineering.stackexchange.com/questions/402250/why-is-javascript-not-compiled-to-bytecode-before-sending-over-the-network) ★ _(in [Python](../Python/README.md#python))_ [Python Is Middleware](https://www.tundraware.com/Technology/Python-Is-Middleware/) ★ [💭](commentary/cpressey.md#python-is-middleware) ### Papers Programming as Theory Building (online @ [pages.cs.wisc.edu](https://pages.cs.wisc.edu/~remzi/Naur.pdf)) 🏛️ [💭](commentary/cpressey.md#programming-as-theory-building) Why software jewels are rare (online @ [www.yodaiken.com](https://www.yodaiken.com/papers/Why_software_jewels_are_rare.pdf)) ★★★ [💭](commentary/cpressey.md#why-software-jewels-are-rare) Send-Receive Considered Harmful (online @ [dl.acm.org](https://dl.acm.org/doi/10.1145/963778.963780)) ★ [💭](commentary/cpressey.md#send-receive-considered-harmful) Computer Science Education: Where Are the Software Engineers of Tomorrow? (online @ [www.cs.fsu.edu](http://www.cs.fsu.edu/~gaitrosd/classes/CEN4010/Articles/DewarSchonberg.pdf)) ★ [💭](commentary/cpressey.md#computer-science-education-where-are-the-software-engineers-of-tomorrow) Use of Formal Methods at Amazon Web Services (online @ [lamport.azurewebsites.net](https://lamport.azurewebsites.net/tla/formal-methods-amazon.pdf)) ★★★ [💭](commentary/cpressey.md#use-of-formal-methods-at-amazon-web-services) _(in [Model Checking](../Model%20Checking/README.md#model-checking))_ [Direct Model-checking of SysML Models](https://www.scitepress.org/Papers/2021/102563/102563.pdf) ★ [💭](commentary/cpressey.md#direct-model-checking-of-sysml-models) _(in [Reactive Systems](../Reactive%20Systems/README.md#reactive-systems))_ Statecharts (online @ [www.inf.ed.ac.uk](https://www.inf.ed.ac.uk/teaching/courses/seoc/2005_2006/resources/statecharts.pdf)) ★★★ [💭](commentary/cpressey.md#statecharts) _(in [Reactive Systems](../Reactive%20Systems/README.md#reactive-systems))_ State Machines for Event-Driven Systems (online @ [barrgroup.com](https://barrgroup.com/embedded-systems/how-to/state-machines-event-driven-systems)) ★★★ [💭](commentary/cpressey.md#state-machines-for-event-driven-systems) _(in [Reactive Systems](../Reactive%20Systems/README.md#reactive-systems))_ Misunderstandings about state machines (online @ [www.stateworks.com](https://www.stateworks.com/active/download/wagf04-2-state-machine-misunderstandings.pdf)) ★★★ [💭](commentary/cpressey.md#misunderstandings-about-state-machines) ### Books The Mythical Man-Month (online @ [archive.org](https://archive.org/details/MythicalManMonth), [archive.org](https://archive.org/details/book-brooks-1974-the-mythical-man-month-essays-on-software-engineering-2nd-edition)) (borrow with print disabilities @ [archive.org](https://archive.org/details/mythicalmonth00broo), [archive.org](https://archive.org/details/mythicalmanmonth00broo)) ★★★ Object-Oriented Modelling and Design (borrow @ [archive.org](https://archive.org/details/objectorientedmo00rumb)) ★★★ Advanced Programming in the Unix Environment (borrow @ [archive.org](https://archive.org/details/isbn_9789812358813)) (borrow with print disabilities @ [archive.org](https://archive.org/details/advancedprogramm00stev), [archive.org](https://archive.org/details/advancedprogramm0000stev)) 🏛️ _(in [Philosophy](../Philosophy/README.md#philosophy))_ Patterns of Software: Tales from the Software Community (online @ [archive.org](https://archive.org/details/PatternsOfSoftware)) (borrow @ [archive.org](https://archive.org/details/patternsofsoftwa00gabr)) ★★★ [💭](commentary/cpressey.md#patterns-of-software-tales-from-the-software-community) _(in [Reactive Systems](../Reactive%20Systems/README.md#reactive-systems))_ A Practical Introduction To Real-Time Systems For Undergraduate Engineering (online @ [archive.org](https://archive.org/details/real-time_systems)) [💭](commentary/cpressey.md#a-practical-introduction-to-real-time-systems-for-undergraduate-engineering)