brunch

소프트웨어 재사용을 주목하자 [2]

소프트웨어 모듈러 디자인

by 심야서점

많은 기업들이 소프트웨어 개발의 효율성을 위해서 크든, 작든 다양한 재사용 활동을 수행합니다.

성공하는 방식은 제각각이지만, 실패하는 재사용 방식은 일정한 패턴을 보입니다.


이번 글에서는 실패하는 재사용 방식을 살펴보고, 그에 대한 보완 방법을 살펴보려고 합니다.


실제 실패하는 재사용은 다음 절차를 거칩니다.


생성(정제) → 재사용 → 변경 → 폐기


먼저, 재사용할 대상을 생성하거나, 정제를 합니다. 보통은 재사용 대상을 기획을 해서 그것만 새롭게 만드는 것이 아니라, 기존 완제품을 만드는 과정에서 만들어진 라이브러리, 컴포넌트, 모듈 등 재사용 대상을 추후 제품에도 적용하려고 완제품에서 재사용 대상을 분리하고 정제하는 과정을 거칩니다.


보통 이렇게 얻어지는 재사용 항목은 다양한 용처에서 사용하기 위해서 정제 과정을 거치게 되는 데, 몇 가지 이유로 문제가 발생합니다.


1. 원 사용처에 과적합하게 개발되어 재사용 범위가 넓지 않다.

2. 재사용 규모가 작아서 재사용하더라도 효과가 크지 않다.

3. 재사용할 수 있는 조건, 설계/적용 또는 변경 규칙 등이 포함된 가이드가 부족하다.


이렇게 만들어진 재사용 대상을 운 좋게 후속 제품에 활용하는 기회를 얻었다고 칩시다.


재사용하려는 개발자는 자신이 직접 만드는 것과 해당 재사용 대상을 가져다 쓰는 것을 비교하여 재사용을 결정하게 됩니다. 만약 재사용해야 하는 대상을 가져다 쓰려면 소스 코드를 직접 분석해서 내용을 파악해서 써야 한다면 오히려 직접 개발하는 편이 더 나을 수도 있습니다.


그래서, 재사용을 잘하기 위해서는 재사용 대상에 대한 문서화가 필수적으로 이뤄져야 합니다.


만약 회사에서 시키니까, 또는 자발적으로 하더라도 그것을 관리하는 주체가 명확하지 않으면 재사용 기회조차도 얻기 힘들 겁니다.


그다음 재사용을 하는 것으로 결정했으나, 재사용 대상을 만드는 과정이 일반적으로 재사용을 위해서 이뤄진 활동이 아니므로 불가피하게 재사용 대상에 대한 변경이 이루어질 수 있습니다. 이럴 경우는 재사용에 대한 온전한 효과를 얻을 수 없겠죠.


마지막으로 원래 만들었던 재사용 대상, 적용되면서 변경된 재사용 대상 등 다양한 버전이 존재하고, 비즈니스나 기술 변화에 따라서 능동적으로 재사용 대상에 대한 관리를 해주지 않으면 얼마 있지 않아서 폐기됩니다.


그렇다면 이상적인 재사용 활동은 어떻게 이루어질까요? 이다음은 다음 글에서 다뤄보겠습니다.


Image by alluvitmedia from Pixabay

keyword
매거진의 이전글소프트웨어 재사용을 주목하자