SW 설계개론 - 1

doran·2024년 10월 17일

Associate Architecture

목록 보기
5/6

Module View

  • 개발자가 그리는 Class Element 로 그림, Software

Layered Style

  • 하위 레이어는 상위레이어에 의존하지만 그 반대는 안됨
  • 어떤 요구사항이 변경 됐을 때, 모듈간 의존성이 아래와 같으면 맨 밑에꺼가 바뀌면 젤 위에가 영향을 미칠 수 있다. 상위 레이어는 마음대로 바꿔도 상관없음. 어떤 요구사항이 더 빈번한지에 따라서 레이어를 젤 상위로 보내고, 잘 안 바뀌는 부분(Stable)은 레이어를 젤 아래로 보내는 것이 좋고, 싸이클이 없어야 한다.
  • concern 으로 구분하는 것이 좋음
  • Data/Calculate/Logic 에 관련 된 부분으로 Module 을 나눔
    [원칙]
  • SDP (Stable Dependency Principle) : 안정적인 모듈에 의존
  • ADP (Acycle ")

Work Assignment View

  • 각각의 Module 이 누구한테 할당될것인지 Table 로 정리한 것
  • Module 하나에 대해서 여러 조직이 공유하는 것은 좋지 않음. Communication overhead 가 커짐
  • Ownership 을 하나만 갖도록 하는 것이 좋음
  • Module 구성 설계시 조직에 바탕을 두고 그리는 것이 좋음
  • 중요한 concern 중 하나

Component & Connector View

Element

Componenet

  • 무언가를 처리하는 것
  • 데이터를 저장하는 것

Connectors

  • 경로
  • Component 와 Component

    실행 동작에 대한 설명

Relations

  • Attachment
  • Interface delegation

Client-Server Style

  • Reply and Response 로 동작

Deployment View

  • Component 는 Computing platform
  • 내가 구동하는 infra 가 어떤 element unit 으로 배치하고 그 unit 으로 동작시키는지를 봐야함
  • CPU, Core 를 다 Deployment unit 으로 볼 수 있다.
  • Virtual Machine, Container
  • OS Process/thread 가 모두 Deployment unit 이 될 수 있음
  • 과거에는 hardware로 봤지만, 지금은 내가 개발하는 compute environment 의 실행 unit으로 봐라
  • multi thread 인 경우 thread 가 deployment unit 이 됨
  • OS 없이 multi core 에서 동작하면 core 가 deployment unit 이 됨
  • 클라우드에서는 POD 가 deployment unit 이 됨
  • ROS 에서는 node
  • Real-time OS 는 task
  • 내가 컴퓨터를 3대를 쓴다면, 컴퓨터는 Component이고 그 안에 OS가 여러개이면 Deployement View로 봐준다.
  • 시스템이 어떻게 구성되느냐에 따라서 어떤 영향을 미칠지 달라지기 때문에 실행측면에서의 분석을 하고자 할 때 Deployement View 를 본 후 Component View 를 본다.

SW Architecture = Set of Views

  • Element 개발 측면에서의 Module
  • View 를 그리는 목적 : Stakeholder 의 concern 때문에 View 를 그린다.

개발 초기에 개념적인 logical view 를 그린다면 logical 한 system view

Layered Style View : Module View
Pipe-and-Filter Style View : Component & connector view
Booting Time
Performance view : Component & Connector view (Flow 를 설명하는 것)
Data Format Modifiability view : Module View (설명의 내용이 개발과 관련)
등장하는 Element 가 뭐냐에 따라서 View 를 그림
Module 은 Module 간 개발 측면에서 그릴 때
Component 는 flow 를 그리는 것이 좋고
섞어서 그리는 것은 좋지 않다.
** 단, Flow를 설명하는 것은 Sequence diagram, activity diagram 이 더 좋음

Major View Types

  • Component&Connector View : Client 와 Server 간 연결 상태, 시행하면서 동작과 관련 된 그림
  • Deployement View : Client 와 Server 의 배치
  • Module View : Client 와 Server 를 사용하는 것을 Common Module 로 구성, 의존성에 따라 Layered Style 로 변경
  • Work Assignment View : 각각 Module 을 누가 담당할지 표현, 조직도와 관련있음.
    - 조직 구성으로 보면 Server 밑에 Common을 두고 Common이 변경됐을 때 Client가 쫓아오도록 하는 것이 Communication overhead 를 줄일 수 있음.
  • View 를 잘 그리고 표현할 수 있어야 함.
  • Architect 는 그림을 그려서 잘 표현하는게 가장 중요.
profile
Hi :)

0개의 댓글