- 펌(소프트웨어 개발 수명주기(SDLC)): https://www.servicenow.com/kr/products/devops/what-is-sdlc.html
SDLC의 이점
모든 사람이 동의하고 이해할 수 있는 중앙 집중식 사전 목표를 제공함으로써, 리소스 및 관련 비용을 비롯하여 명확한 개발 계획을 세우고, 계발을 올바르게 수행할 수 있도록 역할을 할당할 수 있음
소프트웨어 개발 수명주기(SDLC)
1. 현재 문제 식별
2. 계획 수립
who: 프로젝트 리더
what:
- 프로젝트에서 다룰 범위 명확하게 정의
-> 프로젝트가 범위를 넘어서 확장되거나 바뀌지 않도록 프로젝트의 경계를 설정
- 인건비, 재료비 계산
- 프로젝트 조건을 평가하여 목표가 설정된 일정표 구성
- 계획에 이해 관계자, 애플리케이션으로 혜택을 얻는 사람의 피드백 사안도 포함
3. 요구 사항 정의
- 요구사항을 정의 및 문서화 하고 이해 관계자에게 승인을 얻음
* 요구사항: 애플리케이션 목적, 포함할 기능, 해당 과정에서 나타날 수 있는 장애물을 규정
* 필요조건: 리소스를 식별하고 프로젝트에 구축
4. 디자인 및 프로토타이핑
- 애플리케이션이 작동하는 방식, 디자인 요소를 모델링하는 설계 단계
- UI: 고객이 소프트웨어와 상호작용하는 방식과 소프트웨어가 특정 입력에 응답하는 방식
- 프로그래밍
- 보안: 애플리케이션의 보안을 보장하기 위해 실행할 특정 조치. SSL 암호화, 암호 보호 및 안전한 데이터 저장 등
- 통신: 애플리케이션이 중앙 서버와 같은 다른 자산과 통신하는 방법
- 아키텍처: 업계 관행, 모든 템플릿, 전체 디자인 및 특정 프로그래밍 언어
- 플랫폼: 소프트웨어를 호스팅할 플랫폼
- 설계 후 애플리케이션의 인터페이스, 응답 방법, 실행 기능에 대한 기본 아이디어를 보여주기 위한 프로토타입 구축
-> 애플리케이션을 승인하기 위해 이해 관계자로부터 피드백을 받음
5. 소프트웨어 개발
- SDLC 단계
-> 테스트 결과를 기다리거나 코드를 컴파일하는 것과 같이 생산을 지연할 수 있는 소프트웨어 개발 프로세스 문제를 예측, 해결
6. 테스트
- 애플리케이션 부문마다 다른 부문과 문제없이 상호작용하면서 각 기능이 실행되는지 확인
-> 사용자가 애플리케이션을 사용할 때 발생할 수 있는 버그를 줄이고, 사용율을 높이고, 사용자 만족도를 개선
7. 배포
8. 운영 및 유지관리
- 테스트 중에 발생하지 않는 버그를 발견하고 해결
-> 자체 반복 프로세스로 시작할 수도 있음
SDLC 방법론
1. Waterfall
- 선형모델, 이전 단계가 완전히 끝날 때까지 다음 단계를 시작할 수 없음.
- 기업이 프로세스 각 단계에 대한 연속성과 실행 가능성을 분석하는데 도움이 되어 병목 현상이나 사일로(부서 이기주의)를 제거하는데 유용
2. Agile
- 사용자 입력과 경험을 핵심적으로 강조
- 피드백에 매우 민감하게 반응하며, 급변하는 시장에 적응하기 위해 더 빠른 주기로 소프트웨어가 출시되도록 운용
3. 반복
- 소프트웨어 초기 버전을 신속하게 구축 후 간단한 반복 과정을 거쳐 개선
- 애플리케이션을 시작하고 실행할 수 있는 대규모 애플리케이션에서 일반적으로 사용되는 접근 방식
-> 비즈니스 요구를 보다 빠르게 충족함
4. DevOps
- Agile과 유사함. 설계 및 구현 단계에서 소프트웨어 사용자로부터 피드백을 수집하여 개발된 애플리케이션의 사용성과 관련성을 개선
- 구성원 팀원 간의 적극적인 공동 작업 및 커뮤니케이션을 활용하여 제품에 관한 모든 측면을 다룸. 개발, 테스트, 보안, 정보 기술 운영 역할을 맡는 담당자가 참여.
5. Spiral
- Waterfall에서와 같이 순차 프로세스로 다른 모델의 반복 접근 방식을 사용
-> 개발 과정에서 프로세스의 각 단계를 반복적으로 거치면서 Spiral 단계마다 점진적으로 출시하고 개선
소프트웨어 개발의 Best Practice
1. 소스 통제
- 작업 코드를 보호하기 위해 모든 코드를 단일 위치에 보관.
2. 지속적 통합
- 자산에 속한 각 구성요소가 수명주기 동안 일관성 있게 호환되어야 함
-> 모든 팀원이 유사한 프로그래밍 언어 및 라이브러리를 사용하여 충돌과 중복을 방지
3. SDLC 관리 시스템으로 프로세스 투명성 확보
- SDLC 관리 시스템은 분석, 작업 관리 시스템, 버그 추적으로 각 단계를 제어하고, 효과적으로 실행되지 않는 수명주기 영역을 개선할 수 있음.