1. 소프트웨어 라이프 사이클(Software Life Cycle)소프트웨어 라이프 사이클:소프트웨어 개발 방법론의 기초가 되는 것으로 소프트웨어를 개발하기 위해서 정의하고, 운용, 관리 등의 과정을 각 단계별로 나눈 것, 소프트웨어 라이프 사이클은 소프트웨어 개발 단계로 각 단계별 주요 활동, 그리고 활동 결과에 대한 산출물로 표현합니다.(소프트웨어 라이프 사이클이라고도 불립니다.)·소프트웨어 라이프 사이클을 표현하는 형태를 소프트웨어 라이프 사이클 모델이란, 소프트웨어 프로세스 모델 또는 소프트웨어 공학 패러다임이라고도 합니다·개발자는 문제의 타입이나 개발 방법 등에 의해서 특정 모델을 선택해서 사용하기도 하고, 개별 모델을 사용할 수도 있습니다.·일반적으로 사용되는 소프트웨어 라이프 사이클 모델에는 용소 모형, 프로토 타입 모형, 나선형 모형, 아쟈일 모형 등이 있습니다.※소프트웨어 개발 방법론:소프트웨어 개발과 관리 등에 필요한 각종 작업의 수행 방법과 이들의 작업을 더 효율적으로 수행하기 위한 각종 기법 및 도구를 체계적으로 정리하고 표준화한 것입니다.
2. 소프트웨어 공학 소프트웨어 공학의 개념·소프트웨어 공학(SE;Software Engineering)는 소프트웨어 위기를 극복하기 위한 방안으로서 연구된 학문으로 다양한 방법론 및 도구, 관리 기법을 통해서 소프트웨어의 품질과 생산성 향상을 목적으로 하고 있습니다.·소프트웨어 공학은 다음과 같이 몇가지 형태로 정의할 수 있습니다.-IEEE의 소프트웨어 공학 표준 용어 사전:소프트웨어 개발, 운용, 유지 보수, 폐기 처분에 대한 체계적 접근-Fairley:지정된 비용과 기간 내에 소프트웨어를 체계적으로 생산·보수하는 것과 관련된 기술적 및 관리적 원리-Boehm:과학적 지식을 소프트웨어 설계와 제작에 응용하는 것이며 이를 개발·운용·유지에 필요한 문서 작성 과정 소프트웨어 공학의 기본 원칙·현대적인 프로그래밍 기술을 계속 적용되어야 합니다.·개발된 소프트웨어의 품질이 유지되도록 계속적으로 검증할 필요가 있습니다.·소프트웨어 개발 관련 사항과 결과의 명확한 기록을 유지할 필요가 있습니다.소프트웨어 위기 상황 소프트웨어 위기:여러 원인으로 소프트웨어 개발 속도가 하드웨어 개발 속도를 따라잡지 않고 소프트웨어에 대한 사용자의 요구 사항을 처리할 수 없다는 문제가 발생하는 것을 의미·개발 인력 부족과 인건비 상승·성능 및 신뢰성 부족·개발 기간의 지연 및 개발 비용의 증가·관리의 어려움과 그에 따른 비용 증가·소프트웨어의 생산성과 품질 저하
3. 폭포 물 모형(Waterfall Model)폭포 물 모형:폭포에서 한번 떨어진 물은 소레 않도록 소프트웨어 개발도 전에 돌아오지 못한다는 전제에서 각 단계를 확실히 마치고 그 결과를 철저히 검토해서 승인 과정을 거친 뒤 다음 단계를 진행 개발 방법론·폭포 물 모형은 소프트웨어 공학에서 가장 오래된 가장 폭넓게 사용된 전통적인 소프트웨어 라이프 사이클 모델로 고전적 라이프 사이클 모델이라고도 불립니다.·소프트웨어 개발 프로세스의 한 단계가 끝나고 처음으로 다음 단계로 나아갈 수 있는 선형 순차적으로 모델입니다.·모델을 적용한 경험과 성공 사례가 많습니다.·제품의 일부가 매뉴얼을 작성할 필요가 있습니다.·각 단계가 끝난 뒤에는 다음 단계를 수행하기 위한 결과가 명확히 산출되어야 합니다.·2개 이상의 프로세스가 병행하여 실행되지 않습니다.
4. 프로토타입 모형(Prototype Model, 원형모형) 프로토타입 모형: 사용자의 요구사항을 정확하게 파악하기 위하여 실제 개발되는 소프트웨어 견본(시제)품(Prototype)을 만들어 최종 결과물을 예측하는 모형 및 시제품은 사용자와 시스템 간 인터페이스에 중점을 두고 개발합니다.· 시스템의 일부 혹은 시스템 모형을 만드는 과정에서 요구된 소프트웨어를 구현하는데, 이는 나중에 구현 단계에서 사용되는 골격 코드가 됩니다.· 소프트웨어 개발이 완료된 시점에서 오류가 발견되는 폭포 모델의 단점을 보완하기 위한 모델입니다.
5. 나선형모형(Spiral Model, 점진적 모형) 나선형모형: 보헴(Boehm)이 제안한 것으로 폭포수모형과 프로토타입 모형의 장점에 위험분석 기능을 추가한 모형·나선을 따라 돌아가도록 여러 차례의 소프트웨어 개발과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발함으로써 점진적 모델이라고도 불립니다.· 소프트웨어 개발에 의해 발생할 가능성이 있는 리스크를 관리하고 최소화하는 것을 목적으로 하고 있습니다.· 점진적으로 개발과정이 반복되므로 누락되거나 추가된 요구사항을 더할 수 있으며 정밀하고 유지보수 과정은 필요 없습니다.
5. 나선형모형(Spiral Model, 점진적 모형) 나선형모형: 보헴(Boehm)이 제안한 것으로 폭포수모형과 프로토타입 모형의 장점에 위험분석 기능을 추가한 모형·나선을 따라 돌아가도록 여러 차례의 소프트웨어 개발과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발함으로써 점진적 모델이라고도 불립니다.· 소프트웨어 개발에 의해 발생할 가능성이 있는 리스크를 관리하고 최소화하는 것을 목적으로 하고 있습니다.· 점진적으로 개발과정이 반복되므로 누락되거나 추가된 요구사항을 더할 수 있으며 정밀하고 유지보수 과정은 필요 없습니다.
7. 아쟈일 선언(Agile Manifesto):2001년에 17명의 아쟈일 전문 개발자가 공통의 관점을 마련,”아쟈일 SW개발 선언문”을 작성했습니다. 선언문에는 아쟈일 개발 철학이 담긴 4개의 핵심 가치와 아쟈일 개발을 실무에 적용할 때의 기준이 되는 12의 실행 지침이 포함되고 있는데 그 내용은 다음과 같습니다.아쟈일 개발의 4개의 핵심 가치 ① 프로세스와 툴보다는 개인과의 상호 작용에 의한 가치를 준다.② 방대한 문서보다는 실행되는 SW의 가치를 둔다.③ 계약 협상보다는 고객과의 협업에 의한 가치를 둔다.④ 계획에 따르기보다는 변화에 반응함으로써 가치를 둔다.아쟈일 개발 12의 실행 지침 ① 유용한 소프트웨어를 신속하고 지속적으로 제공하고 고객을 만족시킨다.② 개발 막판에서도 요구 사항 변경을 적극적으로 받아들인다.③ 몇달 아니라 몇주 단위로 실행되는 소프트웨어를 제공한다.④ 고객과 개발자가 프로젝트 기간 중에 함께 일하다.⑤ 개발에 대한 참여 의지가 확실한 사람들로 팀을 구성하고 필요한 개발 환경과 지원을 제공하고 일을 잘 끝날 수 있도록 신뢰한다.⑥ 같은 사무실에서 얼굴을 맞대고 의견을 나눈다.⑦ 개발 진척도를 확인하는 한차 기준은 동작하는 소프트웨어이다.⑧ 지속 가능한 개발을 장려하고 일정 속도로 개발을 추진한다.⑨ 기술적 우수성과 좋은 설계에 지속적 관심을 기울이면, 민첩성이 향상된다.⑩ 단순화를 추구한다.⑪ 최상의 아키텍처, 명확한 요구 사항, 최상의 설계는 직접 일을 주도하는 조직적인 팀에서 나온다.⑫ 더 효과적인 팀이 된다 방안을 정기적으로 깊이 고민하고 그에 따른 팀의 행동을 조정한다.
8. 폭포 모형과 애자일의 비교
구분 폭포수 모형 애자일 새로운 요구사항 반영 어려움 지속적으로 반영 고객과의 의사소통적·소리지속적인 테스트 마지막에 모든 기능을 테스트 반복되는 일정 주기가 끝날 때마다 테스트 개발 중심 계획, 문서(매뉴얼) 고객
구분 폭포수 모형 애자일 새로운 요구사항 반영 어려움 지속적으로 반영 고객과의 의사소통적·소리지속적인 테스트 마지막에 모든 기능을 테스트 반복되는 일정 주기가 끝날 때마다 테스트 개발 중심 계획, 문서(매뉴얼) 고객