1. 요구 사항 수집, 분석 및 분류
- 시스템 요구 사항의 정의: 클라이언트를 위해 만들어야 할 항목을 파악하고 정리하는 과정입니다.
- 대규모 시스템 설계의 특성:
- 일반적인 요구 사항과의 차이: 메서드, 알고리즘, 클래스 등을 구현하는 일반적인 요구 사항과 달리, 대규모 시스템은 추상화 단계와 범위가 다르며, 설계해야 하는 솔루션도 다릅니다.
- 추상화 수준: 추상화 단계가 높아질수록 문제 해결을 위한 자유도와 경우의 수가 다양해지며, 문제의 범위가 넓어져 시각적인 구현이 어려워집니다.
- 기술적 제한: 기존 코드를 기반으로 메서드나 알고리즘을 수행할 경우, 입력 값과 결과 값을 알고 있어야 하고, 사용할 프로그래밍 언어에도 제한이 있습니다.
2. 요구 사항의 모호성 및 그 원인
- 모호성의 원인:
- 엔지니어의 요구 사항 구상 부족:
- 대부분의 경우, 엔지니어가 요구 사항을 직접 구상하지 않으며, 기술적인 내용을 모르는 클라이언트가 요구 사항을 제시하기도 합니다.
- 클라이언트가 고급 작업을 요청할 경우, 이를 보다 자세하고 기술적인 요구 사항으로 변환하는 것이 엔지니어의 역할입니다.
- 기술적 요구 사항은 소프트웨어 아키텍처의 근간이 됩니다.
- 세부 요구 사항의 솔루션 종속성:
- 클라이언트는 항상 원하는 바를 명확히 알지 못하며, 문제 해결의 필요성을 알고 있을 뿐입니다.
- 요구 사항을 수집하기 위해 질문을 통해 클라이언트의 요구를 파악하고, 설계 및 구현할 항목을 좁혀나가는 과정이 필요합니다.
- 엔지니어의 요구 사항 구상 부족:
- 요구 사항을 파악하지 못할 경우의 문제점:
- 시스템 요구 사항을 명확히 이해하지 못하면 잘못된 시스템을 설계하게 되어 시간과 비용을 낭비하게 됩니다.
- 중요한 세부 사항을 누락할 경우, 시스템을 다시 설계해야 할 수 있으며, 이는 납품 기한을 맞추지 못하거나 비용이 증가하는 원인이 됩니다.
3. 요구 사항의 분류: 아키텍처 드라이버
요구 사항을 몇 가지 카테고리로 분류하여 아키텍처 드라이버로 삼습니다.
3.1 기능적 요구 사항 (Functional Requirements)
- 정의: 시스템의 행위를 나타내는 요구 사항으로, 설계한 시스템이 수행해야 하는 동작을 명시합니다.
- 특징:
- 시스템의 목적과도 연결됩니다.
- 예: 사용자가 파일을 업로드하면 공유 링크가 생성되고, 해당 링크를 가진 사용자가 파일을 다운로드할 수 있어야 합니다.
3.2 비기능적 요구 사항 (Non-Functional Requirements) 및 품질 속성 (Quality Attributes)
- 정의: 시스템이 반드시 가져야 하는 특성으로, 시스템의 수행 능력과 관련된 요구 사항입니다.
- 주요 품질 속성:
- 확장성 (Scalability)
- 가용성 (Availability)
- 신뢰성 (Reliability)
- 보안성 (Security)
- 성능 (Performance)
- (시스템에 따라 추가될 수 있음)
- 특징:
- 소프트웨어 아키텍처와 직결되며, 아키텍처에 따라 제공되는 품질 속성이 달라집니다.
- 예: 파일 업로드 후 링크가 즉시 활성화되어야 하고, 다운로드 속도가 최소 50 Mbps이어야 함.
3.3 시스템 제약 사항 (System Constraints)
- 정의: 시스템의 제한과 경계를 설정하는 요구 사항으로, 설계 및 구현 작업에 영향을 미치는 제약 조건입니다.
- 특징:
- 기술적 요구 사항을 포함하며, 클라이언트가 원하는 시스템을 만들기 위해 반드시 준수해야 합니다.
- 예: 지원해야 하는 파일 형식(PDF, JPG) 및 웹 브라우저(Google Chrome, Mozilla Firefox, Microsoft Edge) 제한.
4. 클라이언트 의뢰 사례 분석
의뢰 내용:
“사용자 간에 대용량 파일을 공유할 수 있는 시스템을 만들고 싶습니다. 사용자가 파일을 업로드하면 다른 사용자에게 공유할 수 있는 링크가 생성되고, 그 링크를 소유한 사용자라면 누구든 해당 파일을 다운로드할 수 있어야 합니다. 파일이 업로드 되자마자 링크가 활성화 되어야 하며 다운로드 속도는 최소한 50 Mbps가 되어야 합니다. PDF, JPG 파일 형식을 지원하고, 웹 브라우저는 Google Chrome, Mozilla Firefox, Microsoft Edge를 지원해야 합니다.”
요구 사항 분류:
- 기능적 요구 사항:
- 사용자가 파일을 업로드하면 공유 가능한 링크가 생성됩니다.
- 생성된 링크를 소유한 사용자가 해당 파일을 다운로드할 수 있습니다.
- 비기능적 요구 사항 및 품질 속성:
- 파일 업로드 직후 링크가 활성화되어야 합니다.
- 다운로드 속도가 최소 50 Mbps이어야 합니다.
- 시스템 제약 사항:
- 지원 파일 형식: PDF, JPG.
- 지원 웹 브라우저: Google Chrome, Mozilla Firefox, Microsoft Edge.
5. 요구 사항의 단계적 과정
- 요구 사항 수집 (Requirement Gathering):
- 클라이언트와의 인터뷰, 문서 분석 등을 통해 요구 사항을 수집합니다.
- 요구 사항 분석 (Requirement Analysis):
- 수집된 요구 사항을 분석하여 명확하고 구체적인 요구 사항으로 정리합니다.
- 요구 사항 분류 (Requirement Classification):
- 기능적 요구 사항, 비기능적 요구 사항, 시스템 제약 사항 등으로 분류합니다.
- 아키텍처 드라이버 설정 (Architecture Driver Definition):
- 분류된 요구 사항을 바탕으로 아키텍처 설계에 영향을 미치는 주요 요소를 도출합니다.
'공부기록' 카테고리의 다른 글
[베어랜드 Auth 시스템] 1 - 쿠키와 세션 그리고 JWT (0) | 2025.03.01 |
---|---|
[트러블 슈팅] Cannot find module '...../bcrypt/lib/binding/napi-v3/bcrypt_lib.node' (1) | 2025.02.06 |
[시스템 아키텍처] (1) | 2024.11.26 |
[electron] electron-forge Cannot find module (0) | 2024.11.25 |
[CS] 32 Bit / 64 Bit 차이 (1) | 2024.10.09 |