본문 바로가기
IT기술

소프트웨어 아키텍처 개념, 비기능요구사항과 품질속성

by boyaho 2022. 10. 13.
반응형

소프트웨어 아키텍처는 Software 요소들과 외부속성 그리고 이들 사이의 관계를 구성하는 시스템 구조로 정의할 수 있습니다. 간단히 말해 시스템 전반적인 구조로 세부 컴포넌트 구성요소들의 관계를 정의한 구조입니다. 이 글에서는 Software Architecture 개념과 비기능요구사항 및 품질속성에 대해 정리해보겠습니다.

소프트웨어 아키텍처 개념

소프트웨어 아키텍처는 설계단계에서 구조를 추상화한 상위레벨에서 표현하여 시스템의 전반적인 모습을 보여주는 것입니다. 이 단계에서 실제 세부 구현모습은 표시하지 않습니다.

소프트웨어 아키텍처 개념도 사례

위의 그림은 의료영상 정보통신 시스템에 대한 시스템 아키텍처의 예시입니다. 해당 시스템을 구성하는 각 서버들과 서버간의 데이터 흐름도 절차 등을 간략히 표시하는 아키텍처 사례입니다.

 

이처럼 아키텍처의 작성은 요구사항에 기반하여 전반적인 시스템의 설계 및 이해당사자들의 요구사항을 청사진의 형태로 그려보는 과정입니다.

특징

소프트웨어 아키텍처는 너무 복잡해도 안되지만 이해당사자들 간에 시스템을 이해하고 의사소통을 할수 있을 정도로 가시성도 있어야 합니다.

  • 간략성: 시스템 구조를 이해하고 추론할 수 있는 정도의 간결성을 유지
  • 추상화: 시스템을 상위레벨에서 추상화하여 복잡도를 간략히 표현
  • 가시성: 외부인이 시스템의 구성과 데이터 흐름을 표시할 수 있도록 나타냄

 

소프트웨어 아키텍처 작성을 통해 시스템을 설계하기 전에 TCO와 ROI를 예측하여 소프트웨어 재사용을 통해 개발 비용을 절감할 수 있습니다. 또한 이해당사자 간의 의사소통의 도구로 활용하여 복잡해질 수 있는 시스템을 추상화, 간략화할 수 있습니다.

비기능요구사항과 품질속성

비기능적 요구사항의 하나인 품질속성은 Software Architecture를 작성하는데 많은 영향을 끼치는 요소 중 하나입니다. 품질속성의 유형은 크게 다음의 3가지로 나눌 수 있습니다.

  1. 시스템 품질속성
  2. 비즈니스 품질속성
  3. 아키텍처 품질속성

1. 시스템 품질속성

아키텍처는 개발하려는 시스템의 가용성, 변경 가능성, 성능, 보안, 테스트 가능성 및 사용성을 나타낼 수 있어야 합니다. 각 품질속성의 내용은 다음과 같습니다.

품질속성 설명
가용성 평균실패시간 / (평균 실패시간 + 평균 복구시간)
변경가능성 시스템을 변경하는데 필요한 노력과 비용. 모든 변경행위는 비용을 수반하므로 정확히 측정될 필요가 있다.
성능 원하는 요청을 얼마나 빠르게 많이 수행할 수 있는지를 측정한다. (e.g. 대기시간, 초당 트랜잭션수, 최대 접속 유저수 등)
보안 권한이 있는 사용자나  Group에 대해 시스템에 접근할 수 있도록 하는 능력을 측정하는 것 (인증, 기밀성, 무결성, 부인방지)
테스트 가능성 소프트웨어가 얼마나 결함을 가지고 있는지 테스트가 가능한 정도를 나타내는 것
사용성 사용자가 소프트웨어를 얼마나 쉽고 빠르게 원하는 작업을 수행할 수 있는가를 나타내는 것

2. 비즈니스 품질속성

개발하려는 시스템이 비즈니스 측면의 속성과 얼마나 관련이 있는지를 나타내는 것으로 아키텍처의 설계에 자주 영향을 미치는 요소입니다.

  • 적시성: 경쟁사 보다 빨리 서비스를 시장에 출시할 수 있는가
  • 비용 및 예산: 개발 및 출시까지 얼마나 비용을 절약할 수 있는가
  • 내구연한: 개발완료부터 최종 폐기시가지 얼마나 오래 사용할 수 있는가
  • 타겟시장: 범용성이 큰 소프트웨어는 보다 큰 시장에서 활용될 수 있음
  • 레거시 시스템과 통합: 새로운 시스템도 기존에 사용하던 레거시 시스템과 통합할 수 있다면 활용도가 높아지게 됨

3. 아키텍처 품질속성

아키텍처 그 자체에 관련된 품질속성으로 개념적으로 무결성, 정확성, 완료성, 빌드가능성의 관점에서 정의할 수 있습니다.

  • 개념적 무결성: 모든 레벨에서 단일한 관점과 주제로 설계하는 것
  • 정확성 및 완료성: 모든 요구사항에 대해 실행시점에서 정확히 이를 충족할 것
  • 빌드가능성: 적시에 시스템이 개발되고 운용될 수 있을 것

이상으로 소프트웨어 아키텍처 개념, 비기능요구사항과 품질속성에 대해 정리해보았습니다.

 

반응형

댓글