Table of Contents
List of software development philosophies
This is a list of approaches, styles, methodologies, and philosophies in software development and engineering. It also contains programming paradigms, software development methodology | software development methodologies, software development processes, and single practices, principles, and laws.
Some of the mentioned methods are more relevant to a specific field than another, such as automotive or aerospace.<ref>
</ref><ref>
</ref> The trend towards agile methods in software engineering is noticeable,<ref>
</ref> however the need for improved studies on the subject is also paramount.<ref>
</ref><ref>
</ref> Also note that some of the methods listed might be newer or older or still in use or out-dated, and the research on software design methods is not new and on-going.<ref>
</ref><ref>
</ref><ref>
</ref><ref>
</ref>
==Software development methodologies, guidelines, strategies==<!– Please A-Z –>
Large-scale programming styles
Specification-related paradigms
Comprehensive systems
=== Rules of thumb, laws, guidelines and principles ===<!– Please A-Z –>
- 300 Rules of Thumb and Nuggets of Wisdom (excerpt from Managing the Unmanageable - Rules, Tools, and Insights for Managing Software People and Teams<ref>
</ref> by Mickey W. Mantle, Ron Lichty)
- C++ Core Guidelines<ref>
</ref> (Stroustrup/Sutter) P1 - P13 Philosophy rules
- Command–query separation (CQS)
- DWIM | Do what I mean (DWIM)
- Don't repeat yourself (DRY)
- Law of Demeter, also known as the principle of least knowledge
- Law of conservation of complexity, also known as Tesler's Law
- Robustness principle, also known as Postel's law
- Single source of truth (SSOT)
- Single version of the truth (SVOT)
- SOLID (object-oriented design)
- You aren't gonna need it (YAGNI)
=== Other ===<!– Please A-Z –>
- Davis 201 Principles of Software Development<ref>
</ref>
- Don't Make Me Think (Principles of intuitive navigation and information design)<ref>
</ref>
- The Art of Computer Programming (general computer-science masterpiece by Donald Knuth | Donald E. Knuth)
- The Cathedral and the Bazaar - book comparing top-down vs. bottom-up open-source software
- The Philosophy of Computer Science<ref>
</ref>
- Where's the Theory for Software Engineering?<ref>
</ref>
- The Yo-yo problem
== Programming paradigms ==<!– Please A-Z –>
== Software development methodologies ==<!– Please A-Z –>
- Agile Unified Process (AUP)
- Extreme programming (XP)
- Unified Process (UP)
== Software development processes ==<!– Please A-Z –>
- Bug-driven development (BgDD)
- Domain-driven design (DDD)
- Test-driven development (TDD)
- User-centered design (UCD) (User-Driven Development (UDD))
- Value-driven design (VDD)
== See also ==<!– Please A-Z –>
Further reading
- ISO/IEC/IEEE 26515:2018(E) - ISO/IEC/IEEE International Standard - Systems and software engineering — Developing information for users in an agile environment<ref>
</ref>
Other materials, books, articles, etc.
Category of Software development philosophies | list_of_software_development_philosophies Category of Software development process Category of Methodology Category of Computing-related lists | Computer science
- Snippet from Wikipedia: List of software development philosophies
This is a list of approaches, styles, methodologies, and philosophies in software development and engineering. It also contains programming paradigms, software development methodologies, software development processes, and single practices, principles, and laws.
Some of the mentioned methods are more relevant to a specific field than another, such as automotive or aerospace. The trend towards agile methods in software engineering is noticeable, however the need for improved studies on the subject is also paramount. Also note that some of the methods listed might be newer or older or still in use or out-dated, and the research on software design methods is not new and on-going.