일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 미키17
- 오블완
- raspberry pi
- sf소설
- 책추천
- 임베디드소프트웨어경진대회
- raspbian
- 소프트웨어 아키텍처
- 로봇
- 알고리즘대회
- 단편선
- 소프트웨어아키텍처
- PYTHON
- 미키7
- 소프트웨어대회
- OpenCV
- software quality
- 로봇대회
- 대회
- 휴머노이드
- 티스토리챌린지
- 임베디드
- YOLOv4
- 컴공대회
- sf소설책
Archives
- Today
- Total
mjello 님의 개발 블로그
[소프트웨어 아키텍처 01] Structures/View/DesignGuideline in SA 본문
* 최은미 교수님의 소프트웨어 아키텍처 수업을 듣고, 개발 시 참고하기위해 간단히 정리했습니다.
02 구조
모든 시스템은 소프트웨어 아키텍처를 가진다
- 아키텍처의 목적 : 최적화
-
- measurable performance 측정가능 성능
- hard, soft constraints 제약조건
- 개발 :
[ 문제 --모델링해서→ 모델 --구현해서→ 솔루션 ]
03 View
view : 다양한 측면에서 바라 보는 것
View : 시스템의 일부분 나타냄, 요소, 상호작용, Structure를 특정 관점에서 봄
Structure : 실제 구성 요소들과 관계들
모듈 구조 : 기능적 부분으로 분할
모듈 뷰 : 특정 관점으로 선택된 구조 정보만, 문서화
C&C 구조 : 데이터 중심의 시스템에서 다양한 역할을 수행, 효율적인 상호 작용 가능하게함
4+1 View Model
- 논리적 관점 (Logical View)
- 최종 사용자에게 제공하는 서비스와 기능적 요구사항
- 클래스 다이어그램, 시퀀스 다이어그램, 계층 다이어그램과 같은 다이어그램을 사용하여 시스템의 논리적 구조를 나타냄
- 최종 사용자에게 제공하는 서비스와 기능적 요구사항
- 프로세스 관점 (Process View)
- 동시성 & 비기능적 요구사항: 런타임 동작, 시스템 가용성, 통신, 성능 및 확장성 등
- 액티비티 다이어그램을 사용하여 시스템의 런타임 동작을 설명
- 동시성 & 비기능적 요구사항: 런타임 동작, 시스템 가용성, 통신, 성능 및 확장성 등
- 구현 관점 (Implementation View)
- 소프트웨어를 개발 환경에서 정적으로 구성하는 것.
- 컴포넌트 다이어그램, 패키지 다이어그램과 같은 다이어그램을 사용하여 소프트웨어 모듈의 구현과 조직을 표현
- 소프트웨어를 개발 환경에서 정적으로 구성하는 것.
- 배포 관점 (Deployment View)
- 시스템 엔지니어의 관점, 시스템의 위상, 배포 및 통신, 비기능적 요구사항
- 배포 다이어그램을 사용하여 논리적 요소가 물리적 노드에 배치되고 연결되는 방법을 표현
- 시스템 엔지니어의 관점, 시스템의 위상, 배포 및 통신, 비기능적 요구사항
- 시나리오 관점 (Scenarios View)
- 아키텍처를 설명하고 검증하기 위한 사용 사례. (아키텍처 디자인의 유효성, 프로토타입)
- 사용 사례 다이어그램을 사용하여 아키텍처를 설명하고 검증하는 데 사용되는 시나리오를 나타냄
- 아키텍처를 설명하고 검증하기 위한 사용 사례. (아키텍처 디자인의 유효성, 프로토타입)
04 Design
- Architecture Design: What
- 시스템의 주요 구조 요소와 상호작용 정의
- 성능, 확장성, 보안에 영향 주는 아키텍처 스타일 선택, 제약 사항 결정
- 기술적, 비용적, 시간적 제약 고려
- 다이어그램 및 문서로 표현
- Architecture Design: Who
- 소프트웨어 아키텍트와 디자이너가 요구사항을 디자인으로 번역
- 복잡성 해결을 위한 디자인 전략 적용
- Architecture Design: Why
- 요구사항 충족 및 재사용 가능성 확보
- 시간과 비용 절약
- 위험 감소 및 협업 촉진
- Architecture Design: When
- 소프트웨어 개발 수명 주기(SDLC)의 초기 단계에서 수행
- 요구사항 분석 후 아키텍처 설계, 개발, 테스트, 유지보수로 이어짐
- Architecture Design: Output
- 시스템 구축 계획 및 설계 개요
- 모듈 분해, 상호 의존성, UI 및 상세 디자인 설명
Software Requirement Specification (SRS) : 요구사항 분석하는 법
- 요구사항 모델링
- 정보 도메인 및 데이터 모델링 : DB 구조, 흐름 등
- 기능 및 행위 모델링
- 사용자 인터페이스 모델링
- 요구사항 설명(설명하는 방법)
- Use Case Specifications(UML)
- UML을 사용하여 사용사례와 사용자 요구사랑을 설명
- Data Flow Diagram(DFD)
- 데이터 흐름과 처리 과정을 표현
- 정보의 흐름을 시각화한다
- State Transition Diagrams(STD)
- 상태 전이 다이어그램, 상태와 상태 간의 전이 및 변화를 표현
- Use Case Specifications(UML)
- 요구사항의 두 가지 측면
- 기능적 요구사항
- 비기능적 요구사항
- 품질, 제약 사항, 성능, 보안, 유지 보수 등
05 Design Guideline
Software Architect's Tasks
- 시스템 파티션, 하위 시스템 분해
- 하위 시스템 간 통신 설정
- 데이터 흐름, 제어 흐름 설계
- 아키텍처 스타일 품질 및 비기능 요구사항 분석
Architecture Styles
- 비슷한 디자인 그룹의 공통 속성 추상화
- 구성 요소와 커넥터 구조화 규칙
- 런타임 상호작용 제어
Key Components of an Architecture Style
- Elements: 기능 수행
- Connectors: 상호작용 지원
- Constraints: 제약조건
- Attributes: 구조 장단점 설명
Software Architecture Design Guidelines
- 어떻게 보다 '무엇을' 먼저 고려
- 추상적 디자인 우선
- 비기능적 요구사항 초기 고려
- 재사용성, 확장성 고려
- 높은 응집도, 느슨한 결합도 유지
- 설계 수정 허용
- 모호하거나 과도한 설계 피하기
Models for Software Architecture
- 고수준 추상화
- 구성 요소, 상호작용 설명
- 기능/비기능 요구사항 포함
Ways to Describe Software Architecture
- Box and Line 다이어그램
- UML (정적/동적) : 표준화된 다이어그램
- 4+1뷰 모델
- ADL (정확한 아키텍처 설명)
'소프트웨어 아키텍처 🗃️' 카테고리의 다른 글
[소프트웨어 아키텍처 03] UML/SOLID Design Principles/GRASP (1) | 2024.11.20 |
---|---|
[소프트웨어 아키텍처 02] Quality Attributes/Quality (3) | 2024.11.19 |