Misplaced Pages

Extreme programming

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
#941058

110-567: Extreme programming ( XP ) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development , it advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted. Other elements of extreme programming include programming in pairs or doing extensive code review , unit testing of all code, not programming features until they are actually needed ,

220-451: A hypertext system map on the XP website at http://www.extremeprogramming.org c.  1999 . Beck edited a series of books on XP, beginning with his own Extreme Programming Explained (1999, ISBN   0-201-61641-6 ), spreading his ideas to a much larger audience. Authors in the series went through various aspects attending XP and its practices. The series included a book critical of

330-558: A taxonomy , or other forms of ad hoc content organization. Wiki implementations can provide one or more ways to categorize or tag pages to support the maintenance of such index pages, such as a backlink feature which displays all pages that link to a given page. Adding categories or tags to a page makes it easier for other users to find it. Most wikis allow the titles of pages to be searched amongst, and some offer full text search of all stored content. Some wiki communities have established navigational networks between each other using

440-752: A beneficial practice; taken to the extreme, code can be reviewed continuously (i.e. the practice of pair programming ). Kent Beck developed extreme programming during his work on the Chrysler Comprehensive Compensation System (C3) payroll project . Beck became the C3 project leader in March 1996. He began to refine the development methodology used in the project and wrote a book on the methodology ( Extreme Programming Explained , published in October 1999). Chrysler cancelled

550-744: A custom set of steps tailored to the needs of a specific project or group. In some cases, a "sponsor" or "maintenance" organization distributes an official set of documents that describe the process. Specific examples include: Since DSDM in 1994, all of the methodologies on the above list except RUP have been agile methodologies - yet many organizations, especially governments, still use pre-agile processes (often waterfall or similar). Software process and software quality are closely interrelated; some unexpected facets and effects have been observed in practice. Among these, another software development process has been established in open source . The adoption of these best practices known and established processes within

660-416: A day. Extreme programming (XP) adopted the concept of CI and did advocate integrating more than once per day – perhaps as many as tens of times per day. Various methods are acceptable for combining linear and iterative systems development methodologies, with the primary objective of each being to reduce inherent project risk by breaking a project into smaller segments and providing more ease-of-change during

770-524: A design structure that organizes the logic in the system. Good design will avoid many dependencies within a system; this means that changing one part of the system will not affect other parts of the system. Extreme programming initially recognized four values in 1999: communication, simplicity, feedback, and courage. A new value, respect, was added in the second edition of Extreme Programming Explained . Those five values are described below. Building software systems requires communicating system requirements to

880-423: A flat management structure, code simplicity and clarity, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to "extreme" levels. As an example, code reviews are considered

990-423: A given content size is likely to reduce growth; access controls restricting editing to registered users tends to reduce growth; a lack of such access controls tends to fuel new user registration; and that a higher ratio of administrators to regular users has no significant effect on content or population growth. Joint authorship of articles, in which different users participate in correcting, editing, and compiling

1100-534: A group of software development frameworks based on iterative development, where requirements and solutions evolve via collaboration between self-organizing cross-functional teams. The term was coined in the year 2001 when the Agile Manifesto was formulated. Agile software development uses iterative development as a basis but advocates a lighter and more people-centric viewpoint than traditional approaches. Agile processes fundamentally incorporate iteration and

1210-431: A key area many felt had been neglected by other methodologies: deliberate iterative risk analysis, particularly suited to large-scale complex systems. The basic principles are: Shape Up is a software development approach introduced by Basecamp in 2018. It is a set of principles and techniques that Basecamp developed internally to overcome the problem of projects dragging on with no clear end. Its primary target audience

SECTION 10

#1732791826942

1320-465: A lack of an overall design specification or document. Software development methodology In software engineering , a software development process or software development life cycle ( SDLC ) is a process of planning and managing software development . It typically involves dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management . The methodology may include

1430-443: A link to view that specific revision. A diff (short for "difference") feature may be available, which highlights the changes between any two revisions. The edit history view in many wiki implementations will include edit summaries written by users when submitting changes to a page. Similar to the function of a log message in a revision control system, an edit summary is a short piece of text which summarizes and perhaps explains

1540-406: A long period. In addition to using the approach of soft security for protecting themselves, larger wikis may employ sophisticated methods, such as bots that automatically identify and revert vandalism. For example, on Misplaced Pages, the bot ClueBot NG uses machine learning to identify likely harmful changes, and reverts these changes within minutes or even seconds. Disagreements between users over

1650-456: A lot of effort to implement anything else. Courage enables developers to feel comfortable with refactoring their code when necessary. This means reviewing the existing system and modifying it so that future changes can be implemented more easily. Another example of courage is knowing when to throw code away: courage to remove source code that is obsolete, no matter how much effort was used to create that source code. Also, courage means persistence:

1760-491: A page or set of pages to maintain quality. A person willing to maintain pages will be alerted of modifications to them, allowing them to verify the validity of new editions quickly. Such a feature is often called a watchlist . Some wikis also implement patrolled revisions , in which editors with the requisite credentials can mark edits as being legitimate. A flagged revisions system can prevent edits from going live until they have been reviewed. Wikis may allow any person on

1870-426: A page to an older version to rectify a mistake, or counteract a malicious or inappropriate edit to its content. These stores are typically presented for each page in a list, called a "log" or "edit history", available from the page via a link in the interface. The list displays metadata for each revision to the page, such as the time and date of when it was stored, and the name of the person who created it, alongside

1980-439: A page was displayed, any instance of a camel case phrase would be transformed into a link to another page named with the same phrase. While this system made it easy to link to pages, it had the downside of requiring pages to be named in a form deviating from standard spelling, and titles of a single word required abnormally capitalizing one of the letters (e.g. "WiKi" instead of "Wiki"). Some wiki implementations attempt to improve

2090-450: A programmer might be stuck on a complex problem for an entire day, then solve the problem quickly the next day, but only if they are persistent. The respect value includes respect for others as well as self-respect. Programmers should never commit changes that break compilation, that make existing unit-tests fail, or that otherwise delay the work of their peers. Members respect their own work by always striving for high quality and seeking for

2200-416: A rich text editing mode. This is usually implemented, using JavaScript , as an interface which translates formatting instructions chosen from a toolbar into the corresponding wiki markup or HTML. This is generated and submitted to the server transparently , shielding users from the technical detail of markup editing and making it easier for them to change the content of pages. An example of such an interface

2310-500: A series of scripts which operate an existing web server , a standalone application server that runs on one or more web servers, or in the case of personal wikis , run as a standalone application on a single computer. Some wikis use flat file databases to store page content, while others use a relational database , as indexed database access is faster on large wikis, particularly for searching. Wikis can also be created on wiki hosting services (also known as wiki farms ), where

SECTION 20

#1732791826942

2420-422: A single website, but rather to a mass of user-editable pages or sites so that a single website is not "a wiki" but "an instance of wiki". In this concept of wiki federation, in which the same content can be hosted and edited in more than one location in a manner similar to distributed version control , the idea of a single discrete "wiki" no longer made sense. The software which powers a wiki may be implemented as

2530-443: A system called WikiNodes . A WikiNode is a page on a wiki which describes and links to other, related wikis. Some wikis operate a structure of neighbors and delegates , wherein a neighbor wiki is one which discusses similar content or is otherwise of interest, and a delegate wiki is one which has agreed to have certain content delegated to it. WikiNode networks act as webrings which may be navigated from one node to another to find

2640-440: A system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed. The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan

2750-541: A term in natural language could be wrapped in special characters to turn it into a link without modifying it. The concept was given the name in its first implementation, in UseModWiki in February 2001. In that implementation, link terms were wrapped in a double set of square brackets, for example [[Kingdom of France]] . This syntax was adopted by a number of later wiki engines. It is typically possible for users of

2860-452: A traditional engineering approach applied to software engineering. A strict waterfall approach discourages revisiting and revising any prior phase once it is complete. This "inflexibility" in a pure waterfall model has been a source of criticism by supporters of other more "flexible" models. It has been widely blamed for several large-scale government projects running over budget, over time and sometimes failing to deliver on requirements due to

2970-434: A wiki to create links to pages that do not yet exist, as a way to invite the creation of those pages. Such links are usually differentiated visually in some fashion, such as being colored red instead of the default blue, which was the case in the original WikiWikiWeb, or by appearing as a question mark next to the linked words. WikiWikiWeb was the first wiki. Ward Cunningham started developing it in 1994, and installed it on

3080-461: A wiki which addresses a specific subject. The syntax used to create internal hyperlinks varies between wiki implementations. Beginning with the WikiWikiWeb in 1995, most wikis used camel case to name pages, which is when words in a phrase are capitalized and the spaces between them removed. In this system, the phrase "camel case" would be rendered as "CamelCase". In early wiki engines, when

3190-454: A wiki's enforcement of certain rules, such as anti-bias, verifiability, reliable sourcing, and no-original-research policies, could pose legal risks. When defamation occurs on a wiki, theoretically, all users of the wiki can be held liable, because any of them had the ability to remove or amend the defamatory material from the "publication". It remains to be seen whether wikis will be regarded as more akin to an internet service provider , which

3300-534: Is a form of hypertext publication on the internet which is collaboratively edited and managed by its audience directly through a web browser . A typical wiki contains multiple pages that can either be edited by the public or limited to use within an organization for maintaining its internal knowledge base . Wikis are powered by wiki software , also known as wiki engines. Being a form of content management system , these differ from other web-based systems such as blog software or static site generators in that

3410-496: Is central to extreme programming. Extreme programming's approach is that if a little testing can eliminate a few flaws, a lot of testing can eliminate many more flaws. System-wide integration testing was encouraged, initially, as a daily end-of-day activity, for early detection of incompatible interfaces, to reconnect before the separate sections diverged widely from coherent functionality. However, system-wide integration testing has been reduced, to weekly, or less often, depending on

Extreme programming - Misplaced Pages Continue

3520-560: Is deployed, ongoing maintenance and support become crucial to address any issues, enhance performance, and incorporate future enhancements. Regular updates, bug fixes, and security patches are released to keep the software up-to-date and secure. This phase also involves providing technical support to end users and addressing their queries or concerns. Methodologies, processes, and frameworks range from specific prescriptive steps that can be used directly by an organization in day-to-day work, to flexible frameworks that an organization uses to generate

3630-651: Is easy to correct mistakes or harmful changes, rather than attempting to prevent them from happening in the first place. This allows them to be very open while providing a means to verify the validity of recent additions to the body of pages. Most wikis offer a recent changes page which shows recent edits, or a list of edits made within a given time frame. Some wikis can filter the list to remove edits flagged by users as "minor" and automated edits. The version history feature allows harmful changes to be reverted quickly and easily. Some wiki engines provide additional content control, allowing remote monitoring and management of

3740-504: Is not a single wiki but rather a collection of hundreds of wikis, with each one pertaining to a specific language. The English-language Misplaced Pages has the largest collection of articles, standing at 6,916,922 as of November 2024. In their 2001 book The Wiki Way: Quick Collaboration on the Web , Cunningham and co-author Bo Leuf described the essence of the wiki concept: Some wikis will present users with an edit button or link directly on

3850-464: Is remote teams. Shape Up has no estimation and velocity tracking, backlogs, or sprints, unlike waterfall , agile , or scrum . Instead, those concepts are replaced with appetite, betting, and cycles. As of 2022, besides Basecamp, notable organizations that have adopted Shape Up include UserVoice and Block. Other high-level software project methodologies include: Some " process models " are abstract descriptions for evaluating, comparing, and improving

3960-400: Is seen as flowing steadily downwards (like a waterfall) through several phases, typically: The first formal description of the method is often cited as an article published by Winston W. Royce in 1970, although Royce did not use the term "waterfall" in this article. Royce presented this model as an example of a flawed, non-working model. The basic principles are: The waterfall model is

4070-407: Is sometimes also used for wikis that cover not just a city, but a small town or an entire region. Such a wiki contains information about specific instances of things, ideas, people and places. Such highly localized information might be appropriate for a wiki targeted at local viewers, and could include: A study of several hundred wikis in 2008 showed that a relatively high number of administrators for

4180-418: Is sometimes considered a more general term for a category of methodologies and a software development "process" is a particular instance as adopted by a specific organization. For example, many specific software development processes fit the spiral life-cycle model. The field is often considered a subset of the systems development life cycle . The software development methodology framework did not emerge until

4290-478: Is specified, an implied license to read and add content to a wiki may be deemed to exist on the grounds of business necessity and the inherent nature of a wiki. Wikis and their users can be held liable for certain activities that occur on the wiki. If a wiki owner displays indifference and forgoes controls (such as banning copyright infringers) that they could have exercised to stop copyright infringement, they may be deemed to have authorized infringement, especially if

4400-517: Is the VisualEditor in MediaWiki , the wiki engine used by Misplaced Pages. WYSIWYG editors may not provide all the features available in wiki markup, and some users prefer not to use them, so a source editor will often be available simultaneously. Some wiki implementations keep a record of changes made to wiki pages, and may store every version of the page permanently. This allows authors to revert

4510-615: The Internet domain c2.com on March 25, 1995. Cunningham gave it the name after remembering a Honolulu International Airport counter employee telling him to take the " Wiki Wiki Shuttle " bus that runs between the airport's terminals, later observing that "I chose wiki-wiki as an alliterative substitute for 'quick' and thereby avoided naming this stuff quick-web." Cunningham's system was inspired by his having used Apple 's hypertext software HyperCard , which allowed users to create interlinked "stacks" of virtual cards. HyperCard, however,

Extreme programming - Misplaced Pages Continue

4620-546: The United States Court of Appeals for the Seventh Circuit , used to post court rules and allow practitioners to comment and ask questions. The United States Patent and Trademark Office operates Peer-to-Patent , a wiki to allow the public to collaborate on finding prior art relevant to the examination of pending patent applications. Queens , New York has used a wiki to allow citizens to collaborate on

4730-740: The WikiWikiWeb , Memory Alpha , Wikivoyage , and previously Susning.nu , a Swedish-language knowledge base. Medical and health-related wiki examples include Ganfyd , an online collaborative medical reference that is edited by medical professionals and invited non-medical experts. Many wiki communities are private, particularly within enterprises . They are often used as internal documentation for in-house systems and applications. Some companies use wikis to allow customers to help produce software documentation. A study of corporate wiki users found that they could be divided into "synthesizers" and "adders" of content. Synthesizers' frequency of contribution

4840-532: The big design up front approach. Except when contractually required, the waterfall model has been largely superseded by more flexible and versatile methodologies developed specifically for software development. See Criticism of waterfall model . In 1988, Barry Boehm published a formal software system development "spiral model," which combines some key aspects of the waterfall model and rapid prototyping methodologies, in an effort to combine advantages of top-down and bottom-up concepts. It provided emphasis on

4950-491: The server-side software is implemented by the wiki farm owner, and may do so at no charge in exchange for advertisements being displayed on the wiki's pages. Some hosting services offer private, password-protected wikis requiring authentication to access. Free wiki farms generally contain advertising on every page. The four basic types of users who participate in wikis are readers, authors, wiki administrators and system administrators. System administrators are responsible for

5060-407: The 1960s. According to Elliott (2004), the systems development life cycle can be considered to be the oldest formalized methodology framework for building information systems . The main idea of the software development life cycle has been "to pursue the development of information systems in a very deliberate, structured and methodical way, requiring each stage of the life cycle––from the inception of

5170-435: The C3 project in February 2000, after seven years, when Daimler-Benz acquired the company. Ward Cunningham was another major influence on XP. Many extreme-programming practices have been around for some time; the methodology takes " best practices " to extreme levels. For example, the "practice of test-first development, planning and writing tests before each micro-increment" was used as early as NASA's Project Mercury , in

5280-498: The academic community for sharing and dissemination of information across institutional and international boundaries. In those settings, they have been found useful for collaboration on grant writing , strategic planning , departmental documentation, and committee work. In the mid-2000s, the increasing trend among industries toward collaboration placed a heavier impetus upon educators to make students proficient in collaborative work, inspiring even greater interest in wikis being used in

5390-448: The agile methodology. XP describes four basic activities that are performed within the software development process: coding, testing, listening, and designing. Each of those activities is described below. The advocates of XP argue that the only truly important product of the system development process is code – software instructions that a computer can interpret. Without code, there is no working product. Coding can be used to figure out

5500-433: The best design for the solution at hand through refactoring. Adopting the four earlier values leads to respect gained from others in the team. Nobody on the team should feel unappreciated or ignored. This ensures a high level of motivation and encourages loyalty toward the team and toward the goal of the project. This value is dependent upon the other values, and is oriented toward teamwork. The first version of rules for XP

5610-604: The best way to use object technologies, using the payroll systems at Chrysler as the object of research, with Smalltalk as the language and GemStone as the data access layer . Chrysler brought in Kent Beck , a prominent Smalltalk practitioner, to do performance tuning on the system, but his role expanded as he noted several problems with the development process. He took this opportunity to propose and implement some changes in development practices - based on his work with his frequent collaborator, Ward Cunningham . Beck describes

SECTION 50

#1732791826942

5720-426: The change, for example "Corrected grammar" or "Fixed table formatting to not extend past page width". It is not inserted into the article's main text. Traditionally, wikis offer free navigation between their pages via hypertext links in page text, rather than requiring users to follow a formal or structured navigation scheme. Users may also create indexes or table of contents pages, hierarchical categorization via

5830-628: The classroom. Wikis have found some use within the legal profession and within the government. Examples include the Central Intelligence Agency 's Intellipedia , designed to share and collect intelligence assessments , DKosopedia , which was used by the American Civil Liberties Union to assist with review of documents about the internment of detainees in Guantánamo Bay ; and the wiki of

5940-401: The confines of a company is called inner source . Software prototyping is about creating prototypes, i.e. incomplete versions of the software program being developed. The basic principles are: A basic understanding of the fundamental business problem is necessary to avoid solving the wrong problems, but this is true for all software methodologies. "Agile software development" refers to

6050-1107: The content is created without any defined owner or leader. Wikis have little inherent structure, allowing one to emerge according to the needs of the users. Wiki engines usually allow content to be written using a lightweight markup language and sometimes edited with the help of a rich-text editor . There are dozens of different wiki engines in use, both standalone and part of other software, such as bug tracking systems . Some wiki engines are free and open-source , whereas others are proprietary . Some permit control over different functions (levels of access); for example, editing rights may permit changing, adding, or removing material. Others may permit access without enforcing access control. Further rules may be imposed to organize content. In addition to hosting user-authored content, wikis allow those users to interact, hold discussions, and collaborate. There are hundreds of thousands of wikis in use , both public and private, including wikis functioning as knowledge management resources, note-taking tools, community websites , and intranets . Ward Cunningham ,

6160-424: The content or appearance of pages may cause edit wars , where competing users repetitively change a page back to a version that they favor. Some wiki software allows administrators to prevent pages from being editable until a decision has been made on what version of the page would be most appropriate. Some wikis may be subject to external structures of governance which address the behavior of persons with access to

6270-420: The content. Proponents maintain that these issues will be caught and rectified by a wiki's community of users. High editorial standards in medicine and health sciences articles, in which users typically use peer-reviewed journals or university textbooks as sources, have led to the idea of expert-moderated wikis. Wiki implementations retaining and allowing access to specific versions of articles has been useful to

6380-420: The continuous feedback that it provides to successively refine and deliver a software system. The Agile model also includes the following software development processes: Continuous integration is the practice of merging all developer working copies to a shared mainline several times a day. Grady Booch first named and proposed CI in his 1991 method , although he did not advocate integrating several times

6490-400: The cost of changes in requirements by having multiple short development cycles, rather than a long one. In this doctrine, changes are a natural, inescapable and desirable aspect of software-development projects, and should be planned for, instead of attempting to define a stable set of requirements. Extreme programming also introduces a number of basic values, principles and practices on top of

6600-485: The custom software development process involves understanding the client's requirements and objectives. This stage typically involves engaging in thorough discussions and conducting interviews with stakeholders to identify the desired features, functionalities, and overall scope of the software. The development team works closely with the client to analyze existing systems and workflows, determine technical feasibility, and define project milestones. Planning and design: Once

6710-435: The design and planning of a local park. Cornell Law School founded a wiki-based legal dictionary called Wex , whose growth has been hampered by restrictions on who can edit. In academic contexts, wikis have also been used as project collaboration and research support systems. A city wiki or local wiki is a wiki used as a knowledge base and social network for a specific geographical locale. The term city wiki

SECTION 60

#1732791826942

6820-445: The developer of the first wiki software, WikiWikiWeb , originally described wiki as "the simplest online database that could possibly work". " Wiki " (pronounced [wiki] ) is a Hawaiian word meaning "quick". The online encyclopedia project Misplaced Pages is the most popular wiki-based website, as well being one of the internet's most popular websites , having been ranked consistently as such since at least 2007. Misplaced Pages

6930-605: The developers of the system. In formal software development methodologies, this task is accomplished through documentation. Extreme programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, extreme programming favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback. Extreme programming encourages starting with

7040-408: The development of preliminary data models and business process models using structured techniques . In the next stage, requirements are verified using prototyping, eventually to refine the data and process models. These stages are repeated iteratively; further development results in "a combined business requirements and technical design statement to be used for constructing new systems". The term

7150-562: The development process. There are three main variants of incremental development: Rapid application development (RAD) is a software development methodology, which favors iterative development and the rapid construction of prototypes instead of large amounts of up-front planning. The "planning" of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster and makes it easier to change requirements. The rapid development process starts with

7260-412: The display of camel case page titles and links by reinserting spaces and possibly also reverting to lower case, but this simplistic method is not able to correctly present titles of mixed capitalization. For example, " Kingdom of France " as a page title would be written as "KingdomOfFrance", and displayed as "Kingdom Of France". To avoid this problem, the syntax of wiki markup gained free links , wherein

7370-421: The early 1960s. To shorten the total development time, some formal test documents (such as for acceptance testing ) have been developed in parallel with (or shortly before) the software being ready for testing. A NASA independent test group can write the test procedures, based on formal requirements and logical limits, before programmers write the software and integrate it with the hardware. XP takes this concept to

7480-456: The early conception of the methods: The first time I was asked to lead a team, I asked them to do a little bit of the things I thought were sensible, like testing and reviews. The second time there was a lot more on the line. I thought, "Damn the torpedoes, at least this will make a good article," [and] asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else. Beck invited Ron Jeffries to

7590-520: The environment in which software development can take place effectively, and "Rules of Play" which define the minute-by-minute activities and rules within the framework of the Rules of Engagement. Here are some of the rules (incomplete): Coding Testing The principles that form the basis of XP are based on the values just described and are intended to foster decisions in a system development project. The principles are intended to be more concrete than

7700-486: The extreme level, writing automated tests (sometimes inside software modules) which validate the operation of even small sections of software coding, rather than only testing the larger features. Two major influences shaped software development in the 1990s: Rapidly changing requirements demanded shorter product life-cycles , and often clashed with traditional methods of software development. The Chrysler Comprehensive Compensation System (C3) started in order to determine

7810-487: The failure immediately, alerting the developer of the incompatibility of their change with other parts of the system, and the necessity of removing or modifying their change. Under traditional development practices, the absence of an automated, comprehensive unit-test suite meant that such a code change, assumed harmless by the developer, would have been left in place, appearing only during integration testing – or worse, only in production; and determining which code change caused

7920-442: The field, to use other practices. In the second edition of Extreme Programming Explained (November 2004), five years after the first edition, Beck added more values and practices and differentiated between primary and corollary practices. Extreme Programming Explained describes extreme programming as a software-development discipline that organizes people to produce higher-quality software more productively. XP attempts to reduce

8030-584: The finished product, can also cause editors to become tenants in common of the copyright, making it impossible to republish without permission of all co-owners, some of whose identities may be unknown due to pseudonymous or anonymous editing. Some copyright issues can be alleviated through the use of an open content license. Version 2 of the GNU Free Documentation License includes a specific provision for wiki relicensing, and Creative Commons licenses are also popular. When no license

8140-469: The idea to delivery of the final system––to be carried out rigidly and sequentially" within the context of the framework being applied. The main target of this methodology framework in the 1960s was "to develop large scale functional business systems in an age of large scale business conglomerates. Information systems activities revolved around heavy data processing and number crunching routines." Requirements gathering and analysis: The first phase of

8250-405: The installation and maintenance of the wiki engine and the container web server. Wiki administrators maintain content and, through having elevated privileges , are granted additional functions (including, for example, preventing edits to pages, deleting pages, changing users' access rights, or blocking them from editing). Wikis are generally designed with a soft security philosophy in which it

8360-465: The link had their systems infected with the worm. Some wiki engines offer a blacklist feature which prevents users from adding hyperlinks to specific sites that have been placed on the list by the wiki's administrators. The English Misplaced Pages has the largest user base among wikis on the World Wide Web and ranks in the top 10 among all Web sites in terms of traffic. Other large wikis include

8470-557: The most famous wiki site , launched in January 2001 and entering the top ten most popular websites in 2007. In the early 2000s, wikis were increasingly adopted in enterprise as collaborative software. Common uses included project communication, intranets , and documentation, initially for technical users. Some companies use wikis as their collaborative software and as a replacement for static intranets, and some schools and universities use wikis to enhance group learning . On March 15, 2007,

8580-517: The most suitable solution. Coding can also help to communicate thoughts about programming problems. A programmer dealing with a complex programming problem, or finding it hard to explain the solution to fellow programmers, might code it in a simplified manner and use the code to demonstrate what they mean. Code, say the proponents of this position, is always clear and concise and cannot be interpreted in more than one way. Other programmers can give feedback on this code by also coding their thoughts. Testing

8690-445: The new requirements for the next iteration. Extreme programming has been described as having 12 practices, grouped into four areas: The practices in XP have been heavily debated. Proponents of extreme programming claim that by having the on-site customer request changes informally, the process becomes flexible, and saves the cost of formal overhead. Critics of XP claim this can lead to costly rework and project scope creep beyond what

8800-531: The page being viewed. This will open an interface for writing, formatting, and structuring page content. The interface may be a source editor, which is text-based and employs a lightweight markup language (also known as wikitext , wiki markup , or wikicode ), or a visual editor . For example, in a source editor, starting lines of text with asterisks could create a bulleted list . The syntax and features of wiki markup languages for denoting style and structure can vary greatly among implementations . Some allow

8910-461: The planning and design in place, the development team begins the coding process. This phase involves writing , testing, and debugging the software code. Agile methodologies, such as scrum or kanban, are often employed to promote flexibility, collaboration, and iterative development. Regular communication between the development team and the client ensures transparency and enables quick feedback and adjustments. Testing and quality assurance: To ensure

9020-458: The point of view of simplicity, of course one could say that system development doesn't need more than coding, testing and listening. If those activities are performed well, the result should always be a system that works. In practice, this will not work. One can come a long way without designing but at a given time one will get stuck. The system becomes too complex and the dependencies within the system cease to be clear. One can avoid this by creating

9130-560: The practice of end-of-day integration tests for a particular project could be changed to an end-of-week schedule, or simply reduced to testing on mutually agreed dates. Such a more relaxed schedule could avoid people feeling rushed to generate artificial stubs just to pass the end-of-day testing. A less-rigid schedule allows, instead, the development of complex features over a period of several days. Meanwhile, other agile-development practices have not stood still, and as of 2019 XP continues to evolve, assimilating more lessons from experiences in

9240-432: The practices. XP generated significant interest among software communities in the late 1990s and early 2000s, seeing adoption in a number of environments radically different from its origins. The high discipline required by the original practices often went by the wayside, causing some of these practices, such as those thought too rigid, to be deprecated or reduced, or even left unfinished, on individual sites. For example,

9350-423: The pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application. Most modern development processes can be vaguely described as agile . Other methodologies include waterfall , prototyping , iterative and incremental development , spiral development , rapid application development , and extreme programming . A life-cycle "model"

9460-524: The problem, among all the changes made by all the developers during the weeks or even months previous to integration testing, was a formidable task. This is about treating every problem as if its solution were "extremely simple". Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas. The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example,

9570-505: The project to help develop and refine these methods. Jeffries thereafter acted as a coach to instill the practices as habits in the C3 team. Information about the principles and practices behind XP disseminated to the wider world through discussions on the original wiki , Cunningham's WikiWikiWeb . Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see agile software development ). Also, XP concepts have been explained, for several years, using

9680-428: The quality of communication. A simple design with very simple code could be easily understood by most programmers in the team. Within extreme programming, feedback relates to different dimensions of the system development: Feedback is closely related to communication and simplicity. Flaws in the system are easily communicated by writing a unit test that proves a certain piece of code will break. The direct feedback from

9790-467: The requirements are understood, the custom software development team proceeds to create a comprehensive project plan. This plan outlines the development roadmap, including timelines, resource allocation, and deliverables. The software architecture and design are also established during this phase. User interface (UI) and user experience (UX) design elements are considered to ensure the software's usability, intuitiveness, and visual appeal. Development: With

9900-427: The scientific community, by allowing expert peer reviewers to provide links to trusted version of articles which they have analyzed. Trolling and cybervandalism on wikis, where content is changed to something deliberately incorrect or a hoax , offensive material or nonsense is added, or content is maliciously removed, can be a major problem. On larger wiki sites it is possible for such changes to go unnoticed for

10010-459: The simplest solution. Extra functionality can then be added later. The difference between this approach and more conventional system development methods is the focus on designing and coding for the needs of today instead of those of tomorrow, next week, or next month. This is sometimes summed up as the " You aren't gonna need it " (YAGNI) approach. Proponents of XP acknowledge the disadvantage that this can sometimes entail more effort tomorrow to change

10120-405: The software passes the testing phase, it is ready for deployment and implementation. The development team assists the client in setting up the software environment, migrating data if necessary, and configuring the system. User training and documentation are also provided to ensure a smooth transition and enable users to maximize the software's potential. Maintenance and support: After the software

10230-462: The software's reliability, performance, and security, rigorous testing and quality assurance (QA) processes are carried out. Different testing techniques, including unit testing, integration testing, system testing, and user acceptance testing, are employed to identify and rectify any issues or bugs. QA activities aim to validate the software against the predefined requirements, ensuring that it functions as intended. Deployment and implementation: Once

10340-514: The specific process adopted by an organization. A variety of such frameworks have evolved over the years, each with its own recognized strengths and weaknesses. One software development methodology framework is not necessarily suitable for use by all projects. Each of the available methodology frameworks is best suited to specific kinds of projects, based on various technical, organizational, project, and team considerations. Wiki A wiki ( / ˈ w ɪ k i / WI -kee )

10450-424: The stability of the overall interfaces in the system. Programmers must listen to what the customers need the system to do, what " business logic " is needed. They must understand these needs well enough to give the customer feedback about the technical aspects of how the problem might be solved, or cannot be solved. Communication between the customer and programmer is further addressed in the planning game . From

10560-436: The system reacts to the changes made. This includes running not only the unit tests that test the developer's code, but running in addition all unit tests against all the software, using an automated process that can be initiated by a single command. That way, if the developer's changes cause a failure in some other portion of the system that the developer knows little or nothing about, the automated all-unit-test suite will reveal

10670-462: The system tells programmers to recode this part. A customer is able to test the system periodically according to the functional requirements, known as user stories . To quote Kent Beck , "Optimism is an occupational hazard of programming. Feedback is the treatment." Several practices embody courage. One is the commandment to always design and code for today and not for tomorrow. This is an effort to avoid getting bogged down in design and requiring

10780-412: The system that is being developed, and can give feedback and steer the development as needed. With frequent feedback from the customer, a mistaken design decision made by the developer will be noticed and corrected quickly, before the developer spends much time implementing it. Unit tests contribute to the rapid feedback principle. When writing code, running the unit test provides direct feedback as to how

10890-478: The system, for example in academic contexts. As most wikis allow the creation of hyperlinks to other sites and services, the addition of malicious hyperlinks, such as sites infected with malware , can also be a problem. For example, in 2006 a German Misplaced Pages article about the Blaster Worm was edited to include a hyperlink to a malicious website, and users of vulnerable Microsoft Windows systems who followed

11000-437: The system; their claim is that this is more than compensated for by the advantage of not investing in possible future requirements that might change before they become relevant. Coding and designing for uncertain future requirements implies the risk of spending resources on something that might not be needed, while perhaps delaying crucial features. Related to the "communication" value, simplicity in design and coding should improve

11110-683: The use of HTML Tooltip Hypertext Markup Language and CSS Tooltip Cascading Style Sheets , while others prevent the use of these to foster uniformity in appearance. A short section of Alice's Adventures in Wonderland rendered in wiki markup: "I've had nothing yet," Alice replied in an offended tone, "so I can't take more." "You mean you can't take less ," said the Hatter. "It's very easy to take more than nothing." While wiki engines have traditionally offered source editing to users, in recent years some implementations have added

11220-420: The values and more easily translated to guidance in a practical situation. Extreme programming sees feedback as most useful if it is done frequently and promptly. It stresses that minimal delay between an action and its feedback is critical to learning and making changes. Unlike traditional system development methods, contact with the customer occurs in more frequent iterations. The customer has clear insight into

11330-568: The web to edit their content without having to register an account on the site first ( anonymous editing ), or require registration as a condition of participation. On implementations where an administrator is able to restrict editing of a page or group of pages to a specific group of users, they may have the option to prevent anonymous editing while allowing it for registered users. Critics of publicly editable wikis argue that they could be easily tampered with by malicious individuals, or even by well-meaning but unskilled users who introduce errors into

11440-568: The wiki is primarily used to infringe copyrights or obtains a direct financial benefit, such as advertising revenue, from infringing activities. In the United States, wikis may benefit from Section 230 of the Communications Decency Act , which protects sites that engage in " Good Samaritan " policing of harmful material, with no requirement on the quality or quantity of such self-policing. It has also been argued that

11550-414: The word wiki was listed in the online Oxford English Dictionary . In the late 1990s and early 2000s, the word "wiki" was used to refer to both user-editable websites and the software that powers them, and the latter definition is still occasionally in use. By 2014, Ward Cunningham's thinking on the nature of wikis had evolved, leading him to write that the word "wiki" should not be used to refer to

11660-636: Was affected more by their impact on other wiki users, while adders' contribution frequency was affected more by being able to accomplish their immediate work. From a study of thousands of wiki deployments, Jonathan Grudin concluded careful stakeholder analysis and education are crucial to successful wiki deployment. In 2005, the Gartner Group, noting the increasing popularity of wikis, estimated that they would become mainstream collaboration tools in at least 50% of companies by 2009. Wikis can be used for project management . Wikis have also been used in

11770-452: Was first used to describe a software development process introduced by James Martin in 1991. According to Whitten (2003), it is a merger of various structured techniques , especially data-driven information technology engineering , with prototyping techniques to accelerate software systems development. The basic principles of rapid application development are: The waterfall model is a sequential development approach, in which development

11880-743: Was previously agreed or funded. Change-control boards are a sign that there are potential conflicts in project objectives and constraints between multiple users. XP's expedited methods are somewhat dependent on programmers being able to assume a unified client viewpoint so the programmer can concentrate on coding, rather than documentation of compromise objectives and constraints. This also applies when multiple programming organizations are involved, particularly organizations which compete for shares of projects. Other potentially controversial aspects of extreme programming include: Critics have noted several potential drawbacks, including problems with unstable requirements, no documented compromises of user conflicts, and

11990-585: Was published in 1999 by Don Wells at the XP website. 29 rules are given in the categories of planning, managing, designing, coding, and testing. Planning, managing and designing are called out explicitly to counter claims that XP doesn't support those activities. Another version of XP rules was proposed by Ken Auer in XP/Agile Universe 2003. He felt XP was defined by its rules, not its practices (which are subject to more variation and ambiguity). He defined two categories: "Rules of Engagement" which dictate

12100-478: Was single-user, and Cunningham was inspired to build upon the ideas of Vannevar Bush , the inventor of hypertext, by allowing users to "comment on and change one another's text." Cunningham says his goals were to link together people's experiences to create a new literature to document programming patterns , and to harness people's natural desire to talk and tell stories with a technology that would feel comfortable to those not used to "authoring". Misplaced Pages became

#941058