소프트웨어의 생명주기 ( 수명 주기 )
소프트웨어의 생명 주기는 소프트웨어 개발 방법론의 근간이 된다.
소프트웨어를 개발하기 위해 운용, 유지보수등의 과정을 단계별로 나누어 구성함
생명 주기는 개발 단계, 각 단계별 주요 활동, 활동의 결과로 단계를 나눌 수 있다.
이런 단계의 표현 형태를 생명 주기 모형으로 나타낼 수 있다.
( Process 모형또는 소프트웨어 공학의 패러다임이라고 한다.)
개발자는 문제 유형이나 개발 방법에 따라 특정 모형을 선택해 사용할 수 있다.
일반적인 모형의 종류
- 폭포수 모형 ( waterfall )
- 프로토타입 모형( ProtoType )
- 나선형( Spiral Model : 점진적 모형 )
- 애자일 모형( Agile : 민첩함 )
소프트웨어 공학 ( Software Engineering )
여러가지 방법론, 도구, 관리 기법을 통해 품질과 생산성을 높이는 목적의 학문이다.
소프트웨어 공학의 원칙
- 현대적인 프로그래밍 기술을 계속적으로 사용해야함
- 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야함
- 소프트웨어 개발 관련 사항 및 결과를 명확히 기록해야함
폭포수 모형( Waterfall )
한번 떨어진 물은 거스를 수 없다.
각 단게를 확실히하고 결과를 철저히 검증, 검토하고 이를 승인한 후에 다음 단계로 진행한다.
가장 오래되고 가장 폭넓게 사용된다
( 고전적 생명주기 모델 )
모형의 성공사례가 많다.
제품의 일부가 될 메뉴얼을 작성해야함
각 단계의 결과물이 명확히 산출어야 다음 단계로 진행할 수 있다.
두개 이상의 과정이 병행되지 않는다.
타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현( 코딩 ) -> 시험( 검사 )-> 유지보수
프로토타입 모형( ProtoType )
요구사항을 정확히 파악하기 위해 소프트웨어의 견본품( Prototype )을 만들어 결과물을 예측하는 모형이다.
ProtoType 모형은 사용자와 시스템 사이의 Interface를 중점으로 개발한다.
요구된 소프트웨어를 구현하는데 추후에 구현단계에서 사용될 골격( 뼈대 )코드가 된다.
Waterfall 모형의 단점을 보완하기 위한 모형이다.
나선형 모형( Spiral Model : 점진적 모형 )
Waterfall 모형의 장점 + Prototype 모형의 장점+ 위험 분석 기능
나선을 돌듯 여러번의 개발과정을 거쳐 완벽한 최종 소프트웨어 개발 ( 점진적 )
소프트웨어를 개발하며 발생하는 위험 관리, 위험 최소화가 목적인 개발론
추가된 요구사항을 첨가할 수 있으며, 정밀하고, 유지보수 과정이 필요없는 장점이 있다.
애자일 모형( Agile Model )
Agile ( 민첩한, 기밀한 )
요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하여 개발 과정을 진행함
애자일 모형의 특징
- 특정 개발 방법론이 아닌 좋은 것을 빠르고 낭비없이 만들기 위해 고객과의 소통에 초점을 맞춘 방법론을 통칭한다.
- Agile은 Sprint 또는 Interation이라고 불리는 짧은 주기를 반복한다( 반복되는 주기마다 결과물을 고객의 평가와 요구사항을 적극 수용함 )
- 개발주기에서 고객의 요구사항에 우선순위를 부여하고 개발을 진행한다
- 소규모 Project, 고도의 숙달된 개발자, 급변하는 요구사항에 적합한 방법론
애자일을 사용한 대표적인 소프트웨어
- Scrum ( 스크럼 )
- XP ( eXtreme Programing )
- Kanban ( 칸반 )
- Lean
- Crystal ( 크리스탈 )
- ASD ( Adaptive Software Development )
- FDD ( Feature Driven Development : 기능 중심 개발 )
- DSDM ( Dynamic System Development Method )
- DAD ( Disciplined Agile Delivery : 반복적인 솔루션 제공과 단순화된 프로세스 결정)
애자일 선언 ( Agile Manifesto )
애자일의 4가지 핵심 가치와 12가지 실행 지침이 있다.
4가지 핵심 가치
- Process와 Tool 보다 개인과 상호작용에 더 가치를 둔다
- 문서보다는 실행되는 소프트웨어에 더 가치를 둔다
- 계약 협상보단 고객과 협업에 더 가치를 둔다
- 계약을 따르기보다 변화하는 반응에 더 가치를 둔다
12가지 실행 지침
- 소프트웨어를 빠르고 지속적으로 제공함 ( 고객 만족이 우선 )
- 개발 막바지여도 요구사항 변경을 적극 수용함
- 월 단위가 아닌 주 단위로 실행되는 소프트웨어를 제공한다.
- 고객과 개발자가 Project를 협업한다
- 개발에 의지가 확실한 사람으로 팀을 구성하고 필요한 환경과 자원을 제공해야하며 일에 대한 신뢰가 필요함
- 같은 공간( 사무실 )에서 얼굴은 보며 의견을 나눈다.
- 개발 진척도의 1차 기준은 작동하는 소프트웨어이다.
- 지속적인 개발을 장려하고 일정한 속도로 개발을 진행한다.
- 기술적 우수성과 좋은 설계에 지속적인 관심을 기울일수록 민첩성과 기밀성이 향상한다.
- 단순화를 추구한다
- 최상의 아키텍트와 명확한 요구사항과 최상의 설계는 스스로 주도적인 개발과 조직적인 팀에서 발현한다.
- 더 효과적인 팀이 되는 방안을 정지적으로 깊이 고민하고 팀의 행동을 조정한다.
Waterfall vs Agile 비교하기
구분 | Waterfall | Agile |
새로운 요구사항 | 어려움 | 지속적인 반영 |
고객과의 소통( Communication ) | 적음 | 지속적임 |
Test | 마지막에 모든 결과를 테스트함 | 반복되는 주기마다 테스트 |
개발의 중심 | 계획, 문서( 메뉴얼 ) | 고객 |
'Etc > 정보처리기사' 카테고리의 다른 글
[정처기] 요구사항 정의를 알아보자! (0) | 2022.02.16 |
---|---|
[정처기] Software 개발 방법론의 개요 (0) | 2022.02.16 |
[정처기] TCP/IP를 알아보자! (0) | 2022.02.15 |
[정처기] OSI 7계층을 알아보자! (0) | 2022.02.15 |
[정처기] 인터넷에 대해 알아보자! (0) | 2022.02.15 |