Object-oriented software extensions in practice

被引:4
|
作者
Robbes, Romain [1 ]
Rothlisberger, David [2 ]
Tanter, Eric [1 ]
机构
[1] Univ Chile, PLEIAD Lab, Comp Sci Dept DCC, Santiago, Chile
[2] Univ Diego Portales, Sch Informat & Telecommun, Santiago, Chile
关键词
Object-oriented programming; Software evolution; Data extensions; Operation extensions; Empirical studies; Mining software repositories;
D O I
10.1007/s10664-013-9298-0
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
As software evolves, data types have to be extended, possibly with new data variants or new operations. Object-oriented design is well-known to support data extensions well. In fact, most popular books showcase data extensions to illustrate how objects adequately support software evolution. Conversely, operation extensions are typically better supported by a functional design. A large body of programming language research has been devoted to the challenge of properly supporting both kinds of extensions. While this challenge is well-known from a language design standpoint, it has not been studied empirically. We perform such a study on a large sample of Smalltalk projects (over half a billion lines of code) and their evolution over more than 130,000 committed changes. Our study of extensions during software evolution finds that extensions are indeed prevalent evolution tasks, and that both kinds of extensions are equally common in object-oriented software. We also discuss findings about: the evolution of the kinds of extensions over time; the viability of the Visitor pattern as an object-oriented solution to operation extensions; the change-proneness of extensions; and the prevalence of extensions by third parties. This study suggests that object-oriented design alone is not sufficient, and that practical support for both kinds of program decomposition approaches are in fact needed, either by the programming language or by the development environment.
引用
收藏
页码:745 / 782
页数:38
相关论文
共 50 条
  • [21] Modern object-oriented software development
    Dunlop, AN
    [J]. 1997 CERN SCHOOL OF COMPUTING, 1997, 97 (08): : 143 - 155
  • [22] Information Flow in Object-Oriented Software
    Beckert, Bernhard
    Bruns, Daniel
    Klebanov, Vladimir
    Scheben, Christoph
    Schmitt, Peter H.
    Ulbrich, Mattias
    [J]. LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION, LOPSTR 2013, 2014, 8901 : 19 - 37
  • [23] Distributed concurrent object-oriented software
    Broy, M
    [J]. FROM OBJECT-ORIENTATION TO FORMAL METHODS: ESSAYS IN MEMORY OF OLE-JOHAN DAHL, 2004, 2635 : 83 - 95
  • [24] Transition to object-oriented software development
    Fayad, ME
    Tsai, WT
    Fulghum, ML
    [J]. COMMUNICATIONS OF THE ACM, 1996, 39 (02) : 108 - 121
  • [25] OBJECT-ORIENTED SOFTWARE CONFIGURATION MANAGEMENT
    HARTER, R
    [J]. DR DOBBS JOURNAL, 1991, 16 (10): : 36 - &
  • [26] Automating object-oriented software refactoring
    Shankar, S
    Xu, XW
    [J]. SERP'03: PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING RESEARCH AND PRACTICE, VOLS 1 AND 2, 2003, : 561 - 567
  • [27] Component Dependency in Object-Oriented Software
    于立国
    Srini Ramaswamy
    [J]. Journal of Computer Science & Technology, 2007, (03) : 379 - 386
  • [28] Foundations of object-oriented software measures
    Zuse, H
    [J]. PROCEEDINGS OF THE 3RD INTERNATIONAL SOFTWARE METRICS SYMPOSIUM, 1996, : 75 - 88
  • [29] Component dependency in object-oriented software
    Yu, Li-Guo
    Ramaswamy, Srini
    [J]. JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY, 2007, 22 (03) : 379 - 386
  • [30] Object-oriented software configuration management
    Nguyen, Tien N.
    [J]. ICSM 2006: 22ND IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE, PROCEEDINGS, 2006, : 351 - 354