소프트웨어 개발 단계의 큰 틀은 5단계 분석 - 설계 - 구현 - 테스트 - 유지 보수 로 나뉜다. 하지만 저는 ' 계획 '이라는 단계를 하나 더 추가해 총 6단계로 설명 및 실제 개인적으로 개발을 진행해 보려고 한다.
1. 소프트웨어 개발 1단계 - 계획
계획단계에서는 비용, 기간 등 프로젝트를 수행하는데 필요한 것에 대해 계획한다. 그 중 개발 비용을 산정할 때 쓰는 대표적인 방법으로 COCOMO모델과 FP모델이 있습니다. 국내에서는 주로 FP 즉 기능점수 모델을 자주 사용한다고 한다. 또한 일정 계획도 세워야 합니다.
일정 계획은 WBS(작업 분할 구조도), CPM(네트워크 차트), Guntt chart가 있습니다.
https://ernest-o.tistory.com/33
2. 소프트웨어 개발 2단계 - 요구분석
기존 시스템의 문제점을 파악하고 사용자 인터뷰를 통해 새로운 요구사항을 도출하여 수집합니다. 이렇게 수집된 요구 사항들은 최적화하여 특정 표현 도구를 사용, 다이어그램 등으로 명확히 나타냅니다. 이 과정에 추가하여, 경쟁 제품 조사와 시장 분석을 통한 요구사항의 시장 부합성 검토, 대표 사용자 유형인 페르소나 설정을 통한 고통 포인트와 필요 파악, 각 요구사항의 기술적·재정적 실현 가능성 평가와 우선순위 결정, 초기 프로토타입 제작 및 피드백 반영, 이해관계자의 의견 조율을 위한 지속적인 커뮤니케이션 등을 포함하여 보다 심층적인 요구분석 명세서를 작성합니다. 이러한 접근은 요구사항이 실제 사용자의 기대와 시장의 요구를 충족시키면서도 실행 가능한 범위 내에 있도록 보장하는 데 중요합니다.
https://ernest-o.tistory.com/35
3. 소프트웨어 개발 3단계 - 설계
도출된 다이어그램을 토대로, 설계 단계에서는 이를 코딩 가능한 수준까지 구체화하여 환경에 밀접하게 연결짓습니다. 요구사항과 제약사항을 꼼꼼히 검토하고, 최적의 프로그래밍 언어와 시스템 개발에 적합한 플랫폼을 선정함으로써, 기술적 맥락에서의 실현 가능성을 타진합니다. 아키텍처 설계에서는 시스템의 전체적인 구조를 정립하며, 데이터 설계를 통해 정보가 어떻게 저장되고 처리될지를 규정합니다. 인터페이스 정의에서는 시스템의 각 부분 간 상호작용 방식을 명시하고, 사용자 인터페이스 설계에서는 사용자 경험(UX)와 사용자 인터페이스(UI) 디자인 원칙을 적용하여 사용자의 편의성을 최대화합니다. 이러한 과정에서 모듈화를 고려하여 시스템을 여러 개의 독립적이고 교체 가능한 부품으로 나누어 설계함으로써, 유지보수의 용이성과 확장성을 확보하는 것이 중요합니다. 또한, 보안 설계를 통해 데이터 보호와 시스템의 안정성을 강화하는 것도 필수적인 부분입니다.
[링크예정]
4. 소프트웨어 개발 4단계 - 구현
설계된 아키텍처를 기반으로 실제 코드를 작성하는 과정입니다. 여기에는 표준 코딩 규칙과 시큐어 코딩의 원칙을 적용하여, 코드의 안정성과 가독성을 높이는 것이 포함됩니다. 변수명, 자료형, 상수, 수식, 문장 구성 등에 대한 명확한 규칙을 설정함으로써 일관성 있는 코드베이스를 유지해야 합니다. 이와 함께 코드 리뷰 프로세스를 도입하여 동료의 코드를 검토하고, 코딩 표준에 부합하는지, 버그나 보안 취약점이 없는지 확인합니다. 또한 단위 테스트를 작성하여 각 기능이 정상적으로 작동하는지를 지속적으로 검증하며, 버전 관리 시스템을 통해 코드 변경사항을 추적하고 협업을 용이하게 합니다. 마지막으로 지속적 통합(CI)과 지속적 배포(CD)를 활용하여 코드의 통합과 배포 과정을 자동화하고, 이를 통해 배포 주기를 단축시키고 신속한 피드백을 반영할 수 있도록 합니다.
[링크예정]
5. 소프트웨어 개발 5단계 - 테스트
소프트웨어 개발 과정 중 품질 보증의 핵심으로, 오류를 발견하고 수정하는 것을 넘어 소프트웨어의 안정성과 신뢰성을 검증하는 단계입니다. 테스트 계획을 세울 때는 소프트웨어의 모든 기능과 요구사항이 포괄되어야 하며, 위험 기반 테스팅을 통해 중요하고 위험도가 높은 부분을 우선적으로 다루어야 합니다. 테스트 케이스를 설계할 때는 실제 사용 시나리오를 반영하여 가능한 많은 경우의 수를 고려해야 합니다. 테스트 실행은 자동화 도구를 사용하여 반복 가능하고 일관된 방식으로 수행되어야 하며, 측정은 정량적으로 가능한 매트릭스를 활용하여 진행합니다. 결과 분석 및 평가는 단순히 오류의 존재 유무를 넘어, 성능 기준과 사용자 경험 측면에서도 이루어져야 합니다. 오류 추적 및 수정은 체계적인 이슈 트래킹 시스템을 통해 관리되어야 하며, 테스트 환경과 생산 환경 간의 일관성을 유지하는 것이 중요합니다. 또한 회귀 테스트를 통해 수정이 다른 부분에 부정적인 영향을 주지 않았는지 확인해야 합니다. 마지막으로, 테스트 문서화는 테스트 과정과 결과를 기록하여 투명성을 제공하고, 향후 유사한 프로젝트에서의 참고 자료로 활용될 수 있도록 합니다.
테스트 기법의 프로세스는 아래와 같다.
- 테스트 계획
- 테스트 케이스 설계
- 테스트 실행 및 측정
- 결과 분석 및 평가
- 오류 추적 및 수정
6. 소프트웨어 개발 6단계 - 유지보수
유지보수 단계는 소프트웨어가 실제 운영 환경에 투입된 후 지속적으로 시스템을 최적의 상태로 관리하는 중요한 과정입니다. 이 단계에서는 수정 유지보수를 통해 버그 수정 및 성능 개선을, 적응 유지보수를 통해 시스템을 최신 환경에 맞게 조정을, 기능 보강 유지보수를 통해 사용자의 새로운 요구사항이나 시장의 변화에 대응하는 새로운 기능을 추가하며, 예방 유지보수를 통해 잠재적 문제를 사전에 해결하여 미래의 대규모 수정을 방지합니다. 이러한 유지보수 활동은 소프트웨어의 수명 주기를 연장시키고, 사용자 만족도를 유지하기 위해 필수적입니다.
또한, 유지보수 단계에서는 피드백 수집 메커니즘을 구축하여 사용자로부터 직접적인 피드백을 수집하고, 이를 바탕으로 지속적인 품질 향상을 도모합니다. 소프트웨어 문서화도 중요한데, 이는 유지보수 작업의 효율성을 높이고 새로운 개발자가 프로젝트에 빠르게 적응할 수 있도록 돕습니다. 효과적인 유지보수를 위해서는 또한 시스템의 모니터링을 지속적으로 수행하여 성능 저하, 보안 취약점 등을 식별하고, 적절한 대응 조치를 취해야 합니다.
※ 참고로 소프트웨어 개발 프로세스 모델은 6가지가 있는데 그 중에서 윗글은 폭포수 모델을 적용한 예시이고 그외에는 V모델, 프로토타이핑 모델, 나선형 모델, 진화적 모델,애자일 모델 등이 있습니다.
'개인 공부 > 정보 보관함' 카테고리의 다른 글
VirtualBox VM 이미지 불러오기 (0) | 2024.04.09 |
---|---|
요구사항 명세서 작성법 (0) | 2024.01.10 |
WBS 작성법 (2) | 2024.01.09 |
[SCP]로컬PC(windows)와 linux서버에서 파일전송 및 다운 (1) | 2023.12.11 |
[FTP]윈도우PC에서 linux 서버로 파일 전송 방법 (0) | 2023.12.08 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!