Altruistic Programmer's Blog (KR)

이타주의 프로그래머의 블로그

Archive for the ‘디자인 패턴’ tag

소프트웨어 공학의 사실과 오해 3 – 재사용

without comments

http://www.yes24.com/24/goods/1418676

재사용

소규모 재사용(서브루틴 라이브러리)은 거의 50년 전부터 시작되어 잘 해결된 문제라고 한다. 다시 말해 유효성이 검증되었다는 얘기. 다만 여기서의 논쟁은 컴퓨터 분야의 많은 사람들이 재사용을 새로운 아이디어라고 생각해서 지나치게 열광한다는 점. (p.91)

반면에 대규모 재사용(컴포넌트)은 중요하고 바람직한 것이라 생각하지만, 거의 대부분의 문제가 해결되지 않은채 남아있다고 한다. 다시 말해 유효성이 검증되지 않았다는 얘기. 이는 소프트웨어의 다양성에 기인한 것으로 단순히 너무 어려워서 풀 수 없는 문제다.(p.95)

대규모 재사용은 한정된 범위의 애플리케이션 도메인에 적용한다면 성공할 가능성이 충분히 있지만, 여러 프로젝트나 여러 도메인에 걸쳐 적용하려 한다면 성공할 가능성이 거의 없다(McBreen 2002)

p.98

인정하기는 싫지만 이 말이 사실이라는 걸 부인할 수가 없다. 라이브러리는 더 많은 기능을 제공할수록, 더 많은 제약을 가질 수 밖에 없다. 즉 범용성이 줄어드는 것. 그래서 라이브러리를 가능한 작은 단위로 나누는 것이 중요하다. 각 라이브러리 당 제공하는 기능이 줄어들면 제약도 함께 줄어드므로 범용성이 늘어난다.

재사용에 대한 두 가지 ’3의 법칙’이 있다. (1)재사용 가능 컴포넌트를 만드는 것은 단일 목적의 컴포넌트를 만드는 것보다 세배는 어렵다. (2)컴포넌트는 재사용 라이브러리로 인정할 만큼 일반적이라 생각하기 전에 서로 다른 세 가지 애플리케이션에 적용해봐야 한다.

p.100

대부분의 경력이 공통 라이브러리 제작이었던 나로서도 상당히 공감이 되는 얘기. 작년에 라이브러리가 아닌 서비스용 애플리케이션을 만들 기회가 있었는데 다른 애플리케이션을 신경 쓸 것도 없고, 작업중인 애플리케이션이 잘 동작하는지만 보장하면 되므로 좀 더 수월하다는 느낌을 받았다. 공통 라이브러리는 코드 한 줄을 바꾸더라도 신경 쓸 것이 많고, 모든 애플리케이션에서 문제가 없는지 확인하기가 어렵다.

디자인 패턴 재사용은 코드 재사용의 본질적인 문제에 대한 해결책 중 하나다.

p.111

설계를 재사용하는 행위를 칭찬하는 것. 저자는 아주 오래전부터 해오던 디자인의 재사용에 디자인 패턴이라는 이름을 붙여서 유명해지고, 사람들이 열광하는 것에 대해서는 회의적인 관점을 가지고 있다.

디자인 패턴 개념은 널리 받아들여진다. 지속적으로 확대되고 있는 패턴의 영역을 조사하고 알리는 데 힘쓰는 열정적인 학회도 있다. 실무자들은 자신들에게 익숙하지 않은 새로운 패턴뿐 아니라 패턴의 체계와 구조를 제공한다는 측면에서 그런 활동을 높이 평가한다.
그러나 이런 활동이 실제로 효과가 있는지는 측정하기 어렵다. 일반적인 애플리케이션 프로그램에서 얼마나 많은 부분이 정형화된 패턴을 기반으로 했는지에 대한 연구는 내가 아는 한 없다.

p.114

동의하기는 힘들지만, 적어도 귀 얇은 나에게 저자의 비판적인 자세는 너무 존경스럽다.