안티패턴

안티패턴(anti-pattern)은 소프트웨어 공학, 프로젝트 관리, 비즈니스 프로세스에서 반복되는 문제에 대한 일반적인 대응으로, 보통 비효과적이며 매우 역효과적일 위험이 있다. 이 용어는 1995년 컴퓨터 프로그래머 앤드루 쾨니히(Andrew Koenig)가 만든 것으로, 《디자인 패턴》(Design Patterns, 소프트웨어 개발에서 저자들이 매우 신뢰할 만하고 효과적이라고 여긴 여러 디자인 패턴을 강조한 책)에서 영감을 받아 《객체 지향 프로그래밍 저널》(Journal of Object-Oriented Programming)에 발표한 그의 논문에서 처음 출간되었다. 1996년 마이클 액크로이드(Michael Ackroyd)가 오브젝트 월드 웨스트 컨퍼런스(Object World West Conference)에서 발표한 추가 논문에서도 안티패턴을 문서화했다.

하지만 1998년 《안티패턴》(AntiPatterns) 책이 이 아이디어를 대중화하고 소프트웨어 설계 분야를 넘어 소프트웨어 아키텍처와 프로젝트 관리까지 범위를 확장했다. 이후 다른 저자들은 환경적, 조직적, 문화적 안티패턴을 포함하도록 더욱 확장했다.

 정의 
《디자인 패턴》의 저자들에 따르면, 안티패턴을 나쁜 습관, 나쁜 관행, 또는 나쁜 아이디어와 구별하는 두 가지 핵심 요소가 있다.

 안티패턴은 일반적으로 사용되는 프로세스, 구조 또는 행동 패턴으로, 처음에는 문제에 대한 적절하고 효과적인 대응으로 보이지만, 좋은 결과보다 나쁜 결과가 더 많다.
 안티패턴이 해결하려고 시도하는 문제에 대한 다른 해결책이 존재한다. 이 해결책은 문서화되고, 반복 가능하며, 안티패턴과 달리 효과적임이 입증되었다.

일반적으로 사용되는 것에 대한 지침은 패턴과 유사한 "3의 법칙"이다: 안티패턴이 되려면 최소 세 번 발생하는 것이 목격되어야 한다.

 사용 
안티패턴을 문서화하는 것은 문제 공간을 분석하고 전문가 지식을 포착하는 효과적인 방법이 될 수 있다.

일부 안티패턴 설명은 단순히 패턴의 부정적인 결과만 문서화하지만, 좋은 안티패턴 문서화는 또한 대안을 제공하거나 안티패턴을 개선할 수단을 제공한다.

 소프트웨어 공학 안티패턴 
소프트웨어 공학에서 안티패턴에는 빅 볼 오브 머드(big ball of mud, 설계의 부재), 갓 오브젝트(제어가 여러 클래스에 분산되지 않고 단일 클래스가 프로그램의 모든 제어를 처리하는 것), 매직 넘버(설명되지 않은 의미를 가지거나 명명된 상수로 대체될 수 있는 여러 번 나타나는 고유 값들), 폴터가이스트(다른 클래스의 메서드를 호출하기 위해서만 존재하는 일시적인 컨트롤러 클래스들)가 포함된다.

 빅 볼 오브 머드 
빅 볼 오브 머드는 인식 가능한 아키텍처가 부족한 소프트웨어 시스템을 나타낸다. 소프트웨어 공학 관점에서는 바람직하지 않지만, 비즈니스 압박, 개발자 이직, 코드 엔트로피로 인해 이러한 시스템은 실제로 흔하다.

이 용어는 브라이언 푸트(Brian Foote)와 조셉 요더(Joseph Yoder)의 1997년 동명의 논문에서 대중화되었으며, 이 논문에서 다음과 같이 용어를 정의했다.

푸트와 요더는 이러한 종류의 아키텍처에 대한 "빅 볼 오브 머드" 용어의 창시자가 브라이언 매릭(Brian Marick)임을 인정했다.

 프로젝트 관리 안티패턴 
《안티패턴》 책에 포함된 프로젝트 관리 안티패턴에는 다음이 있다.

 블로하드 잼버리(Blowhard Jamboree, 업계 전문가들의 과도함)
 분석 마비(Analysis paralysis)
 뷰그래프 엔지니어링(Viewgraph Engineering, 프레젠테이션 제작에 너무 많은 시간을 보내고 실제 소프트웨어에는 충분하지 않음)
 계획에 의한 죽음(Death by Planning, 마찬가지로 너무 많은 계획)
 성공에 대한 두려움(Fear of Success, 프로젝트 완료 근처에서의 비합리적인 두려움)
 콘콥(The Corncob, 사람들과의 어려움)
 지적 폭력(Intellectual Violence, 전문용어나 비밀스러운 기술의 사용을 통한 위협)
 비합리적 관리(Irrational Management, 나쁜 관리 습관)
 연기와 거울(Smoke and Mirrors, 판매원들의 데모와 프로토타입의 과도한 사용)
 담 너머로 던지기(Throw It Over the Wall, 동의 없이 개발자들에게 유행하는 소프트웨어 공학 관행을 강요하기)
 소방훈련(Fire Drill, 짧은 위기로 구두점이 찍힌 긴 단조로움의 기간)
 불화(The Feud, 관리자들 간의 갈등)
 이메일은 위험하다(e-mail Is Dangerous, 잘못 조언된 이메일 메시지로 인한 상황들).

 각주 

분류:디자인
분류:소프트웨어 구조
분류:반사회적 행동
분류:1995년 신조어

 참고문헌 







 더 읽어보기 


 Later re-printed in: 




 외부 링크 

 Anti-pattern - 위키위키웹