기록하는삶
[IT 역량/IT 지식] SW(소프트웨어)란, SW개발기법 중 폭포수모델, 나선형모델, 애자일(Agile) 본문
[IT 역량/IT 지식] SW(소프트웨어)란, SW개발기법 중 폭포수모델, 나선형모델, 애자일(Agile)
mingchin 2021. 10. 19. 23:19SW(소프트웨어)란?
프로그램과 프로그램 개발, 운용 보수에 필요한 모든 정보의 집합을 이르는 말이다. 프로그램 자체 뿐만 아니라 프로그램 개발을 위한 메뉴얼이나 개발 과정에서 생성된 문서 등도 포함될 수 있다.
(* 프로그램 = 특정 기능을 프로그래밍 언어로 구현한 명령어 및 관련 데이터의 집합)
구조가 외부에 보이지 않고 코드에 내제되어 있고, 정형적 구조가 없고 복잡하며, 필요에 따라 수정이 가능하고, 요구 및 환경 변화에 따라 변화하고, 형체가 존재하지 않고, 외부 환경에 의해 마모되지 않고, 복제가 가능하다는 특징이 있다.
> 순서대로 비가시성(invisibility), 복잡성(complexity), 진화성(Changeability), 순응성(conformity), 무형(intangible), 장수(logevity), 복제 가능(Duplicability)
SW개발기법
1) 폭포수모델(Waterfall Model)
SW를 요구사항분석, 설계, 구현, 시험, 유지보수의 과정을 순차적으로 거쳐 개발하는 방법. 떨어지는 폭포수처럼 일정한 방향성을 가지고 이전의 단계를 완전하게 수행한 뒤 다음 단계로 나아간다는 점에서 그 이름이 유래했다.
> 장점:
① 각 단계가 세분화되어 있고 명확하여 관리가 용이함
② 가장 오래되었고 널리 사용된 기법으로 참조할 성공사례가 많음
ex) 정부기관 혹은 금융기관의 SW개발
③ 소스코드의 문서화를 중시하여 팀원의 이탈로 인한 리스크 등이 적음
> 단점:
① 요구분석이 어렵고 시간이 오래걸림
② 중요 문제가 개발의 후반부에 발생할 수 있음
③ 개발 단계에서 피드백이 발생해 순차흐름을 따르기 어려움
④ 문제 발생, 요구사항 변화 등에 유연하게 대처하기 어려움
> 적합한 프로젝트
① 요구사항이 명확하고 숙련된 설계가 가능한 경우
② 기술적 위험이 낮고(도전적인 개발이 아니라는 것) 유사 프로젝트 진행 경험이 많은 경우
2) 나선형모델(Spiral Model)
> 폭포수 모델 + 프로토타입 모델(시제품을 통한 확장 개발 모델)
> 프로토타입을 지속적으로 발전시켜 최종 개발을 완료하는 방법이다.
> 요구분석 → (초기) 위험 분석 → 설계 및 (시제품)개발 → 고객의 평가 → 평가 반영 + 요구분석 → 위험 분석 → (반복) 의 단계를 거친다.
> 장점:
① 여러 번의 피드백과 요구분석을 통해 정확한 요구사항 파악 가능
② 위험요소(요구사항의 변화, 팀워크, 팀원의 능력, 관리소홀 등)의 감소
③ 시제품의 반복 생산을 통한 SW품질 개선
> 단점:
① 개발 소요시간이 길어짐
② 프로젝트 관리가 복잡하여 어려움
③ 선례가 많지 않음
> 적합한(적합하지 않은) 프로젝트
① 대규모 프로젝트
② 국책 사업
③ 많은 고객이 있는 상업용 제품에는 부적합
3) 애자일(Agile)
> 절차보다 사람이 중심이 되어 변화에 유연하고 신속하게 적응하고 효율적으로 개발하기 위한 방법론
> (프로세스, 도구보다는) 개인과 상호작용, (계획의 준수보다는) 변화에의 대응, (소스코드의 문서화보다는) 동작하는 SW, (계약 협상보다는) 고객과의 협력을 추구
> XP(eXtreme Programming), SCRUM 등이 그 예
> 장점:
① 상대적으로 개발 기간이 짧음
② 기술이나 환경의 변화 및 진화를 적용할 수 있음
③ 사용자 요구사항의 변화에 유연한 대처가 가능
④ 문서화에 대한 부담이 적음
> 단점:
① 프로세스의 확립, 문서화 등이 부족해 위험요소가 많음
② 감리, 감사 대응의 어려움
③ 한정적인 프로젝트에만 적용 가능함
> 적합한(적합하지 않은) 프로젝트
① 대규모 프로젝트에 부적합
② 3-6개월 정도의 짧은 프로젝트
③ 요구사항의 변화가 많을 것으로 예상되는 프로젝트
④ 기술이나 환경 변화에 빠르게 대응해야 하는 프로젝트
3-1) SCRUM
> 스프린트 = 1달 길이의 iteration(반복 작업)
> 제품 백로그(요구되는 모든 작업의 목록)으로부터 스프린트 목표와 스프린트 백로그(스프린트 내에 완료할 개발 대상)를 포함한 계획 수립 후 스프린트 시작
> 일일 스크럼 미팅을 활용한다.
① 매일, 15분 동안만 시행
② 각자 1) 어제 무얼 했는가, 2) 오늘은 무엇을 하는가, 3) 에로사항(도움요청사항)은 무엇인가 만 빠르게 이야기함
③ 고객과 프로젝트팀이 모두 참여하지만, 프로젝트 팀만 발언함
> 스프린트 소멸차트를 활용함
스프린트 백로그에 남은 작업을 수행하는데 걸리는 예상 시간을 기록함 (n시간 → 0시간)