CS/소프트웨어 공학

Architectual patterns

남승현 2023. 12. 10. 14:49

1. Pipe and filter architecture

  • 이전 단계의 결과물이 다음 단계의 입력으로 들어가 처리되는 형태일 때 많이 사용
  • batch sequential model
  • interactive system에 적합하지 않음
  • 장점 : 병렬적으로(concurrent) 여러 가지가 동시에 실행될 수 있다 / workflow와 비슷하게 나타낼 수 있다
  • 단점 : 재사용이 불가능하다(이전 단계의 출력이 어떤 format으로 처리되어 다음단계로 넘어오는지 알아야 하기에 이것과 관련된 약속이 정의되어 있어야 함. 따라서 특정 단계에 있는 걸 떼서 다른 애로 대체하기 힘듦. 데이터 format 맞춰줘야해서)

2. Model-View-Controller(MVC) architecture

  • Model : 핵심 로직 (data 관리, 작동과 관련)
  • View : 사용자에게 데이터가 어떻게 보여지느냐
  • Controller : View와 Model을 이어주는 역할 (interaction 수행해준다 & 이러한 interaction을 View,Modle에게 넘겨줌)
  • 데이터를 표현하는 방법이 다양할 때 주로 사용한다 (ex)웹 브라우저로 홈페이지 접속할수도, 이화앱으로도 접속할수도,..)
  • 장점 :독립적으로 동작한다(현재chrome에서 동작하는데 edge에서도 동작하게끔 하고 싶으면 model과 상관없이 구현 가능)
  • 단점 : 데이터 모델과의 상호작용이 간단하면 controller 안 거치고 model-view가 바로 처리 되는 게 나을 수도 있다

Control styles

  • Centralised control : main함수에서 호출. 하나가 전체를 책임 진다

       Call-return model : 깊이우선탐색과 같이 진행됨 (main-> routine1-> routine 1.1-> routine2-> routine3-> routine3.3)

       Manager model :main 함수 같은 걸 하는 시스템이 있는데 순서대로가 아니라 "동시에" 처리한다

  • Event-based control : 한 곳이 아니라 각각 알아서 제어함 

       Broadcast model : 이벤트가 발생하면 모든 sub-system에게 알려준다. 자기 이벤트가 아니면 듣고 아무 일도 안하고                                         그냥 내 event 발생할 때까지 기다림. 내 event면 그걸 처리한다.

       interrupt-driven model: real-time system에서 사용됨 (cf) interrupt vector : interrupt별로 어떤 interrupt handler 호출해                                                                                                  야하는지 정의되어 있는 table)