TY blog

확실성 있는 소프트웨어 시스템 본문

소프트웨어 공학

확실성 있는 소프트웨어 시스템

주짓수하는 개발자 2023. 11. 14. 17:21
1. 확실성 : 소프트웨어 시스템을 믿고 쓸 수 있어야 한다. 

 

* 확실성의 주요 5가지 요소

 

  1. 가용성(availability) : 어떤 시점에 시스템이 작동(서비스를 제공)할 확률
  2. 신뢰성(reliability) : 주어진 기간 동안 시스템이(정확하게) 서비스를 제공할 확률
  3. 안전성(safety) : 시스템에 사람 또는 환경에 손상을 주지 않는지 
  4. 보안성(security) : 시스템이 (우연한/의도적인) 침입을 막을 수 있는지
  5. 복원성(resilience) : 시스템이 장비 고장, 공격 등 아래에 중요한 서비스를 잘 유지하는지 

다른 신뢰할 수 있는 속성 

 

  1. 수리가능성(repairability) : 시스템이 얼마나 빨리 수리될 수 있는지 (장애 시 복구)
  2. 유지보수성(maintainability) : 새로운 요구사항을 수용하기 위한 시스템 변경이 용이한지 (유지보수가 쉬운지)
  3. 오류 내성(error tolerance) : 사용자 입력 / 조작 오류를 방지하고 감내할 수 있는지
2. 중복성과 다양성

 

  1. 중복성(redundancy) : 시스템 컴포넌트의 장애가 일어났을 때 사용할 수 있는 여분의 기능을 시스템에 포함시키는 속성
  2. 다양성(diversity) : 같은 방식으로 실패하지 않도록 서로 다른 중복컴포넌트를 사용하는 속성  

중복성과 다양성의 예시 )

 

  1.  집을 지키기 위해 문 앞에 여러 개의 잠금장치를 사용하는 것은 중복성이고 서로 다른 종류의 잠금장치를 사용하는 것은 다양성이다. 
  2. 가용성을 높이기 위해 중복된 서버를 사용한다. (중복성)
  3. 서로 다른 유형의 서로 다른 운영체제의 서버를 사용한다 (다양성)

 

* 장점

주 컴포넌트가 실패하면 중복 컴포넌트로 전환하여 하나의 컴포넌트의 장애가 시스템 전체 장애로 이어지지 않을 수 있다. 

 

* 단점

소프트웨어의 중복성과 다양성을 사용하는 것 자체가 시스템을 더 복잡하게 만들고 일반적으로 이해하기 어렵게 만들어 소프트웨어에 버그를 도입할 수 있다. 

 

3. 확실성 있는 소프트웨어 프로세스 

 

확실성 있는 소프트웨어를 생산하도록 설계된 소프트웨어 프로세스이며 적은 오류를 포함하여 실행 시에 장애 발생이 적은 소프트웨어로 이어질 가능성이 높다. 

 

* 확실성 있는 프로세스의 특징 

 

  1. 명시적으로 정의된 프로세스 : 개발팀이 프로세스모델에 정의된 대로 프로세스를 준수했다는 데이터가 수집되어야 한다. 
  2. 반복 가능한 프로세스 : 누가 개발에 참여하는지에 관계없이 여러 프로젝트에 걸쳐 프로세스가 반복될 수 있어야 한다. 

 

* 참고문헌 : (주)한티에듀 소프트웨어공학 제10판 

'소프트웨어 공학' 카테고리의 다른 글

분산 소프트웨어 공학  (0) 2023.11.28
소프트웨어 신뢰성, 안전성 공학  (0) 2023.11.21
소프트웨어 재공학  (0) 2023.11.07
소프트웨어 개발 테스팅  (0) 2023.10.17
소프트웨어 아키텍처 설계  (0) 2023.10.10
Comments