초보 개발자

요구사항을 체계적으로 분석하는 방법은? 본문

컴퓨터공학 전공/소프트웨어공학

요구사항을 체계적으로 분석하는 방법은?

mandudu 2022. 10. 13. 01:07

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **

요구공학

  • 소프트웨어 개발 비용 중 차지하는 비중은 10~15% 미만이나 중요한 단계
  • 요구사항을 조기에, 제대로 파악하지 못하면 프로젝트에 부정적인 영향을 끼치고 막대한 손실로 이어짐
  • 틀린 요구사항을 바로잡아서 다시 구현하려면 추가비용이 발생하고, 변경된 요구사항이 다른 기능에도 영향을 끼침
    → 디자인 및 테스트 케이스도 수정되어야 하므로 개발 전 단계에 영향을 끼친다고 볼 수 있음

요구사항을 기술하는 방법: 기능 요구사항 + 비기능 요구사항 (품질 속성)

  • 자연어 사용 (시스템의 복잡도 때문에 더 좋은 대안이 별로 없음)
  • 정형 명세 및 정형 검증 / 모델링 기법 (높은 전문성, 시스템의 복잡도를 제대로 지원하지 못함)
더보기

엘리베이터 제어 소프트웨어의 요구사항

- 요청이 있는 마지막 층까지 이동하는 동안, 중간에 멈춰야 하는 층이 있다면 정지
- 이동하기 전에는 항상 문이 닫혔는지 확인 + 탑승인원 기준 확인 후 운행

그러나 엘리베이터마다 요구사항이 다를 수 밖에 없음 ( 초고층 엘리베이터: 고속 / 병원의 엘리베이터: 진동 최소화 )
+) 요구사항은 더 복잡해질 수 있음: 여러 대의 엘리베이터 + 전력 최소화 + 대기시간 최소화 + 요청 취소
+) 보안 요구사항도 생각해볼 수 있음: 출입카드 이용, 각 엘리베이터의 층 정보 X
+) 예외상황, 비상상황에 대비해야 함: 설정한 강도 이상의 진동이 감지된다면?? + 여러 센서 설치 및 대응 필요


요구사항을 빠짐없이 정확하고 일관성 있게 정의하는 방법 - Alexander

  1. Mission과 Scope 식별
  2. Stakeholder 식별 및 목표 파악
  3. 서로 다른 Stakeholder 간의 목표 절충
  4. 요구사항을 시나리오 형태로 기술
  5. Justification
  6. Assumptions
  7. Agreed Priorities
  8. Acceptance criteria

추가 자료 리스트

  • IEEE Recommended Practice for Software Requirements Specifications (IEEE 830-1998)