WIPIVERSE

소프트웨어 고고학

소프트웨어 고고학(software archaeology) 또는 소스 코드 고고학(source code archeology)은 소프트웨어 유지보수의 일환으로서, 문서화가 부족하거나 전혀 이루어지지 않은 레거시 소프트웨어 구현에 대한 연구를 가리키는 소프트웨어 공학 분야의 개념이다.

개요

소프트웨어 고고학이라는 명칭은 고고학(archaeology)에서 유래한 은유적 표현이다. 프로그래머가 오래된 레거시 코드를 읽고 분석하는 과정이, 고고학자가 고대 문명의 잔해를 탐구하는 상황과 유사하다는 점에서 붙여진 이름이다. 이 용어는 수십 년간 소프트웨어 공학 분야에서 사용되어 왔다.

주요 내용

소프트웨어 고고학은 다음과 같은 작업을 포함한다:

  • 소프트웨어 모듈의 리버스 엔지니어링
  • 프로그램 구조를 이해하고 설계 정보를 복구하기 위한 도구 및 다양한 프로세스의 적용
  • 문서나 지식이 부족한 레거시 시스템의 소스 코드 분석을 통한 시스템 이해

또한 소프트웨어 고고학은 제대로 설계되지 않았거나 적절히 관리되지 않은 소프트웨어 모듈을 만들어낸 기능부전의 팀 프로세스를 드러낼 수 있는 수단이 되기도 한다.

역사 및 배경

소프트웨어 고고학이라는 용어는 오래전부터 사용되어 왔다. 초기 논의 중 하나로 1992년 Judith E. Grass의 "CIA++의 객체 지향 디자인 고고학"이라는 논문이 있으며, Andy Hunt와 Dave Thomas가 IEEE Software 저널에 기고한 "Software Archeology"라는 제목의 논문(2002년 3월)도 이 개념을 다룬 대표적 사례로 꼽힌다.

관련 분야 및 활용

소프트웨어 고고학은 소프트웨어 유지보수(software maintenance) 및 레거시 시스템(Legacy System) 관리와 밀접한 관련이 있다. 브라운필드(brownfield) 개발 환경에서 기존 시스템을 현대화하거나 이해하는 과정에서 중요한 역할을 한다.

참고 자료

  • Gregorio Robles, Jesus M. Gonzalez-Barahona, Israel Herraiz, "An Empirical Approach to Software Archaeology", 2005.
  • Scott W. Ambler, "Agile Legacy System Analysis and Integration Modeling", agilemodeling.com.
  • Bryon Moyer, "Software Archaeology: Modernizing Old Systems", Embedded Technology Journal, 2009.
  • Richard Hopkins, Kevin Jenkins, Eating the IT Elephant: Moving from Greenfield Development to Brownfield, Addison-Wesley, 2008.
  • Diomidis Spinellis, Georgios Gousios, Beautiful Architecture, O'Reilly, 2009.
  • Judith E. Grass, "Object-Oriented Design Archaeology with CIA++", Computing Systems, Vol. 5, No. 1, Winter 1992.
  • Andy Hunt, Dave Thomas, "Software Archeology", IEEE Software, Vol. 19, No. 2, March 2002.
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기