Content deleted Content added
Removing link(s) / list item(s) Wikipedia:Articles for deletion/Fusebox (programming) (2nd nomination) closed as delete (XFDcloser) |
→External links: + academic source |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 15:
==Risks==
Several software engineers, such as [[Joel Spolsky]]<ref name=":0">{{cite web|last1=Spolsky|first1=Joel|title=Things You Should Never Do, Part I|url=http://www.joelonsoftware.com/articles/fog0000000069.html|website=Joel on Software|date=6 April 2000 |accessdate=2015-01-23}}</ref> have warned against total rewrites, especially under schedule constraints or competitive pressures. While developers may initially welcome the chance to correct historical design mistakes, a rewrite also discards those parts of the design that work as required. A rewrite commits the development team to deliver not just new features, but all those that exist in the previous code, while potentially introducing new bugs or [[Software regression|regressions]] of previously fixed bugs.<ref>{{cite web | url=http://www.ronkes.nl/blog/?2005-04-15-neverrewritecode | title=Never Rewrite Code From Scratch | first=Joost | last=Ronkes Agerbeek | date=April 15, 2005 | accessdate=2008-09-11 | url-status=dead | archiveurl=https://web.archive.org/web/20081010211819/http://www.ronkes.nl/blog/?2005-04-15-neverrewritecode | archivedate=October 10, 2008 }}</ref><ref name="
The incremental rewrite is an alternative approach, in which developers gradually replace the existing code with calls into a new implementation, expanding that implementation until it fully replaces the old one. This approach avoids a broad loss of functionality during the rewrite. [[Cleanroom software engineering]] is another approach, which requires the team to work from an exhaustive written specification of the software's functionality, without access to its code.<ref>{{cite web | url=http://www.perlmonks.org/?node_id=115511 | title=Rewriting, from scratch, a huge code base | first=Ben | last=Tilly | date=September 29, 2001 | accessdate=2008-09-11}}</ref>
==Examples==
[[Netscape]]'s project to improve HTML layout in [[Netscape Navigator|Navigator]] 4 has been cited as an example of a failed rewrite. The new layout engine ([[Gecko (layout engine)|Gecko]]) had developed independently
Some projects mentioning major rewrites in their history:
Line 44:
== Techniques ==
* [[Strangler fig pattern]]
Line 60 ⟶ 59:
==External links==
* {{Cite journal |last=Sneed |first=Harry |last2=Verhoef |first2=Chris |date=2019-09-01 |title=Re-implementing a legacy system |url=https://www.sciencedirect.com/science/article/pii/S0164121219301050 |journal=Journal of Systems and Software |volume=155 |pages=162–184 |doi=10.1016/j.jss.2019.05.012 |issn=0164-1212}}
* [http://www.c2.com/cgi/wiki?RewriteCodeFromScratch RewriteCodeFromScratch at C2 Wiki]
* [http://www.joelonsoftware.com/articles/fog0000000069.html Things You Should Never Do, Part I] by [[Joel Spolsky]]
[[Category:Computer programming]]
|