List of software development philosophies
Encyclopedia
This is a list of approaches, styles, and philosophies in software development. It contains also software development processes
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...

, software development methodologies
Software development methodology
A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.- History :...

 and single practices, principles and laws.
  • Agent-oriented programming
    Agent-oriented programming
    Agent-oriented programming is a programming paradigm introduced by Yoav Shoham in 1990 . In contrast to object-oriented programming paradigms where objects have many methods with variable parameters to them, agent-oriented objects typically have just one method, with a single parameter...

  • 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...

  • Agile Unified Process
    Agile Unified Process
    Agile Unified Process is a simplified version of the IBM Rational Unified Process developed by Scott Ambler. It describes a simple, easy to understand approach to developing business application software using agile techniques and concepts yet still remaining true to the RUP...

     (AUP)
  • 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...

     (AOP)
  • Behavior Driven Development
    Behavior driven development
    Behavior-driven development is an agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project...

     (BDD)
  • Big Design Up Front
    Big Design Up Front
    Big Design Up Front is a term for any software development approach in which the program's design is to be completed and perfected before that program's implementation is started...

     (BDUF)
  • Blind Men And Elephant Approach
    Blind Men and an Elephant
    The story of the blind men and an elephant originated in India from where it is widely diffused. It has been used to illustrate a range of truths and fallacies...

     (BMAEA)
  • Brooks's law
  • 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...

     (see also Release early, release often
    Release early, release often
    Release early, release often is a software development philosophy that emphasizes the importance of early and frequent releases in creating a tight feedback loop between developers and testers or users...

     (RERO))
  • Code and fix
  • Cone of Uncertainty
    Cone of Uncertainty
    In project management, the Cone of Uncertainty describes the evolution of the amount of uncertainty during a project. At the beginning of a project, comparatively little is known about the product or work results, and so estimates are subject to large uncertainty...

  • Constructionist design methodology
    Constructionist design methodology
    The Constructionist Design Methodology was developed by artificial intelligence researcher Kristinn R. Thórisson and his students at Columbia University and Reykjavik University for use in the development of cognitive robotics, communicative humanoids and broad AI systems...

     (CDM)
  • Continuous integration
    Continuous integration
    In software engineering, continuous integration implements continuous processes of applying quality control — small pieces of effort, applied frequently...

  • Control table
    Control table
    Control tables are tables that control the program flow or play a major part in program control. There are no rigid rules concerning the structure or content of a control table - its only qualifying attribute is its ability to direct program flow in some way through its 'execution' by an associated...

    s
  • Convention over configuration
    Convention over Configuration
    Convention over configuration is a software design paradigm which seeks to decrease the number of decisions that developers need to make, gaining simplicity, but not necessarily losing flexibility....

  • Conway's Law
    Conway's Law
    Conway's Law is an adage named after computer programmer Melvin Conway, who introduced the idea in 1968:...organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations....

  • Cowboy coding
    Cowboy coding
    Cowboy coding is a term used to describe software development where programmers have autonomy over the development process. This includes control of the project's schedule, languages, algorithms, tools, frameworks and coding style....

  • 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....

  • Dependency injection
    Dependency injection
    Dependency injection is a design pattern in object-oriented computer programming whose purpose is to improve testability of, and simplify deployment of components in very large software systems....

  • Design-driven development
    Design-driven development
    Design Driven Development is an agile-based process for creating innovative requirements to build better solutions. It works closely with SCRUM and Extreme Programming for managing and implementing those requirements...

     (D3)
  • Design Driven Testing (DDT)
  • Domain-Driven Design
    Domain-driven design
    Domain-driven design is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts...

     (DDD)
  • Don't Make Me Think
    Don't Make Me Think
    Don't Make Me Think is a book by Steve Krug about human-computer interaction and web usability. The book's premise is that a good software program or web site should let users accomplish their intended tasks as easily and directly as possible...

     (book by Steve Krug about human computer interaction and web usability
    Web usability
    Web usability is the application of usability in those domains where web browsing can be considered as a general paradigm for constructing a GUI.-General:...

    )
  • Don't repeat yourself
    Don't repeat yourself
    In software engineering, Don't Repeat Yourself is a principle of software development aimed at reducing repetition of information of all kinds, especially useful in multi-tier architectures...

     (DRY) or Duplication is Evil (DIE) or Once and Only Once (OAOO), Single Point of Truth (SPoT), Single Source Of Truth
    Single Source of Truth
    In Information Systems design and theory, as instantiated at the Enterprise Level, Single Source Of Truth refers to the practice of structuring information models and associated schemata such that every data element is stored exactly once...

     (SSOT)
  • Dynamic Systems Development Method
    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...

     (DSDM)
  • Easier to Ask Forgiveness than Permission (EAFP)
  • Evolutionary prototyping
  • Extreme Programming
    Extreme Programming
    Extreme programming is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements...

     (XP)
  • Feature Driven Development
    Feature Driven Development
    Feature-driven development is an iterative and incremental software development process. It is one of a number of Agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are all...

  • Free software license
  • Good Enough For Now (GEFN)
  • General Responsibility Assignment Software Patterns (GRASP)
  • Hollywood Principle
    Hollywood Principle
    In computer programming, the Hollywood principle is stated as "don't call us, we'll call you." It has applications in software engineering; see also implicit invocation for a related architectural principle.-Overview:...

  • Inversion of control
    Inversion of Control
    In software engineering, Inversion of Control is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming....

  • Iterative and incremental development
    Iterative and incremental development
    Iterative and Incremental development is at the liver of a cyclic software development process developed in response to the weaknesses of the waterfall model...

  • Joint application design
    Joint application design
    Joint application design is a process used in the prototyping life cycle area of the Dynamic Systems Development Method to collect business requirements while developing new information systems for a company...

    , aka JAD or "Joint Application Development"
  • Kaizen
    Kaizen
    , Japanese for "improvement", or "change for the better" refers to philosophy or practices that focus upon continuous improvement of processes in manufacturing, engineering, game development, and business management. It has been applied in healthcare, psychotherapy, life-coaching, government,...

  • Kanban
    Kanban (development)
    Kanban is a method for developing products with an emphasis on just-in-time delivery while not overloading the developers. It emphasizes that developers pull work from a queue, and the process, from definition of a task to its delivery to the customer, is displayed for participants to see.Kanban...

  • KISS principle
    KISS principle
    KISS is an acronym for the design principle Keep it simple, Stupid!. Other variations include "keep it simple and stupid", "keep it short and simple", "keep it simple sir", "keep it simple or be stupid" or "keep it simple and straightforward"...

     original (Keep It Simple and Stupid), derogatory (Keep It Simple, Stupid!)
  • Law of Demeter
    Law of Demeter
    The Law of Demeter or Principle of Least Knowledge is a design guideline for developing software, particularly object-oriented programs. In its general form, the LoD is a specific case of loose coupling...

     (LoD)
  • Lean Integration
    Lean Integration
    Lean Integration is a management system that emphasizes creating value for customers, continuous improvement, and eliminating waste as a sustainable data integration and system integration practice. Lean Integration has parallels with other lean disciplines such as Lean Manufacturing, Lean IT, and...

  • Lean software development
    Lean software development
    Lean software development is a translation of Lean manufacturing and Lean IT principles and practices to the software development domain. Adapted from the Toyota Production System, a pro-lean subculture is emerging from within the Agile community....

  • 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....

  • Microsoft Solutions Framework
    Microsoft Solutions Framework
    Microsoft Solutions Framework is a set of principles, models, disciplines, concepts, and guidelines for delivering information technology solutions from Microsoft. MSF is not limited to developing applications only, it is also applicable to other IT projects like deployment, networking or...

     (MSF)
  • Model-driven architecture
    Model-driven architecture
    Model-driven architecture is a software design approach for the development of software systems. It provides a set of guidelines for the structuring of specifications, which are expressed as models. Model-driven architecture is a kind of domain engineering, and supports model-driven engineering of...

     (MDA)
  • MoSCoW Method
    MoSCoW Method
    MoSCoW is a prioritisation technique used in business analysis and software development to reach a common understanding with stakeholders on the importance they place on the delivery of each requirement - also known as MoSCoW prioritisation or MoSCoW analysis.According to A Guide to the Business...

  • Open source
    Open source
    The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

  • Open Unified Process
    OpenUP
    The Open Unified Process is a part of the Eclipse Process Framework , an open source process framework developed within the Eclipse Foundation...

  • Principle of least astonishment
    Principle of least astonishment
    The principle of least astonishment applies to user interface design, software design, and ergonomics. It is alternatively referred to as the rule or law of least astonishment, or the rule or principle of least surprise .The POLA states that, when two elements of an interface conflict, or are...

     (POLA/PLA)
  • Principle of good enough
    Principle of good enough
    The principle of good enough is a rule for software and systems design. It favours quick-and-simple designs over elaborate systems designed by committees. Once the quick-and-simple design is deployed, it can then evolve as needed, driven by user requirements...

     (POGE)
  • Quick-and-dirty
    Quick-and-dirty
    Quick-and-dirty is a term used in reference to anything that is an easy way to implement a workaround or "kludge". Its usage is popular among programmers, who use it to describe a crude solution or programming implementation that is imperfect, inelegant, or otherwise inadequate, but which solves or...

  • Rapid application development
    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...

     (RAD)
  • Rational Unified Process
    IBM 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...

     (RUP)
  • Release early, release often
    Release early, release often
    Release early, release often is a software development philosophy that emphasizes the importance of early and frequent releases in creating a tight feedback loop between developers and testers or users...

     (RERO) - see also 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...

  • Responsibility-driven design
    Responsibility-driven design
    Responsibility-driven design is a design technique in Object-oriented programming. It was proposed by Rebecca Wirfs-Brock and Brian Wilkerson who defined it as follows:Responsibility-driven design is inspired by the client/server model...

     (RDD)
  • Scrum
    Scrum (development)
    Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering....

  • Separation of concerns
    Separation of concerns
    In computer science, separation of concerns is the process of separating a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. Typically, concerns are synonymous with features or behaviors...

     (SoC)
  • Service-oriented modeling
    Service-oriented modeling
    Service-oriented modeling is the discipline of modeling business and software systems, for the purpose of designing and specifying service-oriented business systems within a variety of architectural styles, such as enterprise architecture, application architecture, service-oriented architecture,...

  • Software craftsmanship
    Software Craftsmanship
    Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer...

  • Software System Safety
    Software System Safety
    In software engineering, software system safety optimizes system safety in the design, development, use, and maintenance of software systems and their integration with safety-critical hardware systems in an operational environment.-Overview:...

  • SOLID (object-oriented design)
  • 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...

  • Structured Systems Analysis and Design Method
    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...

     (SSADM)
  • SUMMIT Ascendant (now IBM Rational SUMMIT Ascendant)
  • Team Software Process
    Team Software Process
    In combination with the Personal Software Process , the Team Software Process provides a defined operational process framework that is designed to help teams of managers and engineers organize projects and produce software products that range in size of sizes beyond from small projects of several...

     (TSP)
  • 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...

     (TDD)
  • Two Tracks Unified Process (2TUP)
  • Ubuntu philosophy
  • Unified Process
    Unified Process
    The Unified Software Development Process or Unified Process is a popular iterative and incremental software development process framework. The best-known and extensively documented refinement of the Unified Process is the Rational Unified Process ....

     (UP)
  • Unix philosophy
    Unix philosophy
    The Unix philosophy is a set of cultural norms and philosophical approaches to developing software based on the experience of leading developers of the Unix operating system.-McIlroy: A Quarter Century of Unix:...

  • 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...

  • 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...

  • Wheel and spoke model
    Wheel and spoke model
    The Wheel And Spoke Model is a sequentially parallel software development model. It is essentially a modification of the spiral model that is designed to work with smaller initial teams, which then scale upwards and build value faster. It is best used during the design and prototyping stages of...

  • When it's ready http://blog.mozilla.com/ftr/2008/02/11/when-its-ready/
  • Win-Win Model
  • Worse is better
    Worse is better
    Worse is better, also called the New Jersey style, was conceived by Richard P. Gabriel to describe the dynamics of software acceptance, but it has broader application. The idea is that quality does not necessarily increase with functionality. There is a point where less functionality is a...

     (New Jersey style, as contrasted with the MIT approach)
  • You Ain't Gonna Need It
    You Ain't Gonna Need It
    "You ain't gonna need it" is the principle in extreme programming that programmers should not add functionality until it is necessary...

     (YAGNI)


See also

  • Anti-pattern
    Anti-pattern
    In software engineering, an anti-pattern is a pattern that may be commonly used but is ineffective and/or counterproductive in practice.The term was coined in 1995 by Andrew Koenig,...

  • Design pattern
    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...

  • Programming paradigm
    Programming paradigm
    A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a...

  • Software development methodology
    Software development methodology
    A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.- History :...

  • 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...

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