N° 01 — 목록

'software-architecture' (9)

  1. Architecture & Design/Software Architecture

    Foundations - 03. 결합과 응집

    접착제로 붙인 모형은 뜯기 어렵다 — 결합과 응집아이가 접착제로 붙인 플라스틱 모형을 생각해 보자. 날개가 떨어져 다시 붙이려면 접착제를 뜯어내야 하고, 그러다 몸통이 부서진다. 한 부분을 교체하려면 전체를 해체하는 수고가 든다. 반면 레고 블록으로 만든 비행기는 날개 블록을 빼고 다른 걸 끼울 수 있다. 한 블록을 바꿔도 나머지는 그대로다.소프트웨어 모듈도 같다. 접착제로 붙인 것처럼 얽혀 있으면 한 부분을 바꿀 때 다른 부분이 부서진다. 레고처럼 분리돼 있으면 변경이 국소에 머문다. 전자를 결합도(coupling)가 높다고, 후자를 낮다고 부른다. 그리고 결합을 가늠하는 반대쪽 끝에 응집도(cohesion)가 있다 — 한 조립품 안의 블록들이 하나의 목적(예: 자동차 모형)으로 뭉쳐 있는 정도. 이 ..

    · 댓글
  2. Architecture & Design/Software Architecture

    Foundations - 02. 품질 속성

    "비기능적 요구사항"이라는 이름이 아키텍처를 망치는 이유차를 산다고 하자. 두 차 모두 "달린다, 멈춘다, 돈다"라는 같은 기능을 한다. 그런데 한 대는 리터당 15km를 가고 충돌 테스트 별 다섯 개를 받았으며 정비가 쉽고, 다른 대는 리터당 5km에 충돌 테스트 별 하나에 부품이 비싸다. 같은 기능을 해도 이 두 차는 전혀 다른 차다. 그 차이를 만드는 것 — 연비, 안전, 정비 편의성, 가속력 — 이 차의 품질 속성이다.소프트웨어도 같다. 주문을 받고 결제하고 재고를 깎는 같은 기능을 해도, 하루 1만 건을 버티는 시스템과 1억 건을 버티는 시스템은 같은 기능의 다른 "차"다. 그런데 전통적으로 이런 차이를 "비기능적 요구사항"이라 불렀다. 이 이름이 문제다."비기능적"이라는 말의 함정요구사항 문서..

    · 댓글 1
  3. Architecture & Design/Software Architecture

    Foundations - 01. 아키텍처란 무엇인가

    코드를 짜는 순간, 아키텍처는 이미 정해져 있다집을 지을 때 거실에서 영화를 보고 주방에서 요리하고 침실에서 잔다는 방의 용도가 같아도, 골조를 목조로 세울지 철골 콘크리트로 세울지는 다른 문제다. 지진이 오거나 3층을 증축하려 할 때 결과를 갈라놓는 건 방의 용도가 아니라 이 골조다. 소프트웨어도 비슷하다. 코드가 "무엇을 하는가"를 정하면, 아키텍처는 그 코드가 "어떤 구조로 세워졌는가"를 결정한다. 그리고 벽돌을 쌓는 순간 골조는 이미 정해진다 — "우린 스타트업이라 아키텍처 같은 건 안 한다"는 말이 성립하지 않는다.아키텍처는 부정할 수 없다소프트웨어 아키텍처 분야의 고전 에서 Bass·Clements·Kazman은 아키텍처를 "시스템에 대해 추론할 때 필요한 구조들의 집합"이라 정의한다. 요소,..

    · 댓글