[SW Architect] Associate Architect 과정 학습 내용

mandu·2025년 9월 23일

[SW Architect]

목록 보기
1/10

1. SW Architecture란?

이해관계자들의 Concern(고려 사항)들을 반영하여
소프트웨어 시스템의 구조와 그 구성 요소 간의 관계, 기능/비기능 요구 사항과 제약 조건 등을 정의한 설계도

쉽게 말하면, 프로그램을 어떻게 나누고, 어떻게 연결하고, 어떻게 동작하도록 설계할지 큰 그림을 잡는 것


2. SW Architecture가 왜 중요할까?

초기에 아키텍처 설계를 하지 않거나, 중요한 결정을 내리지 않고 무작정 개발을 시작한다면,
프로젝트 비용이 크게 증가할 수 있음

  • 아키텍처적 사고 없이 비용, 일정, 품질 예측은 불가능함
  • 아키텍처는 도구 선택, 개발 환경 구성 등에도 영향을 줌
  • 인터페이스, 공유 자원 등 팀 간 합의 도출에 필수적임

설계도 없이 강아지 집은 만들 수 있다.
허나, 설계도 없이 63빌딩을 지을 수 있겠는가?


3. Architecture Driver (AD)

시스템의 아키텍처에 중요한 영향을 미치는 요인들을 말함

  • 요구사항 (Requirement)
    • e.g., Functional & Non-functional Requirement
  • 제약사항 (Constraint)
    • e.g., 플랫폼, 언어, 도구

4. Architecture life-cycle


4.1 Architectural Requirements

Stakeholders의 Needs를 분석해서 AD(Architectural Driver)를 추출해내고,
시스템의 아키텍처에 결정적인 영향을 주는 핵심 요구사항(*ASR)을 분석하는 단계

ASR(Architecturally Significant Requirements)
아키텍처 설계에 결정적 영향을 주는 요구사항

  • 즉, SRS(Software Requirements Specification) 중 아키텍처에 결정적인 영향을 미치는 요소들
    1. 주요 기능(Primary functionality): 시스템의 가장 중요하고 새로운 핵심 기능 (5% of FR)
    2. 품질 속성(Quality Attribute): 성능, 보안, 확장성 등 시스템의 품질 관련 속성 (100% of NFR)
    3. 기타 설계 제약사항(Constraints): 제약조건, 규칙, 표준 등 (~% of Constraints)

4.2 Architectural Design

ASR을 중심으로 모든 AD를 만족시키는 구조와 컴포넌트 설계

  1. *Design Concepts을 적용한 시스템 구조 설계
  2. Component Interaction 설계
  3. Component Deployment 설계
  • 품질 속성(QA, Quality Attribute) 중심으로 아키텍처를 설계하는 방법론인 *ADD 3.0를 주로 사용

  • 다양한 Architectural View를 활용함

    • Component diagram를 활용한 Structure View
      Sequence diagram을 활용한 Behavior View
      Deployment diagram을 활용한 Deployment View
  • 모든 결정에는 Design rationale(이론적 해석)이 충분히 뒷받침 되어야 한다!

Design Concepts
특정 상황에 적합한 설계 방식을 선택할 수 있도록 도와주는 개념적 도구
1. Reference Architecture
2. Deployment Pattern
3. Architecture Style
4. Tactics
5. Externally Developed Components

좋은 설계란?

  • 모든 AD(Architectur.e Drivers)를 만족시키는 설계
  • 이해관계자들이 "Why this design?" 이라 물었을 때, 타당한 근거가 존재하는 설계

ADD(Attribute-Driven Design) 3.0

그냥 AD 하나씩 뽀개는 방법임

  1. Overall system 대강 만들기
  2. Design by Constraint
  3. Design by Primary functionality
  4. Design Concepts(Architecture style, tatic, pattern) 사용해서 남은 AD 하나씩 Design (~ Iteration)

4.3 Architectural Evaluation

  • ADD 3.0에서 매 Iteration의 끝 부분에서 ATAM 방식을 사용하여 평가
  • 일반적으로는 비공식적/내부적으로 수행
  • 중요한 프로젝트에서는 외부 팀에 의한 공식 평가 권장

ATAM (Architecture Trade-off Analysis Method)
시스템 아키텍처의 품질 속성(Quality Attribute)을 평가하고, 설계 상충(trade-off)을 발견하는 방법


4.4 Architectural Implementation

설계 및 평가가 완료된 아키텍처를 구현

  1. Low-level Design (Detailed Design)

    • 컴포넌트 단위 상세 설계
    • 인터페이스, 데이터 구조, 내부 로직 정의
    • 객체(object) 중심: 객체지향(OOAD, Object-Oriented Analysis and Design) 설계
      기능(function) 중심: 구조적(SD, Structured Design) 설계
    • 디자인 패턴 활용
  2. Coding / Programming (구현)

    • 설계를 실제 코드로 구현
    • 애자일 방법론 적용
    • 코드 리뷰
    • 테스트 주도 개발(TDD)
    • CI/CD
    • 리팩토링
  3. 성능/품질 최적화

    • 코드 프로파일링, 성능 튜닝
    • 메모리, CPU, I/O 효율 개선

5. 그럼 SW Architecture에서 가장 중요한 건? (내 생각)

“이 설계가 모든 이해관계자의 Concern(고려 사항)들을 잘 해결하고 있는가?”
Full Traceability로 답할 수 있어야 함

Traceability(추적 가능성)
설계의 완성도, 일관성을 판단하는 기준으로,
아키텍쳐 설계 과정에서의 모든 산출물이 첫 요구 사항, Constraint과 잘 연결된 정도

→ 즉, 빠진 거 없이 설계에 모두 반영되어야 한다.

6. 하면서 느낀 점은?

생각보다 복잡했고
생각보다 재밌었다
실제 시스템의 첫 설계부터 구현, 테스트까지 전 과정을 경험해보고 싶다

profile
만두는 목말라

0개의 댓글