1. 소프트웨어 패턴

패턴은 실무 컨텍스트에서 유용하게 사용되어 왔고, 다른 실무 컨텍스트에서 유용하게 사용될 것이라고 생각하는 아이디어이다.

패턴은 아래와 같은 특징을 가지고 있다.

  1. 패턴은 반복적으로 발생하는 문제의 해법의 쌍으로 정의된다.
  2. 패턴을 사용함으로써 알려진 문제와 해법을 정리하고, 다른 사람들과 의사소통할 수 있다.
  3. 패턴은 추상적인 원칙과 실무간의 간격을 매워주는 역할을 한다.
  4. 패턴은 실무에서 발생했다.

패은 분석과 설계에 한정되는 것은 아니며, 프로젝트 관리나 조직 구성과 같이 반복적인 규칙을 발견할 수 있는 모든 영역을 의미한다.

패턴은 홀로 존재하지 않으며, 다른 작은 패턴으로 쪼개지거나, 더 큰 패턴에 통합될 수 있다.

여러 패턴이 모여 패턴 언어를 구성하며, 패턴언어는 패턴 카테고리뿐만 아니라 패턴의 생성 규칙과 패턴 언어의 관계 및 협력규칙을 포함한다.

패턴 분류

패턴을 분류하는 가장 일반적인 방법은 적용 단게에 따라 아키텍처 패턴, 분석 패턴, 디자인 패턴, 이디엄으로 나뉠 수 있다.

  1. 디자인 패턴 - 특정 설계 문제를 해결하는 것을 목적으로 하며, 프로그래밍 언어의 독립적이다.