[SW공학] 소프트웨어 개발 프로세스

배창민·2025년 8월 18일

소프트웨어 개발 프로세스

1. 기본 개념

  • 프로그램: 컴퓨터가 실행할 명령어들의 집합(소스 코드).
  • 소프트웨어: 컴퓨터에서 실행되는 모든 프로그램의 총칭, 하드웨어와 대비되는 개념.
  • 시스템 소프트웨어: 운영체제·유틸리티 등 하드웨어와 응용 소프트웨어 사이의 중개 역할.
  • 응용 소프트웨어: 특정 작업 수행 목적의 소프트웨어 (예: 워드, 브라우저, 게임 등).

2. 소프트웨어 개발 프로세스

  • 정의: 요구사항 수집 → 설계 → 구현 → 테스트 → 배포 → 유지보수까지 이어지는 단계적 절차.
  • 좁은 의미: 요구사항을 소프트웨어로 구현하기 위한 절차와 활동.
  • 넓은 의미: 절차뿐 아니라 방법, 도구, 인력까지 포함한 종합적인 수단.

3. 프로세스의 3요소

  • 과거 경험(노하우)을 기반으로 시행착오를 줄이고 빠르게 적응하기 위한 가이드.
  • 세 가지 핵심 요소를 통해 체계적으로 소프트웨어 개발을 진행.

4. 필요성

소규모 작업은 즉흥적으로 가능하지만, 대규모 소프트웨어 개발은 다음의 어려움이 존재:

  • 개발 과정이 복잡함
  • 참여 인력이 많고 변동이 있음
  • 개발 기간이 길어 진행 상황·비용 관리가 어려움

이를 해결하기 위해 필요한 것:

  1. 복잡성 관리 기술
  2. 효율적인 팀 구성 및 관리 방법
  3. 체계적인 프로젝트 관리

5. 주요 프로세스 모델 종류

다양한 모델이 존재하지만 대표적으로 **워터폴(전통적)**과 **애자일(현대적)**을 많이 사용.


(1) 워터폴 모델

  • 정의: 각 단계(요구사항 → 설계 → 구현 → 테스트 → 배포)가 선형적으로 진행.

장점

  • 구조 명확, 이해 쉬움
  • 문서화가 잘 됨
  • 큰 규모/변경 적은 프로젝트에 적합

단점

  • 변화 대응이 어려움
  • 피드백이 늦어 설계 오류 수정이 힘듦
  • 초기 요구사항 정확히 파악하기 어려움

(2) 애자일 모델

  • 정의: 짧은 주기(스프린트) 반복, 고객 피드백 반영, 유연한 대응을 중시하는 개발 방식.

장점

  • 변화 대응 유연
  • 고객 요구 반영 용이
  • 팀 협력·소통 강화

단점

  • 대규모 프로젝트 관리 어려움
  • 문서화 부족 가능
  • 비용·시간 예측 어려움

(3) 스크럼 (애자일 프레임워크)

  • 정의: 스프린트 단위로 목표를 달성하는 팀 협력 중심 방법론.

역할

  • 제품 책임자: 요구사항 우선순위 관리
  • 스크럼 마스터: 팀 지원·방해 제거
  • 스크럼 팀: 사용자 스토리 구현, 매일 스크럼 회의 참여

핵심 개념

  • 스프린트 백로그: 작업 목록
  • 사용자 스토리 & 스토리 포인트: 고객 관점의 요구사항과 개발 난이도 추정
  • 데일리 스크럼: 짧은 회의로 진행 점검
  • 스프린트 리뷰/회고: 산출물 검토 및 개선 논의

장점

  • 협력·소통 강화
  • 빠른 피드백
  • 복잡한 프로젝트 관리에 효과적

단점

  • 팀 경험/자기조직화 의존
  • 대규모 적용 어려움
  • 잦은 회의로 인한 부담

6. 워터폴 vs 애자일 비교

구분워터폴애자일
요구사항변경 반영 어려움변경 반영 용이
릴리즈최종 완성 후수시 릴리즈
시작 상태초기 완성도 높음점차 완성도 증가
고객 소통문서·산출물 위주, 대화 부족사용자 참여·대화 중심
진행 점검단계별 결과물 기준초기부터 진행 상황 공유
개발 방식분석→설계→구현 순차적반복 내에 모두 포함, 동시에 진행
통합개발 후 통합초기부터 빈번히 통합·수정

오늘 배운 점 & 느낀 점

소프트웨어 개발 프로세스의 정의부터 워터폴과 애자일 같은 대표적인 모델까지 정리하면서, 큰 프로젝트일수록 왜 체계적인 프로세스가 필요한지 다시 이해할 수 있었다.
이미 많이 들었던 개념들이었지만, 막상 다시 보니까 워터폴과 애자일의 장단점, 특히 스크럼에서의 역할 분담 같은 세부 개념은 헷갈리는 부분이 여전히 있었다.
결국 중요한 건 프로젝트 성격에 맞는 프로세스를 선택하고 적용하는 것이라는 점을 다시 느꼈다.

profile
개발자 희망자

0개의 댓글