소프트웨어공학

[소프트웨어공학] Architectural Design

gyujh 2023. 12. 17. 21:07

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