소프트웨어 안전 요구사항 개요
정리 및 명세 실습
정의 : 구축될 시스템이 충족해야하는 조건 또는 능력, 현재의 문제점을 해결하기위해 고객이 필요로 하는 것
프로젝트의 발생원인
프로젝트 관리의 출발점
개발 활동의 근간
품질 판단 기준
변경의 근본 원인
비용관점
대부분의 재작업은 불충분, 불일치, 불명확한 요구사항과 관련이있다.
개발단계에서 결함을 수정하려면 30-1000배의 비용이 더 든다
The 1-10-100 Rule
(전체적으로 봤을때 요구사항단계에서 결함을 찾는것과 유지보수 단계에서 결함을 찾는것은 200:1의 비용을 요구한다.
즉, 요구사항단계에서 결함을 찾고 수정하는것이 훨씬 저렴하다
Correct
사용자 요구와 명시된 요구사항이 중첩되는 부분이 정확한 요구사항이다.
사용자요구가 생략되어있거나, 명시된 요구사항에 불필요한 정보가 추가되었을 수 있다 (자주 발생)
Unambiguous
오직 한 가지 해석만이 존재하는 요구사항이 명확한 요구사항이다
요구사항이 자연어로 쓰여진 경우에 문화에 따라 해석이 다양하기 때문에 의도하지 않은 문제 발생이 가능하다
Complete
완전함을 확인함으로써 완전한 요구사항의 요건이다
기능적/비기능적 요구사항의 완전함
(기능 - 유즈케이스, 비기능 - 체크리스트 활용)
프로토타입을 통해 완전함을 파악한다
Consistent
각각의 요구사항들이 서로 다른것들과 충돌하지 않아야 일괄된 요구사항이다
개발자/비개발자 등의 신중한 검토와 분석이 이루어져야 한다.
Ranked for importance and stability
고객에게 있어서 중요도와 안정성(불변성)을 기준으로 개발자와 고객, 그리고
다른 참여자들이 각각의 요구사항에 순위를 매긴다
자원의 부족으로 모든 요구사항을 다 구현할 수 없을 때 어떤 요구사항이
중요하고 그렇지 않은지 판단할 수 있다
Verifiable
Modifiable
기존의 구조와 양식을 유지하면서, 쉽고, 완전하며, 일관성 있게 변화를 줄 수 있어야 수정 가능한 요구사항
중복되지 않아야하고, 적절한 목차와 색인 등으로 잘 구성되어야 한다.
Traceable
요구사항 구성요소 각각의 시작점이 명확하고, 차후에 요구사항의 참조에 있어 추적 가능한 요구사항
요구사항에 대한 순/역방향 추적이 모두 필요하다.
프로젝트에 대한 이해와 요구사항을 모두 구현하고 있다는
높은 신뢰를 제공하기 위해 개발자들이 추적성을 이용할 수 있다
Understandable
사용자와 개발자가 각각의 요구사항과 종합된 기능을 완전히 이해할 수 있으면 이해하기 쉬운 요구사항
요구사항이 정제될수록 기술적인 용어들 명세 가능
요구사항을 기록하는 사람은 사용자와 개발자 모두가 이해할 수 있는 용어 선택