코드 재사용: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
편집 요약 없음
편집 요약 없음
1번째 줄:
'''코드 재사용''' 또는 '''소프트웨어 재사용'''은 기존의 [[소프트웨어]] 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 일이다. 단순한 재사용은 [[프로그래밍]]의 여명기로부터 행해져 왔다. 프로그래머는 템플릿, 함수, 프로시저와 같이 항상 코드의 일부를 재사용하고 있다. 소프트웨어 재사용은 [[소프트웨어 공학]]의 연구 대상으로 여겨져 1968년에 [[벨 연구소]]의 더글러스 맥일로이(Douglas McIlroy)가 재사용가능한 콤포넌트에 기반한 소프트웨어 산업을 제창한 것이 시작이다.
 
== 개요 ==
재사용가능한 소프트웨어나 소프트웨어 지식은 재사용가능한 자산이다. 자산에는 [[설계]], [[요구명세]], [[소프트웨어 검사|검사]], [[아키텍처]] 등도 포함된다.
 
아마 가장 잘 알려져 있는 재사용 가능 자산은 코드이다. 코드 재사용은 어떤 시점에 쓰여진 [[컴퓨터 프로그램|프로그램]]의 일부 또는 전부를 이후의 다른 프로그램을 만들 때 사용하는 것이다. 코드의 재사용은 장황한 작업에 소비하는 시간과 에너지를 절약하는 전형적 기법이다.
 
[[라이브러리]]는 [[추상화]]가 좋은 예이다. 프로그래머는 프로그램의 일부를 재사용가능하게 하기 위해서 내부에 추상화 포인트를 작성하거나 자기 부담으로 사용하기 위해서 커스텀 라이브러리를 만들거나 한다. 소프트웨어를 보다 재사용하기 쉽게 하는 특성을 [[모듈|모듈성]], [[결합도|저결합도]], [[응집도|고응집도]], [[캡슐화]], [[관심의 분리]] 등으로 부른다.
 
기존 코드를 사용하여 새로운 코드를 만드는 경우, 하등의 인터페이스 혹은 액세스 수단이 정의되어 있지 않으면 안 된다. 이것에는 [[서브루틴]] 호출, [[오브젝트 (프로그래밍)|오브젝트]], [[클래스 (컴퓨터)|클래스]], [[프로토 타입]] 등이 포함되는 것이 일반적이다. 기업에서는 이것들을 정식화, 표준화해두는 것이 일반적이다.
 
어떤 프로그램의 이전 버전을 출발점으로 하여 다음의 버전을 개발하는 작업도 일종의 코드 재사용이다.
 
코드 재사용의 한 형태로서 기존의 프로그램으로부터 코드를 일부 또는 전부 뽑아내 새로운 프로그램에 복사해넣는 일이 있다. 기업은 개발을 빠르기 하기 위해서 이 방법을 쓰기도 하지만, 이렇게 [[복사와 붙여넣기]]를 많이 하면, 차후에 [[중복 코드]]로 문제가 될 수 있다.
 
재사용을 빠르고 용이하게 하기 위해 프로그래밍 정식 절차의 일부로서 보다 체계적으로 실시할 수 있도록 하는 연구가 많이 이루어져 왔다. [[객체지향 프로그래밍]]도 그러한 목적에서 만들어진 것으로 정식화된 재사용기법으로서 일반화되었다. 같은 목적으로 후에 개발된 것으로서 [[제네릭프로그래밍]]이 있다.
 
한층 더 새로운 수단으로서 [[자동프로그래밍]]이 있다. 이것은 프로그램이 사용자가 설정한 일련의 변수에 근거하여 어떤 종류의 프로그램을 생성하는 것이다.유사한 개념으로 [[메타 프로그래밍]]도 있다.
 
[[분류:소프트웨어 공학]]