Ch10. 확실성 있는 시스템

728x90

Ch10. 확실성 있는 시스템

📌 [교재] 소프트웨어 공학 10판

[시스템 확실성] System dependability

소프트웨어 시스템을 신뢰할 수 있어야 함

확실성

  • 가용성(availability), 신뢰성(reliability, 안전성(safety), 보안성(security) 등 시스템 특성

확실성이 중요한 이유

  • 시스템 장애가 많은 사람들에게 영향
  • 신뢰할 수 없고 안전하지 않고 보안성이 없는 시스템은 사용 불가
  • 막대한 시스템 장애 비용
  • 시스템의 정보 손실로 인한 피해

중대한 시스템(critical system)

  • 시스템 장애가 사람이나 환경에 피해를 주거나 큰 경제적 손실을 줄 수 있는 시스템
  • 안전성 중심 시스템, 임무 중심 시스템, 비즈니스 중심 시스템

확실성이 높지 않아도 유용한 소프트웨어도 있음

장애의 원인(causes of failure)

  • 하드웨어 장애 : 부품 고장, 물리적 환경, 부품 수명
  • 소프트웨어 장애: 명세 오류, 설계 오류, 구현 오류
  • 운영 시의 장애: 의도하지 않은 방법으로 시스템을 사용

10-1. 확실성의 특성들

[확실성 주요 특성] Principal properties

가용성 ★ (availability)

  • 어떤 ‘시점’에 시스템이 작동(서비스를 제공)할 확률

신뢰성 ★ (reliability)

  • 주어진 ‘기간’ 동안 시스템이 (정확하게) 서비스를 제공할 확률

: 정확성(correctiness), 정밀성(precision), 적시성(timeliness) 포함

안전성 ★ (safety)

  • 시스템에 ‘사람 또는 환경’에 손상을 주지 않는지

보안성 ★ (security)

  • 시스템이 (우연한/의도적인) ‘침입’을 막을 수 있는지

: 무결성(integrity), 기밀성(confidentiality) 포함

복원성 ★ (resilience)

  • 시스템이 장비 고장, 공격 등 아래에 중요한 서비스를 잘 유지하는지

[다른 확실성 특성들] Other dependability properties

수리가능성 (repairability)

  • 시스템이 얼마나 빨리 수리될 수 있는지
  • 가용성과 관련

유지보수성 (maintainability)

  • 새로운 요구사항을 수용하기 위한 시스템 변경이 용이한지

오류 내성 (error tolerance)

  • 사용자 입력/조작 오류를 방지하고 감내할 수 있는지
  • 사용성(usability)과 관련

cf. 11장. ‘결함 내성’ 과 다르다.

결함 내성(fault tolerance)

  • 결함이 있어도 시스템이 서비스를 계속 제공할 수 있는 능력
  • 잘못된 상태를 감지하고 장애가 발생하기 전에 복구하는 코드 필요

10-3. 중복성과 다양성

[중복성과 다양성] Redundancy and diversity

고려사항

  • 시스템 컴포넌트의 장애는 피할 수 없음
  • 컴포넌트의 장애가 시스템 전체 장애로 이어지지 않도록 시스템을 설계해야 함

<확실성을 향상시키기 위해 ‘중복성과 다양성’을 사용한다.>

중복성(redundancy)

  • 시스템 컴포넌트의 장애가 일어났을 때 사용할 수 있는 여분의 기능을 시스템에 포함시킴

다양성(diversity)

  • 같은 방식으로 실패하지 않도록 서로 다른 중복 컴포넌트를 사용

중복성과 다양성 예

  • 가용성을 높이기 위해 중복된 서버 사용
  • 서로 다른 유형의 서로 다른 운영체제의 서버를 사용

확실성을 위해 설계된 시스템은 중복 컴포넌트를 포함

  • 주 컴포넌트가 실패하면 중복 컴포넌트로 전환
  • 중복 컴포넌트가 다양하면 컴포넌트의 공통 결함이 시스템 장애로 이어지지 않음
  • 시스템의 상태를 검사하고 복구하는 코드를 포함시킬 수 있음

문제점

  • 중복성과 다양성의 도입에 따라 버그가 생길 수 있음
  • 컴포넌트 장애를 감지하고 다르 컴포넌트로 전환하는 기능이 있어야 하므로 시스템의 복잡도가 올라감
  • 중복성과 다양성을 피하는 것이 낫다는 주장이 있음

10-4. 확실성 있는 프로세스

[확실성있는 프로세스] Dependable processes

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

  • 명시적으로 정의 (explicitily defined)
  • 반복 가능(repeatable)

명시적으로 정의된 프로세스

  • 정의된 프로세스 모델이 있음
  • 개발팀이 프로세스를 준수했다는 데이터가 수집되어야 함

반복 가능한 프로세스

  • 개인의 해석과 판단에 의존하지 않는 프로세스
  • 누가 개발에 참여하는지에 관계없이 프로세스가 반복될 수 있어야 함

확실성 있는 프로세스 활동

  • 요구사항 검토
  • 요구사항 관리
  • 정형 명세
  • 시스템 모델링
  • 설계 및 프로그램 인스펙션
  • 정적 분석
  • 테스트 계획 수립 및 관리

잘 정의된 품질 관리 및 변경 관리 프로세스가 필요

확실성 있는 소프트웨어 개발에 애자일 방법 사용을 고려

  • 주로 계획 기반 프로세스를 이용
728x90