728x90
p. 89
소프트웨어 솔루션은 도메인 요구사항과 아키텍처 특성으로 구성된다.
💬정처기에서 공부했던 것을 연결해보면 '도메인 요구사항 = 기능 요구사항 / 아키텍처 특성 = 비기능 요구사항'인걸까?
아키텍처 특성의 기준
- 비도메인 설계 고려 사항을 명시한다.
- 설계의 구조적 측면에 영향을 미친다.
- 애플리케이션 성공에 (절대적으로) 중요하다.
아키텍처 특성 (일부) 목록
운영 아키텍처 특성
가용성(availability) | 시스템이 얼마나 오랫동안 사용 가능해야 하나? |
연속성(continuity) | 재해 복구 능력 |
성능(performance) | 스트레스 테스트, 피크 분석, 기능의 사용 빈도 분석, 필요 용량, 응답 시간 |
복구성(recoverability) | 비즈니스 연속성 요구사항(e.g. 장애 발생 시 얼마나 신속하게 시스템을 재가동시켜야 하나?) |
신뢰성(reliability)/안전(safety) | 시스템에 페일 세이프(fail-safe, 고장 났을 때 안전한 방향으로 흘러가도록 하는 설계 방식)가 필요한가? |
견고성(robustness) | 프로그램 실행 중 인터넷 접속 끊김, 정전, 하드웨어 실패 등 에러 및 경계 조건을 감당하는 능력 |
확장성(scalability) | 유저 수, 요청 수가 늘어나도 시스템이 그에 맞는 성능을 발휘하는 능력 |
구조 아키텍처 특성
설정성(configurability) | 최종 유저가 (쓰기 편한 인터페이스를 통해) 소프트웨어 설정을 쉽게 바꿀 수 있는가? |
신장성(extensibility) | 새로운 기능을 삽입하는 일의 중요성 |
설치성(installability) | 필요한 모든 플랫폼에 시스템을 얼마나 손쉽게 설치할 수 있나? |
활용성(leverageability)/재사용(reuse) | 공통 컴포넌트를 여러 제품에서 활용할 수 있나? |
지역성(locality) | 데이터를 입력/조회하는 화면에서 다국어가 지원되는가? 등 |
유지보수성(maintainability) | 시스템을 얼마나 쉽게 변경/개선 할 수 있나? |
이식성(portability) | 하나 이상의 플랫폼에서 시스템을 실행할 수 있나? |
지원성(supportability) | 어플리케이션은 어느 정도의 기술 지원을 필요로 하나? 시스템에서 발생한 에러를 디버깅하려면 로깅 및 기타 기능이 어느 수준으로 뒷받침 되어야 하나? |
업그레이드성(upgradeability) | 이 어플리케이션/솔루션의 구 버전을 새 버전으로 쉽고 빠르게 업그레이드를 할 수 있는가? |
아키텍처 공통 특성
접근성(accessability) | 색맹, 청각 장애인 등 모든 유저가 접근하는데 불편함이 없나? |
보관성(archivability) | 데이터를 따로 아카이빙 해야 하나, 아니면 일정 시간 경과 후 삭제해야 하나? |
인증(authentication) | 유저가 본인이 맞다는 것을 증명하기 위해 필요한 보안 요구사항 |
인가(authorization) | (유스 케이스, 서브 시스템, 웹 페이지, 비즈니스 규칙, 필드 레벨 등) 유저가 어플리케이션에서 정해진 기능만 사용할 수 있도록 강제하는 보안 요구사항 |
합법성(legal) | 시스템 운영상 법적 제약조건이 있는가? (데이터 보호, 사베인스 옥슬리법, GDPR 등) 회사는 어떤 권리를 유보 해야 하나? |
프라이버시(privacy) | 회사 내부 임직원의 트랜잭션을 외부에 드러내지 않는 기능(e.g. 암호화 트랜잭션은 DBA나 네트워크 아키텍트도 해독이 불가) |
보안(security) | 데이터를 암호화 한 후 DB에 보관해야 하나? 내부 시스템 간 네트워크 통신도 암호화 해야 하나? 원격 유저 액세스는 어떤 종류의 인증이 필요한가? |
사용성(usability)/성취성(achievability) | 유저가 어플리케이션/솔루션을 이용하여 원하는 목적을 달성하기 위해 필요한 교육, 훈련 수준 |
국제 표준기구(ISO)가 발표한 기능별 목록
성능 효율(performance efficiency) |
|
호환성(compatibility) |
|
사용성(usability) |
|
신뢰성(reliability) |
|
보안(security) |
|
유지보수성(maintainability) |
|
이식성(portability) |
|
트레이드오프 및 나쁜 것 중에서 제일 나은 아키텍처
p.99
시스템을 설계하며 모든 아키텍처 특성을 빠짐없이 최상으로 반영하기란 불가능에 가깝습니다.
......
최고의 아키텍처를 고집하지 말고 나쁜 것 중에서 제일 나은 아키텍처를 선택하세요.
'CS Study > 소프트웨어 아키텍처 101' 카테고리의 다른 글
[소프트웨어 아키텍처 101] Ch.6 아키텍처 특성의 측정 및 거버넌스 (0) | 2024.01.11 |
---|---|
[소프트웨어 아키텍처 101] Ch.5 아키텍처 특성 식별 (2) | 2024.01.05 |
[소프트웨어 아키텍처 101] Ch.3 모듈 (2) | 2024.01.05 |
[스터디] 직교성이란? (2) | 2024.01.04 |
[소프트웨어 아키텍처 101] Ch.2 아키텍처 사고 (3) | 2024.01.04 |