소프트웨어 아키텍처

0

정보처리기사

목록 보기
63/100

소프트웨어 아키텍처(Software Architecture)


1. 소프트웨어 아키텍처의 개념

  • 아키텍처란 구조(Structure)를 의미하며, 소프트웨어 개발에서 시스템을 구성하는 각 요소들의 관계를 나타냄.
  • 소프트웨어의 설계도(평면도)와 같으며, 이해관계자 간의 의사소통 도구로 사용됨.
  • 모듈, 컴포넌트, 인터페이스 등의 배치를 계획하고 관리함.

2. 소프트웨어 아키텍처의 설계 원리

  1. 모듈화(Modularity)

    • 소프트웨어를 기능별로 모듈 단위로 나누어 개발과 유지보수를 용이하게 함.
    • 너무 세분화하면 통합 비용 증가, 너무 크게 나누면 개발 비용이 높아짐.
  2. 추상화(Abstraction)

    • 불필요한 세부 정보를 생략하고 핵심 요소에 집중하여 설계.
    • 전체 시스템을 포괄적으로 설계한 후, 점진적으로 세분화함.
    • 유형:
      • 과정 추상화: 전체적인 흐름에 중점을 둔 설계.
      • 데이터 추상화: 데이터 구조를 대표할 수 있는 표현 사용.
      • 제어 추상화: 이벤트 발생의 절차나 방법을 대표 표현으로 대체.
  3. 단계적 분해(Stepwise Refinement)

    • 상위의 중요 개념부터 시작하여 하위로 점차적으로 세분화하는 설계 기법.
    • 기능을 점진적으로 구체화하여 설계함.
    • 하향식 설계 방식으로 주요 개념을 먼저 설계한 후, 세부 알고리즘이나 자료 구조는 뒤로 미룸.
  4. 정보 은닉(Information Hiding)

    • 각 모듈 내부의 절차와 자료를 다른 모듈에서 접근하지 못하도록 제한.
    • 변경 시 다른 모듈에 영향을 주지 않게 하여 유지보수를 용이하게 함.
    • 예시: 캡슐 형태의 약과 같이 내부 구성 요소를 외부에서 볼 수 없음.

3. 상위 설계와 상세 설계

  1. 상위 설계 (High-Level Design)

    • 소프트웨어의 전체적인 구조를 설계함.
    • 주요 요소: 시스템 구조, DB 설계, 인터페이스 등.
  2. 상세 설계 (Low-Level Design)

    • 시스템 내부 구조 및 동작 방식을 설계함.
    • 주요 요소: 컴포넌트 설계, 자료 구조, 알고리즘 등.

4. 소프트웨어 아키텍처 품질 속성

  • 소프트웨어가 이해관계자의 요구를 충족하도록 품질 수준을 유지하고 보장함.
  • 시스템 측면, 비즈니스 측면, 아키텍처 측면에서 각각 품질을 평가.

5. 아키텍처 설계 과정

  1. 설계 목표 설정: 요구사항 분석 후, 전체 시스템 설계 목표를 설정.
  2. 시스템 타입 결정: 시스템의 타입, 서브시스템, 패턴 등을 결정.
  3. 아키텍처 패턴 적용: 시스템 타입에 맞는 패턴을 적용하여 설계.
  4. 서브시스템 구체화: 서브시스템의 기능과 상호작용 방식을 구체화.
  5. 설계 검토: 요구사항과 설계 목표가 충족되는지 검토.

6. 협약에 의한 설계 (Design by Contract)

  • 컴포넌트를 설계할 때 명세 조건을 공유하여 명확한 인터페이스를 제공함.
  • 조건의 종류:
    • 선행 조건: 오퍼레이션 호출 전 만족해야 할 조건.
    • 결과 조건: 오퍼레이션 수행 후 만족해야 할 조건.
    • 불변 조건: 오퍼레이션 실행 중 항상 만족해야 할 조건.

7. 주요 시험 대비 요점

  • 소프트웨어 아키텍처의 정의와 역할을 이해할 것.
  • 설계 원리(모듈화, 추상화, 단계적 분해, 정보 은닉)의 개념과 특징을 숙지.
  • 설계 과정 순서품질 속성을 명확하게 기억할 것.
  • 상위 설계상세 설계의 차이점을 파악할 것.

0개의 댓글