소프트웨어 공학
소프트웨어 개발 프로세스
rabbit-jun
2025. 3. 25. 14:38
전통적인 소프트웨어 개발 과정
소프트웨어 개발 프로세스
1. 소프트웨어 프로세스
- 프로세스: 흔히 일을 처리하는 과정 또는 순서
- 소프트웨어 프로세스: 소프트웨어 개발 과정을 체계적으로 계획,관리할 의도 아래 서로 관련 있는 활동을 단계로 분리하여 정의한 것
- 블랙박스 프로세스:
- 개발 초기에 요구사항을 한 번 정한 뒤, 중간 피드백 없이 일괄적으로 개발을 수행하는 방식
- 개발 과정이 사용자에게 보이지 않으며, 최종 결과만 전달됨
- 장점: 빠른 개발 가능
- 단점: 사용자 요구 반영이 어려움, 잘못된 방향으로 개발될 가능성
- 투명한 프로세스:
- 개발 단계를 작은 단위로 나누고, 각 단계마다 사용자 피드백을 받으며 개발하는 방식
- 사용자와의 지속적인 소통을 통해 점차적으로 제품 완성도를 높임
- 장점: 사용자 만족도 상승, 요구사항 반영 용이
- 단점: 개발 시간 증가, 반복 작업 발생 가능
- 적절한 프로세스의 필요성: 요구사항 만족도 향상 -> 수정 및 재개발 절감(비용 절감) -> 품질 관리 가능 -> 프로젝트 성공
2. 소프트웨어 개발 프로세스의 의미
- 좁은 의미: 소프트웨어 제품을 개발할 때 필요한 절차나 과정
- 넓은 의미: 작업을 수행하는 데 필요한 방법과 도구를 비롯해 개발과 관련된 절차를 따라 작업을 수행하는 참여자 포함
3. 소프트웨어 개발 프로세스 모델
- 소프트웨어를 어떻게 개발할 것인가에 대해 개발 계획 수립부터 최종 폐기까지의 전 과정을 순차적으로 다룸
- 주어진 예산으로 개발, 관리하는 방법을 구체적으로 정의
- 참여자 간에 의사소통의 기준을 정할 수 있고 용어의 표준화를 가능하게 한다.
- 개발 진행 상황 파악 및 각 단계별 문서화된 산출물을 활용해 검토할 수 있게 한다.
4. 비형식적 개발 방식(주먹구구식 모델)
- 공식적인 프로세스 없는 개발 방식
- 제품을 만든 후 요구분석, 설계, 유지보수에 대해 생각
- 첫 번째 버전의 코드 작성 후 문제가 있으면 코드 수정, 없으면 계속 사용
5. 주먹구구식 모델의 단점
- 각 단계별 문서화된 산출물이 없어 관리 및 유지보수가 어려움
- 프로젝트 전체 범위를 알 수 없고 좋은 아키텍처를 만들 수도 없음
- 팀원간 일을 효과적으로 분배 할 수 없음
- 진행 상황을 파악하기 힘듬
- 수정을 거듭할 확률도 높을 뿐더러 거듭 된 수정에 가독성도 나빠질 수 있다.
선형 순차적 모델(폭포수 모델, V모델)
1. 폭포수 모델
- 초기에 개발된 전통적인 모델
- 표준 프로세스를 정해 소프트웨어를 순차적으로 개발
- 각 단계가 끝날 때마다 확실히 매듭 짓고 그 결과를 확인한 후에 다음 단계로 나아감
요구사항 분석 단계가 끝나면 요구분석명세서를 작성 후 사용자에게 이상 유무를 확인받고 다음 단계로 넘어가는 식
2. 폭포수 모델의 장점과 단점
- 장점:
- 관리 용이
- 체계적 문서화
- 요구사항의 변화가 적은 프로젝트에 적합
- 단점:
- 앞 단계가 완료되지 않으면 뒷 단계의 개발자는 아무것도 할 수 없음
- 각 단계마다 완벽한 수준으로 작성해야 다음 단계에 오류를 넘겨주지 않음
- 사용자는 테스트전까지 가시적인 결과를 볼 수 없음
3. V 모델
- 폭포수 모델의 변형
- 테스트 단계를 추가 확장해 테스트 단계가 분석 및 설계와 어떻게 관련되어 있는지를 나타냄
각 개발 단계를 검증하는데 초점을 두므로 오류를 줄일 수 있다.
진화적 프로세스 모델
- 새로운 요구가 수시로 발생해 이에 민첩하게 대응할 수 있는 방법
- 초기 사용자의 요구에 따라 가상으로 실행되는 초기 버전의 프로토타입을 작성
- (프로토타입을 만드는 것을 프로타이핑이라 한다)
- 프로토타이핑 != 진화적 프로세스 모델
- 사용자는 UI 중심의 화면과 실행 후 가상의 결과 화면 확인
- 변경된 요구사항을 반영해 n차 프로토입을 만드는 과정을 반복
1. 프로토타입 모델
- 대량 생산에 앞서 미리 제작해보는 시제품
- 사용자와 의사 소통하는 도구로 활용
- 사용자의 요구가 불투명하고 요구사항의 변화가 계속 많이 발생하는 경우에 적합
2. 프로토타입 모델의 장점과 단점
- 장점:
- 개발자와 사용자의 원활한 의사소통 가능
- 사용자의 만족도를 높일 수 있음
- 유지보수에 필요한 노력과 시간을 많이 줄일 수 있음
- 단점:
- 반복으로 인한 투입 인력과 비용 산정이 어려움
- 사용자가 프로토타입을 보며 제품이 빠르게 완성될 것이란 착각할 수 있음
- 중간 점검을 할 수 있는 산출물을 생성할 수 없어 프로토타이핑 과정을 관리, 통제하기 어려움
- 개발 범위가 불명확해 개발 목표나 종료 시점이 불명확해질 수 있음
반응형