Architectural Design이란?
- 시스템 전체 골격을 세우는 단계
- sw system 안에서 요소와 객체가 어떻게 구성될 것인지 결정
- requirement engineering과 디테일한 설계의 중간 연결 단계
- 일부 명세 작업과 병행하는 경우도 있음 (Twin-Peak)
- 주요한 시스템 구성요소와 해당하는 커뮤니케이션을 식별 및 정의하는 것을 포함
명확한 구조의 장점
- Stackholder communication
- System Analysis .. 비기능적 요구사항을 충족 가능한지 분석
- Large scale reuse : 요구사항이 유사하다면 구조가 비슷하므로 큰 스케일로 재사용 가능
Architectural representations
- 엔티티와 블록 관계를 보여주는 단순한 block diagram
- 과하게 상세히 설명하지 않는다.
Box and line diagrams
- 매우 추상적
- 관계, 특징을 명확히 설명 x
- 이해당사자 간의 소통에 좋다
Architectural Design Decisions
완전히 같은 고민을 한 구조는 없더라도 많은 부분 도움을 받을 수 있다는 개념..?
- 우리가 만들 시스템 골격에 참고할 만한 템플릿이 있는가?
- 정형화된 골격 패턴이 있는가? - 안정성..
- 어떻게 배포되는가?
- 어떤 설계 스타일이 적합한가?
- 어떤 식으로 모듈로 분리할 수 있는가?
- 어떤 control 전략을 쓸 수 있는가?
- 어떻게 아키텍쳐 설계를 평가받는가?
- 어떻게 이를 문서화하는가?
Architecture reuse
- 코드뿐만 아닌 큰 골격의 재사용
- 골격을 재사용 가능하다면 연관 코드도 할 수 있을 것
- 핵심 부분 재사용하고 필요 기능을 추가하는 방식이 좋겠다
Architecture and System Characteristics
- Performance : 요구사항 초당 얼마나 처리 가능한지
- Security - 내부 레이어에 접근 차단
- Safety - 안전에 위협적일 수 있는 sub system 을 현지화
- Availability: falut tolerance (장애 허용) 시스템을 위한 redundant components 포함
- 유지보수: fine-grained
Fine-Grained
- 하나의 작업을 작은 단위의 프로세스로 나눈 뒤,
- 다수의 호출을 통해, 작업 결과를 생성해내는 방식
- 예를 들어, Do() 라는 함수가 있다면
- 해당 함수를 First_Do(), Second_Do() 로 나누어 작업 결과를 생성해내는 방식
- 따라서, 다양한 "Flexible System" 상에서 유용하게 쓰일 수 있음
Architectural views
4+1 View
소프트웨어 아키텍처 4+1 뷰
소프트웨어 아키텍처 4+1 뷰 개념 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법 4개의 분리된 구조로 구성되는 아키텍처 개념을 제시하고, 이 4
moo-you.tistory.com
Architectural patterns
- 구조적 패턴은 이미 시도되고 검증된 것, 패턴 사용은 지식을 재사용하는 것이다.
- 구조적 패턴을 사용해 시행 착오, 시간, 비용 감소
- tabular, graphical 방식으로 표현된다.
- tabular: db 데이터 같은 표형식
- graphical: 그래픽 요소
MVC pattern
- model-view-controller 세 가지로 sw 구현한다는 철학
- 독립적으로 동작
- 현 웹기반 애플리케이션의 기본 시스템 아키텍쳐이다.
- 단순한 규모에는 어울리지 않는다.
Layerd architecture
- 서버가 쌓여 위아래로 Interface가 된다.
- 아래부터 HW/운영체제 -> DB -> core feature -> auth.. -> user interface.. 와 같이 쌓아 올린다.
- 장점은 중간 layer가 바뀌어도 위아래에 영향을 주지 않아 layer 별 수정이 가능
- 자연스럽지 못하다? 인공적이다?
Repository architecture
- 하나의 저장 공간은 다수가 사용하는 것이 목적
- git..
- 중앙 repo에서 공유 데이터가 보관되고 하위 시스템에서 각 db 등이 있다
- 많은 양의 데이터를 공유해야하는 경우
Client-server architecture
- 웹 기반은 거의 이 구조이다
- 분산시스템 서버가 클라 요청받고 결과를 돌려주는 형태
- 단점으로는 서버가 많아 관리가 힘듬, 공격 및 서비스 장애
- 네트워크에도 의존하기 때문
Pipe & filter architecture
- 프로세스 중심
- 시스템의 기능적 절차를 입출력 관점으로
- 입출력과 프로세스 사이에 선후관계가 존재
Application architecture
- 조직적 필요를 충족하도록 설계된다
- 기업에는 공통점이 많아 공통 아키텍쳐를 갖는 경향
- generic application architecture: 특정 요구사항 때문에 수정될 수 있는 걸 고려한? 아키텍쳐 (ex: 유아용 침대)
Use
- 아키텍쳐 디자인의 시작점에서
- 설계 체크리스트로
- 개발팀의 업무를 조직? 모으는 방식
- 재사용 요소의 평가 수단
Application type example
- Data processing application: 데이터 기반 어플리케이션. 사용자 개입 없이 데이터 처리
- Transaction processing application : 사용자 요청에 따른 데이터 처리.
- Event processing application: 이벤트에 따라 시스템이 행동함
- Lauguage processing application : 컴파일러, command 해독기 등
transaction processing application
- 전자상거래, 예약 등
- 여러 사용자가 DB 정보에 원격으로 접근하고 수정할 수 있게 하는 대화형 시스템이라고 볼 수 있다.
Information systems architecture
- 계층화
- 얘랑 interaction하면 일반적으로 trasaction-based system임
- 레이어는 ui, user communication, information retrieval, system db를 포함한다.
웹 기반 information system
- 정보 및 자원 관리하는 시스템은 요즘 대개 웹이다.
- 전자상거래 포함
Language processing systems
언어 처리 시스템
소프트웨어공학 강의자료와 타 블로그 글을 바탕으로 기록한 포스트입니다.
https://velog.io/@seo78200/Software-Engineering-Architectural-Design
Software Engineering – Architectural Design
Software Engineering – Architectural Design
velog.io
'CS > 소프트웨어공학' 카테고리의 다른 글
[소프트웨어공학] Software Testing (1) | 2023.12.17 |
---|---|
[소프트웨어공학] Design and Implementation (1) | 2023.12.17 |
[소프트웨어공학] System Modeling (0) | 2023.12.17 |