책 읽다가 코딩하다 죽을래

시스템 설계가 왜 필요한가요? 본문

이론/소프트웨어 공학

시스템 설계가 왜 필요한가요?

ABlue 2024. 5. 6. 17:05

 

📕 시스템 설계란?

 

  • 시스템의 요구사항을 충족하기 위해 필요한 아키텍처, 인터페이스 및 데이터를 정의하는 과정이다.
  • 소프트웨어를 구성하는 요소들 간이 관계와 동작 메커니즘을 표현하기 위한 구조체이다.

 

설계가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.

- 책 clean Archictecture 중

 

 

 

📗 시스템 설계의 필요성

 

1. 개발이 진행된 이후에는 이미 개발된 전체 시스템의 구조를 수정하기가 어렵기 때문에 미리 설계를 해야 한다.

2. 설계 과정이 있어야 확장성, 보안 등 시스템에 요구되는 다양한 요구사항을 충족시킬 수 있는지 미리 알아볼 수 있다.

3. 시스템 수정이 필요할 때 어느 부분을 수정해야 하고 어느 부분은 건드리지 말아야 할지 확인이 가능한다.

4. 개발자들 간에 중요하게 사용될 의사 소통 수단이 된다.

 

 

📘 어떤 대상을 설계해야 하는가?

 

- 설계 모델

 

설계는 관점에 따라서 어떤 것에 중점을 두느냐에 따라 설계 방식, 결과가 여러 개가 될 수 있다.

설계 모델은 크게 구조 모델과 행위 모델 2가지로 나뉘는데,

구조 모델은 소프트웨어를 구성하는 여러 시스템 간의 결합 관계, 구조도를 나타내며, 

행위 모델은 데이터의 흐름, 입/출력 순서, 처리 프로세스, 프로토콜 등 여러 시스템 간 동작하는 방식을 나타낸다.

 

 

 

- 설계 유형

 

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

 

 

 

설계 과정에는 순서가 있다. High-level인 아키텍처부터 추상화한 후, 점점 Low-level로 구체화시키는 순서가 일반적이다.

 

 

📙 예시

 

 

- 아키텍처 다이어그램

 

아키텍처 다이어그램은 시스템의 다양한 구성 요소를 시각적으로 보여주고 서로 통신하고 상호 작용하는 방법을 보여줍니다.

이 다이어그램을 보자면 웹 브라우저가 Amazon API GateWay 를 호출하고 Amazon API GateWayAWS Lambda를 호출하며 AWS LambdaAmazon Dynamo DB를 접근한다는 것이 한 그림으로 표현하고 있다.

그리고 앞에서 설명했듯이 Amazon API GateWay는 어떻게 동작하는지 구체적으로 설명이 되어있지 않는 것처럼 각 요소들은 내부 동작은 서술되어있지 않은 채로 추상화되어 있다.

 

 

 

 

- 데이터 스키마

 

 

 

데이터 베이스 스키마는 데이터베이스 전체 또는 일부의 논리적인 구조를 표현하는 것으로 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다. 그림을 보시면 각 모델의 테이블과 갖고 있는 키(key)와 키의 타입(type)이 명시되어 있으며 모델들 간의 관계에 대해서도 나타내고 있다.


✅ 정리


소프트웨어 공학에서의 시스템 설계는 시스템의 요구사항을 충족하기 위한 아키텍처, 인터페이스, 및 데이터를 정의하는 과정이다. 이는 소프트웨어를 구성하는 요소들 간의 관계와 동작 메커니즘을 표현하는 구조체이기도 하다. 시스템 설계의 필요성은 개발 이후에 시스템 구조를 수정하기가 어려워지므로 미리 설계를 해야 하며, 다양한 요구사항을 충족시킬 수 있는지 사전에 파악할 수 있고, 수정이 필요할 때 어디를 수정해야 하는지를 파악할 수 있으며, 개발자 간 의사 소통의 중요한 수단이 될 수 있다.

 

설계는 구조 모델과 행위 모델로 나뉘며, 아키텍처 설계, 자료구조 설계, 인터페이스 설계 등 다양한 유형이 있다. 일반적으로는 아키텍처부터 추상화하여 점점 구체화시키는 순서로 진행된다