Knowledge

Software archaeology

Source đź“ť

1250: 1240: 188:
has described software archaeology as a six-step process which enables programmers to answer questions such as "What have I just inherited?" and "Where are the scary sections of the code?" These steps, similar to those identified by the OOPSLA workshop, include using visualization to obtain a visual
39:
of software modules, and the application of a variety of tools and processes for extracting and understanding program structure and recovering design information. Software archaeology may reveal dysfunctional team processes which have produced poorly designed or even unused software modules, and in
180:
Network and temporal analysis techniques can reveal the patterns of collaborative activity by the developers of legacy software, which in turn may shed light on the strengths and weaknesses of the software artifacts produced.
322:
Without accurate documentation, or access to knowledgeable people, your last resort may be to analyze the source code for the legacy system... This effort is often referred to as software archaeology.
201:
to look for bugs and performance bottlenecks, and assembling design information recovered by the process. Software archaeology can also be a service provided to programmers by external consultants.
165:. In the same vein, Cunningham has suggested viewing programs in 2 point font in order to understand the overall structure. Another technique identified at the workshop was the use of 59:(Object-Oriented Programming, Systems, Languages & Applications) conference identified the following software archaeology techniques, some of which are specific to 661: 157:
Like true archaeology, software archaeology involves investigative work to understand the thought processes of one's predecessors. At the OOPSLA workshop,
693: 682: 161:
suggested a synoptic signature analysis technique which gave an overall "feel" for a program by showing only punctuation, such as semicolons and
726: 645: 1243: 1109: 1038: 401: 369: 932: 835: 550: 673: 719: 99: 912: 779: 764: 198: 47:
Software archaeology has continued to be a topic of discussion at more recent software engineering conferences.
1068: 995: 985: 830: 759: 573: 232: 1279: 1253: 1119: 1048: 990: 712: 697: 1058: 917: 784: 980: 975: 789: 310: 166: 60: 1175: 1023: 1018: 970: 947: 927: 1180: 1170: 419: 1274: 1083: 882: 865: 774: 471: 185: 139: 1033: 877: 653: 608: 1088: 845: 840: 531: 77: 41: 907: 860: 389: 357: 335: 219: 147: 1205: 1043: 892: 804: 749: 735: 475: 247: 28: 517:
Workshop Position Statement, Software Archeology: Understanding Large Systems, OOPSLA 2001
8: 1225: 1210: 1078: 942: 850: 794: 162: 36: 1215: 855: 467: 385: 174: 135: 67: 558:
Proceedings of the 2005 International ACM SIGGROUP Conference on Supporting Group Work
1129: 887: 569: 397: 365: 286: 1200: 1144: 922: 814: 809: 561: 490: 257: 237: 143: 1220: 1073: 1053: 937: 799: 694:"OOPSLA 2008 Podcast with Grady Booch on software archaeology and related topics" 508: 190: 158: 627: 1124: 1028: 769: 242: 1268: 1104: 872: 669: 551:"Seeking the Source: Software Source Code as a Social and Technical Artifact" 24: 565: 1139: 1134: 1063: 445: 307: 252: 214: 194: 105: 87: 294:
Poster Proceedings of the International Conference on Software Maintenance
262: 32: 650:
OOPSLA 2001 Workshop on Software Archeology: Understanding Large Systems
362:
Eating the IT Elephant: Moving from greenfield development to brownfield
1149: 1114: 704: 285:
Robles, Gregorio; Gonzalez-Barahona, Jesus M.; Herraiz, Israel (2005).
594:"Software Archeology: What Is It and Why Should Java Developers Care?" 593: 494: 512: 897: 128: 170: 151: 123: 119: 113: 446:"32nd ACM/IEEE International Conference on Software Engineering" 754: 96:
Search engines and tools to search for keywords in source files
91: 56: 683:"How To Apply Software Archeology To Your Development Process" 284: 954: 612: 109: 1165: 70:
to build static reports and for filtering diagnostic output
549:
de Souza, Cleidson; Froehlich, Jon; Dourish, Paul (2005).
513:"Signature Survey: A Method for Browsing Unfamiliar Code" 548: 311:"Agile Legacy System Analysis and Integration Modeling" 76:
Synoptic signature analysis, statistical analysis, and
662:"Writing code, reading code and software archeology" 44:
may be found. The term has been in use for decades.
177:code without directly editing the legacy program. 23:is the study of poorly documented or undocumented 118:API documentation generation using tools such as 1266: 384: 420:"Object-Oriented Design Archaeology with CIA++" 287:"An Empirical Approach to Software Archaeology" 193:to look for design and style violations, using 55:A workshop on Software Archaeology at the 2001 355: 336:"Software Archeology: Modernizing Old Systems" 189:representation of the program's design, using 31:. Software archaeology, named by analogy with 720: 390:"2. A Tale of Two Systems § Lack of Cohesion" 73:Ongoing documentation in HTML pages or Wikis 727: 713: 507: 466: 462: 460: 458: 456: 150:, text indexing tools such as GLIMPSE and 628:"Software archaeology and technical debt" 587: 585: 356:Hopkins, Richard; Jenkins, Kevin (2008). 918:Software development process/methodology 734: 606: 453: 154:, and " a map as you begin exploring." 1267: 680: 591: 582: 280: 278: 708: 417: 333: 204: 1239: 933:Software verification and validation 836:Component-based software engineering 625: 529: 672:. 23 September 2009. Archived from 607:Sharwood, Simon (3 November 2004). 592:Rozlog, Michael (28 January 2008). 275: 86:Operating-system-level tracing via 13: 530:Cook, John D. (10 November 2009). 306: 14: 1291: 913:Software configuration management 780:Search-based software engineering 765:Experimental software engineering 681:Rozlog, Michael (13 March 2008). 638: 1249: 1248: 1238: 418:Grass, Judith E. (Winter 1992). 696:(Podcast). 2008. Archived from 619: 600: 542: 523: 760:Empirical software engineering 501: 437: 410: 378: 364:. Addison-Wesley. p. 93. 349: 327: 300: 233:Software architecture recovery 1: 334:Moyer, Bryon (4 March 2009). 268: 50: 785:Site reliability engineering 388:; Gousios, Georgios (2009). 173:to systematically introduce 27:implementations, as part of 7: 790:Social software engineering 626:Rees, Gareth (2013-06-12). 343:Embedded Technology Journal 226: 167:aspect-oriented programming 61:object-oriented programming 10: 1296: 928:Software quality assurance 609:"Raiders of the Lost Code" 213:" features prominently in 1234: 1193: 1158: 1097: 1011: 1004: 963: 823: 742: 358:"5. The Mythical Metaman" 83:Reverse-engineering tools 1084:Model-driven engineering 883:Functional specification 866:Software incompatibility 775:Requirements engineering 396:. O'Reilly. p. 29. 211:programmer–archaeologist 186:Embarcadero Technologies 40:some cases deliberately 878:Enterprise architecture 666:Once More into the Code 566:10.1145/1099203.1099239 416:An early discussion is 142:note the importance of 1089:Round-trip engineering 846:Backward compatibility 841:Software compatibility 476:"Software Archaeology" 394:Beautiful Architecture 78:software visualization 21:source code archeology 908:Software architecture 861:Forward compatibility 532:"Software Archeology" 220:A Deepness in the Sky 217:'s 1999 sci-fi novel 148:dependency management 1280:Software maintenance 1206:Computer engineering 903:Software archaeology 893:Programming paradigm 805:Software maintenance 750:Computer programming 736:Software engineering 560:. pp. 197–206. 474:(March–April 2002). 248:Software brittleness 29:software maintenance 17:Software archaeology 1226:Systems engineering 1211:Information science 991:Service orientation 943:Structured analysis 851:Compatibility layer 795:Software deployment 596:. java.sys-con.com. 386:Spinellis, Diomidis 313:. agilemodeling.com 209:The profession of " 108:frameworks such as 68:Scripting languages 37:reverse engineering 1216:Project management 981:Object orientation 948:Essential analysis 856:Compatibility mode 205:In popular culture 184:Michael Rozlog of 1262: 1261: 1189: 1188: 1130:Information model 1034:Incremental model 888:Modeling language 646:"Position papers" 495:10.1109/52.991327 443:For example, the 427:Computing Systems 403:978-0-596-51798-4 371:978-0-13-713012-2 1287: 1252: 1251: 1242: 1241: 1201:Computer science 1009: 1008: 923:Software quality 815:Systems analysis 810:Software testing 729: 722: 715: 706: 705: 701: 689: 687: 677: 657: 652:. Archived from 632: 631: 623: 617: 616: 604: 598: 597: 589: 580: 579: 555: 546: 540: 539: 527: 521: 520: 509:Cunningham, Ward 505: 499: 498: 480: 464: 451: 449: 441: 435: 434: 424: 414: 408: 407: 382: 376: 375: 353: 347: 346: 340: 331: 325: 324: 319: 318: 308:Ambler, Scott W. 304: 298: 297: 291: 282: 258:Software entropy 238:Code refactoring 191:software metrics 134:More generally, 42:obfuscatory code 1295: 1294: 1290: 1289: 1288: 1286: 1285: 1284: 1275:Computer jargon 1265: 1264: 1263: 1258: 1230: 1221:Risk management 1185: 1154: 1093: 1074:Waterfall model 1044:Prototype model 1039:Iterative model 1000: 976:Aspect-oriented 959: 938:Software system 819: 800:Software design 738: 733: 692: 685: 660: 644: 641: 636: 635: 624: 620: 605: 601: 590: 583: 576: 553: 547: 543: 528: 524: 506: 502: 478: 465: 454: 444: 442: 438: 422: 415: 411: 404: 383: 379: 372: 354: 350: 338: 332: 328: 316: 314: 305: 301: 289: 283: 276: 271: 229: 207: 159:Ward Cunningham 144:version control 53: 35:, includes the 25:legacy software 12: 11: 5: 1293: 1283: 1282: 1277: 1260: 1259: 1257: 1256: 1246: 1235: 1232: 1231: 1229: 1228: 1223: 1218: 1213: 1208: 1203: 1197: 1195: 1194:Related fields 1191: 1190: 1187: 1186: 1184: 1183: 1178: 1173: 1168: 1162: 1160: 1156: 1155: 1153: 1152: 1147: 1142: 1137: 1132: 1127: 1125:Function model 1122: 1117: 1112: 1107: 1101: 1099: 1095: 1094: 1092: 1091: 1086: 1081: 1076: 1071: 1066: 1061: 1056: 1051: 1046: 1041: 1036: 1031: 1029:Executable UML 1026: 1021: 1015: 1013: 1006: 1002: 1001: 999: 998: 993: 988: 983: 978: 973: 967: 965: 961: 960: 958: 957: 952: 951: 950: 940: 935: 930: 925: 920: 915: 910: 905: 900: 895: 890: 885: 880: 875: 870: 869: 868: 863: 858: 853: 848: 838: 833: 827: 825: 821: 820: 818: 817: 812: 807: 802: 797: 792: 787: 782: 777: 772: 770:Formal methods 767: 762: 757: 752: 746: 744: 740: 739: 732: 731: 724: 717: 709: 703: 702: 700:on 2011-09-26. 690: 678: 676:on 2011-01-29. 658: 656:on 2010-06-12. 640: 639:External links 637: 634: 633: 618: 599: 581: 574: 541: 522: 500: 452: 436: 409: 402: 377: 370: 348: 326: 299: 273: 272: 270: 267: 266: 265: 260: 255: 250: 245: 243:Retrocomputing 240: 235: 228: 225: 206: 203: 169:tools such as 132: 131: 126: 116: 103: 97: 94: 84: 81: 74: 71: 52: 49: 9: 6: 4: 3: 2: 1292: 1281: 1278: 1276: 1273: 1272: 1270: 1255: 1247: 1245: 1237: 1236: 1233: 1227: 1224: 1222: 1219: 1217: 1214: 1212: 1209: 1207: 1204: 1202: 1199: 1198: 1196: 1192: 1182: 1179: 1177: 1174: 1172: 1169: 1167: 1164: 1163: 1161: 1157: 1151: 1148: 1146: 1145:Systems model 1143: 1141: 1138: 1136: 1133: 1131: 1128: 1126: 1123: 1121: 1118: 1116: 1113: 1111: 1108: 1106: 1103: 1102: 1100: 1096: 1090: 1087: 1085: 1082: 1080: 1077: 1075: 1072: 1070: 1067: 1065: 1062: 1060: 1057: 1055: 1052: 1050: 1047: 1045: 1042: 1040: 1037: 1035: 1032: 1030: 1027: 1025: 1022: 1020: 1017: 1016: 1014: 1012:Developmental 1010: 1007: 1003: 997: 994: 992: 989: 987: 984: 982: 979: 977: 974: 972: 969: 968: 966: 962: 956: 953: 949: 946: 945: 944: 941: 939: 936: 934: 931: 929: 926: 924: 921: 919: 916: 914: 911: 909: 906: 904: 901: 899: 896: 894: 891: 889: 886: 884: 881: 879: 876: 874: 873:Data modeling 871: 867: 864: 862: 859: 857: 854: 852: 849: 847: 844: 843: 842: 839: 837: 834: 832: 829: 828: 826: 822: 816: 813: 811: 808: 806: 803: 801: 798: 796: 793: 791: 788: 786: 783: 781: 778: 776: 773: 771: 768: 766: 763: 761: 758: 756: 753: 751: 748: 747: 745: 741: 737: 730: 725: 723: 718: 716: 711: 710: 707: 699: 695: 691: 684: 679: 675: 671: 670:Computerworld 667: 663: 659: 655: 651: 647: 643: 642: 629: 622: 614: 610: 603: 595: 588: 586: 577: 571: 567: 563: 559: 552: 545: 537: 536:The Endeavour 533: 526: 518: 514: 510: 504: 496: 492: 488: 484: 483:IEEE Software 477: 473: 469: 463: 461: 459: 457: 447: 440: 432: 428: 421: 413: 405: 399: 395: 391: 387: 381: 373: 367: 363: 359: 352: 344: 337: 330: 323: 312: 309: 303: 295: 288: 281: 279: 274: 264: 261: 259: 256: 254: 251: 249: 246: 244: 241: 239: 236: 234: 231: 230: 224: 223: 221: 216: 212: 202: 200: 196: 192: 187: 182: 178: 176: 172: 168: 164: 160: 155: 153: 149: 145: 141: 137: 130: 127: 125: 121: 117: 115: 111: 107: 104: 102:file browsing 101: 98: 95: 93: 89: 85: 82: 79: 75: 72: 69: 66: 65: 64: 62: 58: 48: 45: 43: 38: 34: 30: 26: 22: 18: 1140:Object model 1135:Metamodeling 1064:Spiral model 964:Orientations 902: 698:the original 674:the original 665: 654:the original 649: 621: 602: 557: 544: 535: 525: 516: 503: 489:(2): 20–22. 486: 482: 472:Thomas, Dave 439: 430: 426: 412: 393: 380: 361: 351: 342: 329: 321: 315:. Retrieved 302: 293: 253:Software rot 218: 215:Vernor Vinge 210: 208: 195:unit testing 183: 179: 163:curly braces 156: 133: 106:Unit testing 54: 46: 20: 16: 15: 831:Abstraction 448:. May 2010. 263:Abandonware 140:Dave Thomas 33:archaeology 1269:Categories 1150:View model 1115:Data model 575:1595932232 468:Hunt, Andy 317:2010-08-20 269:References 51:Techniques 1159:Languages 199:profiling 136:Andy Hunt 129:Debuggers 1254:Category 1120:ER model 986:Ontology 898:Software 824:Concepts 511:(2001). 227:See also 1244:Commons 1069:V-model 175:tracing 171:AspectJ 152:SWISH-E 124:doxygen 120:Javadoc 114:CppUnit 1005:Models 755:DevOps 743:Fields 572:  400:  368:  92:strace 57:OOPSLA 1181:SysML 1105:SPICE 1098:Other 1059:Scrum 1019:Agile 971:Agile 955:CI/CD 686:(PDF) 613:ZDNet 554:(PDF) 479:(PDF) 423:(PDF) 339:(PDF) 290:(PDF) 110:JUnit 88:truss 80:tools 1166:IDEF 1110:CMMI 996:SDLC 570:ISBN 433:(1). 398:ISBN 366:ISBN 197:and 138:and 122:and 112:and 1176:USL 1171:UML 1049:RAD 1024:EUP 562:doi 491:doi 100:IDE 90:or 19:or 1271:: 1079:XP 1054:UP 668:. 664:. 648:. 611:. 584:^ 568:. 556:. 534:. 515:. 487:19 485:. 481:. 470:; 455:^ 429:. 425:. 392:. 360:. 341:. 320:. 292:. 277:^ 146:, 63:: 728:e 721:t 714:v 688:. 630:. 615:. 578:. 564:: 538:. 519:. 497:. 493:: 450:. 431:5 406:. 374:. 345:. 296:. 222:.

Index

legacy software
software maintenance
archaeology
reverse engineering
obfuscatory code
OOPSLA
object-oriented programming
Scripting languages
software visualization
truss
strace
IDE
Unit testing
JUnit
CppUnit
Javadoc
doxygen
Debuggers
Andy Hunt
Dave Thomas
version control
dependency management
SWISH-E
Ward Cunningham
curly braces
aspect-oriented programming
AspectJ
tracing
Embarcadero Technologies
software metrics

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑