# 시스템 계층과 측면으로 분리

# 계층으로 소프트웨어 시스템 바라보기

시스템을 개념적으로 분리하기 위해 사용되는 구분 기준은 다음과 같다.

  1. 응용계층 vs 구현계층
  2. 기능적 측면 vs 비기능적 측면

# 응용계층 vs 구현계층

사용자의 요구사항과 시스템의 기술구조를 구분해 보면 응용계층 application layer와 구현계층 implementation layer로 분리할 수 있다.

  • 응용계층은 사용자의 필요와 연관된다.

    ex) 음악청취, 사진착영, 호텔 예약 등

  • 구현계층은 이러한 요구사항을 실현한다.

    ex) 디지털 정보를 음향신호로 변환, 디카에서 픽셀의 색을 인식 등

# 기능적 측면 vs 비기능적 측면

'시스템이 무엇을 하는가'와 '그 무엇을 어떤식으로 하는가'를 구분해서 생각해보면 다음과 같이 구분할수 있다.

  • 기능적 측면 functional aspect

    ex) 네트워크를 통한 데이터 전송, 음악 연주, 사진찰영, 사진의 개별 픽셀 조작 등

  • 비기능적 측면 nonfunctional aspect

    ex) 멋진 UI, 실생속도가 빠른 SW, 사용자 데이터 보호, 보안 security과 무결성 integrity

무결성은 시스템이 의도한 대로 작동하는 것을 의미하고 보안과 정확성을 포함하는 개념이다.

# 무결성은 눈에 보이지 않지만 중요

무결성은 모든 SW 시스템이 가지는 중요한 비기능적 측면으로 3가지 주요 요소로 구성된다.

  • 데이터 무결성: 시스템에서 사용하고 유지 관리하는 데이터는 완전하고 정확하며 모순이 없다.
  • 작동 무결성: 시스템은 의도한 대로 작동하며 논리적 오류가 없다.
  • 보안: 시스템은 허가받은 사용자에게만 데이터 및 기능에 대한 접근 권한을 부여할 수 있다.