재사용을 하려는 이유
개발팀의 가장 큰 바램은 이전에 개발했던 것을 다음 프로젝트에서 재활용하는 것이다. 개발 시간과 비용도 낮아지지만 이미 검증이 되어 개발팀의 품질 부담을 줄이는 것이 가장 큰 이유이다. 재사용을 위해 객체(Object)와 컴포넌트(Component) 개념을 기반으로 한 OO(Object Oriented), CBD(Component Based Development) 방법론 등이 많이 활용되었고, 최근에는 아키텍처와 어플리케이션까지 재사용이 확대되는 추세다.
재사용을 망설이는 이유
재사용의 장점은 매우 높지만, 최근까지도 잘 활성화 되지 않고 있다. 처음부터 재사용을 위한 개발을 해야 하기 때문에 추가적인 비용과 시간이 많이 들고 재사용 전문가가 반드시 개발에 참여해야 하기 때문이다. 재사용 소프트웨어를 만들어도 유지 보수하는데 어려움이 매우 크고 들어간 노력 대비 재사용되는 횟수가 적은 것도 재사용을 망설이는 요인 중 하나다. 그 중에서도 가장 큰 요인은 다른 사람이 개발한 것을 믿지 못하는 개발 문화에 있다.
재사용의 단위
재사용은 검증된 소프트웨어를 사용하여 프로젝트 실패 위험을 감소시키고 개발 시간을 단축하는데 목적이 있기 때문에 다른 프로젝트에 잘 적용되도록 범용성이 높아야 하고 재사용을 위해 별도의 수정작업을 거치지 않도록 모듈화가 되어야 한다(표1). 하나의 퍼즐을 완성하기 위해서는 전체 그림을 보면서 조각을 맞추듯이 전체 아키텍처를 그려놓고 처음부터 재사용을 위한 모듈화를 시작해야 한다.
<표1> 재사용을 위한 모듈화의 조건
모듈(Module), 객체(Object), 컴포넌트(Component)는 엄밀히 말하자면 차이가 있는 개념이지만 소프트웨어를 구성하는 단위이고 재사용이 가능하다는 점에서는 같은 개념이라고 볼 수 있다.
하나의 객체는 기능을 나타내는 오퍼레이션(Operation)과 오퍼레이션이 동작되도록 하는 로직(Logic)으로 구분되어 코딩 되는데 많은 테스트를 거쳐 검증이 완료된 객체의 사용은 시간과 비용이 낮아질 뿐만 아니라 오류를 줄이고 신뢰도를 높이는 효과를 얻을 수 있다.
이렇게 만들어진 객체는 재사용을 하는 부분에 따라 3가지로 구분을 하는데 오퍼레이션을 재사용하는 라이브러리(Library)와 로직을 재사용하는 프레임워크(Framework), 자주 사용되는 개발 형태를 패턴으로 정의한 디자인 패턴(Design pattern)이 있다(그림1).