소프트웨어 아키텍처(1과목)

개발로 쓰는 개발 노트·2023년 6월 28일

정보처리기사 준비

목록 보기
21/57

소프트웨어 아키텍처의 설계

  • 소프트웨어 개발 시 적용되는 원칙과 지침이며 이해 관계자들의 의사소통 도구로 활용된다.
  • 소프트웨어의 기본 골격이 되는 기본 구조이자, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
  • 좋은 품질을 유지하면서 사용자의 비기능적 요구사항으로 나타난 제약을 반영하고, 기능적 요구사항을 구현하는 방법을 찾는 해결 과정이다.
  • 소프트웨어 아키텍처 설계의 기본 원리는 모듈화, 추상화, 단계적 분해, 정보은닉이 있다.

상위 설계와 하위 설계

  • 상위 설계
    • 아키텍처 설계, 예비 설계
    • 시스템의 전체적인 구조
    • 구조, DB, 인터페이스
  • 하위 설계
    • 모듈 설계, 상세 설계
    • 시스템의 내부 구조 및 행위
    • 컴포넌트, 자료 구조, 알고리즘

모듈화(Modualrity)

  • 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것
  • 프로젝트의 재사용성을 향상시킬 수 있다.

추상화(Abstraction)

  • 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것이다.
  • 완전한 시스템을 구축하기 전에 유사한 모델을 만들어서 여러 가지 요인들을 테스트할 수 있다.
  • 최소의 비용으로 실제 상황에 대처할 수 있고 시스템의 구조 및 구성을 대략적으로 파악할 수 있게 해준다.

추상화의 유형

  • 과정 추상화 : 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법
  • 데이터 추상화(자료 추상화) : 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
  • 제어 추상화 : 이벤트 발생의 정확한 절차나 방법을 정의하지 않고 대표할 수 있는 표현으로 대체하는 방법

단계적 분해(Stepwise Refinement)

  • 하향식 설계 전략, 문제를 상위 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법
  • 추상화의 반복에 의해 세분화된다.

정보 은닉

  • 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
  • 어떤 모듈이 필요한 기능이 다른 모듈에 정보 은닉이 되어있는 모듈에 존재한다면 필요한 정보만 인터페이스를 통해 주고 받는다.
  • 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수가 용이하다.

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

  • 소프트웨어가 제대로 설계되었는지 확인하기 위해 품질 평가 요소를 시스템 측면, 비즈니스 측면, 아키텍처 측면으로 구분하여 구체화
  • 시스템 측면
    • 성능, 보안, 기능성 등 소프트웨어 자체의 평가이다.
  • 비즈니스 측면
    • 해당 소프트웨어의 시장 적시성, 비용이나 혜택, 시스템 수명 등을 평가한다.
  • 아키텍처 측면
    • 시스템과 시스템의 구성 요소간의 일관성을 유지하거나 제약사항을 모두 충족하는지 파악

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

  • 설계 목표 설정, 시스템 타입 결정, 아키텍처 패턴 적용, 서브시스템 구체화, 검토 순으로 진행된다.
  • 시스템 타입/협약에 의한 설계
    • 시스템 타입
      • 대화형 시스템, 이벤트 중심 시스템, 변환형 시스템, 객체 영속성 시스템
    • 협약에 의한 설계
      • 선행 조건 : 함수 호출 전 참이 되어야 할 조건
      • 결과 조건 : 함수 수행 후 만족되어야 할 조건
      • 불변 조건 : 함수 실행 중 항상 만족되어야 할 조건

profile
비전공자 개발초보입니다!

0개의 댓글