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:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.