When submitting links to this category, please use a clearer and more specific title than just "Extreme Programming". Examples: "FooSoft''s XP Resources", "FooWorld article on XP", or "Bob Foobar''s XP Talk".
Agile Modeling (AM) is a set of practice-based methodologies for modeling and documenting software-based systems, in a lightweight manner.
On this page, topics are arranged in two groups and levels: 1) Top: issues spanning multiple related methodologies. 2) Bottom: specific methodologies, with their own directory category.
Aspect-oriented (AO) programming is a direct outgrowth of object-oriented programming research done at Xerox PARC (Palo Alto Research Center) from 1972 until the mid-1980s. The purpose of, and need for, AO is to address the crosscutting concerns and information structuring issues that occur in many medium, and all large, non-trivial, computer programs; the sort of problems that require what is called "comb" code: repeating lines of code that are almost identical, but have some small difference in each line.
The Capability Maturity Model (CMM), and revised versions CMM Integration (CMMI), and People CMM (PCMM), are sets of instructions and standards that organizations follow to gain better control over software development processes. They rank software development organizations on a hierarchy of five process maturity levels. Each level ranks the total development environment according to its capability to produce quality software, and has an associated set of standards. Level 1 defines the most immature, or chaotic, process. Level 5 defines the most mature, or highest quality, process. As of 1998, an estimated 75% of software development organizations had only level 1 standards.
Evolutionary Delivery (also known as "Evo") is a development methodology proposed by Tom Gilb in the 1980s. It is characterized by early and frequent delivery, honest scheduling and continuous reassessment of user requirements.
Generative programming is a style of computer programming. Its goals are to use higher abstractions, to improve programmer productivity, program accuracy and reliability. It uses automated source code creation via generic classes, templates, aspects, intentions, and code generators. It is often related to code-reuse methods such as object-oriented and component-oriented programming.
Intentional Programming is a set of concepts to let software source code reflect the precise information, called intention, which programmers have in mind when conceiving their work. By closely matching the level of abstraction at which programmers think, browsing and maintaining programs becomes easier. The concept and term was introduced by computer scientist Charles Simonyi. He was a long-time Microsoft employee, and led a team at Microsoft Research which developed an Integrated Development Environment called IP that demonstrated these concepts. Microsoft stopped work (development) on IP in the early 2000s. Simonyi left Microsoft to continue IP development, and created a firm to do this.
Language Oriented Programming is a style of programming. Rather than solving problems in one general-purpose programming language, a programmer first makes one or more domain-specific programming languages for the problem, and then solves the problem in those languages.
Literate Programming (LP) was invented by Dr. Donald Knuth in the 1980s. It views programming as a mainly literary activity, where the main task is to concentrate on explaining to humans what the computer must do, and the program is a secondary message embedded in a resulting documentation Web. LP raises documentation from being an often neglected afterthought, to becoming the main principle of program organization. This involves using two different languages together: program source code, and a natural human language for documentation.
Modeling language and techniques are used by computer methodologies to create a representation of reality. These models may be used to assist in the explanation of complex structures or processes, concentrating on key and essential features while ignoring irrelevant or confounding detail.
Modeling language can be part of a computer methodology, but a computer methodology includes other elements such as a description of a software development process (activities, artifacts, and actors). A modeling language can be based on a graphical notation or on a set of mathematical equations.
For quicker placement in the directory please follow these Submission Tips:
Title: Name of Organization and/ or Article
Description: This describes the website and should note distinguishing features found on the site.
The pattern movement in programming is about discovering repeating patterns in all areas of software development, documenting them in a pattern language and reusing them. Anti-patterns are ones to avoid. This category contains sites about both. Patterns are often discussed in terms of object-oriented
Refactoring is a technique to restructure code in a disciplined way, and is well suited to tool support, though extant tools are rather basic. Refactoring is common and vital practice in object-oriented programming, Forth programming, and forms a central part of the Extreme Programming methodology.
In secure programming (synonym: defensive programming), the goal is to ensure continuing function of software despite any and all unforeseen use(s). This may be viewed as reducing or eliminating the prospect of Murphy's Law working. It is most valuable when software can be misused accidently or intentionally, to catastrophic effect.
Nothing is assumed: all error states are accounted for and handled. Programmers never assume a given function call or library will work as promised, and so handle it in the code. In contrast, in normal programming practices, many such assumptions are made.
Six Sigma is a quality control methodology used to manage processes, with these goals:
Manage variations that can cause defects, which are defined as unacceptable variation from a mean or target.
Systematically work toward managing variation to eliminate defects.
Deliver high performance, reliability, and value to end customers.
Software Product Line is a program development methodology, which is a subset of product design methodologies called Product Family Engineering, and Product Line Engineering. It is a relatively new method for creating new products.
Product family/line engineering is a means to create an underlying architecture of a product platform, usually by some organization. The architecture is based on commonality and similarity. Product variants can be derived from the basic product family, creating opportunities to reuse and differentiate based on products in the family. It focuses on the process of engineering new products in ways that make it possible to reuse product components and apply variability with reduced costs and time. It is about maximally reusing components and structures.
This category is for structured programming links. Please be sure your submission is about such, or submit it elsewhere. Thank you.
Structured programming was first proposed in about 1970, by Professor Edsger Wybe Dijkstra. It has since become a major methodology, used commonly by most programmers, who may never even have heard the term. While many people believe its main idea was to eliminate the use of unconditional jumps (naked GOTOs, the infamous GOTO statement), Dijkstra states the main idea more generally as: "I now suggest that we confine ourselves to the design and implementation of intellectually manageable programs."
The Rational Unified Process (RUP) is an Internet-based product developed by Rational Software Corp., now an IBM division, to support the Unified Process. The term RUP is commonly used in place of Unified Process. Old name: Rational Objectory Process.
Unified Process, as are other process such as Extreme Programming (XP), is a general framework for software development based on best practices: visual modeling UML, iterative process, and component-based approach. It conforms to the OMG SPEM standard and can be tailored for different needs.