[자격증]/정보처리기사 실기

4. 서버 프로그램 구현_63 소프트웨어 아키텍처

Ben의 프로그램 2023. 6. 30. 21:37
728x90

소프트웨어 아키텍처

  • 소프트웨어 아키텍처 ?

    소프트웨어 아키텍처 설계는 의뢰자의 요구에 따라 어떻게 전체적인 틀을 짤지 대략적인 것을 정하는 과정이다. 소프트웨어 아키텍처는 소프트웨어의 골격이 되는 기본 구조로, 기능적/비기능적 요구사항이 반영되어서 이해관계자들의 의사소통 도구가 된다. 

    어려운 말로 하면 
    '소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체'

    애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 등을 결정한다. 

    소프트웨어 아키텍처 설계의 기본 원리에는 모듈화, 추상화, 단계적 분해, 정보은닉이 있다. 

모듈화 Modularity

  • 모듈 ?

    모듈이라는 것은 전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 소스 코드 한 묶음을 의미한다.
  • 모듈화 ?

    소프트웨어 아키텍처 설계 기본 원리 중 하나이다.
    모듈화는 소프트웨어의 성능 향상, 시스템 수정 및 재사용 & 유지 관리 용이성 확보의 목적으로 시스템의 기능들을 모듈 단위로 나누는 것을 의미한다. 

    모듈 크기가 너무 작으면 개수가 많아지고 모듈 통합 비용이 증가한다. 
    모듈 크기가 너무 크면 개수가 적어 통합 비용은 적지만, 모듈 하나 개발 비용이 증가한다. 

추상화 Abstraction 

  • 추상화 ?

    소프트웨어 아키텍처 설계 기본 원리 중 하나이다.
    추상화는 문제를 하나의 포괄적인 개념으로 설계한 후 세분화하면서 구체화시켜나가는 것을 의미한다.
    완전한 시스템을 구축하기 전에 그 시스템과 유사한 모델을 만들어 여러 가지 요인 테스트가 가능하다. 
  • 추상화 유형

    - 과정 추상화 
    : 자세한 수행 과정은 정의하지 않으며, 흐름 파악만 가능하도록 (흐름 과정을 추상화시킴) 설계

    - 데이터 추상화
    : 데이터의 속성, 용도 정의하지 않고 데이터 구조로 표현함 

    - 제어 추상화
    : 이벤트 발생 절차, 방법 정의하지 않고 추상화 시켜서 표현함.

단계적 분해 Stepwise Refinement

  • 단계적 분해? 

    소프트웨어 아키텍처 설계 기본 원리 중 하나이다.
    단계적 분해는 상위 중요 개념 먼저 그 후 하위 개념을 구체화시키는 분할 기법이다. 
    즉, 하향식 설계 전략이다.
    소프트웨어 포괄 기능 부터 시작하여 점차적으로 구체화하여 알고리즘, 자료 구조 등 상세한 내역은 가능한 뒤에서 작업함. 

정보 은닉 Information Hiding

  • 정보 은닉 ?

    소프트웨어 아키텍처 설계 기본 원리 중 하나이다.
    정보 은닉은 캡슐이라고 생각할 수 있다. 어떤 사람에게 기능(알약)을 제공해야 하는데, 그 사람이 알약을 먹기만 하면 되지, 어떤 재료가 들어있는지 알려줄 필요가 없을 때 사용하는 것이 정보 은닉이다.
    어려운 말로
    '모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법'을 의미한다. 
    하나의 모듈이 변경되더라도 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수가 용이하다. 

소프트웨어 아키텍처 품질

  • 소프트웨어 아키텍처 품질 평가 요소에는 시스템 측면, 비즈니스 측면, 아키텍처 측면 평가 요소들이 있다. 
  • 시스템 측면
    : 성능, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성 등
  • 비즈니스 측면 
    : 시장 적시성, 비용과 혜택, 예산 시스템 수명, 목표 시장, 공개 일정 등
  • 아키텍처 측면
    : 개념적 무결성, 정확성, 완결성, 구축 가능성, 변경성, 시험성 등

소프트웨어 아키텍처 설계 과정

  • 설계 목표 설정 
    : 요구사항을 분석하여 전체 시스템의 설계 목표 설정
  • 시스템 타입 결정
    : 시스템과 서브 시스템의 타입을 결정, 아키텍처 패턴 선택
  • 아키텍처 패턴 적용
    : 시스템의 표준 아키텍처 설계
  • 서브시스템 구체화
    : 서비 시스템의 기능 및 서브시스템 간의 상호작용을 위한 동작과 인터페이스정의
  • 검토
    : 설계 목표, 요구사항, 설계의 기본 원리 등을 만족하는지 아키텍처 검토