Quality Attributes
Availability (가용성)
- 시스템의 실패에 연관된 품질로써 시스템 실패시에 파급되는 효과로 도출된다.
- 소프트웨어가 필요할 때 작업을 수행할 준비가 되었는지를 판단
- 합법적인 사용자에게 서비스를 제공하는 것
- 오류 발생 시 시스템의 반응을 판단하는 척도
- 보안, 성능, 안전과 밀접한 관련이 있다.
- 시스템 오류를 안화시켜 서비스 중단 시간을 최소화 하는 것
- Reliability 포함할 수 있다.
Reliability (신뢰성)
명세된 조건에서 사용될 때, 성능 수준을 유지할 수 있는 소프트웨어 제품의 능력
- Maturity (성숙성): 소프트웨어 내의 결함으로 인한 고장을 피해가는 능력
- Faulty Tolerance (오류 허용성): 소프트웨어 결함이 발생했을 때 명세된 성능 수준을 유지할 수 있는 능력
- Recoverability (복구성): 고장 발생 시 명세된 성능 수준을 재유지하고 직접적으로 영향받은 데이터를 복구하는 능력
- Reliability Compliance (순응성): 신뢰성과 관련된 표준, 관례 또는 규제를 고수하는 소프트웨어 제품의 능력
Interoperability (상호 운영성)
2개 이상의 시스템이 업무를 위해 인터페이스를 통하여 정보를 교환하는 정도를 뜻함
하나 이상의 명세된 시스템과 상호 작용할 수 있는 능력
Modifiability (수정 가능성)
전형적으로 SW 시스템 비용의 대부분은 운영을 시작한 후에 발생한다.
이때, 변경이란 새로운 기능 추가, 안 쓰는 기능 제거, 오류 수정, 보안 강화, 성능 개선, UX 반영, 프로토콜 및 표준 적용, 타 시스템 연동 등의 이유가 있다.
Performance (성능)
시간에 관한 것으로 이벤트(메시지, 사용자 요청, 시간흐름)발생에 따른 응답의 수행에 있어 이벤트 발생시의 시스템의 응답 속도로 나타난다.
시간 요구사항을 SW 시스템이 충족시키는 능력
시스템 이벤트에 정해진 시간 내에 응답해야 한다.
성능은 확장성과 밀접하게 연관이 되어 있다. (아키텍처에 문제가 있을 경우 H/W 증설로 해결이 어려울 수 있다.)
Security (보안성)
합법적인 사용자 및 접근 시스템에게 서비스를 제공하면서 인가되지 않은 사용을 막는 역량으로 부인방지, 기밀성, 무결성, 보증, 가용성, 감사등의 요소가 있음인증되지 않은 접근으로부터 데이터와 정보를 보호하는 시스템의 능력
비밀성 및 무결성(인가 받지 않은 데이터 및 서비스 접근 통제)과 가용성의 특징을 지님
Testability (테스트 가능성)
시스템을 단위 테스트하거나 시스템 테스트를 할 수 있는 정도.
시스템이 요구 사항들을 충족할 수 있는지 검증할 수 있는지에 대한 정도
산업계 추정에 의하면 SW 개발 비용의 30~50%가 테스팅에 사용된다.
Usability (사용성)
명시된 조건에서 사용될 경우, 사용자에 의해 이해되고, 학습되고, 사용되고 선호될 수 있는 제품의 능력
사용자가 얼마나 쉽게 쓰는지에 대한 척도
시스템 기능 학습, 시스템의 효율적 사용, 오류의 영향 최소화, 사용자 요구에 따른 시스템의 적용, 신뢰와 만족 증가 등
- 학습성: 사용자가 그 응용을 학습할 수 있도록 하는 능력
- 운용성: 사용자가 소프트웨어 제품을 운영하고 제어할 수 있도록 하는 능력
- 친밀성: 사용자에 의해 선호되는 소프트웨어 제품의 능력
- 순응성: 사용성과 관련된 표준, 관례, 유형 안내 및 규제를 고수하는 능력
Variability(가변성)
쉽게 확장하고 변경할 수 있는지에 대한 정도
핵심 자산이 제품 라인 범위 내에있는 다른 제품 컨텍스트의 사용법에 적응하는 것을 의미
Portability (이식성)
여러가지 컴퓨팅 환경에서 실행할 될 수 있는 시스템의 능력
환경 타입은 H/W나 S/W 모두 될 수 있으나 일반적으로 두 가지를 결합하지는 않는다.
- Adaptability (적응성): 고려 대상인 소프트웨어에서 이 목적으로 제공되는 것 이외의 활동 혹은 수단을 적용하지 않고 다른 명세된 환경으로 변경될 수 있는 능력
- Installability (설치성): 명세된 환경에 설치될 수 있는 소프트웨어 제품의 능력
- Co-existance (공존성): 공통 자원을 공유하는 공동 환경에서 다른 독립적인 소프트웨어와 공존할 수 있는 능력
- Replaceability (대체성): 동일한 환경에서 동일한 목적으로 다른 지정된 소프트웨어 제품을 대신하여 사용될 수 있는 능력
- Portability Compliance (순응성): 이식성과 관련된 표준 및 관례를 고수하는 능력
Development Distributibility(개발 배포 가능성)
분산 소프트웨어 개발을 지원하는 소프트웨어 설계의 품질
개발 배포 가능성 시나리오는 개발중인 시스템의 통신 구조와 데이터 모델 및 개발을 수행하는 조직의 조정 메커니즘의 호환성을 처리합니다.
Scalability (확장성)
성능 저하없이 부하 증대를 처리 할 수있는 시스템의 기능
급속하게 부하를 증가시킬 수있는 가능성을 처리하는 시스템의 능력
- Scaling Out (수평 확장성): 다른 서버를 서버 클러스터에 추가하는 것과 같이 논리 장치에 더 많은 리소스를 추가한 것을 의미
- Scaling Up (수직 확장성): 단일 컴퓨터에 더 많은 메모리를 추가하는 것과 같이 물리적 장치에 더 많은 리소스를 추가하는 것을 의미
Deployability (배포 가능성)
실행 파일이 호스트 플랫폼에 도착하는 방법과 그 실행 방법에 관련
소프트웨어 배포와 관련된 몇 가지 문제를 해결하기 위한 설계
- 호스트 (업데이트, 금지 된 사용자에게 업데이트를 보내거나 사용자가 명시 적으로 업데이트를 요청해야하는 곳)로 어떻게 도달합니까?
- 기존 시스템에 어떻게 통합되어 있습니까?
- 기존 시스템이 실행되는 동안이 작업을 수행 할 수 있습니까?
배포 시나리오는 다음과 같은 것을 다룬다.
- 업데이트 유형 (push, pull)
- 업데이트 형식 (DVD 또는 인터넷 다운로드와 같은 매체, 실행 파일, 응용 프로그램 또는 플러그 인과 같은 패키지)
- 결과로의 통합 기존 시스템, 프로세스 실행 효율성 및 관련 위험을 평가
Mobility (이동성)
플랫폼의 이동 및 자산 문제 (예 : 크기, 디스플레이 유형, 입력 장치 유형, 대역폭의 가용성 및 볼륨 및 배터리 수명)를 처리
이동성 문제는 배터리 관리, 연결 해제 후 다시 연결 및 여러 플랫폼을 지원하는 데 필요한 여러 사용자 인터페이스 수를 포함
Monitorability (모니터링 가능성)
운영 직원이 시스템이 실행되는 동안 시스템을 모니터링하는 능력
대기열 길이, 평균 트랜잭션 처리 시간 및 다양한 구성 요소의 상태와 같은 항목은 잠재적인 문제가 발생할 경우 수정 조치를 취할 수 있도록 제공할 수 있는 능력
Safety (안정성)
소프트웨어 환경에서 행위자에게 손해, 부상 또는 생명 손실을 유발하거나 초래하는 주에 진입하는 것을 피하고 소프트웨어가 악성 상태로 진입 할 때 피해를 복구하고 제한하는 소프트웨어의 능력
안전을위한 전술은 많은 경우 가용성을위한 전술과 겹칠 수 있다.
Maintainability (유지보수성)
소프트웨어 시스템의 기능을 변경하거나 기능을 추가하거나 성능을 향상시커거나 결함을 수정하기 위해서 시스템을 변경할 때의 편의성
- Analysability (분리성): 소프트웨어 결함이나 고장의 원인 혹은 변경될 부분들의 식별에 대한 진단을 가능하게 하는 소프트웨어 제품의 능력
- Changeability (변경성): 변경 명세가 구현될 수 있도록 하는 능력
- Stability (안정성): 소프트웨어가 변경으로 인한 예상치 않은 결과를 최소화하는 능력
- Testability (시험성): 변경된 소프트웨어가 확인될 수 있는 능력
- Maninability Compliance (순응성): 유지보수성과 관련된 표준 및 관례를 고수하는 능력
Manageability (관리 효율성)
시스템의 운영 및 관리에 있어 필요한 역량으로 관리 효율성이 높으면 시스템의 관리 및 유지보수, 운영 검증을 위한 비용이 절감된다.
- Maintainability
- Testability
Efficiency (효율성)
명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 소프트웨어 제품의 능력
- Time behavior (시간 반응성): 명시된 조건에서 그 기능을 수행할 때 적절한 반응 및 처리 시간과 처리율을 제공하는 능력
- Resource Utilization (자원 활용성): 명시된 조건에서 그 기능을 수행할 때 적절한 양과 종류의 자원을 사용하는 능력
- Efficiency Compliance (순응성): 효율성과 관련된 표준 및 관례를 고수하는 능력
Flexibility (유연성)
시스템이 설계된 환경이 아닌 다른 목적이나 환경으로 변경할 수 있는 정도
Integrability (통합성)
분리되어 개발된 시스템의 컴포넌트들이 함께 올바르게 동작할 수 있도록 만드는 능력
Reusability (재사용성)
새로운 어플리케이션에서 기존의 어플리케이션을 재사용 할 수 있는 정도
Robustness (견고성)
시스템이 잘못된 입력이나 악조건에서도 기능을 계속해서 수행할 수 있는 정도
Agility (유연성)
시스템의 운영 및 관리에 있어 필요한 역량으로 관리 효율성이 높으면 시스템의 관리 및 유지보수, 운영 검증을 위한 비용이 절감된다.
Modifiability, Scalability, Interoperability, Reusability 포함
Functionality (기능성)
소프트웨어가 특정 조건에서 사용될 때, 명시된 요구와 내재된 요구를 만족하는 기능을 제공하는 소프트웨어 제품의 능력
- Suitability (적합성): 지정된 작업과 사용자 목적을 위한 적절한 기능들을 제공
- Accuricy (정확성): 올바른 혹은 동의된 효능 결과를 제공할 수 있는 능력
- Interoperability (상호 운용성)
- Security (보안성)
- Functionality Compliance (순응성): 응용과 관련된 표준, 관례 또는 법적 규제 및 유사한 규정을 고수하는 능력
Supportability (지원 가능성)
문제를 확인하고 해결하기위한 유용한 정보를 제공하는 시스템의 능력
Readability (가독성)
시스템의 소스 코드를 상세한 명령문 수준에서 읽고 이해할 때의 편의성
Understandability (이해성)
시스템의 구성과 코드 수준에서 시스템을 이해할 때의 편의성.
이해성은 가독성보다 더 일반적인 수준에서 시스템의 일관성(coherence)과 관련되어 있다
Accuracy (정밀성)
구성된 시스템에 오류가 없는 정도. 특히 대량의 데이터를 고려한다.
정밀성은 정확성과 다르다.
정밀성은 시스템이 정확하게 구성되었는지가 아닌 시스템이 용도대로 얼마나 잘 수행하는지를 결정한다.
Adaptability (적응성)
시스템을 변경하지 않고 설계된 환경에서 뿐만 아니라 다른 응용 분야나 환경에서도 사용될 수 있는 정도
Integrity (무결성)
시스템이 프로그램이나 데이터에 대한 허용되지 않거나 잘못된 접근을 막는 정도.
무결성의 기본 개념에는 데이터의 적절한 접근을 보장할 뿐만 아니라 권한이 없는 사용자의 접근 제한 기능이 포한된다.
즉, 병렬 데이터를 갖는 데이블은 병렬로 변경되고 날짜 필드는 타당한 날짜만을 포함하는 식이다.
Correctness (정확성)
시스템의 사양과 설계, 구현에 있어서 오류가 없는 정도
'Software Architecture' 카테고리의 다른 글
[SW Architect] Architecture Document Template (0) | 2021.12.31 |
---|