why not

시스템 설계가 필요한 이유? (12일차) 본문

Today I Learn/환급 챌린지

시스템 설계가 필요한 이유? (12일차)

novem 2023. 3. 3. 09:28

1. 시스템 설계

  • 건물을 짓기 전 설계 도면을 그리는 과정
  • 시스템의 요구사항을 충족하기 위해 필요한 아키텍처, 인터페이스 및 데이터를 정의
  • 소프트웨어를 구성하는 요소들 (a.k.a 컴포넌트) 간의 관계와 동작 메커니즘을 표현하기 위한 구조체

2. 설계가 필요한 이유

  • 설계도가 없는 건물이 안전하지 않은 것과 같이 설계가 없이 구현된 소프트웨어도 안전하지 않다.
    • 건드려도 될 것과 건드리면 안될 것을 모르므로 불안정한 소프트웨어를 만들게 된다.
  • 개발이 진행된 이후에는 이미 개발된 전체 시스템의 구조를 수정하기가 어렵기 때문에 구현 전에 미리 설계를 해야 한다.
  • 설계 과정이 있어야 확장성, 보안 등 시스템에 요구되는 다양한 요구사항을 잘 충족시킬 수 있다.
  • 설계의 유무는 개발 과정에 큰 영향을 미친다.
  • 개발자들 간에 중요하게 사용될 의사 소통 수단이다.
    • 프로젝트가 커질 수록 여러 명이 나누어서 하나의 큰 시스템을 개발하게 되는데, 각자 다른 그림을 생각해서 내부 조립을 하듯이 구조를 짜집기하면, 문제가 발생할 가능성이 커진다.
    • 모두가 같은 곳을 볼 수 있는 설계도가 필요하다.
  • 도면을 그리기 위한 다양한 선택지 중에서 최선의 방법 즉, 우리가 구현하려는 소프트웨어에 맞는 방법 1가지를 선택해서 설계 해야한다.
    • 문서화 필수!

3. 설계의 대상

  • 관점에 따라서 어떤 것에 중점을 두느냐에 따라 설계 방향이 달라진다.
    • 하나의 시스템에 설계 결과(설계 도면)가 여러 개가 될 수 있다.

3-1. 소프트웨어 구성 설계 모델

3-1.1) 구조 모델(Structure)

  • 구성 요소들간의 결합관계인 구조도를 나타내는 모델
    • 소프트웨어를 구성하는 여러 시스템의 구조 설계 - 구성 요소들의 결합 관계, 구조도 등...

3-1.2) 행위 모델(Behaviour)

  • 여러 시스템 간 동작하는 방식에 대한 설계 - 데이터의 흐름, 입/출력 순서, 처리 순서, 프로토콜 등...

4. 설계 유형

  • 아키텍처 설계: low-level의 추상화 된 소프트웨어의 전체 구조를 high-level에서 기술. 구성 요소를 정의하고 요소들 간의 관계를 정의
  • 자료구조 설계: 소프트웨어의 요구사항을 충족시키기 위해 필요한 요소들을 자료구조로 변환하여 설계하는 과정
  • 인터페이스 설계: 사용자와 소프트웨어 간, 소프트웨어를 구성하는 구성 요소들 간 어떻게 통신하는지 protocol을 정의하고 주고받을 데이터 내용 등을 설계하는 과정

5. 설계 과정

  • high-level에서 시작해 점점 low-level을 구체화 시켜나가는 것이 설계의 일반 적인 과정 요구사항을 통해 추상화 된 아키텍처를 설계하고, 그 각 요소들의 디테일을 점점 설계해 나가는 과정

 

6. 나올 수 있는 결과물

  • 소프트웨어 아키텍쳐 설계 → Architecture diagram

  • 데이터 베이스 설계 → Database schema

  • 시스템/객체 간 상호 작용 설계 → Sequence diagram

  • 상세 클래스 설계 → Class diagram

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

* 필수 삽입 링크 : http://bit.ly/3Y34pE0

'Today I Learn > 환급 챌린지' 카테고리의 다른 글

시스템 설계2 (14일차)  (0) 2023.03.05
시스템 설계 1 (13일차)  (1) 2023.03.04
마무리 및 Recap (11일차)  (0) 2023.03.02
프로젝트 플래닝3 (10일차)  (0) 2023.03.01
프로젝트 플래닝2 (9일차)  (0) 2023.02.28