기능 요구사항에 ALCOA++?

무결성은 태생부터 만들어지는 겁니다.

by 유정빈

‘ALCOA++는 나중에 고민하죠. 지금은 기능만 뽑아야 하니까요.’


이 말을 듣는 순간, 난 바로 URS 초안을 열어봤다. 아니나 다를까. 기능들은 줄줄이 써 있었지만, 그 기능이 어떻게 통제되고, 어떻게 기록되며, 무결성을 어떻게 보장하는지는 어디에도 없었다. 그냥 “로그인이 가능해야 한다”, “알람이 있어야 한다”, “백업 기능이 있어야 한다”… 기능의 존재만 나열된 수준. 그게 전부였다.


그 문서의 최종 검토자가 ‘QA’라는 사실이 내 머리를 멍하게 만들었다.


ALCOA++를 아는 사람은 많다. 하지만 URS에 반영하는 사람은 드물다.


왜일까? 단순하다. 기능 요구사항은 벤더가 써주고, QA는 서명만 한다는 구조에 익숙해졌기 때문이다. 그런데 말이다, 시스템의 ‘기능 정의’ 단계에서부터 무결성은 이미 시작되고 있다. ALCOA++는 감사 대응 문서에 붙이는 양념이 아니다. 기능이 설계될 때부터 그 기준이 들어가야만, 이후 검증이 가능해진다.

EU GMP Annex 11은 전자 기록의 ‘장기 보존성과 변경 통제’를 명시하고, PIC/S는 Data Lifecycle 전체를 관통하는 요구사항 설계를 강조한다. 그런데 정작 현장의 URS는? 아무리 찾아봐도 ‘로그’, ‘권한’, ‘보존 기간’이 없다.


이런 URS로는 밸리데이션 할 수 없다. 테스트 항목도 못 만든다.


예를 들어보자.

“사용자는 ID로 로그인할 수 있어야 한다.”

이 문장, 100번쯤 봤을 거다. 그런데 ALCOA++ 기준으로 보면?


로그인 이력은 기록되는가?


시간 정보가 남는가?


누가 시도했는지 명확한가?


로그는 변경 불가능한가?


5년 이상 보존 가능한가?


관리자 외 열람/수정은 차단되는가?


이 질문 하나하나가 빠졌다면, 그 문장은 이미 불합격이다.

GAMP5는 말한다.

“기능은 밸리데이션을 염두에 두고 설계되어야 한다.”

‘Design with Validation in Mind.’


그래서 난 이렇게 쓴다.

“로그인 시도 및 성공 여부는 시간정보와 함께 자동 기록되며, 해당 기록은 관리자 외에는 열람 불가해야 한다. 로그는 변경 불가능한 형태로 저장되고, 5년 이상 검색 가능한 상태로 보존되어야 한다.”


이 문장은 ‘기능 설명’이 아니라 ‘검증 가능한 구조’다.

여기에는 Attributable, Accurate, Contemporaneous, Enduring, Available… ALCOA++의 조건들이 고스란히 녹아 있다.


이게 URS다. 이게 품질이다.

대표님, 이건 그냥 소프트웨어 요구사항이 아닙니다.

우리가 서명하는 순간, 이 기능은 ‘규제기관 앞에 제출될 증언’이 됩니다.


그러니 이제,

그저 “무엇을 할 수 있다”는 문장은 그만 쓰자.

“어떻게 기록되고, 어떻게 통제되며, 어떻게 보존되는지”를 말하자.


그래야 실사에서 묻는다.

“이 기능은 어떤 방식으로 ALCOA++를 보장합니까?”

그때, 우리는 말할 수 있다.


“기능 정의에서부터 다 설계되어 있습니다.”



https://kmong.com/gig/679202


keyword
작가의 이전글시스템 기능 정의 시 주의사항 - Part 5