[소프트웨어공학] 요구사항 정의 및 개발
👑 소프트웨어공학: 요구사항 정의 및 개발
소프트웨어 공학에서 요구사항 정의와 개발은 성공적인 프로젝트 수행을 위한 가장 중요한 초기 단계이다.
이 과정은 사용자가 필요로 하는 것이 무엇인지를 명확히 이해하고, 이를 체계적으로 문서화하여 개발 방향을
설정하는 데 초점이 맞춰져 있다. 요구사항 분석은 “어떻게” 구현할지보다 “무엇을” 구현할 것인가에
초점을 두어야 한다. 다음은 요구사항 분석 과정의 단계이다.
-
도메인 분석
- 소프트웨어가 사용될 환경과 사용자의 업무를 깊이 이해
-
요구사항 추출
- 사용자가 소프트웨어에서 필요로 하는 기능과 특성 도출
-
분석 및 명세화
- 도출된 요구사항을 분석하고 문서화
-
검토
- 문서화된 요구사항이 사용자의 기대와 일치하는지 확인 및 수정
💡 도메인 분석
도메인 분석은 소프트웨어 엔지니어가 소프트웨어가 작동할 비즈니스 또는 기술 환경을 이해하는 과정이다.
이를 통해 더 빠르고 효율적인 개발이 가능하며, 고객의 문제를 효과적으로 해결할 수 있는 시스템을
설계할 수 있다.
-
도메인 분석의 주요 항목
-
도메인 전문가 : 소프트웨어가 사용될 도메인 분야에 지식을 가진 사람 (대부분 고객이나 사용자)
-
환경 분석 : 소프트웨어가 동작할 하드웨어와 시스템
-
경쟁 소프트웨어 분석 : 기존 시스템의 장단점 파악
-
💡 요구사항 추출
요구사항이란 제안된 시스템이 무엇을 하는가를 나타낸 문장으로 문제를 해결하기 위한 것이라고
볼 수 있다. 짧고 간결한 정보로 표현하며, 사용자, 고객, 개발자 등 관련자 모두가 동의한, 고객의
문제를 해결하기 위한 것이다.
요구사항은 크게 기능적 요구사항과 비기능적 요구사항으로 나뉜다.
-
기능적 요구사항
-
소프트웨어가 수행해야 할 작업과 기능을 정의
-
예: ATM 시스템에서 현금 인출, 잔액 조회 등
-
-
비기능적 요구사항
-
개발 과정에서 고수하여야 할 성능, 보안, 품질, 플랫폼과 같은 제약 조건
-
예: 반응 시간은 1초 이내, 최대 메모리 사용량 30MB
-
✔ 요구사항 추출 방법
요구사항을 효과적으로 도출하기 위해 다양한 기법들이 활용될 수 있다.
-
관찰
- 사용자의 업무 수행 방식 관찰, 시간이 많이 소요됨
-
인터뷰
-
관련자와의 대화를 통해 요구사항 식별
-
가능하면 많은 당사자와의 인터뷰를 진행하는 것이 좋음
-
-
브레인스토밍
-
다양한 아이디어를 수집하여 요구사항 도출
-
토론보다는 아이디어를 쏟아 놓는 회의에 가까움
-
-
프로토타이핑
-
시스템의 일부 기능을 빠르게 구현하여 피드백 수집
-
paper prototype 부터 mock-up 까지 다양한 프로토타이핑 방법 존재
-
- 유스케이스 분석 : 사용자와 시스템 간의 상호작용 정의
💡 요구사항 문서화
요구사항 문서는 요구사항을 체계적으로 정리한 문서로, 시스템 개발의 기준이 된다.
요구사항 문서의 상세 수준은 시스템의 크기와 복잡성에 따라 달라질 수 있으며,
요구사항 문서의 주요 구성은 다음과 같다.
-
배경 지식
-
요구사항을 이해하는데 도움이 되는 정보
-
도메인 분석서, 관련 표준 등에 대한 참고 문헌 등
-
-
환경 및 시스템 모델
-
시스템이 수행될 배경 및 시스템이나 서브시스템의 개요를 기술
-
사용자 인터페이스, 하드웨어 인터페이스 등
-
-
기능적 요구사항
- 시스템의 주요 기능
-
비기능적 요구사항
- 성능, 품질, 제약 조건 등
💡 검토
요구사항 검토는 요구사항이 명확하고 일관성 있는지, 그리고 시스템 개발에 적합한지 확인하는 과정이다.
주요 검토 항목은 다음과 같다.
-
개발 비용 대비 투자 효과
-
당면한 문제가 해결되는지의 여부
-
모호한 점이 없이 명확하고 일관성 있게 표현 되었는지의 여부
-
다른 요구사항과 충돌하지 않는지를 검토
-
실현 가능성, 검증 가능성을 만족
요구사항은 비즈니스 환경과 기술 변화에 따라 지속적으로 변경될 수 있다. 요구사항 변경 시에 고려해야
할 사항은 다음과 같다.
-
고객 및 사용자와 지속적인 상호작용
-
변경으로 인한 이익이 변경 비용을 초과해야 한다.
-
불필요한 기능 추가를 방지하고 핵심 목표에 집중해야 한다.
Leave a comment