관심사의 분리

관심사의 분리(SoC; Separation of Concerns)

애플리케이션을 서로 겹치지 않는 개별 단위로 나누는 과정을 말하며, 각각은 자체적인 경계를 지닌다. 관심사는 피처(feature), 기능, 관심정보, 데이터, 프로세스일 수 있다.

관심사의 분리가 유용한 이유는 한 영역이 다른 영역과 격리되기 때문에 다른 영역에 영향을 주지 않고도 변경할 수 있다는 것이며, 애플리케이션의 전체적인 유지보수가 용이해진다.

변경이 지역화되기 때문에 디버그, 문제 격리와 식별이 용이해지고, 코드 중복이 줄어들이 코드 재사용이 증진된다.

관심사의 구현으로 메서드, 클래스, 패키지, 컴포넌트, 폴더 계층구조, 계층, 티어, 라이브러리, 설치 프로그램, 테이블, 데이터베이스, 애플리케이션, 서비스가 있다.

관심사의 분리의 실제 사례로는 HTML/CSS/자바스크립트의 분리와 MVC 패턴이 있다.

관심사는 기능적/비기능적, 시간, 위치, 특수화/일반화, 목적에 따라 분리할 수 있다.

관심사의 분리에 사용되는 전략

  • 피처와 어스펙트(features and aspects)
  • 티어와 계층(tiers and layers)
  • 단계적 정제(stepwise refinement)
  • 모듈화(modularization)

출처: SOFTWARE DESIGN PRINCIPLES

윈도우 10 업그레이드 알림 끄는 법

윈도우 8.1을 사용 중인데, 얼마전부터 윈도우 10으로 업그레이드하라고 알림이 나타난다. 이제는 아예 윈도우 10을 다운로드해서 알아서 설치할 기세다. 그 기세에 눌리지 않고 성가신 알림이 뜨지 않게 하는 방법을 찾아보니 다음과 같은 글이 나왔다.

읽기 좋은 코드가 좋은 코드다 – 더스틴 보즈웰

프로그래밍할 때 고민되는 것 중 하나가 바로 ‘작명’이다. 그리고 정량적으로 측정되지는 않지만 좋은 프로그램의 조건으로 가독성을 꼽기도 한다. 그동안 이러한 작명이나 가독성에 관해서는 여러 프로그래밍 책에서 다루기도 했지만 이를 전문적으로 다룬 책은 없었다. 이 책은 바로 그러한 틈을 메꾸는 책이다.

정량적으로 측정되지 않는, 다시 말해 뭔가 머릿속에 자리 잡고는 있지만 말로는 설명하기가 거시기한 부분들을 체계적으로 정리했다는 점에서 이 책은 빛을 발한다. 많지 않은 분량이지만 이제 막 프로그래밍을 시작한 초보 프로그래머나, 어느 정도 프로그래밍 경험이 있지만 아직까지도 그런 부분에는 뭔가 딱히 자신감 있게 이야기할 수 없는 프로그래머들이 꼭 읽어봐야 할 책이다.

원서의 제목은 『The Art of Readable Code』인데, 번역서 제목도 이 책의 요체를 잘 짚어내고 있다. 센스 있게 작명했다.