[실기] 요구사항 확인 - 소프트웨어 생명 주기
🍰 소프트웨어 생명 주기
: 소프트웨어 개발을 위한 설계, 운용, 유지보수 등 과정을 단계별로 나눈 것
폭포수 모형
- 이전 단계로 돌아갈 수 없음을 전제
- 각 단계 확실히 → 검토, 승인 → 다음 단계 진행
- 가장 오래되고 폭넓게 사용됨
- 고전적 생명 주기 모형
- 각 단계 끝난 후 다음 단계 수행을 위한 결과물이 명확하게 산출돼야 함
프로토타입 모형
- 실제 개발될 SW에 대한 견본품(prototype) 만들어 최종 결과물 예측
- 사용자 - 시스템 사이의 인터페이스에 중점 두어 견본품 개발
나선형 모형(점진적 모형)
- SW 개발 과정을 여러 번 거쳐 점진적으로 개발
- 보헴이 제안
- 누락/추가된 요구사항 첨가 가능
- 유지보수 과정 필요 X
- 계획 수립 → 위험 분석 → 개발 및 검증 → 고객 평가
애자일 모형
- 고객의 요구사항 변화에 유연하게 대응, 일정 주기 반복하면서 개발
- 고객과이 소통에 초점
Scrum, XP(eXtreme Programming), Kanban, Lean, FDD(Feature Driven Development)
네 가지 핵심 가치
프로세스와 도구 < 개인과 상호작용
방대한 문서 < 실행되는 SW
계약 협상 < 고객과 협업
계획 따르기 < 변화에 반응
소프트웨어 공학(Software Engineering)
- 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
# 기본 원칙
1. 현대적인 프로그래밍 기술 계속적 적용
2. 개발된 SW 품질이 유지되도록 지속적 검증
3. SW 개발 관련 사항 및 결과에 대한 명확한 기록 유지
🍰 스크럼 기법
: 팀이 중심이 되어 개발 효율성 ⬆
제품 책임자
- 백로그 작성 주체
- 개발될 제품에 대한 이해도⬆
- 요구사항 책임지고 의사 결정할 사람 선정
스크럼 마스터
- 팀이 스크럼 잘 수행할 수 있게 가이드 역할 수행
개발팀
- 나머지 모든 팀원, 제품 개발 수행
프로세스
- 스프린트 계획 회의
- 스프린트
- 일일 스크럼 회의
- 스프린트 검토 회의
- 스프린트 회고
🍰 XP 기법
: 요구사항에 유연하게 대응하기 위해 고객 참여와 개발 과정의 반복 극대화, 개발 생산성 향상
- 짧고 반복적인 개발 주기
- 단순한 설계
XP의 5가지 핵심 가치
- 의사소통
- 단순성
- 용기
- 존중
- 피드백
프로세스
- 릴리즈 계획 수립
- 이터레이션
- 승인 검사
- 소규모 릴리즈
주요 실천 방법
Pair Programming
Collective Ownership(공동 코드 소유)
Test-Driven Development(테스트 주도 개발)
Whole Team
Continuous Integration(계속적인 통합)
Refactoring 목적: 프로그램을 쉽게 이해/수정하여 빠르게 개발할 수 있도록.
Small Releases
🍰 개발 기술 환경 파악
OS(Operating System)
: 컴퓨터 시스템의 자원 효율적 관리, 컴퓨터를 편리/효육적으로 사용할 수 있도록 환경 제공하는 SW
운영체제 관련 요구사항 식별 시 고려사항
가용성, 성증, 기술 지원, 주변 기기, 구축 비용
DBMS(DataBaseManagement System)
: 사용자-DB 사이에서 정보 생성, DB 관리해 주는 SW
- 데이터의 종속성, 중복성 문제 해결 위해 제안
DBMS 관련 요구사항 식별 시 고려사항
가용성, 성능, 기술 지원, 상호 호환성, 구축 비용
웹 애플리케이션 서버(Web Application Server)
: 동적인 콘텐츠 처리를 위해 사용되는 미들웨어
관련 요구사항 식별 시 고려사항
가용성, 성능, 기술 지원, 구축 비용
오픈 소스
: 누구나 제한 없이 사용할 수 있도록 소스 코드를 공개한 SW
오픈 소스 관련 요구사항 식별 시 고려사항
라이선스의 종류, 사용자 수, 기술의 지속 가능성
🍰 요구사항 정의
: SW가 어떤 문제 해결을 위해 제공하는 서비스에 대한 설명, 정상적으로 운영되는데 필요한 제약조건
기능 요구사항(Functional requirements)
: 기능이나 수행과 관련된 요구사항
비기능 요구사항(Non-functional requirements)
: 품질, 제약사항과 관련된 요구사항
- 성능, 인터페이스, 시스템 장비 구성 요구사항 등
사용자 요구사항(User requirements)
: 사용자 관점에서 본 시스템이 제공해야 할 요구사항
시스템 요구사항
: 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항