23.5.21

커피 내리는 그냥 사람·2023년 5월 21일
0

입사 후 블로그

목록 보기
20/24

UML, Meta, 파이썬에서 멤버변수?

요즘 컨텐츠 개발 업무 말고도 QA 업무도 맡고 있어 다양한 지표들과 상황을 맞이하곤 한다. 그 와중에 CTO님에게 한 다이어그램에 대해서 배우게 되었는데 그 때 좋은 QA가 되기 위해서는 UML을 이해해야한다고 하셔서 이 참에 구글링 좀 해보려고 한다. 그 김에 Meta에 대한 개념도 일반 개념으로 잡고 가려고 한다.

UML이란?

1. 정의

  • Unified Modeling Language, 통합 모델링 언어
  • 구조적, 행동적으로 복잡한 소프트웨어 시스템의 아키텍쳐, 디자인 및 구현을 위한 시각적 모델링 언어
    -> 소프트웨어 시스템 구조 등을 표현하기 위한 보기 좋은 모델링 언어라는 뜻 같음(복잡한 시스템을 보기 편하게 표현한 것)

2. 종류

크게 구조, 행위 두 가지의 다이어그램으로 이뤄져 있다고 한다.

참고 블로그
1. 구조 다이어그램

  • 클래스 다이어그램 : 클래스의 속성, 함수, 변수타입들로 구성된 다이어그램
  • 객체 다이어그램 : 클래스의 인스턴스, 값이 매겨진 행동을 가지고 있는 독립된 객체 정보를 표현하는 다이어그램
  • 패키지 다이어그램 : UML의 다양한 모델요소를 그룹화한 다이어그램
  • 컴포넌트 다이어그램 : 컴포넌트끼리 구조 관계를 표현한 다이어그램
  • 배치 다이어그램 : 소프트웨어, 하드웨어 등을 포함한 시스템의 물리적인 구조를 나타내는 다이어그램
  1. 행위 다이어그램
  • use case 다이어그램 : 사용자 관점에서 시스템을 표현한 다이어그램

    테스트 시나리오를 만들 때 생각해보면 하고 있던 다이어그램. 잘 생각해보기

  • activity 다이어그램 : 여러 활동들이 순차, 병행 방식 등을 수행하는 상황을 표현한 다이어그램
  • state 다이어그램 : 하나의 객체가 다른 객체와의 상호 작용에 따라 어떻게 변화하는지 표현하는 다이어그램
  • 순서 다이어그램 : 여러 대상 간의 상호작용을 시간순서에 따라 표현한 다이어그램
  • 커뮤니케이션 다이어그램 : 동작에 참여하는 객체들이 주고받는 메시지를 표현하고 메시지 뿐만 아니라 객체 간의 관계까지 표현하는 다이어그램

3. 주요 기호

참고 링크

  • 집합 연관 : 독립적이다라는 것이 포인트
  • 복합 연관 : 연관 관계가 있고 클래스의 생명주기가 같다는 것이 포인트

Meta란?

  • 정의 : 그리스어에서 유래했으며, 사이에, 뒤에, 다음에, 넘어서 라는 뜻

  • 무엇인가 너머라는 뜻으로 상위 개념을 말하는 듯하다.

    찾아보니 거의 다 메타버스 관련 내용이라 딱히 검색 결과는 도움이 되진 않았다. 그래서 chatGPT를 이용해서 답변을 참고해봤다.

  • chatGPT 답변

"IT 분야에서 "meta"는 "메타"라는 접두사로 사용되며, 일반적으로 다른 개념, 데이터, 정보 또는 시스템에 대한 더 높은 수준의 추상화를 나타냅니다. "메타"는 "최상위", "초월적인" 또는 "메타물"을 의미하는 그리스어 "μετά"에서 유래하였습니다. IT 용어로 사용될 때, "meta"는 종종 다음과 같은 의미로 사용됩니다:

  1. 메타데이터 (Metadata): 메타데이터는 데이터에 대한 데이터로, 데이터의 특성, 구조, 의미 등을 설명하는 정보입니다. 예를 들어, 사진의 메타데이터에는 촬영 일자, 카메라 모델, 위치 정보 등이 포함될 수 있습니다.

  2. 메타프로그래밍 (Metaprogramming): 메타프로그래밍은 프로그램을 작성하는 프로그램을 의미합니다. 메타프로그래밍을 사용하면 프로그램의 동작을 제어하고 수정할 수 있는 동적인 프로그램을 작성할 수 있습니다.

  3. 메타언어 (Metalanguage): 메타언어는 다른 언어를 설명하거나 기술하는 언어를 의미합니다. 예를 들어, 프로그래밍 언어를 설명하기 위해 메타언어를 사용할 수 있습니다.

  4. 메타분석 (Meta-analysis): 메타분석은 여러 연구나 실험 결과를 통합하여 통계적으로 분석하는 방법을 말합니다. 여러 연구 결과를 종합하여 더 강력한 결과를 도출할 수 있습니다.

  5. 메타태깅 (Metatagging): 웹 페이지의 HTML 코드에 사용되는 메타태그는 웹 페이지의 정보를 설명하는 데이터를 제공합니다. 이러한 메타태그는 검색 엔진 등이 웹 페이지를 분석하고 색인화하는 데 도움을 줍니다.

이외에도 IT 분야에서 "meta"는 더 높은 수준의 추상화, 기술적인 부가정보, 분석적인 관점 등을 나타내는 데 사용될 수 있습니다. 사용되는 맥락에 따라 "meta"의 의미는 달라질 수 있습니다."

파이썬에서 멤버변수?

이것도 chatGPT에 물어봤다. 똑똑하게 대답해줬다.
파이썬에서 클래스 내에서 사용되는 변수는 "인스턴스 변수"라고도 불리며, 클래스의 멤버로 정의됩니다. 이러한 변수는 클래스의 인스턴스(객체)마다 개별적으로 유지되며, 해당 객체의 상태를 저장하고 다루는 데 사용됩니다.

인스턴스 변수는 클래스 내의 메서드에서 접근하고 수정할 수 있으며, 객체 생성 시에 초기화되거나 이후에 동적으로 값을 할당할 수 있습니다. 객체마다 서로 다른 값을 가질 수 있으며, 한 객체의 인스턴스 변수를 수정해도 다른 객체에는 영향을 주지 않습니다.

예를 들어, 아래의 코드에서 nameage는 클래스 Person의 인스턴스 변수입니다:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("안녕하세요, 저는", self.name, "이고", self.age, "살입니다.")

# 객체 생성
person1 = Person("John", 25)
person2 = Person("Emma", 30)

# 인스턴스 변수에 접근
print(person1.name)  # 출력: John
print(person2.age)   # 출력: 30

# 인스턴스 변수 수정
person1.age = 26
person2.name = "Emily"

# 메서드 호출
person1.say_hello()  # 출력: 안녕하세요, 저는 John 이고 26 살입니다.
person2.say_hello()  # 출력: 안녕하세요, 저는 Emily 이고 30 살입니다.

위 예제에서 nameagePerson 클래스의 멤버로서 각각의 객체에 대해 다른 값을 가지고 있습니다.

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글