PromleeBlog
sitemap
aboutMe

posting thumbnail
진화하는 요구사항에 유연하게 대응하기
flexibly Adapting to Evolving Requirements

📅

🚀

들어가기 전에 🔗

우리가 아무리 꼼꼼하게 계획을 세우고 요구사항을 분석한다고 해도, 소프트웨어 개발 프로젝트는 살아있는 생물처럼 끊임없이 변화하는 요구사항에 직면하게 됩니다.
시장이 변하고, 사용자의 생각이 바뀌고, 새로운 기술이 등장하면서 초기의 계획은 도전을 받게 마련입니다.

"요구사항은 항상 변한다"는 말은 소프트웨어 개발 업계의 오랜 격언 중 하나입니다.
오늘은 이렇게 피할 수 없는 요구사항의 변화가 왜 발생하는지, 그리고 이러한 변화를 골칫거리로 여기기보다는 성장의 기회로 삼아 유연하게 대응하고 관리할 수 있는 전략과 방법에 대해 함께 이야기 나누겠습니다.

🚀

요구사항은 왜 계속 변할까요? 🔗

프로젝트 초기에 완벽하게 정의된 것처럼 보였던 요구사항도 시간이 지남에 따라 다양한 이유로 변경되거나 추가, 삭제될 수 있습니다.
주요 원인들을 살펴보겠습니다.

시장 및 비즈니스 환경의 변화 🔗

사용자의 이해도 증가 및 니즈 변화 🔗

프로젝트 내부 요인 🔗

변화는 피할 수 없는 항해의 일부
변화는 피할 수 없는 항해의 일부
이처럼 요구사항 변경은 프로젝트의 자연스러운 일부이며, 이를 효과적으로 관리하는 것이 중요합니다.

🚀

변화를 수용하는 유연한 개발 전략 🔗

요구사항 변경을 무조건 막으려고 하기보다는, 변화를 예측하고 수용하며 관리할 수 있는 유연한 개발 전략을 채택하는 것이 현명합니다.

애자일 및 반복적 개발 방법론 채택 🔗

이전 주제에서 자세히 다루었듯이, 애자일(Agile)과 반복적(Iterative) 개발 방법론은 변화에 유연하게 대응하는 데 매우 효과적입니다.

변경 관리 프로세스 수립 🔗

요구사항 변경이 발생했을 때 이를 체계적으로 처리하기 위한 공식적인
변경 관리 프로세스(Change Management Process)
를 수립하는 것이 중요합니다.
워크플로우 다이어그램
워크플로우 다이어그램
일반적인 변경 관리 프로세스는 다음과 같은 단계를 포함할 수 있습니다.
  1. 변경 요청 접수
    : 이해관계자로부터 변경 요청을 공식적으로 접수합니다. (변경 요청서 사용 권장)
    • 변경 요청서에는 변경 내용, 요청 사유, 기대 효과, 긴급도 등을 명시합니다.
  2. 변경 영향 분석
    : 접수된 변경 요청이 시스템의 다른 부분, 프로젝트 일정, 비용, 자원 등에 미치는 영향을 분석합니다.
    • 기술적 타당성, 비즈니스 가치, 위험 요소 등을 종합적으로 검토합니다.
  3. 변경 승인/거부 결정
    : 분석 결과를 바탕으로 변경 통제 위원회(Change Control Board, CCB) 또는 관련 책임자가 변경 요청의 승인 여부를 결정합니다.
    • 우선순위, 긴급성, 프로젝트 목표와의 부합성 등을 고려합니다.
  4. 변경 구현 및 테스트
    : 승인된 변경 사항을 개발 계획에 반영하여 구현하고, 철저한 테스트를 통해 품질을 검증합니다.
  5. 변경 사항 문서화 및 공유
    : 변경된 요구사항과 그 이력을 관련 문서(SRS, 설계 문서, 테스트 케이스 등)에 반영하고, 모든 이해관계자에게 변경 내용을 공유합니다.
이러한 프로세스는 "범위蔓延(Scope Creep)" 현상, 즉 프로젝트 범위가 통제되지 않고 무분별하게 확장되는 것을 방지하고, 변경으로 인한 혼란을 최소화하는 데 도움이 됩니다.

요구사항 추적성 유지 🔗

요구사항 추적성(Requirements Traceability)은 각 요구사항이 어디서부터 왔고(예: 고객 미팅록, 유스케이스), 어떻게 설계되고 구현되었으며, 어떤 테스트 케이스로 검증되는지를 연결하여 추적할 수 있도록 하는 것입니다.
요구사항 추적성 매트릭스(RTM)를 활용하면 효과적입니다.
추적성을 유지하면, 특정 요구사항이 변경되었을 때 관련된 모든 요소(코드, 테스트, 문서 등)를 쉽게 식별하여 빠짐없이 수정하고 영향을 분석하는 데 매우 유용합니다.

명확한 의사소통 채널 확보 🔗

요구사항 변경에 효과적으로 대응하기 위해서는 모든 이해관계자 간의 원활하고 투명한 의사소통이 필수적입니다.

🚀

요구사항 관리 도구 소개 🔗

요구사항의 변경을 효과적으로 추적하고 관리하며, 이해관계자들과 공유하기 위해서는 적절한 도구를 활용하는 것이 도움이 됩니다.
프로젝트의 규모, 팀의 특성, 예산 등을 고려하여 적합한 도구를 선택하고, 모든 팀원이 일관되게 사용하도록 하는 것이 중요합니다.
도구는 어디까지나 보조 수단이며, 가장 중요한 것은 명확한 프로세스와 적극적인 소통 문화입니다.

🚀

결론 🔗

오늘은 소프트웨어 개발 과정에서 피할 수 없는 요구사항의 변화가 왜 발생하는지, 그리고 이러한 변화를 효과적으로 수용하고 관리하기 위한 유연한 개발 전략과 방법에 대해 알아보았습니다.
애자일 및 반복적 개발 방법론의 채택, 체계적인 변경 관리 프로세스 수립, 요구사항 추적성 유지, 그리고 명확한 의사소통은 변화의 파고를 넘는 데 중요한 역할을 합니다.
또한, Jira, Confluence와 같은 요구사항 관리 도구는 이러한 활동을 지원하는 유용한 수단이 될 수 있습니다.
다음 시간에는 사용자와 시스템 간의 상호작용을 구조화하고, 단일 유스케이스를 명확하게 표현하며, 유스케이스 간의 관계를 정의하는
유스케이스, 유스케이스 다이어그램
에 대해 더 깊이 있게 탐구해보겠습니다.

참고 🔗