요즘 SW의 안전성에 대한 관심과 필요성이 어느때 보다 높다. 

SW가 오동작하는 원인은 프로그램이 결함을 갖고 있기 때문이다.

 설계 단계에서 결함을 발견하지 못하여 사용중에 발생하는 오류는 

큰 재앙으로 다가올 수 있다. SW안전성을 높이기 위하여 설계 및 개발 단계에서 

적용해야 할 기법이 필요하다. 


SW안전성의 중요성은 인식하고 있지만, 

표준을 지키고 따르는 것은 잘 지켜지지 않고 있다. 

우리는 단순한 버그 하나가 나중에 시스템에 얼마나 큰 악영향을 미칠지에 대하여 

생각해 본적이 없다. 

여기서 버그라고 정의하는 부분을 정상으로 인식하는것이 가장 큰 문제다.


버그란 무엇인가? 스프트웨어에 내제된 결함이다. 

어떻게 하면 이 버그를 효과적으로 관리할 수 있을까. 

우선 SW테스트에서 버그를 잡아야 한다. 

SW테스트에서 잡지 못하는 버그도 있을까? 


발견된 결함은 없지만 안전하지 못한 SW가 있다. 

반면 결함투성이지만 안전한 SW가 있다. 어느 말이 맞을까?


안전의 개념을 우선 생각해보자. 

시속 100km로 달리는 자동차가 있다. 

이 자동차는 안전한가 안전하지 않은가? 

만약 어린어보호구역을 달리고 있다면? 아니면 고속도로를 달린다고 하면? 

고속도로에서 이 자동차의 속도는 규정속도를 지키고 있지만, 

어린이보호구역은 30km 이상 단속기준이다. 

안전에는 기준이 있다. 고속도로에서 30km 속도로 달리는 것은 안전하지 않다. 

왜냐하면, 다른 차량의 진행을 방해하기 때문으로 도로교통법에서 

고속도로는 최저속도와 최고속도를 제한한다. 

이런 규정이 안전성을 확보하는 기준준이다. 

SW안전성도 안전성에 대한 기준을 제시한다.


안전과 위험은 다른말일까 같은 말일까.

그 전에 위협과 위험에 대해 정의해보자.    

위험은 사고가 발생하기 전을 말하고, 위협은 이미 사고가 발생한 후를 말한다.

랜섬웨어가 발생하여 피해사례가 보고되었다면 위협이고

랜섬웨어가 출현할 수 있다는 것은 위험에 해당한다.


안전사고는 규정을 지키지 않아서 발생하는 사고다.

공사장에서는 안전모와 안전화를 신고 안전장갑을 착용한다.

피복이 벗겨진 전기줄에 닿아서 감전의 위험이 존재하는데

안전장갑이 없이 전기줄을 만지는 것에 해당한다.

이 또한 규정을 지키지 않아서 발생하는 사고다.


즉, SW안전이란 시스템을 안전하게 설계하는 기준을 준수하는 것이다.

Posted by 일송정보
,