Redocumentation of a legacy banking system: an experience report

Successful software systems need to be maintained. In order to do that, deep knowledge about their architecture and implementation details is required. This knowledge is often kept implicit (inside the heads of the experts) and sometimes made explicit in documentation. The problem is that systems often lack up-to-date documentation and that system experts are frequently unavailable (as they got another job or retired). Redocumentation addresses that problem by recovering knowledge about the system and making it explicit in documentation. Automating the redocumentation process can limit the tedious and error-prone manual effort, but it is no 'silver bullet'. In this paper, we report on our experience with applying redocumentation techniques in industry. We provide insights on what (not) to document, what (not) to automate and how to automate it. A concrete lesson learned during this study is that the "less is more" principle also applies to redocumentation.

[1]  Keith H. Bennett,et al.  Software maintenance and evolution: a roadmap , 2000, ICSE '00.

[2]  David Notkin,et al.  Lightweight lexical source model extraction , 1996, TSEM.

[3]  Simonetta Rosati,et al.  The Securities Custody Industry , 2007 .

[4]  Bart Du Bois,et al.  Supporting Reengineering Scenarios with FETCH: an Experience Report , 2008, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[5]  Christopher L. Huntley,et al.  Agility versus Maturity: Is There Really a Trade-Off? , 2010, Computer.

[6]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[7]  Dirk Beyer,et al.  Efficient relational calculation for software analysis , 2005, IEEE Transactions on Software Engineering.

[8]  Hausi A. Müller,et al.  The Rigi Reverse Engineering Environment , 2008 .

[9]  Arie van Deursen,et al.  Building documentation generators , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[10]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[11]  Shyam Sunder,et al.  Financial services business process outsourcing , 2004, CACM.

[12]  Serge Demeyer,et al.  Reverse Engineering on the Mainframe: Lessons Learned from "In Vivo" Research , 2010, IEEE Software.

[13]  John Daniels,et al.  UML Components: A Simple Process for Specifying Component-Based Software , 2000 .

[14]  Rana Ejaz Ahmed Software maintenance outsourcing: Issues and strategies , 2006, Comput. Electr. Eng..

[15]  Tom R. Burns,et al.  The Management of Innovation. , 1963 .