맨위로가기

관심사 (컴퓨터 과학)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

관심사 분리(Separation of concerns)는 컴퓨터 과학 분야의 설계 원칙으로, 코드의 각 부분을 독립적인 관심사, 즉 특정 기능이나 책임을 다루도록 분리하는 것을 의미한다. 이러한 분리를 통해 모듈화된 프로그램을 만들 수 있으며, 시스템의 설계 복잡성을 줄이고 코드의 유지보수성을 향상시킬 수 있다. 에츠허르 데이크스트라는 '관심사 분리'라는 용어를 통해 이러한 모듈화의 개념을 설명했다. 코드 내에서 여러 관심사가 혼재되면 결합도가 높아지며, 하나의 관심사가 다른 관심사로부터 완전히 분리되지 못하는 경우 횡단 관심사가 발생한다. 횡단 관심사는 데이터 로깅과 같이 프로그램의 여러 부분에서 나타날 수 있으며, 다양한 프로그래밍 패러다임은 이러한 횡단 관심사 문제를 해결하기 위해 객체 지향 프로그래밍, 함수형 프로그래밍, 관점 지향 소프트웨어 개발 등을 활용한다.

더 읽어볼만한 페이지

  • 소프트웨어 공학 - 통합 개발 환경
    통합 개발 환경(IDE)은 코드 편집, 빌드, 디버깅 등 소프트웨어 개발에 필요한 여러 기능을 통합적으로 제공하는 응용 프로그램이다.
  • 소프트웨어 공학 - 소프트웨어 개발
    소프트웨어 개발은 요구사항 분석, 설계, 코딩, 테스트, 배포, 유지보수를 포함하는 컴퓨터 프로그램 및 관련 데이터를 만드는 과정으로, 다양한 방법론과 도구가 사용되며, 개발자 외에도 다양한 전문가들이 참여한다.
관심사 (컴퓨터 과학)
기본 정보
정의컴퓨터 과학에서, 관심사는 프로그램의 특정 부분에 영향을 미치는 요구 사항
관련 개념관점 지향 프로그래밍
관심사 분리
상세 내용
설명관심사는 프로그램의 특정 부분에 영향을 미치는 요구 사항, 목표 또는 영역이다. 소프트웨어 시스템은 다양한 관심사로 구성될 수 있으며, 각 관심사는 시스템의 특정 측면을 나타낸다.
예시사용자 인터페이스
데이터베이스 상호 작용
보안
로깅
비즈니스 로직
관심사 분리관심사 분리는 소프트웨어 설계 원칙으로, 프로그램을 독립적인 관심사로 분리하여 개발 및 유지 관리를 용이하게 한다.
관점 지향 프로그래밍관점 지향 프로그래밍(AOP)은 관심사 분리를 모듈화하는 것을 목표로 하는 프로그래밍 패러다임이다. AOP에서 관심사는 "관점"으로 캡슐화되어 핵심 비즈니스 로직과 분리된다.
장점코드 재사용성 향상
유지 보수성 향상
코드 가독성 향상
활용 분야
적용 분야웹 개발
엔터프라이즈 애플리케이션 개발
모바일 앱 개발
게임 개발
참고 자료
참고 문헌IBM Research - Concern Spaces (보관된 페이지)

2. 관심사 분리의 개념

에츠허르 데이크스트라는 프로그래머가 시스템 설계의 복잡성을 줄일 수 있도록 돕는 모듈화의 개념을 설명하기 위해 "관심사 분리"라는 용어를 만들었다.[5] 코드의 같은 부분에 서로 다른 두 가지 관심사가 섞여 있으면 밀접히 결합되어 있다고 한다. 모듈을 나눌 때 하나의 관심사가 다른 관심사와 완전히 분리되지 않아 횡단 관심사가 발생하기도 한다.[6]

데이터 로깅은 일반적인 횡단 관심사의 예시인데, 이는 데이터를 실제로 기록하는 특정 모듈 외에도 프로그램의 다른 많은 부분에서 사용되기 때문이다. 다양한 프로그래밍 패러다임들은 각기 다른 수준으로 횡단 관심사 문제를 해결한다.

관심사 분리 문제를 해결하는 대표적인 패러다임은 다음과 같다.

2. 1. 모듈성

각기 다른 관심사 문제를 해결하기 위해 일반적으로 코드는 논리적인 부분들로 분리될 수 있으며, 해당 부분의 특정한 정보를 알기 위해 해당 부분을 알아야 할 필요가 없게 된다. 이를 통해 모듈러 프로그램이 만들어지게 된다. 에츠허르 데이크스트라관심사 분리라는 용어를 만들어냈으며[5] 이러한 모듈화 뒷편의 사고방식을 기술함으로써 프로그래머가 시스템의 설계적 복잡성을 줄일 수 있게 한다. 코드의 같은 부분에 혼재된 2가지 다른 관심사는 밀접히 결합되어 있다고 이야기한다. 선택된 모듈 구획으로 말미암아 하나의 관심사가 다른 관심사로부터 완전히 분리되지 못하게 되는 경우가 있으며 이로 인해 횡단 관심사가 발생하게 된다.[6] 다양한 프로그래밍 패러다임들은 각기 다른 수준으로 횡단 관심사 문제를 해결한다. 데이터 로깅은 일반적인 횡단 관심사로서, 데이터를 실제로 기록하는 특정한 모듈 외에 프로그램의 다른 수많은 부분에서 사용된다.

관심사 분리 문제를 해결하는 특정한 패러다임은 다음과 같다.

2. 2. 결합도

일반적으로 코드는 각각 별개의 관심사를 다루는 논리적인 부분들로 분리될 수 있으며, 이는 특정 부분이 다른 부분에서 다루는 특정 정보를 알 필요성을 숨긴다. 이것은 모듈식 프로그램을 만든다. 에츠허르 데이크스트라는 이 모듈화의 배경에 있는 정신을 설명하기 위해 "관심사의 분리"라는 용어를 만들었으며,[2] 이는 프로그래머가 설계 중인 시스템의 복잡성을 줄일 수 있게 해준다. 코드의 동일한 부분에서 뒤섞이는 두 개의 서로 다른 관심사를 "강하게 결합된"이라고 한다. 때때로 선택된 모듈 분할은 하나의 관심사를 다른 관심사로부터 완전히 분리할 수 없게 하여 교차 관심사가 발생한다.[3] 다양한 프로그래밍 패러다임은 교차 관심사의 문제를 다양한 정도로 해결한다. 데이터 로깅은 일반적인 교차 관심사로, 실제로 데이터를 기록하는 특정 모듈 외에도 프로그램의 다른 많은 부분에서 사용된다.

관심사 분리 문제를 해결하는 특정한 패러다임은 다음과 같다.

2. 3. 횡단 관심사

에츠허르 데이크스트라가 만들어낸 관심사 분리라는 용어는 프로그래머가 시스템의 설계적 복잡성을 줄일 수 있게 해주는 모듈화의 사고방식을 기술한다.[5] 코드에서 같은 부분에 혼재된 2가지 다른 관심사가 있다면 밀접히 결합되어 있다고 한다. 선택된 모듈 구획으로 인해 하나의 관심사가 다른 관심사로부터 완전히 분리되지 못하면 횡단 관심사가 발생하게 된다.[6] 데이터 로깅은 일반적인 횡단 관심사인데, 이는 데이터를 기록하는 특정한 모듈 외에도 프로그램의 다른 수많은 부분에서 사용되기 때문이다.

다양한 프로그래밍 패러다임들은 각기 다른 수준으로 횡단 관심사 문제를 해결한다. 관심사 분리 문제를 해결하는 특정한 패러다임은 다음과 같다.

3. 관심사 분리를 다루는 프로그래밍 패러다임

코드는 각기 다른 관심사 문제를 해결하기 위해 일반적으로 논리적인 부분들로 분리될 수 있다. 각 부분은 다른 부분의 특정한 정보를 알 필요가 없게 되어, 모듈러 프로그램을 만들 수 있다. 에츠허르 데이크스트라는 이러한 모듈화의 배경이 되는 개념을 설명하기 위해 "관심사 분리"라는 용어를 만들었으며,[5] 이는 프로그래머가 설계 중인 시스템의 복잡성을 줄일 수 있게 해준다. 코드의 동일한 부분에서 뒤섞이는 두 개의 서로 다른 관심사는 "밀접히 결합"되어 있다고 한다.

때때로 선택된 모듈 분할은 하나의 관심사를 다른 관심사로부터 완전히 분리할 수 없게 하여 횡단 관심사가 발생하기도 한다.[6] 다양한 프로그래밍 패러다임횡단 관심사의 문제를 다양한 정도로 해결한다. 데이터 로깅은 일반적인 횡단 관심사로, 실제로 데이터를 기록하는 특정 모듈 외에도 프로그램의 다른 많은 부분에서 사용된다.

관심사 분리 문제를 해결하는 주요 패러다임은 다음과 같다:

3. 1. 객체 지향 프로그래밍 (OOP)

객체 지향 프로그래밍에서 관심사는 객체로 표현된다.[2] 객체 지향 프로그래밍은 관심사 분리 문제를 해결하는 특정한 패러다임 중 하나이다.[5]

3. 2. 함수형 프로그래밍 (FP)

함수형 프로그래밍에서 관심사는 함수로 설명된다.[5] 함수형 프로그래밍횡단 관심사 문제를 해결하는 특정한 패러다임 중 하나이다.[6]

3. 3. 관점 지향 소프트웨어 개발 (AOSD)

관점 지향 소프트웨어 개발은 관심사와 그 상호작용을 자신만의 구성체로 취급한다.[6]

4. 예시: 데이터 로깅

데이터 로깅은 일반적인 횡단 관심사의 예시이다. 데이터 로깅은 실제로 데이터를 기록하는 특정한 모듈 외에도 프로그램의 다른 많은 부분에서 사용된다.[6]

참조

[1] 웹사이트 Concern Spaces at IBM http://www.research.[...] 2008-01-22
[2] 서적 Selected writings on Computing: A Personal Perspective https://archive.org/[...] Springer-Verlag New York, Inc.
[3] 간행물 RG: A Case-Study For Aspect-Oriented Programming http://www2.parc.com[...] Xerox Palo Alto Research Center 2007-09-08
[4] 웹사이트 Concern Spaces at IBM http://www.research.[...]
[5] 서적 Selected writings on Computing: A Personal Perspective Springer-Verlag New York, Inc.
[6] 간행물 RG: A Case-Study For Aspect-Oriented Programming http://www2.parc.com[...] Xerox Palo Alto Research Center 2007-09-08



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com