Rewrite (programming)
Encyclopedia
A rewrite in computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

 is the act or result of re-implementing a large portion of existing functionality without re-use of its source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

. When the rewrite is not using existing code at all, it is common to speak of a rewrite from scratch. When instead only parts are re-engineered, which have otherwise become complicated to handle or extend, then it is more precise to speak of code refactoring.

Motivations

A piece of software is typically rewritten when one or more of the following apply:
  • its source code is not available or is only available under an incompatible license
    License
    The verb license or grant licence means to give permission. The noun license or licence refers to that permission as well as to the document recording that permission.A license may be granted by a party to another party as an element of an agreement...

  • its code cannot be adapted to a new target platform
  • its existing code has become too difficult to handle and extend
  • the task of debugging
    Debugging
    Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge...

     it seems too complicated
  • the programmer finds it difficult to understand its source code
  • developer learned new techniques or wishes to do a big feature overhaul that requires much change

Controversy

Many prominent software developers warn that this technique rarely leads to the intended success, claiming that rewriting is more fun than debugging, but the rewrite requires more time and will have new bugs.

Advocates of this method instead suggest that with every iteration
Iteration
Iteration means the act of repeating a process usually with the aim of approaching a desired goal or target or result. Each repetition of the process is also called an "iteration," and the results of one iteration are used as the starting point for the next iteration.-Mathematics:Iteration in...

 of the rewrite process an even better version is created, provided the job is done by the same programmers that wrote the earlier versions.

History

Both Borland
Borland
Borland Software Corporation is a software company first headquartered in Scotts Valley, California, Cupertino, California and finally Austin, Texas. It is now a Micro Focus subsidiary. It was founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn.-The 1980s:...

's Paradox for Windows
Paradox (database)
Paradox is a relational database management system currently published by Corel Corporation. It was originally released for DOS by Ansa Software, and then by Borland after it bought the company...

 and Quattro Pro for Windows started development using beta versions of Windows 3.0, in the spring of 1990. Paradox/Windows ended up delayed about a year beyond its original plan, shipping in early 1993.

The reasons were many, but not entirely surprising for a major rewrite, in an object-oriented programming language
Object-oriented programming language
This is a list of object-oriented programming programming languages.-Languages with object-oriented features:*ABAP*Ada 95*AmigaE*BETA*Blue*Boo*C++*C#*COBOL*Cobra*ColdFusion*Common Lisp*COOL*CorbaScript*Clarion*CLU*Curl*D*Dylan*E*Eiffel...

 with new tools, shifting to a GUI paradigm, on what was essentially a first version operating system. Still it was a big problem for the company and Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

 managed to ship Access
Microsoft Access
Microsoft Office Access, previously known as Microsoft Access, is a relational database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software-development tools. It is a member of the Microsoft Office suite of...

 a couple of months ahead of Paradox for Windows, a major marketing win to Microsoft.

It took IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...

 two years to rewrite OS/2
OS/2
OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...

 for PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

, and by the time the operating system was ready, the market for OS/2 on PowerPC had evaporated.

Netscape
Netscape
Netscape Communications is a US computer services company, best known for Netscape Navigator, its web browser. When it was an independent company, its headquarters were in Mountain View, California...

's rewrite of its browser is popularly considered one of the most dramatic strategic mistakes in the history of the Internet
History of the Internet
The history of the Internet starts in the 1950s and 1960s with the development of computers. This began with point-to-point communication between mainframe computers and terminals, expanded to point-to-point connections between computers and then early research into packet switching...

.

See also

  • Code refactoring
  • Open source software development
    Open source software development
    Open source software development is the process by which open source software is developed. These are software products “available with its source code and under an open source license to study, change, and improve its design”...

  • Technical debt
    Technical debt
    Technical debt are synonymous, neologistic metaphors referring to the eventual consequences of poor software architecture and software development within a codebase....

  • Development hell
    Development hell
    In the jargon of the media-industry, "development hell" is a period during which a film or other project is trapped in development...



Some projects mentioning major rewrites in their history:
  • Apache HTTP Server
    Apache HTTP Server
    The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...

     (1)
  • AOL Instant Messenger
    AOL Instant Messenger
    AOL Instant Messenger is an instant messaging and presence computer program which uses the proprietary OSCAR instant messaging protocol and the TOC protocol to allow registered users to communicate in real time. It was released by AOL in May 1997...

     (1)
  • BIND
    BIND
    BIND , or named , is the most widely used DNS software on the Internet.On Unix-like operating systems it is the de facto standard.Originally written by four graduate students at the Computer Systems Research Group at the University of California, Berkeley , the name originates as an acronym from...

     (1)
  • Freenet
    Freenet
    Freenet is a decentralized, censorship-resistant distributed data store originally designed by Ian Clarke. According to Clarke, Freenet aims to provide freedom of speech through a peer-to-peer network with strong protection of anonymity; as part of supporting its users' freedom, Freenet is free and...

     (1)
  • Fusebox
    Fusebox
    Fusebox may refer to:* Fuse boxes in electric wiring* Fuseboxx, a metal band from the Philippines* Fusebox , a web development programming framework...

     (2)
  • GRUB
    GNU GRUB
    GNU GRUB is a boot loader package from the GNU Project. GRUB is the reference implementation of the Multiboot Specification, which provides a user the choice to boot one of multiple operating systems installed on a computer or select a specific kernel configuration available on a particular...

     (1)
  • Majordomo
    Majordomo (software)
    Majordomo is a mailing list manager developed by Brent Chapman of Great Circle Associates. It is written in Perl and works in conjunction with sendmail on UNIX and related operating systems...

     (1)
  • MediaWiki (1)
  • Mozilla/Netscape
    History of Mozilla Application Suite
    The history of the Mozilla Application Suite began with the release of the source code of the Netscape suite as an open source project. Going through years of hard working , Mozilla 1.0 was eventually released on June 5, 2002...

     (1)

  • Icecast
    Icecast
    Icecast is a streaming media project released as free software maintained by the Xiph.org Foundation. It also refers specifically to the server program which is part of the project. Icecast was created in December 1998/January 1999 by Jack Moffitt and Barath Raghavan to provide an open source...

     (0-1)
  • netcat
    Netcat
    Netcat is a computer networking service for reading from and writing network connections using TCP or UDP. Netcat is designed to be a dependable “back-end” device that can be used directly or easily driven by other programs and scripts...

     (1)
  • OpenRPG (1)
  • PHP
    PHP
    PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

     (1-2)
  • Project Xanadu
    Project Xanadu
    Project Xanadu was the first hypertext project, founded in 1960 by Ted Nelson. Administrators of Project Xanadu have declared it an improvement over the World Wide Web, with mission statement: "Today's popular software simulates paper...

     (0-1)
  • Sun Secure Global Desktop
    Sun Secure Global Desktop
    Oracle Secure Global Desktop software provides secure access to both published applications and published desktops running on Microsoft Windows, Unix, mainframe and System i systems via a variety of clients ranging from fat PCs to thin clients such as Sun Rays.-History:In 1993 the Santa Cruz...

     (1)
  • VBulletin
    VBulletin
    vBulletin is a proprietary Internet forum software produced by Jelsoft Enterprises and vBulletin Solutions, both subsidiaries of Internet Brands. It is written in PHP and uses a MySQL database server.-History:...

     (2)
  • WebObjects
    WebObjects
    WebObjects was a Java web application server from Apple Inc., and a web application framework that ran on the server. It was available at no additional cost. Its hallmark features were its object-orientation, database connectivity, and prototyping tools...

     (1)
  • Zope
    Zope
    Zope is a free and open-source, object-oriented Web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web...

    (1)


External links

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