시스템 분석 설계란?
시스템 분석 설계는 조직 내에서 정보 시스템을 개발하고 개선하는 과정이다.
- 시스템 분석
- 시스템이 어떤 기능을 수행해야 하는지를 자세히 이해하고 명세로 나타내는 것
- 시스템 설계
- 정보 시스템이 어떻게 구현되어야 하는지를 자세히 나타내는 과정
팀 단위로 개발하는 조직과 프로세스를 연구하는 학문이다.
탄생 배경
개발된 소프트웨어가 의도한 것과 다른 동작을 하거나, 사용자의 요구사항과 달라서 프로젝트가 실패하는 일이 발생했기 때문이다. 이로 인한 손실(비용)을 줄이기 위해 소프트웨어 공학이 발전하게 되었다.
주요 단계
1. 요구 분석 (Requirements Analysis)
시스템 분석 및 설계의 시작은 요구 분석이다. 이 과정에서는 아래와 같은 활동이 진행된다.
- 요구사항 수집: 사용자와 이해관계자들과의 인터뷰, 설문조사, 문서 검토 등을 통해 시스템에 대한 요구사항을 수집한다.
- Pain Point (Why) - 어떤 문제가 있는가?
- Scope - 어떻게 해결할 것인가?
- Benefit - 이익은 무엇인가?
- 요구사항 분석: 수집된 요구사항을 분석하여 이해하고 문서화한다. 이는 시스템이나 소프트웨어가 필요로 하는 기능, 성능, 제약사항 등을 명세화하는 과정이다.
- ex) 검색 기능을 개발한다. 카테고리로 필터링이 가능해야 한다. 응답 시간은 1초 이내.
- 명세를 상세하게 list up
- 고객(발주처)이 명세를 확인 후 계약한다
2. 시스템 설계 (System Design)
요구 분석을 기반으로 시스템의 구조와 동작 방식을 설계한다. 시스템 설계 과정에서는 아래와 같은 작업이 이루어진다:
- 시스템 아키텍처 설계: 전체 시스템의 아키텍처를 결정하고 각 구성 요소 간의 상호 작용 방식을 설계한다.
- Use case diagram
- 각 이해관계자가 어떤 기능을 사용하는 지 표현
- 주로 여러 명의 사용자가 있고, 사용자 별 기능을 설계할 때 사용한다
- Use case diagram
- 데이터 모델링: 시스템이 다루는 데이터의 구조와 관계를 모델링하여 데이터베이스 설계에 반영한다.
- 프로세스 모델링: 시스템 내의 프로세스와 작업 흐름을 모델링하여 시스템의 동작을 설계한다.
- 구조도
- 팀 단위로 업무를 분할할 때 많이 사용한다
- Sequence Diagram
- 구조도
설계의 목표는 여러 사람이 구조를 공유하고 이를 기반으로 작업을 리스트한 뒤 할당하는 것이다
3. 구현 (Implementation)
설계된 시스템을 실제로 개발하고 구축하는 단계이다. 구현 단계에서는 아래와 같은 작업이 수행된다:
- 프로그래밍: 프로그래밍 언어를 사용하여 소프트웨어를 작성한다.
- 하드웨어 및 네트워크 구축: 필요한 하드웨어 및 네트워크 인프라를 구축하고 설정한다.
- 테스트 및 디버깅: 시스템을 테스트하고 오류를 찾아 수정한다.
PM이 세부 단계 별 일정을 개발자 별로 수립한 뒤 체크한다. 최대한 세부적으로 나눈 후 일정을 지키는 지 확인한다. 이 때 간트 차트를 활용한다.
4. 시스템 테스트 (System Testing)
구현된 시스템이 요구사항을 충족시키는지 검증하는 단계이다. 시스템 테스트는 아래와 같은 절차로 진행된다:
- 기능성 테스트: 시스템의 기본 기능이 정상적으로 작동하는지 확인한다.
- 성능 테스트: 시스템의 성능을 측정하고 최적화한다.
- 안전성 테스트: 시스템이 예상되는 부하나 과부하에도 견딜 수 있는지 확인한다.
QA(Quality Assurance) 단계라는 용어로도 많이 표현한다. 테스트 항목을 list up하고 각 항목을 확인한다. 이 작업을 전문적으로 진행하는 QA 엔지니어라는 포지션이 있다.
5. 출시 (Release)
테스트 단계에서 완벽한 버전을 수차례 확인한 후 공식으로 릴리즈한다.
- Pre-alpha: 핵심 기능이 동작하기 시작한 상태
- Alpha: 소프트웨어 테스트 단계
- Beta: 외부에 테스트 단계로 명시하고 오픈해서 내, 외부 테스트를 하는 단계
- RC(Release Candidate): 정식 Release 후보
- Official Release: 고객이 사용하는 완벽한 버전
6. 유지 보수 (Maintenance)
시스템이 운영되는 동안 발생하는 문제를 해결하고 시스템을 유지 보수한다. 유지 보수 단계에서는 아래와 같은 작업이 수행된다:
- 문제 해결: 시스템에서 발생하는 문제를 진단하고 해결한다.
- 기능 추가 및 변경: 변경된 요구사항에 맞게 시스템을 수정하고 기능을 추가한다.
유형의 제품과 달리 소프트웨어는 출시 이후에도 수정되는 일이 많다. 라이브 서버를 운영하면서 버그나 이슈가 발생하거나, 사용하면서 추가되는 요구사항을 반영하기 때문이다. 개발에 70%, 유지 보수에 30% 정도의 리소스가 사용된다고 한다.
참고 자료
https://m.blog.naver.com/biotite135/222099411692
한 강의로 끝내는 개발자를 위한 컴퓨터공학 - Chapter 05, Dave Lee
'Computer Science' 카테고리의 다른 글
[Network][스크랩] Bearer Authentication 헤더 규칙이 정해진 배경 (0) | 2024.06.24 |
---|---|
Reactive Programming (0) | 2024.04.16 |
[Network] HTTP response status code (0) | 2024.04.06 |
[Network] REST API - Naming Convention, Best Practice (0) | 2024.04.06 |
[Network] REST API (0) | 2024.04.06 |