This Article 
 Bibliographic References 
 Add to: 
Incremental Maintenance of Software Artifacts
September 2006 (vol. 32 no. 9)
pp. 682-697
Software is multidimensional, but the tools that support it are not. This lack of tool support causes the software artifacts representing different dimensions to evolve independently and to become inconsistent over time. In order to properly support the evolution of software, one must ensure that the different dimensions evolve concurrently. We have built a software development tool, CLIME, that uses constraints implemented as database queries to ensure just this. Our approach makes the tool responsible for detecting inconsistencies between software design, specifications, documentation, source code, test cases, and other artifacts without requiring any of these to be a primary representation. The tool works incrementally as the software evolves, without imposing a particular methodology or process. It includes a front end that lets the user explore and fix current inconsistencies. This paper describes the basis for CLIME, the techniques underlying the tool, the interface provided to the programmer, the incremental maintenance of constraints between these artifacts, and our experiences.

[1] G. Back and D. Engler, “MJ—A System for Constructing Bug-Finding Analyses for Java,” Stanford Univ. Computer Systems Laboratory, 2003.
[2] R.A. Ballance, S.L. Graham, and M.L. Van De Vanter, “The Pan Language-Based Editing System for Integrated Development Environments,” ACM Software Eng. Notes, vol. 15, no. 6, pp. 77-93, Dec. 1990.
[3] J. Bansiya, “Automatic Design-Pattern Identification,” Dr. Dobbs'J., pp. 20-28, June 1998.
[4] D. Batory, D. Brant, M. Gibson, and M. Nolen, “ExCIS: An Integration of Domain-Specific Languages and Feature-Oriented Programming,” Proc. Workshops New Visions for Software Design and Productivity: Research and Applications, Dec. 2001.
[5] R.W. Bowdidge and W.G. Griswold, “Supporting the Restructuring of Data Abstractions through Manipulation of a Program Visualization,” ACM Trans. Software Eng. and Methodology, vol. 7, no. 2, pp. 109-157, Apr. 1998.
[6] F.J. Budinsky, M.A. Finnie, J.M. Vlissides, and P.S. Yu, “Automatic Code Generation from Design Patterns,” IBM Systems J. vol. 35, no. 2, 1996.
[7] B. Childs, “Literate Programming, a Practitioner's View,” TUGboat, Proc. Ann. Meeting TeX User's Group, vol. 12, no. 3, pp. 1001-1008, 1991.
[8] J. Clements, P.T. Graunke, S. Krishnamurthi, and M. Felleisen, “Little Languages and Their Programming Environments,” Proc. Monterey Workshop Eng. Automation for Software Intensive System Integration, June 2001.
[9] J.M. Cobleigh, L.A. Clarke, and L.J. Osterweil, “FLAVERS: A Finite State Verification Technique for Software Systems,” IBM Systems J., vol. 41, no. 1, pp. 140-165, 2002.
[10] “Information Technology Research: Investing in Our Future,” President's Information Technology Advisory Committee, Feb. 1999.
[11] J.C. Corbett, M.B. Dwyer, J. Hatcliff, and Robby, “A Language Framework for Expressing Checkable Properties of Dynamic Software,” Proc. SPIN 2000 Workshop, pp. 205-223, 2000.
[12] D. Crocker, “Perfect Developer: A Tool for Object-Oriented Formal Specification and Refinement,” Proc. Symp. Formal Methods Europe, 2003.
[13] M. Das, S. Lerner, and M. Seigle, “ESP: Path-Sensitive Program Verification in Polynomial Time,” Proc. Conf. Programming Language Design and Implementation (PLDI '02), June 2002.
[14] U. Dayal and P.A. Bernstein, “On the Updatability of Relational Views,” Proc. Fourth Int'l Conf. Very Large Data Bases, pp. 368-377, 1978.
[15] C.K. Duby, S. Meyers, and S.P. Reiss, “CCEL: A Metalanguage for C++,” Proc. Second Usenix C++ Conf., Aug. 1992.
[16] A. Egyed, “Scalable Consistency Checking between Diagrams—The ViewIntegra Approach,” Proc. 16th IEEE Int'l Conf. Automated Software Eng., Nov. 2001.
[17] D. Evans, “Using Specifications to Check Source Code,” technical report, Massachussets Inst. of Technology Laboratory for Computer Science, June 1994.
[18] D. Evans, J. Guttag, J. Horning, and Y.M. Tan, “LCLint: A Tool for Using Specifications to Check Code,” Software Eng. Notes, vol. 19, no. 5, pp. 87-96, Dec. 1994.
[19] K. Fogel, Open Source Development with CVS. CoriolisOpen, 1999.
[20] E. Gamma and K. Beck, “Test Infected: Programmers Love Writing Tests,” http:/, 1998.
[21] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. Addison-Wesley, 1995.
[22] S.L. Graham, M.A. Harrison, and E.V. Munson, “The Proteus Presentation System,” Software Eng. Notes, vol. 17, no. 5, pp. 130-138, Dec. 1992.
[23] D. Gruijs, “A Framework of Concepts for Representing Object-Oriented Design and Design Patterns in the Context of Tool Support,” INF-SCR-97-28, Dept. of Computer Science, Utrecht Univ., Aug. 1998.
[24] C. Gryce, A. Finkelstein, and C. Nentwich, “Lightweight Checking for UML Based Software Development,” Proc. 2002 Workshop Consistency Problems in UML-Based Software Development, 2002.
[25] M. Hapke, A. Jaszkiewicz, K. Kowalczykiewicz, D. Weiss, and P. Zielniewicz, “OPHELIA: Open Platform for Distributed Software Development,” Proc. Open Source Int'l Conf., 2004.
[26] C.F. Hart and J.J. Shilling, “An Environment For Documenting Software Features,” Software Eng. Notes, vol. 15, no. 6, pp. 120-132, Dec. 1990.
[27] D. Hovemeyer and W. Pugh, “Finding Bugs Is Easy,” 2004 Conf. Object-Oriented Programming, Systems, Languages, and Applications Companion (OOPSLA '04), pp. 132-136, 2004.
[28] D. Jackson, “Aspect: A Formal Specification Language for Detecting Bugs,” Technical Report 543, Massachusetts Inst. of Technology, Laboratory for Computer Science, June 1992.
[29] F.P. BrooksJr., “No Silver Bullet—Essence and Accidents of Software Engineering,” Computer, vol. 20, no. 4, pp. 10-19, Apr. 1987.
[30] G.E. Kaiser, P.H. Feiler, and S.S. Popovich, “Intelligent Assistance for Software Development and Maintenance,” IEEE Software vol. 5, no. 3, pp. 40-45, May 1988.
[31] J.J. Kim and K.M. Benner, “An Experience Using Design Patterns: Lessons Learned and Tool Support,” Theory and Practice of Object Systems, vol. 2, no. 1, pp. 61-74, 1996.
[32] A. Knapp and S. Merz, “Model Checking and Code Generation for UML State Machines and Collaborations,” Proc. Fifth Workshop Tools for Software Design and Verification, 2002.
[33] D.E. Knuth, “Literate Programming,” Computer J., vol. 27, no. 2, pp. 97-111, 1984.
[34] W. Korman and W.G. Griswold, “Elbereth: Tool Support for Refactoring Java Programs,” Technical Report CS98-590, Dept. of Computer Science and Eng., Univ. of California, San Diego, June 1998.
[35] S. Krishnamurthi, Y.-D. Erlich, and M. Felleisen, “Expressing Structural Properties as Language Constructs,” Proc. European Symp. Programming, pp. 258-272, March 1999.
[36] C. Laffra, D. Lorch, D. Streeter, F. Tip, and J. Field, “What Is Jikes Bytecode Toolkit,” jikesbt , Mar. 2000.
[37] M. Meijers, “Tool Support for Object-Oriented Design Patterns,” INF-SCR-96-28, Dept. of Computer Science, Utrecht Univ., Aug. 1996.
[38] S.J. Mellor, A.N. Clark, and T. Futagami, “Model-Driven Development,” IEEE Software, vol. 20, no. 5, pp. 14-18, Sept./Oct. 2003.
[39] S. Meyers, “Difficulties in Integrating Multiview Development Systems,” IEEE Software, vol. 8, no. 1, pp. 50-57, Jan. 1991.
[40] S. Meyers, C.K. Duby, and S.P. Reiss, “Constraining the Structure and Style of Object-Oriented Programs,” Proc. First Workshop Principles and Practice of Constraint Programming, Apr. 1993.
[41] N.H. Minsky and D. Rozenshtein, “Law-Governed Object-Oriented Systems,” J. Object-Oriented Programming, vol. 1, no. 6, pp. 14-29, Mar./Apr. 1989.
[42] G.C. Murphy and D. Notkin, “Lightweight Source Model Extraction,” Software Eng. Notes, vol. 20, no. 4, pp. 116-127, Oct. 1995.
[43] C. Nentwich, L. Capra, W. Emmerich, and A. Finkelstein, “xlinkit: A Consistency Checking and Smart Link Generation Service,” ACM Trans. Internet Technology, to appear.
[44] S.P. Reiss and S. Meyers, “FIELD Support For C++,” Proc. USENIX C++ Conf., pp. 293-300, Apr. 1990.
[45] S.P. Reiss, “Interacting with the FIELD Environment,” Software Practice and Experience, vol. 20, no. S1, pp. 89-115, June 1990.
[46] S.P. Reiss, “Connecting Tools Using Message Passing in the FIELD Environment,” IEEE Software, vol. 7, no. 4, pp. 57-67, July 1990.
[47] S.P. Reiss, FIELD: A Friendly Integrated Environment for Learning and Development. Kluwer, 1994.
[48] S.P. Reiss, “Simplifying Data Integration: The Design of the Desert Software Development Environment,” Proc. 18th Int'l Conf. Software Eng., pp. 398-407, Mar. 1996.
[49] S.P. Reiss, “The Desert Environment,” ACM Trans. Software Eng. and Methodology, vol. 8, no. 4, pp. 297-342, Oct. 1999.
[50] S.P. Reiss, “Working with Patterns and Code,” Proc. Hawaii Int'l Conf. Systems Sciences (HICSS 33), Jan. 2000.
[51] S.P. Reiss, “Constraining Software Evolution,” Proc. Int'l Conf. Software Management, pp. 162-171, Oct. 2002.
[52] S.P. Reiss, “Checking Event-Based Specifications in Java Systems,” Proc. Workshop Software Model Checking (SoftMC '05), July 2005.
[53] S.P. Reiss, “Incremental Maintenance of Software Artifacts,” Proc. Int'l Conf. Software Maintenance (ICSM '05), Sept. 2005.
[54] S.P. Reiss, “Specifying and Checking Component Usage,” Proc. Workshop Algorithmic and Automatic Debugging (AADEBUG '05), Sept. 2005.
[55] D.M. Ritchie, S.C. Johnson, M.E. Lesk, and B.W. Kernighan, “The C Programming Language,” Bell Systems Tech. J., vol. 57, no. 6, pp.1991-2020, 1978.
[56] D. Roberts, J. Brant, and R. Johnson, “A Refactoring Tool for Smalltalk,” Dept. of Computer Science, Univ. of Illinois at Urbana-Champaign, 1997.
[57] B.G. Ryder and F. Tip, “Change Impact Analysis for Object-Oriented Programs,” Proc. ACM SIGPLAN-SIGSOFT Workshop Program Analysis for Software Tools and Eng., pp. 46-53, June 2001.
[58] J. Smith, M.M. Kokar, and K. Baclawski, “Formal Verification of UML Diagrams: A First Step towards Code Generation,” Practical UML-Based Rigorous Development Methods—Countering or Integrating the eXtremists, A. Evans, R. France, A. Moreira, and B. Rumpe, eds., pp. 224-240, Springer-Verlag, 2001.
[59] M. Smith, P. Wilcox, R. Dewar, and D. Weiss, “The Ophelia Traceability Layer,” Proc. Second Computing Curriculum Software Eng. Workshop (CCSE), Mar. 2003.
[60] G.L. SteeleJr., Common Lisp: The Language. Bedford, Mass.: Digital Press, 1990.
[61] R. Stockton and N. Kramer, “The Sheets Hypercode Editor,” Carnegie Mellon Univ., 1998.
[62] W. Teitelman, “A Tour through Cedar,” IEEE Software, vol. 1, no. 2, pp. 44-73, Apr. 1984.
[63] W. Yang, S. Horwitz, and T. Reps, “A Program Integration Algorithm that Accommodates Semantics-Preserving Transformations,” ACM Software Eng. Notes, vol. 15, no. 6, pp. 133-143, Dec. 1990.
[64] A.M. Zaremski and J.M. Wing, “Signature Matching: A Key to Reuse,” Software Eng. Notes, vol. 18, no. 5, pp. 182-190, Dec. 1993.

Index Terms:
Software maintenance, evolution, programming tools.
Steven P. Reiss, "Incremental Maintenance of Software Artifacts," IEEE Transactions on Software Engineering, vol. 32, no. 9, pp. 682-697, Sept. 2006, doi:10.1109/TSE.2006.91
Usage of this product signifies your acceptance of the Terms of Use.