최근 소프트웨어 신뢰성 관련 자료를 찾아보고 있다. 소프트웨어에 신뢰성이란 말이 어울리지 않는다고 생각했고, 그래서 말도 안되는 소리라고 생각했었는데, 우연찮게 검색을하다가 발견했다.
생각보다 오래된 이론이더라는….
IEEE표준도 있다.
IEEE Std 1633-2008: IEEE recommended practice on software reliability
논문도 조사해보니, 굉장히 많더라는…
하지만, 논문들을 살펴보면서 여러가지 의문점이 들었다.
Q. 신뢰성을 검증하고자 하는 목적이 무엇인가? 솔직히 에러 좀 있으면 어떠한가? 그게 하나도 없어야 되는 이유가 있는가? 에러 있는거 알고도 릴리즈 할 수 있다. 중요한 거 아니면 다음에 릴리즈 하면 된다.
/ A. 좋다, 그렇다면 신뢰성 검증에서 사소한 에러는 제외하고 중요 에러만 샘플링해서 해보는건 어떤가?
Q. Reliability growth model을 이용해서 신뢰도를 예측한다고? 좋다. 그러면 그것을 어떻게 validation할 것인가? 내 생각에 Model의 정확성이 중요한데, 이것을 검증할 방법은 딱히 없을 것 같다.
Q. test sample의 randomness는 어떻게 입증할 수 있을까? 그거 중요할 것 같은데.. 10개짜리 test case를 copy & paste해서 100만번 돌린거랑 무작위 샘플 100만개 잡은거랑 다를 수 밖에 없을 것이다.
Q. 이 이론으로 검증할 수 있는 실용적인 유의수준이 어느정도 되는가? 1.0E-6할 수 있겠는가? 1.0E-9는 가능한가?
소프트웨어 신뢰성 하시는 분들이 이 글보면 도움을 주시길..
참고할 만한 글
소프트웨어의 신뢰성에 대한 개인적 의견
SOFTWARE RELIABILITY와 DO-178C/DO-278