소프트웨어 생명 주기
소프트웨어 생명 주기(Software Life Cycle)
- 소프트웨어를 개발하기 위한 과정을 각 단계별로 나눈 것
- 소프트웨어 개발 단계와 각 단계별 주요 활동 그리고 활동의 결과에 대한 산출물로 표현
- 대표적인 생명주기 모형
- 폭포수 모형
- 프로토타입 모형
- 나선형 모형
- 애자일 모형
폭포수 모형(Waterfall Model)
- 각 단계를 확실히 매듭짓고 결과를 검토하여 승인 과정을 거친 후 다음단계를 진행하는 개발 방법론
프로토타입 모형(Prototype Model)
- 실제 개발될 소프트웨어의 견본품(Prototype)을 만들어 최종 결과물을 예측하는 모형
나선형 모형(Spiral Model)
- 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 개발하는 모형
- 보헴(Boehm)이 제안
- 폭포수, 프로토타입 모형의 장점에 위험분석기능을 추가한 모형
애자일 모형(Agile Model)
- 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형
- 폭포수 모형과 대조적이다
- 대표적인 개발모형
- 스크럼(Scrum)
- XP(eXtreme Programming)
- 칸반(Kanban)
- Lean
- 기능 중심 개발(FDD; Feature Driven Development)
애자일 개발 4가지 핵심 가치
- 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.
- 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.
- 계약 협상보다는 고객과 협업에 더 가치를 둔다.
- 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.
소프트웨어 공학(SE; Software Engineering)
- 소프트웨어위기를 극복하기 위한 방안으로 연구된 학문
Scrum[에자일 모형]
스크럼(scrum)
- 팀이 중심이 되어 개발의 효율성을 높이는 기법
스크럼 팀
구성원 | 역할 |
제품 책임자 (PO; Product Owner) |
요구사항이 담긴 백로그를 작성하는 주체 이해관계자들 중 개발될 제품에 대한 이해도가 높고 요구사항을 책임지고 의사를 결정할 사람으로 선정 |
스크럼 마스터 (SM; Scrum Master) |
스크럼 팀이 스크럼을 잘 수행할 수 있도록 가이드 역할을 수행함 |
개발팀 (DT; Development Team) |
제품책임자와 스크럼 마스터를 제외한 모든 팀원으로 제품 개발을 수행함 |
스크럼 개발 프로세스
프로세스 | 내용 |
스프린트 계획 회의 | 제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립하는 회의 |
스프린트 | 실제 개발 작업을 진행하는 과정으로, 보통 2 ~ 4주 정도의 기간 내에서 진행함 |
일일 스크럼 회의 | 모든 팀원이 매일 약속된 시간에 약 15분 동안 진행 상황을 점검하는 회의 남은 작업은 소멸차트에 표시함 |
스프린트 검토 회의 | 부분 또는 전체 완성 제품이 요구사항에 잘 부합하는지 테스팅하는 회의 |
스프린트 회고 | 정해놓은 규칙 준수 여부 및 개선할 점을 확인하고 기록하는것 |
XP[에자일 모형]
XP
- 수시로 발생하는 고객의 요구사항엥 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 생산성을 향상시키는 기법
- XP의 5가지
- 의사소통(Communication)
- 단순성(Simplicity)
- 용기(Courage)
- 존중(Respect)
- 피드백(Feedback)
XP의 주요 실천 방법
실천방법 | 내용 |
Pair Programming (짝 프로그래밍) |
다른사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성함 |
Collective Ownership (공동 코드 소유) |
개발 코드에 대한 권한과 책임을 공동으로 소유함 |
Test-Driven Development (테스트 주도 개발) |
개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할 지를 정확히 파악함 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크)를 사용함 |
Whole Team (전체 팀) |
개발에 참여하는 모든 구성원(고객 포함)들은 각자 자신의 역학이 있고 그 역할에 대한 책임을 가져야 함 |
Continuous Integration (계속적인 통합) |
모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리 될 때마다 지속적으로 통합됨 |
Refactoring(리팩토링) | 프로그램 기능의 변경 없이 시스템을 재구성함 목적 : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위함 |
Small Releases (소규모 릴리즈) |
릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응이 가능함 |
개발 기술 환경 파악
개발 기술 환경 파악의 개요
- 개발하고자 하는 소프트웨어와 관련된 OS, DBMS, 미들웨어등을 선정 할 때 고려해야 할 사항들을 기술하고 오픈소스를 사용할 때 주의해야 할 내용을 제시
OS
- 컴퓨터시스템의 자원을 효율적으로 관리, 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어
- 운영체제 관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술 지원
- 주변기기
- 구축 비용
DBMS(데이터베이스 관리 시스템)
- 사용자와 DB 사이에서 사용자의 요구에 따라 정보를 생성해 주고, DB를 관리해주는 소프트웨어
- DBMS 관련 요구사항 식별 시 고려사항
- 가용성
- 성능
- 기술지원
- 상호호완성
- 구축비용
웹 애플리케이션 서버(WAS)
- 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
- WAS관련 요구사항 식별 시 요구사항
- 가용성
- 성능
- 기술지원
- 구축비용
오픈소스
- 누구나 제한없이 사용할 수 있도록 소스코드를 공개한 소프트웨어
- 오픈소스 식별 시 요구사항
- 라이선스 종류
- 사용자 수
- 기술의 지속 가능성
요구사항은 대체로 비슷해보임
'자격증 > 정보처리기사' 카테고리의 다른 글
요구사항 확인(6) (0) | 2024.06.15 |
---|---|
요구사항 확인 (5) (1) | 2024.06.12 |
요구사항 확인 (4) - 다이어그램 (0) | 2024.06.11 |
요구사항 확인 (3) - UML (1) | 2024.06.11 |
요구사항 확인 (2) (1) | 2024.06.10 |