
소프트웨어 개발 프로세스
1. 기본 개념
- 프로그램: 컴퓨터가 실행할 명령어들의 집합(소스 코드).
- 소프트웨어: 컴퓨터에서 실행되는 모든 프로그램의 총칭, 하드웨어와 대비되는 개념.
- 시스템 소프트웨어: 운영체제·유틸리티 등 하드웨어와 응용 소프트웨어 사이의 중개 역할.
- 응용 소프트웨어: 특정 작업 수행 목적의 소프트웨어 (예: 워드, 브라우저, 게임 등).
2. 소프트웨어 개발 프로세스
- 정의: 요구사항 수집 → 설계 → 구현 → 테스트 → 배포 → 유지보수까지 이어지는 단계적 절차.
- 좁은 의미: 요구사항을 소프트웨어로 구현하기 위한 절차와 활동.
- 넓은 의미: 절차뿐 아니라 방법, 도구, 인력까지 포함한 종합적인 수단.
3. 프로세스의 3요소
- 과거 경험(노하우)을 기반으로 시행착오를 줄이고 빠르게 적응하기 위한 가이드.
- 세 가지 핵심 요소를 통해 체계적으로 소프트웨어 개발을 진행.
4. 필요성
소규모 작업은 즉흥적으로 가능하지만, 대규모 소프트웨어 개발은 다음의 어려움이 존재:
- 개발 과정이 복잡함
- 참여 인력이 많고 변동이 있음
- 개발 기간이 길어 진행 상황·비용 관리가 어려움
이를 해결하기 위해 필요한 것:
- 복잡성 관리 기술
- 효율적인 팀 구성 및 관리 방법
- 체계적인 프로젝트 관리
5. 주요 프로세스 모델 종류
다양한 모델이 존재하지만 대표적으로 **워터폴(전통적)**과 **애자일(현대적)**을 많이 사용.
(1) 워터폴 모델
- 정의: 각 단계(요구사항 → 설계 → 구현 → 테스트 → 배포)가 선형적으로 진행.
장점
- 구조 명확, 이해 쉬움
- 문서화가 잘 됨
- 큰 규모/변경 적은 프로젝트에 적합
단점
- 변화 대응이 어려움
- 피드백이 늦어 설계 오류 수정이 힘듦
- 초기 요구사항 정확히 파악하기 어려움
(2) 애자일 모델
- 정의: 짧은 주기(스프린트) 반복, 고객 피드백 반영, 유연한 대응을 중시하는 개발 방식.
장점
- 변화 대응 유연
- 고객 요구 반영 용이
- 팀 협력·소통 강화
단점
- 대규모 프로젝트 관리 어려움
- 문서화 부족 가능
- 비용·시간 예측 어려움
(3) 스크럼 (애자일 프레임워크)
- 정의: 스프린트 단위로 목표를 달성하는 팀 협력 중심 방법론.
역할
- 제품 책임자: 요구사항 우선순위 관리
- 스크럼 마스터: 팀 지원·방해 제거
- 스크럼 팀: 사용자 스토리 구현, 매일 스크럼 회의 참여
핵심 개념
- 스프린트 백로그: 작업 목록
- 사용자 스토리 & 스토리 포인트: 고객 관점의 요구사항과 개발 난이도 추정
- 데일리 스크럼: 짧은 회의로 진행 점검
- 스프린트 리뷰/회고: 산출물 검토 및 개선 논의
장점
- 협력·소통 강화
- 빠른 피드백
- 복잡한 프로젝트 관리에 효과적
단점
- 팀 경험/자기조직화 의존
- 대규모 적용 어려움
- 잦은 회의로 인한 부담
6. 워터폴 vs 애자일 비교
| 구분 | 워터폴 | 애자일 |
|---|
| 요구사항 | 변경 반영 어려움 | 변경 반영 용이 |
| 릴리즈 | 최종 완성 후 | 수시 릴리즈 |
| 시작 상태 | 초기 완성도 높음 | 점차 완성도 증가 |
| 고객 소통 | 문서·산출물 위주, 대화 부족 | 사용자 참여·대화 중심 |
| 진행 점검 | 단계별 결과물 기준 | 초기부터 진행 상황 공유 |
| 개발 방식 | 분석→설계→구현 순차적 | 반복 내에 모두 포함, 동시에 진행 |
| 통합 | 개발 후 통합 | 초기부터 빈번히 통합·수정 |
오늘 배운 점 & 느낀 점
소프트웨어 개발 프로세스의 정의부터 워터폴과 애자일 같은 대표적인 모델까지 정리하면서, 큰 프로젝트일수록 왜 체계적인 프로세스가 필요한지 다시 이해할 수 있었다.
이미 많이 들었던 개념들이었지만, 막상 다시 보니까 워터폴과 애자일의 장단점, 특히 스크럼에서의 역할 분담 같은 세부 개념은 헷갈리는 부분이 여전히 있었다.
결국 중요한 건 프로젝트 성격에 맞는 프로세스를 선택하고 적용하는 것이라는 점을 다시 느꼈다.