sw아키텍처 Flashcards

1
Q

sw 아키텍처

A

[리드] 시스템에 대한 기본 조직 체계
[정의] 시스템을 이루는 구성요소들 간의 상호 관계의 구조와 이들을 설계하고 전개하기 위한 지침과 원리
[역할] 1) 청사진 2) 설계계획 및 지침 3) 의사소통도구 - 간략화/추상화/가시성/관점모형
[구성 3요소] (원관컴)
1. 원리 : 소프트웨어 디자인/아키텍쳐 패턴/개발구성요소 이끄는 기본이론
2. 관계 : 컴포넌트간의 관계, 이해관계자 뷰에 따라 관계설정
3. 컴포넌트 : 시스템의 기본조직, 소프트웨어 개발구성요소
[절차] (요참모프배)
1. 요구사항분석 : 이해관계자, 요구, 품질속성, 리스크 식별
2. 참조 아키텍처 분석 : 업계 모델, 표준 모델 분석 → 자체 참조 아키텍처 준비
3. 아키텍쳐 모델링 : 뷰 정의, 패턴/스타일, 프레임워크, 설계이슈 선정 및 평가
4. 아키텍처 프로토타이핑 : 유스케이스, 컴포넌트 단위 설계, 프로토타입 검토/작성
5. 아키텍처 배포 : 프로토타입 모델 구조화, SAD 작성, 검토

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

SW 아키텍처 스타일

A

[정의] 시스템을 구성하는 컴포넌트 및 컴포넌트간 제어/데이터 송수신 방법에 대한 패턴
유형
1. 연결형
- CS (Clinet-Server) : 클라이언트 서비스요구-서버 제공, 사내 ERP 시스템
- Peer to Peer : 파일공유 N/W, 멀티미디어 프로토콜
2. 중개형
- Broker : 컴포넌트가 통신 조절, Kafka, RabbitMQ
- Event-bus Pattern : 특정 채널로 메시지 전송, 알람 서비스
- Publish and Subscribe: Sub(topic) > Pub(Topic, Data) 구조, 메시징 시스템
3. 데이터 중심형
- Blackboard : 음성인식, 차량 식별 및 추적
- Repository : 서브 시스템의 중앙자료 접근/공유, CMDB/Database
4. 기능 분활형
- MVC : Model/View/Controller(역할분리 따른 변경 효율, Dataset/JSP화면/Biz Logic)
- MSA : Git, Amazon, Neflix
5. 콜 엔 리턴형
- Layered Architecutre : 서비스 프리미티브, OSI 7 Layer
- MS (Master-Slave) : 컴퓨터 시스템 버스 주변 장치, DB 쿼리 오프로딩, Replication
6. 데이터 흐름형
- Pipes and Filters : 컴파일러, 의미/어휘 분석
- Batch Process

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

MVC

A

[정의] 웹 APP의 확장성,유지보수성을 위해 모델,뷰,컨트롤러로 분리 구성한 SW 아키텍처 패턴
[구성요소]
1. Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
2. View : 사용자에서 보여지는 UI 부분입니다.
3. Controller : 사용자의 입력(Action)을 받고 처리하는 부분입니다.
[장점] - 단순하다 보니 보편적으로 많이 사용
[단점]
- MVC 패턴의 단점은 View와 Model 사이의 의존성이 높다는 것입니다.
- View와 Model의 높은 의존성은 어플리케이션이 커질 수록 복잡하지고 유지보수가 어렵게 만들 수 있습니다

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

MVP

A

[정의] MVC모델에서 뷰, 모델의 의존성을 없애기위해 Presenter를 추가한 SW 아키텍처 패턴
[구성요소]
1. Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
2. View : 사용자에서 보여지는 UI 부분
3. Presenter : View에서 요청한 정보로 Model을 가공하여 View에 전달해 주는 부분, View와 Model을 붙여주는 접착제(?) 역할
[특징]
- Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 접착제 역할
- Presenter와 View는 1:1 관계
[장점] View와 Model의 의존성 제거, MVC 모델 단점 해결
[단점] View와 Presenter 사이의 높은 의존성

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

MVVM

A

[정의] 뷰, 모델의 의존성을 없애고 Data Binding을 통해 확장성과 개발 편의성을 높인 SW 아키텍처 패턴
[특징]
- Command 패턴, Data Binding 패턴 사용 : View와 View Model 사이의 의존성 제거
- View Model과 View는 1:n 관계
[구성요소]
1. Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
2. View : 사용자에서 보여지는 UI 부분
3. View Model : View를 표현하기 위한 Model
[장점] View와 Model의 독립적 개발 가능( 의존성 제거)
[단점] View Model의 설계 어려움

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

4+1 View

A

[정의] 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 Software적인 접근 방법
[필요성] Box 나 화살표 diagram 과 같은 단순한 View Model의 한계 극복
[구성요소] (U설프구배)
1. Use Case View : 요구 사항을 분석해 시스템의 기능을 명세화 (Use Case, Sequence 다이어그램)
2. 설계 (Loical View) : Use Case View에 표현된 요구사항들을 시스템의 구조와 행동으로 명세화 (Class, Object 다이어그램)
3. 프로세스 (Process View) : Thread와 Process에 의한 동작을 중점적으로 표현 (동시성, 분산처리)
4. 구현 (Implementation View) : 물리적인 소프트웨어 모듈로 표현 (Component, Interface 다이어그램)
5. 배치 (Deployment View) : UML 모델 요소를 배치할 하드웨어 표헌 (Deployment 다이어그램)
* 유스케이스는 4개 뷰에 영향을 미치고 4개뷰는 시나리오를 중복해 다룸

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

IEEE 1471

A

[정의] SW 집약적인 시스템에서 아키텍쳐가 표현해야하는 내용 및 상호관계를 제공하는 아키텍쳐 표준 메타 모델
[필요성] 표준화, 중립성, 유연성, 의사소통
[특징] 1.SW아키텍처를 정의하기 위한 SW 구성요소 및 구성요소간의 관계를 확립하여 SW아키텍처기술서(SAD)명세를 위한 표준 프레임워크 2.ISO/IEC/IEEE 42010 가 최종 표준화
[구성요소]
1. Mission : 시스템이 수행해야 되는 목표
2. Environment : 시스템 구성하는 외부요인, 영향력요소
3. System : 시스템집합구현체
4. Architecture : 요구사항별 아키텍쳐
5. Stakeholder : 시스템에 대한 이해당사자
6. Architecture Description : 아키텍처 기록을 위한 산출물 / 관심사, 하나 이상의 View로 구성
7. Rationale : 선택되어 설계된 아키텍쳐 논리적근거
8. Concern : 동일 시스템에 대한 각 이해관계자들의 서로 다른 의견과 목표
9. View Point : View를 구성하기 위한 규칙을 정의하는 패턴, 관점
10. View : 이해관계자의 관점에 의한 시스템 뷰(뷰포인트에 따라 실제표현되는시스템)
11. Model : View 도출하기 위한 표준화된 모델

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

SAD

A

[정의] 이해관계자들의 관심사 파악 및 관점들을 정의하고, 다양한 뷰를 통해 SW아키텍쳐를 기술한 문서
[구성]
- 개요/배경/요구사항/참조아키텍처/설계전략(Tactics)/시스템View/용어사전, 참고문서
[5원칙] (핵표준내리) 1.핵심집중(보는사람관점) 2.표현방법(모호제거) 3.표준준수(템플릿) 4.내용충실(근거첨부) 5.리뷰 활동(지속검토)
[작성절차] (아이관설뷰)
1.아키텍쳐 기술서 정보 작성 : 규정/일정/조직/변경이력/참고
2.이해관계자와 관심 식별 : 이해당사자역할/관심사/품질속성/목표/경제성
3.관점 선택 : 후보관점식별/정제/통합/표현을위한뷰구성
4.관점에 대한 설명 작성
5.뷰 작성 : 뷰포인트별 뷰선정/명세/불일치조정기록
6.전체 뷰 작성

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

소프트웨어 아키텍처 드라이버

A

[정의] SW 아키텍처를 만드는데 기능적, 품질적, 성능적 영향을 주는 요구사항
[유형]
- 기능 요구사항 : 시스템에서 반드시 구현되어야 하는 부분
- 품질속성 : 가용성,변경용이성,성능, 보안성
- 제약사항 : 비즈니스,조직,기술 제약사항

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

SW 아키텍처 평가

A

[정의] 제시된 SW 아키텍처가 개발될 SW에 대해 요구되는 품질 특성을 충족시킬 수 있는가를 아키텍처 수준에서 평가하는 작업
[필요성] 요구검증, 조기문제발견
[평가유형]
1. 시나리오 기반 : SAAM, ATAM, CBAM, ADR, ARID
2. 시뮬레이션 기반 : BMT, 프로토타이핑 → 가장 많이 사용됨
3. 수학적 모델 기반 : 모델 수치(정량)화, 평가
4. 경험기반 : 정량분석 난해 시, 전문가 경험
[평가방법]
1. 가시적 평가 : 인스펙션, 리뷰, Validation/Verification
2. 비가시적 평가 : SAAM, ATAM, CBAM, ARID, ADR
* 일반적으로 정방향 분석인 CBAM, ATAM 모델이 많이 사용

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

SW 아키텍처 평가 방법

A

[평가방법] (사아탐 C 아드리 아리다)
- SAAM : 변경 용이성, 기능 분석 중심의 최초 아키텍처 평가 방법 / 평가 용이
- ATAM : 아키텍처가 품질 속성을 만족 시키는지 판단 품질 속성간 상호 작용
- CBAM : 아키텍처가 평가의 ROI, 재무재표 등 경제성 측면 평가 방법 (ATAM + CBAM)
- EATAM : 개별 평가모델의 확장, 스테이지 기반 모델을 통한 PL아키텍처 평가 수행
- ADR : 아키텍처 구성 요소간 응집도 평가
- ARID : 부분 아키텍처를 아키텍처 초기에 평가 방법, 특정 부분의 품질요소 집중 (SAAM/ATAM + ADR)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

ATAM

A

[정의] 품질 목표 간의 트레이드 오프(Trade-Off) 및 민감도 분석, 시나리오 기반 아키텍처 평가 기법
[특징] Trade-Off & 민감도 분석, 모든 Quaillity Attributes 평가(SAAM은 일부만 평가)
[절차]
1. 소개 : ATAM소개 → 비즈니스 동인소개 → 아키텍처 소개
2. 조사/분석 : 아키텍처 접근법 식별 → 품질속성 유틸리티 트리 작성 → 아키텍처 접근법분석
3. 테스트 : 브레인스토밍과 시나리오 우선순위결정 → 아키텍처 접근법 분석 반복
4. 보고 : 결과발표
[차별화]
- SAAM : ATAM 기초 모델. 수정 가능성과 기능 분석 중심, 최초의 아키텍처 평가 방법
- ARID : ATAM + ADR(상세설계 응집도-모듈/컴포넌트 검토) , 초기 평가 기법

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

CBAM

A

[리드] 비용와 이득을 고려한 아키텍처 평가 방법
[정의] ATAM 기반 경제적 평가 보강, ROI 계산 및 순위결정 통한 효용성(Utility) 기반 아키텍처 평가 기법
[특징] 품질 속성 경제성 중심, 비용과 이익으로 부터 ROI 계산
* 품질속성이 가져다 주는 이익을 측정, ROI를 계산 “효용(utility)”으로 표현
[개념도]
- 비즈니스 목표 → 아키텍처 결정(비용) → 품질 특성 (성능,보안,사용성..) → 이익,ROI실현 – CBAM 목표
[프로세스]
1. 시나리오 결정 : 시나리오 수립, 시나리오 정제, 시나리오 우선순위
2. 효용-반응값 곡선 작성 : 효용-반응 값 곡선 작성
3. 아키텍쳐 접근법 전체 이익계산 : 예상 반응값 결정, 예상 효율 계산, 전체 이익 계산
4. 아키텍쳐 접근법 선정과 검증 : ROI 계산, 순위 결정, 아키텍처 접근법 선정, 결과 검증

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

유틸리티 트리

A

[정의] 비기능적 품질 속성간 중요도, 영향도 파악 목적 트리구조, ATAM 기반 SW 아키텍처 평가방법
[목적] 품질속성 결정, 시나리오 도출, 아키텍처 평가
[특징]
- ATAM 프로세스 중 조사와 분석 단계에서 작성
- 시스템이 획득해야할 품질 속성 도출 및 정의 (SW 설계시점)
[절차]
1. 유틸리티 작성-유틸리티 : 시스템이 제공해야 할 모든 품질 의미
- (사례) 트리에서 최상위를 Utility라고 표기
2. 품질속성 추출 : 시스템이 제공해야할 비기능적 품질 속성 추출
- (사례) 성능. 가용성, 보안, 유지보수성 등
3. 세분화한 품질속성 결정 : 품질 속성을 세부적으로 구분
- (사례) 성능(지연 시간, 대역폭, 처리 속도), 가용성(디스크 실패, 사용), 보안(데이터 암호화, 무결성 보장)
4. 시나리오 검증 : 품질 속성 기반, 가상의 시나리오를 수립하고 검증
- (사례) 성능(200ms 내에 DB 저장 완료), 가용성(디스크 실패 후 5분 이내 재시작), 보안(99.99%시간 트랜잭션 신뢰성 보장)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

SW 품질속성

A

[정의] 제품 품질기준을 만족시키기 위해 소프트웨어가 가져야 하는 성능, 보안 등 시스템 비기능 속성
[유형] (시아비)
1. 시스템 : 성능, 보안, 가용성, 유지보수성, 재사용성
2. 비즈니스 : 시장 적시성, Cost, 목표시장, 시스템의 프로젝트 생명주기
3. 아키텍처 : 정확성, 구축성, 완전성, 개발 용이성

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

SW 품질 속성 시나리오

A

[정의] 사용자 요구사항을 자극원, 자극, 환경, 대상체, 응답, 응답측정의 6개 요소를 이용하여 시나리오 형태로 명세한 문서
* 비기능 품질 속성 정량화, 시스템 자극 및 측정 통한 품질 요구 사항 도출 기법
[필요성] 1) 비기능 품질 속성 도출, 2) 품질 정량화 3) 아키텍처 평가전략 제공 4) 이해관계자 커뮤티케이션 매개 활용
[구성요소 및 사례]
- 자극유발원 → 자극 → 대상체(환경) → 응답 → 응답측정
(사례1)가용성: 시스템 외부 → 잘못된 값 → 업무프로세스(정상모드) → 정상동작 → 확률(99.9%)
(사례2)변경용이성: 개발자 → 신규기능 추가 → 사용자 I/F(빌드시점) → 변경결과 배포 → 타 기능영향 없어야 함
* ISO 25010(ISO 9126) 품질 속성 활용
[시나리오 적용 프로세스]
1. 품질요구사항 및 품질속성 도출
2. 품질속성 시나리오 작성
3. 아키텍쳐 뷰 및 스타일 선택
4. 아키텍쳐 모델링 및 평가
5. 아키텍쳐 기술서 작성 및 배포

17
Q

SOA

A

[정의] 서비스로 분할된 단위 컴포넌트를 Loosely Coupled 하게 연결해 하나의 완성된 Application을 구축하는 서비스 아키텍쳐
[구성요소]
1. SOAP(Simple Object Access Protocol) : HTTP 프로토콜 등으로 XML 메시지 교환
2. WSDL(Web Services Description Language) : 서비스 내용이 기술된 XML
3. UDDI(Universal Description, Discovery and Integration) : 웹서비스 정보 공개와 탐색 표준

18
Q

MSA

A

[정의] 단독으로 실행 가능하고 독립적으로 배치될 수 있는 작은 단위로 기능을 분해 서비스하는 아키텍처
[배경] 확장성 한계, 개발주기 한계, 운영 한계
[필요성] 확장성, 적시성, 독립성, 안정성
[주요 사용 아키텍처 패턴]
- Circuit Breaker, Service Discovery, API Gateway, SAGA 패턴

19
Q

EDM

A

[정의] MSA가 적용된 시스템에서 이벤트 발생시 해당 이벤트 로그를 보관하고 비동기 통신을 통해 시스템 내 통합을 수행하는 아키텍처
[배경] Request/Respose 방식 → EDM
- 동기식 통신, Blocking Model, 장애전파 → Broadcasting, 비동기 통신, Non-Blocking, 장애격리
[구성요소]
1. Event Genertor : 표준화된 이벤트 생성 (Publisher, Producer)
2. Event Channel : 이벤트를 필요로하는 시스템까지 발생 (Bus)
3. Event Processing Engine : 수신한 이벤트를 식별/처리 (Consumer, Processor)
* 비동기 방식 메시지 전달 패턴으로 주로 Message Broker(Kafka, RabbitMQ)와 결합하여 구성
[제공기능]
- Database Per Service, 트랜잭션 처리(Rollback/재시도 지원), 반정규화 데이터 동기 처리, 최종 일관성 (데이터 무결성 보장)
[장/단점] (장) 느슨한 결합도, 확장성/탄력성 (단) Transaction 단위 분리, 시스템 Flow 파악 어려움, 디버깅 어려움

20
Q

IoC

A

[정의] 프레임워크에 제어의 권한을 위임 개발자가 작성해야 하는 코드상의 제어를 줄이는 전략
[특징]
- 객체지향 설계 : IoC, AOP 이용 인터페이스 기반 객체지향 설계
- 재사용성 : 클래스, 객체 단위로 컴포넌트 재 사용성 증가
- 의존성 관리 : XML기반 환경설정 파일 이용 객체간의 의존성 관리 용이
[종류]
1. DL : IoC 컨테이너가 관리 중인 객체 풀에서 객체를 직접 가져오는 방법
- 사례) Spring F/W의 getBean()
2. DI : 객체 사이의 의존 관계를 Bean설정정보를 바탕으로 컨테이너가 자동적으로 연결해주는 방법
- 사례) Spring F/W의 생성자, Setter, Field 주입

21
Q

AOP

A

[리드] 관점 지향
[정의] 핵심로직과 공통 로직으로 코드를 분리, 핵심로직에서 공통 로직을 재사용하는 재사용 극대화 관점 진향 프로그래밍 방법
[구성요소]
- 핵심 관점 : Target
- 공통 관점 : Aspect(공통관점 코드 모듈화), Advice(실행 내용 정의), JointPoint(로직을 수행하기 위한 위치 정의), Pointcut (Advicer 가 실행될 대상 정의)
- 핵심과 공통 관심사의 연결 : Proxy(Wrapping 오브젝트, Proxy를 생성해 실행), Weaving(공통기능 코드를 자바 클래스 파일 내에 삽입)
[기대효과]
- 결합도 제거 및 응집도 향상 , 유지보수성 증가