1. 크리티컬 시스템(Critical systems)
1) 신뢰성(Dependability)
■ 신뢰성의 4가지 주요 특성
① 가용성(Availability): 주어진 시간에 시스템이 작동하고 유용한 서비스를 수행할 확률.
② 신뢰도(Reliability): 주어진 기간의 시간에 시스템이 사용자에 의해 기대되는 서비스를 정확히 수행할 확률.
③ 안전성(Safety): 얼마나 시스템이 사람 또는 환경에 피해를 발생시킬 수 있는지에 대한 판단.
④ 보안성(Security): 얼마나 시스템이 우발적인 또는 고의적인 침입(intrusion)에 저항할 수 있는지에 대한 판단(judgement)
■ 특징
① 가용성 및 신뢰도: 확률이므로 양적으로 표현가능
② 안전성 및 보안성: 판단이므로 숫자값으로 표현하기 힘드나 레벨로 구분하여 표시 가능(e.g. 레벨 1 시스템<레벨 2 시스템<레벨 3 시스템)
③ 비용: 시스템의 신뢰성을 높이려면 개발 비용이 급격히 증가. 따라서 100% 신뢰성 있는 시스템을 구성하려면 이론적으로 무한정의 비용이 소요됨.
④ 확장성(Scalability): 시스템에 대한 새로운 요구에 대해서는 쉽게 추가가 가능하다.
⑤ 시스템 성능과의 관계: 높은 수준의 신뢰성은 성능을 낮추어서 얻어짐
■ 신뢰성이 성능보다 중요한 속성인 이유
① 신뢰성이 없는 시스템은 종종 사용되지 않음: 시스템이 사용자에 의해 신뢰 받지 못하면, 사용자들은 사용을 거부하게 되며 그 영향은 같은 회사의 다른 제품에도 미친다.
② 시스템 오동작 비용이 막대할 수 있음: 반응 제어 시스템 또는 항공기 운항 시스템 같은 몇몇 어플리케이션에는 시스템 오동작 비용이 상기 제어 시스템 비용보다 수 배 더 많다.
③ 신뢰성을 개량하기 힘듦: 대부분의 실행시간이 작은 프로그램 섹션에 이루어지기 때문 에 일반적으로 효율성을 조율하는 것은 가능하나 신뢰성은 시스템 전체 시간에 대해 이루어지는 경향이 있기 때문에 신뢰성을 향상하는 것이 더 어렵다.
④ 시스템 성능 부족을 보상하는 것이 가능함: 사용자들은 부족한 성능을 갖는 시스템에 서도 그럭저럭 작업을 진행할 수 있으나, 신뢰성 부족한 시스템은 일반적으로 사용자 를 당황하게 하고 심각한 결과를 일으킬 수 있다.
⑤ 신뢰성이 없는 시스템은 정보 손실을 일으킬 수 있음: 데이터의 수집 및 유지에는 많은 비용이 들어가고 가끔씩은 처리하는 시스템 자체보다 가치 있을 수 있다. 데이터 훼손에 대비하여 가치 있는 데이터를 복제하는 것에는 많은 비용 및 노력이 소요된다.
2) 크리티컬 시스템(Critical systems)
■ 개요
① 오동작이 심각한 경제적 손실, 물질적 피해 또는 인간의 생명에 대한 위협을 줄 수 있는 시스템
② 신뢰성이 필수적인 속성임.
③ 높은 수준의 신뢰성을 달성하는 것이 일반적으로 크리티컬 시스템의 가장 중요한 필요조건이다.
■ 특징
① 크리티컬 시스템의 오동작 비용이 매우 높다.
② 결론적으로, 신기술보다는 많이 사용된 기술을 사용해서 개발된다.
③ 일반적으로 비용-효율적이 아닌 소프트웨어 공학 기술이 크리티컬 시스템 개발에 사용 될 수 있다.
3) 크리티컬 시스템의 유형
(1) 안전성-크리티컬 시스템(Safety-critical systems): 오동작이 인명 손실 또는 주된 환경 피해를 발생시킬 수 있는 시스템(e.g. 화학제조공장에서의 제어 시스템)
(2) 미션-크리티컬 시스템(Mission-critical systems): 오동작이 목표활동의 직접적인 실패를 발생시킬 수 있는 시스템(e.g. 우주선에서의 항해 시스템)
(3) 비즈니스-크리티컬 시스템(Business-critical systems): 오동작이 시스템을 사용하는 비즈니스의 실패를 발생시킬 수 있는 시스템(e.g. 은행에서의 고객 계좌 시스템)
■ 오동작할 수 있는 시스템 구성요소의 3가지 유형
① 설계상의 실수, 제조상의 에러 또는 수명이 다 함에 따라 오동작할 수 있는 시스템 하드웨어
② 그 명세(specification), 설계 또는 구현상의 실수로 오동작할 수 있는 시스템 소프트웨어
③ 시스템을 올바로 작동하는 데에 실패할 수 있는 시스템의 오퍼레이터(operator)
4) 간단한 안전성-크리티컬 시스템(A simple safety-critical systems)
■ 인슐린 펌프 구조
환자의 몸에 내장된 마이크로 센서는 혈액지표를 측정한다. 이 것이 펌프 컨트롤러에게 보내 어져 당의 수준이 계산되고 필요한 인슐린의 양이 정해진다. 신호가 소형 펌프에 보내어지고 니들(Needle)을 통해 인슐린이 전달된다.
소프트웨어적으로 제어되는 인슐린 전달 시스템에서 입력되는 혈당의 수준(Blood sugar level) 이 어떻게 펌프 제어 명령(Pump control command)로 변환되는가를 보여줌
■ 인슐린 전달 시스템에 적용하기 위한 신뢰성의 세가지 특성
① 가용성: 요청될 때 시스템이 인슐린을 전달할 수 있어야 하는 것은 중요하다.
② 신뢰도: 시스템이 믿을만하게 작동하고 현재 레벨의 혈당에 대응하기 위한 정확한 양의 인슐린을 전달하는 것은 중요하다.
③ 안전성: 시스템의 오작동시 과도한 양의 인슐린이 전달되고 이는 사용자의 생명을 위협할 수 있으므로, 이런 종류의 시스템 오작동이 발생하지 않는 것은 중요하다.
2. 가용성 및 신뢰도(Availability and reliability)
1) 개요
① 신뢰도는 가용성을 가정함.
( 명세된 서비스가 제공되지 않으면, 이 시스템은 그 명세에 따라 정확히 동작하는 것이 아니기 때문)
② 가용성 및 신뢰도에 요구되는 사항이 다르기 때문에 이 특성들을 구분하는 것이 유용함.
(예: 전화기 교환 시스템 : 항상 사용 가능해야 하므로 가용성은 높아야 하나, 오류 발생시
빠른 시간 내에 복구(시스템 reset)가능하며 큰 문제는 없으므로 신뢰도는 크게 중요하지 않음.)
■ 용어
① 가용성: 단지 시스템 자체뿐이 아닌 시스템 오류를 수정하는데 소요되는 시간도 관련됨.
② 신뢰도
신뢰도를 고려할 경우 시스템이 사용되는 환경 및 목적을 염두에 두어야 함.
일반 오피스 환경 및 대학교 환경(실험적 사용환경)에서는 소프트웨어 시스템의 신뢰도 가 다르게 측정될 수 있음.
인간의 인식 및 사용 패턴도 중요한 역할을 함.
(e.g. 와이퍼 시스템의 오류를 갖고 있 는 차에 대한 시애틀(습한 기후) 및 라스베가스(건조한 기후)에서의 신뢰도는 다르기 때문)
사용자는 오작동의 강도(severity) 등을 고려하지 않고, 심각한 결과를 갖는 시스템 오작동에 더 관심이 있고 그들의 신뢰도에 대한 개념은 그 결과들에 의해 영향을 받음.
(예: 출발 직후의 엔진 정지 vs. 운행중의 엔진 정지)
신뢰도 및 가용성은 일반적으로 신뢰성의 가장 중요한 특성들 (신뢰도가 낮다면 안전하거나 보안적임을 확신하기 어렵다.)
신뢰도는 여러 가지 시스템 오작동들에 의해 영향을 받으므로 결함(fault), 에러(error) 및 오작동(failure)들의 용어를 구별하는 것이 유용함.
시스템 결함이 반드시 시스템 에러를 발생시키는 것은 아님.
시스템 에러가 반드시 시스템 오작동을 발생시키는 것은 아님.
※ Tip! Failure를 오작동이라 하는 대신 고장이라고 번역해도 좋다.
■ Reliability terminology(신뢰도 용어)
Term | Description |
System failure | An event that occurs at some point in time when the system does not deliver a service as expected by its users. |
System error | Erroneous system behaviour where the behaviour of the system does not conform to its specification. |
System fault | An incorrect system state, i.e. a system state that is unexpected by the designers of the system. |
Human error or mistake |
Human behaviour that results in the introduction of faults into a system. |
■ 시스템의 신뢰도를 향상시키기 위해 사용될 수 있는 세 가지 접근법
① 결함 회피(Fault avoidance): 시스템 오류를 발생시키기 전에 실수 가능성을 최소화하거나 실수를 잡아내는데 사용되는 개발 기술
② 결함 감지 및 제거(Fault detection and removal): 시스템의 사용 전에 오류들이 감지 및 제거되는 가능성을 높이는 검증(verification) 및 확인(validation) 기술의 사용
③ 결함 허용(Fault tolerance): 시스템에서의 오류가 시스템 에러를 발생시키지 않거나 시스템 에러가 시스템 오작동을 발생시키지 않도록 보장하는 기술의 사용
2) 소프트웨어 결함과 신뢰도와의 관계
① 결함이 있는 코드가 소프트웨어 오류를 노출시키는 일련의 입력으로 실행될 때 소프트웨어 오류가 소프트웨어 오작동을 야기시킨다.
② 프로그램에는 많은 가능한 입력이 존재하고, 출력을 발생시킴으로써 입력에 대응하는 데, 이 중 시스템 결함을 야기 시키는 입력이 존재한다. 그러한 경우 잘못된 출력이 프로그램에 의해 발생된다.
③ 소프트웨어의 신뢰도는, 프로그램 실행시에, 시스템 입력이 잘못된 출력을 일으킬 수 있는 입력 집합중의 하나가 될 확률과 관련있다.
④ 소프트웨어의 모든 결함이 동등하게 소프트웨어 오작동을 일으키는 것은 아니다.
프로그램의 신뢰도는 시스템의 정상 사용중에 잘못된 출력을 일으키는 입력의 수에 달려있다.
예외적인 상황에서만 발생하는 결함은 시스템의 신뢰도에 거의 영향을 주지 않는 다.
⑤ 신뢰도는 실제 사용시에 발생하는 에러의 확률에 관계되며, 거의 사용되지 않는 시스템 부분에서의 오류 제거는 인식되는 신뢰도에 거의 영향을 끼치지 않는다.
⑥ 60%의 시스템 결함 제거는 오직 3%의 신뢰도 향상을 가져온다. 또한 제품을 아주 오래 사용한 후에야 제품의 결함이 오작동으로 연결되기 때문에 알려진 오류를 포함 하는 프로그램이 그 사용자들에 의해 신뢰도 있는 것으로 보일 수 있다.
사용자 2 가 약간의 시스템 오작동을 경험할 수 있으나, 사용자 1, 3 의 경우는 소프트웨어가 안정적으로 동작할 수도 있다. 즉, 각 사용자는 다른 방법으로 시스템을 사용하기 때문에 한 사용자에 대해 시스템의 신뢰도에 영향을 미치는 결함이 다른 사용자에게는 나타나지 않을 수 있다.
3. 안전성(Safety)
안전성(safety)이란, 사람 또는 환경을 위협하지 않고 정상적 또는 비정상적으로 동작하는 시스템의 능력을 나타내는 시스템 속성입니다.
1) 안전성-크리티컬 시스템
안전성이 크리티컬 시스템의 필수 요소인 시스템을 안전성-크리티컬 시스템(safety-critical systems)이라고 하였습니다. 안전성-크리티컬 시스템을 2가지로 분류하면 다음과 같습니다.
① 1차 안전성-크리티컬 시스템(primary safety-critical systems)
시스템 안에 제어기로 내장된 소프트웨어로 이러한 소프트웨어의 오작동은 인체 상해 또는 환경 피해를 발생시키는 하드웨어 오작동을 야기시킬 수 있다.
② 2차 안전성-크리티컬 시스템(secondary safety-critical systems) 간접적으로 상해를 일으키는 소프트웨어
(e.g. CAD 또는 환자에게 의약품 처방의 상세내역을 갖는 의약 DB 등)
2) 신뢰도와 안전성의 관계
시스템 신뢰도와 안전성은 연관되어 있지만, 다른 신뢰성(dependability) 요소들입니다.
물론, 안전성-크리티컬 시스템도 신뢰도를 지녀야 하지만, 결함-허용 시스템(fault-tolerant systems)이 반드시 안전한 것은 아닙니다.
■ 신뢰성 있는 소프트웨어 시스템이 꼭 안전성이 있는 것은 아닌지에 대한 이유
① 어떤 크리티컬한 상황에서 요청되는 시스템의 동작을 나타내지 못한다는 점에서 명세 가 불완전할 수 있다. 대부분의 시스템 오작동은 설계보다는 명세 에러의 결과이다.
② 하드웨어 오작동이 시스템을 예측 못하는 방법으로 동작하게 하고 소프트웨어를 예상 못한 환경으로 이끈다.
③ 시스템 조작자가 개별적으로 틀린 것이 아닌, 특정 상황에서 시스템 오작동을 이끄는 입력을 발생시킬 수 있다.
<안전성 용어(Safety terminology)>
Term | Definition |
Accident (or mishap) |
An unplanned event or sequence of events which results in human death or injury, damage to property or to the environment. A computer- controlled machine injuring its operator is an example of an accident. |
Hazard |
A condition with the potential for causing or contributing to an accident. A failure of the sensor that detects an obstacle in front of a machine is an example of a hazard. |
Damage |
A measure of the loss resulting from a mishap. Damage can range from many people killed as a result of an accident to minor injury or property damage. |
Hazard severity |
An assessment of the worst possible damage which could result from a particular hazard. Hazard severity can range from catastrophic where many people are killed to minor where only minor damage results. |
Hazard probability |
The probability of the events occuring which create a hazard. Probability values tend to be arbitrary but range from probable (say 1/100 chance of a hazard occuring) to implausible (no conceivable situations are likely where the hazard could occur). |
Risk |
This is a measure of the probability that the system will cause an accident. The risk is assessed by considering the hazard probability, the hazard severity and the probability that a hazard will result in an accident. |
3) 안전성을 보장할 수 있는 방법들
① 위험요소 회피(Hazard avoidance): 위험요소가 회피될 수 있도록 설계된 시스템(e.g. 절단기에서 사용자의 손이 칼날에 노출되는 위험을 피하기 위해 두개의 버튼을 동시에 눌러야 작동하는 것)
② 위험요소 감지 및 제거(Hazard detection and removal): 위험요소를 감지하고 사고를 유발하기 전에 제거하도록 설계된 시스템(e.g. 과도한 압력을 감지하고 폭발전에 밸브 를 열어 압력을 감소시키는 화학공장 시스템)
③ 피해 제한(Damage limitation): 사고로부터 일어날 수 있는 피해를 최소화하는 보호 특성을 포함한 시스템(e.g. 자동소화기를 포함한 항공기 엔진)
4) 사고 발생
사고(Accident)는 여러 가지 일이 한꺼번에 잘못되었을 때 발생합니다. 이러한 사고는 복잡한 시스템을 사용하는 데 있어서 불가피한 부분입니다.
① 예상하지 못한 조합
예상하지 못한 오동작의 조합은 상호작용하여 사고를 발생시키게 되는데, 그렇더라도 시스템 오작동의 모든 가능한 조합을 예상하는 것은 불가능함.
② 소프트웨어에 의한 제어
소프트웨어는 시스템의 복잡성을 증가시키는 경향이 있어서 소프트웨어 제어를 사용하 는 것은 시스템 사고의 가능성을 높일 수 있으나, 반드시 그런 것은 아님.
“ 소프트웨어 제어 및 감시는 시스템의 안전성을 향상시킬 수 있다.”
전자기계적인 제어 시스템보다 넓은 범위의 조건을 감시할 수 있음.
소프트웨어에 의한 제어 시스템은 상대적으로 적응성이 높음.
또한 매우 높은 신뢰도를 갖고 작고 가벼운 컴퓨터 하드웨어의 사용을 포함
복잡한 안전성 연동장치를 제공할 수 있음
위험한 환경에서 소모해야 하는 시간의 양을 줄일 수 있는 제어 방법의 제공가능
4. 보안성(Security)
보안성(Security)은 시스템이 우발적 또는 고의적일 수 있는 외부의 공격으로부터 자신을 보호하는 정도의 평가입니다.
외부 공격으로는 바이러스, 허가받지 않은 시스템 서비스의 사용, 시스템 또는 그 데이터의 허가받지 않은 수정 등을 들 수 있습니다.학습에 앞서 보안성에 대해 얼마나 알고 있는지 체크해 보시기 바랍니다.
1) 외부 공격을 통해 발생될 수 있는 피해의 종류
바이러스나 허가 받지 않은 시스템 서비스의 사용, 시스템 또는 그 데이터의 허가 받지 않은 않은 수정 등의 외부 공격을 통해 발생될 수 있는 피해의 종류는 다음 3가지로 구분해 볼 수 있 습니다.
■ 외부 공격을 통해 발생될 수 있는 피해의 종류
① 서비스 거부(Denial of service): 정상 서비스가 불가능한 상태. 시스템의 가용성에 영향 을 끼친다.
② 프로그램 또는 데이터의 변경(Corruption of programs or data): 허용되지 않은 방법으 로 변경된 시스템의 소프트웨어 컴포넌트. 시스템의 동작 및 신뢰도, 안전성에 영향을 미친다. 피해가 심한 경우 시스템의 가용성에도 영향을 미칠 수 있다.
③ 비밀정보의 공개(Disclosure of confidential information): 시스템에 의해 관리되는 정보 는 비밀일 수 있고, 외부 공격을 통해 허용되지 않은 사람들에게 노출될 수 있다. 데이 터의 종류에 따라, 시스템의 안전성에 영향을 미칠 수 있고, 시스템 가용성 또는 신뢰 도에 영향을 끼칠 다른 공격을 허용할 수 있다.
<보안성 용어(Security terminology)>
Term | Definition |
Exposure | Possible loss or harm in a computing system |
Vulnerability | A weakness in a computer-based system that may be exploited to cause loss or harm |
Attack | An exploitation of a system vulnerability |
Threats | Circumstances that have potential to cause loss or harm |
Control | A protective measure that reduces a system vulnerability |
■ 보안성 용어 및 안전성 용어 사이의 유사성
노출(exposure) = 사고(accident), 취약점(vulnerability) = 위험요소(hazard)
2) 시스템의 보안성을 보장하는데 사용될 수 있는 수단들
앞서 살펴본 것과 같은 피해를 막고, 시스템의 보안성을 보장하기 위해 사용될 수 있는 수단으 로는 다음 3가지를 들 수 있습니다. 각각에 대해 자세히 살펴보도록 합시다.
■ 시스템의 보안성을 보장하는데 사용될 수 있는 수단들
① 취약성 회피(Vulnerability avoidance): 취약성이 발생하지 않도록 설계된 시스템
(e.g. 외부 네트웍에 연결되어있지 않으면, 외부 공격을 받을 가능성이 없다.)
② 공격 감지 및 무력화(Attack detection and neutralization): 취약성을 감지하고 노출되 기 전에 제거하는 시스템
(e.g. 들어오는 파일에서 바이러스를 검사하고 그 제거를 위해 파일을 수정하는 백신 프로그램의 사용)
③ 노출 제한(Exposure limitation): 성공한 공격의 결과를 최소화
(e.g. 손상된 소프트웨어 를 재현하기 위한 주기적인 시스템 백업 및 컨피규레이션(configuration) 관리 정책
3) 인터넷과 보안성
더 많은 시스템이 인터넷에 연결됨에 따라 보안성이 크게 중요해졌습니다.
인터넷 연결로 부가적인 시스템 기능이 제공되지만, 악의적인 공격을 받을 수도 있으며, 특정한 시스템의 취약성이 쉽게 유포되어 더 많은 사람들이 시스템을 공격할 수도 있습니다.
인터넷 기반의 시스템에서 매우 중요한 특성이 되는 생존성(Survivability)에 대해 알아봅시다.
■ 생존성(Survivability)이란?
시스템이 공격 당하는 중이거나 시스템의 일부분이 동작불능일 때 계속해서 서비스를 제공할 수 있는 시스템의 능력
보안성 및 가용성과 관련됨.
생존성 관련 연구는 주요한 시스템 구성요소를 식별하여 그 것들이 최소한의 서비스를 제공하도록 하는 것에 초점을 맞추고 있음
생존성을 향상시킬 수 있는 3가지 전략
① 공격에의 저항(resistance to attack)
② 공격 인식(attack recognition)
③ 공격에 의해 발생된 피해로부터의 회복 (recovery from the damage caused by an attack)
[정리하기]
■ 컴퓨터 시스템의 신뢰성은 사용자의 신뢰정도를 반영하는 시스템의 특성이다. 신뢰성의 가장 중요한 특성들은 가용성, 신뢰도, 안전성 및 보안성이다.
■ 크리티컬 시스템은 오동작이 심각한 경제적 손실, 물리적인 피해 또는 인간의 삶에 대한 위협을 일으킬 수 있는 시스템이다. 크리티컬 시스템의 중요한 분류는 안전성-크리티컬 시스템, 미션-크리티컬 시스템 및 비즈니스-크리티컬 시스템이다.
■ 시스템의 가용성은 요청되었을 때 그 사용자에게 서비스를 제공할 수 있는 확률이고, 신뢰도 는 시스템 서비스가 명세된 대로 제공될 가능성이다.
■ 신뢰도 및 가용성은 일반적으로 신뢰성의 가장 중요한 특성이다. 시스템이 신뢰할 수 없으면 시스템 안전성 또는 보안성을 보장하는 것이 어렵다.
■ 신뢰도는 동작중에 발생하는 에러의 가능성과 관련된다. 알려진 오류를 포함하는 프로그램은 사용자에 의해 신뢰할 수 있는 것으로 보여질 수 있다. 이 오류에 의해 영향을 받는 시스템의 특성을 사용안할 수 있기 때문이다.
■ 시스템의 안전성은 사람이나 환경을 위협하지 않고 정상적 또는 비정상적으로 동작하기 위한 시스템의 능력을 반영하는 시스템 요소이다. 안전성-크리티컬 시스템에서 안전성은 필수적인 요소이다.
■ 보안성은 모든 크리티컬 시스템에 있어 중요하다. 적절한 수준의 보안성이 없으면, 만약 외부 의 공격이 시스템에 약간의 피해를 입힌 경우 시스템의 가용성, 신뢰도 및 안전성이 위태로울 수 있다.
[참고자료]
Software Safety and Reliability : Techniques, Approaches, and Standards of Key Industrial Sectors by Debra S. Herrmann
Introduces the concepts, techniques, and approaches necessary for software safety and reliability in today's environment. Focuses on the additional requirements necessary in current safety and reliability standards from various industrial sectors.
'정보과학 > 소프트웨어공학특론' 카테고리의 다른 글
온라인 경매 시스템 문제기술서 (1) | 2023.11.28 |
---|---|
크리티컬 시스템 명세 및 개발 (1) | 2023.11.28 |
재사용을 통한 설계 (1) | 2023.11.28 |
실시간 소프트웨어 설계 (2) | 2023.11.26 |
분산 시스템 아키텍쳐 (1) | 2023.11.26 |