본문 바로가기

개발하기

아키텍처에서 구조(Structure)와 설계(Design)의 차이점

. 구조(Structure)

구조는 "무엇으로 이루어져 있는가"에 대한 것입니다.

 

예시: 건물의 구조
- 기둥
- 벽
- 천장
- 계단
- 엘리베이터

 

소프트웨어 구조의 예

 

# 게임 시스템의 구조 예시
class GameSystem:
    def __init__(self):
        self.player = Player()          # 플레이어 구성요소
        self.enemies = EnemyManager()   # 적 관리 구성요소
        self.score = ScoreSystem()      # 점수 구성요소
        self.sound = SoundManager()     # 사운드 구성요소

# 각 구성요소들은 독립적인 구조를 가짐
class Player:
    def __init__(self):
        self.health = 100
        self.position = Position()
        self.inventory = Inventory()

구조의 특징:

  1. 실체적 구성요소들의 집합
  2. 각 부분의 역할과 책임
  3. 구성요소 간의 관계
  4. 시스템의 뼈대

설계(Design)

설계는 "어떻게 작동하게 할 것인가"에 대한 것입니다.

 

 

# 게임 시스템의 설계 예시
class GameSystem:
    def __init__(self):
        # 설계 원칙: 의존성 주입을 통한 유연한 구조
        self.event_manager = EventManager()
        self.config_manager = ConfigManager()
        
    def initialize_components(self):
        # 설계 패턴: 팩토리 메서드 패턴 사용
        self.player = PlayerFactory.create_player(self.config_manager.get_player_config())
        self.enemies = EnemyFactory.create_enemies(self.config_manager.get_enemy_config())
        
    def update(self):
        # 설계 원칙: 관심사의 분리
        self.handle_input()
        self.update_game_state()
        self.render()
        
    def handle_input(self):
        # 설계 패턴: 옵저버 패턴 사용
        inputs = self.input_manager.get_inputs()
        self.event_manager.dispatch_events(inputs)

 

설계의 특징:

  1. 문제 해결 방법
  2. 동작 방식
  3. 상호작용 방법
  4. 확장성과 유지보수성

요리를 비유로 좀더 쉽게 설명 보러가기 =>클릭하세요

주요 차이점 정리:

  1. 구조(Structure)
  • "무엇"에 중점
  • 시스템의 구성요소 정의
  • 정적인 측면
  • 전체적인 형태와 구성
  1. 설계(Design)
  • "어떻게"에 중점
  • 동작 방식과 흐름 정의
  • 동적인 측면
  • 문제 해결 방법론