This is a list of approaches, styles, methodologies, 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. Software development methodologies, guidelines, strategies Large-scale programming styles Behavior-driven development Design-driven development Domain-driven design Secure by design Test-driven development Acceptance test-driven development Continuous test-driven development Specification by example Data-driven development Data-oriented design Specification-related paradigms Iterative and incremental development Waterfall model Formal methods Comprehensive systems Agile software development Lean software development Lightweight methodology Adaptive software development Extreme programming Feature-driven development ICONIX Kanban (development) Unified Process Rational Unified Process OpenUP Agile Unified Process Rules of thumb, laws, guidelines and principles 300 Rules of Thumb and Nuggets of Wisdom (excerpt from Managing the Unmanageable - Rules, Tools, and Insights for Managing Software People and Teams by Mickey W. Mantle, Ron Lichty) Karpov's 42 Ultimate Question of Programming, Refactoring, and Everything Big ball of mud Brooks's law C++ Core Guidelines (Stroustrup/Sutter) P1 - P13 Philosophy rules Code reuse Command–query separation (CQS) Cowboy coding Do what I mean (DWIM) Don't repeat yourself (DRY) Egoless programming Fail-fast Gall's law General Responsibility Assignment Software Patterns (GRASP) If it ain't broke, don't fix it Inheritance (OOP) KISS principle Law of Demeter, also known as the principle of least knowledge Law of conservation of complexity, also known as Tesler's Law Lehman's laws of software evolution Loose coupling Minimalism (computing) Ninety–ninety rule Open–closed principle Package principles Pareto principle Parkinson's law Principle of least astonishment (POLA) Release early, release often Robustness principle, also known as Postel's law Rule of least power SEMAT Separation of concerns Separation of mechanism and policy Single source of truth (SSOT) Single version of the truth (SVOT) SOLID (object-oriented design) There's more than one way to do it Uniform access principle Unix philosophy Worse is better You aren't gonna need it (YAGNI) Other Davis 201 Principles of Software Development Don't Make Me Think (Principles of intuitive navigation and information design) The Art of Computer