컴퓨터과학/0 + 소프트웨어 아키텍처(디자인 패턴)

[소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식

힘들면힘을내는쿼카 2022. 9. 20. 01:32
728x90
반응형

 

✅ 아키텍처 기초

소프트웨어 아키텍처를 공부하기 위해서 기초지식에 대해서 알아보자..!

 

💭 소프트웨어 아키텍처란?

소프트웨어 구조 또는 소프트웨어 아키텍처(software architecture)는 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다.

소프트웨어 구조 - 위키백과, 우리 모두의 백과사전

소프트웨어의 설계는 서브시스템 수준의 덩어리화(chunking) 작업이라고 말할 수 있다.

 

👨‍🔧 아키텍처의 역할

  • 시스템 구조를 확립하면서 소프트풰어 개발의 중심축
  • 설계, 구현, 통합, 테스팅까지 통합하는 뼈대
  • 초기 의사 결정의 핵심

 

  • 컴포넌트
    • 명백한 역할을 가지고 있고, 독립적으로 존재할 수 있는 시스템의 부분
  • 모듈
    • 프로그래밍 언어의 문법 구조에서 정의된 컴포넌트
      • e.g)
        • java에서 메서드, 클래스, 패키지는 모듈
        • C언어에서는 모듈의 파일과 함수

 

👨🏻‍💼 아키텍처 설계

  • 소프트웨어 시스템에 대한 전반적인 구조를 설계하는 과정
    • 소프트웨어를 서브시스템으로 분할
      • 서브시스템들이 어떻게 상호작동하는지 결정
      • 서브시스템 인터페이스 결정

 

👀 아키텍처의 여러가지 관점

논리적으로 분할된 서브시스템

서브시스템 사이의 인터페이스

컴포넌트 사이의 동적인 상호작용

서브시스템 사이에 공유되는 데이터

컴포넌트가 런타임에 존재하는 위치

 

🤔 아키텍처 사용이유?

  • 소프트웨어 시스템을 개발자가 잘 이해하기 위해
  • 시스템 일부는 독립적으로 작업을 위함
  • 시스템 확장의 용이성을 위함
  • 재사용을 위함

 

아키텍처는 설계의 핵심으로 소프트웨어 개발자가 이해하고 있어야한다.

아키텍처가 시스템 전체의 효율성, 재사용성, 유지보수성을 결정하기 때문!

 

😽 아키텍처 표현

  • 일반적으로 계층적 분할 을 사용한다.
    • 상세 수준에 따라 표현된 컴포넌트를 자세히 나타낸다.

 

🎨 패키지 다이어그램

  • 관련된 특성을 가진 클래스/패키지들의 모임(재사용의 단위)
  • UML에서 서브시스템을 표현할 때 도입되는 개념
  • 패키지는 중첩 가능
  • 서브시스템(패키지)로 분할하여 표현하면 객체사이의 의존성은 줄여 표현이 가능

 

🪜 패턴 레벨

  • 아키텍처 패턴
    • 클래스 묶음 사이의 관계
    • 소프트웨어 시스템을 위한 근본적인 구조
    • 정의된 하위 시스템 집합을 제공하고, 하위 시스템의 책임과 하위시스템 간의 관계를 구성하기 위한 규칙
    • 소프트웨어 시스템의 전체적인 골격 구조
  • 디자인 패턴
    • 클래스 사이의 관계
    • 소프트웨어 시스템의 하위 시스템이나 구성요소관계를 개선하기위한 체계를 제공
    • 전체 시스템 구종에 영향을 미치지 않고, 하위 시스템과 구성요고의 마이크로 아키텍처를 정의
  • 코딩 패턴
    • 프로그래밍 언어에 특화된 낮은 수준의 패턴
    • 주어진 언어의 기능을 사용하여 구성요소의 특정 문제 또는 구성요소 간의 관계를 구현하는 방법

 

 

728x90
반응형