일본에서는 개발하기 전에 하는 문서작업이 많다는 이야기를 들어보신 적 있으신가요?
중소 기업이나 자사개발을 하는 회사에서는 상세하게 작성하지 않아도
다른 큰 회사에서 개발을 업체에 맡기는 경우 클라이언트에게 정확하게 문서로서 제공할 수 있어야 합니다.
미즈호, 스미토모, 미쓰비시 등등 큰 회사에서는 직접 개발을 하기 보다 NTT, 후지쯔, 히타치 등등 기업에 맡기게 됩니다.
일본에서 엔지니어로 살아남기 위해서는 경우에 따라 개발 업무 뿐만 아니라 요건정의, 기본설계, 상세설계도 할 수 있어야 합니다.
이번에는 요건정의, 기본설계, 상세설계중 요건정의에 대해 알아보려고 합니다.
요건정의는 프로젝트의 성패를 좌우하는 가장 중요한 작업 단계입니다.
왜냐하면, 요구사항 정의는 의뢰인의 니즈를 시각화하는 작업이기 때문입니다!
그러나 IT 전문가가 아니면 요구사항 정의가 무엇인지, 왜 중요한지 이해하기 어려울 수 있습니다. 😅
이번 글에서는 시스템 개발에서 요구사항 정의의 중요성과 진행 방법을 간단하게 설명하겠습니다! 끝까지 읽으면 개발 회사와의 커뮤니케이션이 훨씬 수월해질 것이라고 생각합니다.
먼저, 요구사항 정의에서는 "왜(Why) 시스템을 개발하는가?" 즉, 시스템 개발의 목적과 목표를 실현하기 위해 "무엇으로(What) 해결할 것인가?"
시스템에 구현해야 할 기능, 요구되는 기술, 소프트웨어, 하드웨어 등을 명확히 합니다. 구체적으로는 다음과 같은 항목을 결정합니다.
- 개발 목적
- 대상
- 예산
- 필요한 기능
- 사용될 기술
- 일정 (납기)
- 필요한 인원 (공수)
- 구현 절차
요구사항 정의가 중요한 이유
요구사항 정의는 발주자와 개발자가 면밀한 협의가 필요하며, 그 과정에서 요구사항이 변경되는 경우도 흔합니다! 요구사항 정의를 제대로 하지 않으면 다음과 같은 문제로 이어질 수 있습니다:
- 개발 과정에서 예상보다 시간이 오래 걸린다.
- 만들어진 것이 쓸모없게 된다.
- 지나치게 고기능이 되어 예산을 초과하게 된다.
위와 같은 발주 후의 문제로도 이어질 수 있습니다. 또한, 개발 회사와 충분히 논의하는 과정에서 "예상하지 못했지만, 실제로는 이런 기능이 필요했다"와 같은 숨겨진 요구가 드러날 수 있습니다.
"왜(Why)"와 "무엇을(What)" 명확히 하기 위한 요구사항 정의는 시스템 개발에서 가장 중요한 작업 단계이며, 프로젝트의 성패를 좌우하는 가장 중요한 요소입니다. 😊
시스템 개발의 요구사항 정의에서 결정해야 할 8가지 사항
요구사항 정의에서 사양 확정까지는 발주자와 개발 회사 간에 협의를 거듭하여, 특히 "실현하고자 하는 기능"을 확정해 나갑니다.
- 시스템 요구사항
- 기능 요구사항
- 비기능 요구사항
- 기술 요구사항
- 사이트 요구사항
- 인프라 요구사항
- 보안 요구사항
- 기타 요구사항
시스템 개발의 요구사항 정의 진행 방법
"요구사항 정의"를 어떻게 진행해야 하는지 간단히 설명드리겠습니다!
① 시스템 개발 기획 및 업무 설계 수작업으로 진행되고 있는 업무를 시스템화하고 싶다, 생산성이 올라가지 않는 기존 시스템을 새롭게 하고 싶다, 신규 서비스를 론칭하고 싶다 등 시스템 개발을 고려하는 데는 어떤 과제나 목표가 있을 것입니다.
이를 명확히 하는 것이 "기획"이며, "업무 설계"입니다.
- 현재 상태 (현상)
- 원래 있어야 할 상태 (이상적인 상태, 목표)
- 현상과 목표의 격차 (해결해야 할 과제)
- 시스템 개발의 목적 (현상과 목표의 격차를 메우는 것)과 목표 (이상적인 상태)를 결정하는 것이 "기획"이라면, 그것을 더 명확히 하기 위해 현상을 분석하고 과제를 특정하며, 원래 있어야 할 이상적인 상태를 설정하는 것이 "업무 설계"라고 할 수 있습니다. 이는 시스템 개발의 "왜(Why)"에 해당하는 중요한 요소입니다.
"기획"과 "업무 설계"가 명확하고 구체적일수록, 그 후의 요구사항 정의 단계, 나아가 개발 프로젝트 전체의 정확도를 높일 수 있습니다.
② 요구 정의 (인터뷰) 명확화한 시스템 개발의 목적 및 목표를 바탕으로, 과제를 해결하기 위해 필요한 시스템의 개요, 구체적으로 구현하고 싶은 기능을 정의해 나갑니다. 이것이 "요구 정의"입니다.
예: "○명이 동시에 액세스하여 ××를 1초 이내에 병렬 처리할 수 있는 시스템"
"○○ 버튼을 클릭하면, ××와 △△를 처리할 수 있는 기능"
요구사항 정의 이후의 개발 진행 방법
요구사항 정의가 끝나면 다음과 같은 순서로 개발을 진행합니다:
- 설계
- 프로그래밍
- 테스트
- 설계 시스템 설계는 "기본 설계"와 "상세 설계" 두 가지로 나뉩니다. 기본 설계는 요구사항 정의에서 결정된 요구 사항을 실현하기 위해 업무 흐름이나 화면 레이아웃 등 전체적인 개요를 생각하는 작업입니다. 한편, 상세 설계는 기본 설계를 더 세밀하게 만든 것으로, 데이터 처리의 흐름이나 프로그램 구조 등을 기재합니다. 😊 상세 설계가 잘 만들어지면, 기재된 내용에 따라 프로그래밍을 수행하면 되기 때문에 작업이 수월해집니다.
- 프로그래밍 프로그래밍은 상세 설계서에 따라 진행합니다. 가장 우선시해야 할 것은, 상세 설계서대로 작성하는 것입니다! 프로그래밍은 팀으로 수행하는 경우가 많기 때문에 개인의 방식을 우선하면 프로그램 전체의 통일성을 잃게 됩니다. 설계서대로 수행하기 위해 팀원끼리 리뷰하는 것도 좋습니다. 😊 또한, 누구나 이해할 수 있도록 주석을 보충하는 것도 유효합니다. 다만, 주석이 너무 많아도 읽기 어려워지므로, 적절한 판단이 필요합니다!
- 테스트 시스템의 결함은 클레임으로 이어질 수 있으므로, 꼼꼼하게 테스트를 실시하고 문제가 없음을 잘 확인해야 합니다. 경험이 적은 사람이라면, 시스템 개발, 특히 요구사항 정의에 주저할 수 있지만, 위탁 측의 니즈를 시스템 요구사항으로 정리하는 것이 요구사항 정의입니다. 😌 니즈를 명확히 한 후 개발 회사와 적극적으로 커뮤니케이션을 하여 의문점과 우려 사항을 철저히 해결하는 것이 중요합니다!
마무리
개발자는 문서 작업을 싫어 하시는 분이 많을 수도 있지만
일본에서는 경우에 따라 많이 시키는 회사도 있기에 어느정도 흐름을 숙지해두시는 것도 좋을 수도 있습니다.
'일본 개발이야기' 카테고리의 다른 글
일본 아이티 SI 상세설계에 대해 (3) | 2024.09.03 |
---|---|
일본 아이티 SI 기본설계에 대해 (0) | 2024.09.02 |
일본의 프론트엔드 개발 최신 트렌드 (1) | 2024.08.30 |
일본의 엔지니어 커뮤니티에 대하여 (0) | 2024.08.28 |
메가 벤처기업과 중소기업(벤처기업)의 차이 (0) | 2024.08.21 |