적정 소프트웨어 아키텍처

1. 개요

나무만 보면 숲을 보기 어렵듯이, 설계 세부 사항에서 아키텍처를 찾기란 어렵다. 하지만 아키텍처가 다른 여러 유사한 시스템을 비교해서 무엇이 다른지 알아야 하고, 아키텍처를 식별할 수 있어야 한다.

시스템 아키텍처는 기능과는 별개의 선택이다.

이키텍처 전문가는 도메인 사실, 설계 결정, 구현 세부 정보를 구분하고 묶을 수 있다.

  • 직책: 아키텍트
  • 프로세스: 아키텍팅
  • 엔지니어링 결과물: 이키텍처

이 책은 개발해야 하는 소프트웨어의 리스크로 아키텍처 작업량을 결정하는 방법을 제안한다.

아키텍처링에 투입할 노력은 소프트웨어 개바의 실패 리스크에 따라 달라져야 한다. 각 프로젝트의 리스크는 서로 다르다.

리스크 주도 모델은 아키텍처 작업을 얼마나 해야 하고 어떤 종류의 아키텍처 설계 기법을 사용해야 하는가와 같은 더 세세한 질문에 답하는 데 도움이 된다.

소프트웨어 제작과 관련된 소프트웨어 아키텍처에 초점을 맞추고 소프트웨어가 엔지니어링 요구를 충족시키는 데 사용하는 기법을 설명한다.

Part1. 리스크 주도 소프트웨어 아키텍처

2. 소프트웨어 아키텍처

소프트웨어 아키텍처는 시스템 설계에 관한 것이다. 아키텍처가 시스템의 골격 역할을 하고, 품질 속성에 영햐을 미치며, 시스템을 제한하기 때문에 소프트웨어 아키텍처 선택이 중요하다. 아키텍처 대부분은 시스템에서 제공해야 하는 기능과 상관관계가 없다.

소프트웨어 시스템의 설계는 개발자의 머리에 있는 결정과 의도로 이루어진다. 설계는 소프트웨어 아키텍처상세 설게로 나눌 수 있다.

아키텍처가 시스템에 대해 추론해서 나오는 구조의 집합이라고 한다. 아키텍처 세부 사항을 다른 세부 사항과 구별하기 위한 핵심은 의도를 파악하는 것이다.

소프트웨어 아키텍처가 중요한 이유

  • 아키텍처는 시스템의 골격 역할을 한다.
    • 아키텍처는 가시적인 큰 부분보다 더 많고, 보이지 않는 부분이 더 중요
  • 아키텍처는 품질 속성에 영향을 미친다.
    • 기능에 집중해야 한다.
    • 시스템에는 품질 속성 요구사항이라고 하는 기능과 관련이 없는 추가 요구사항이 있다.
  • 아키텍처는 (대부분) 기능과 직교한다.
    • 그러나 아키텍처가 기능과 잘 맞지 않으면 개발자는 이에 맞서 고군분투해야 한다.
    • 아키텍처와 기능을 혼합하여 사용할 수 있다.
      • 시스템의 아키텍처를 변경하면서 기능을 유지하거나 기능이 다른 시스템에서 동일한 아키텍처를 재사용할 수 잇다.
  • 아키텍처는 시스템을 제한한다.
    • 시스템이 하지 않는 일은 시스템이 하는 일만큼 중요하다.
      • 시스템에 요구되는 품질이 보장되는지 확인하려면 시스템이 수행하지 말아야 하는 작업을 알고 제약해야 한다.

제약 조건

엔지니어는 설계한 시스템이 의돤 대로 작동하는지 제약 조건을 사용하여 확인한다.

  • 판단을 구체화한다.
  • 개념적 무결성을 장려한다.
  • 복잡성을 줄인다.
  • 런타임 동작을 이해한다.

시스템 아키텍처를 설계하려면 허용되는 항목과 허용되지 않는 항목을 합리적으로 선택해야 한다.

results matching ""

    No results matching ""