안녕지구 #developer #bompapa

자주나오는 용어 정리

|

Architecture Design

  • 시스템 개발을 위한 하드웨어 및 소프트웨어 구성 요소, 관계, 인터페이스를 정의하는 프로세스

Architecture Style

  • 가장 높은 추상화 수준에서 Module/Package/Subsystem 의 구조적 디자인
  • 품질 속성 시나리오의 대응 방안을 구현하는데 영향을 미치는 디자인

Architecture Pattern

  • 시스템의 아키텍쳐 스타일을 설명하고 아키텍쳐 스타일의 문제에 대한 솔루션
  • 소프트웨어 아키텍처 안에 공통적으로 발생하는 문제를 풀기 위한 재사용 가능한 솔루션

Design Pattern

  • 클래스 단위에서 부분적인 문제를 해결하기 위해 반복적으로 사용하는 솔루션

Architecture Driver

  • 기능 요구사항(FR), 비기능 요구사항(NFR), 제약 사항 중에서 아키텍쳐에 영향을 주는 요인

Architecture Tatic

  • 품질 속성 시나리오를 만족하기 위한 솔루션에 대한 결정 사항

Procedural Programming

  • 절차와 순서에 포커스를 맞춘 프로그래밍으로 함수의 호출로 프로그램이 구성
  • 유지보수 및 디버깅이 어렵고, 실행 순서가 바뀌면 결과를 보장하기 어렵다.
  • 변경사항이 상위에서 하위로 전파되면서, 피라미드 처럼 모든 프로시져에 영향을 주기 때문에 변경이 어렵다
  • 대표적인 언어로는 C언어가 있다

OOP

  • Encapsulation, Inheritance, Polymorphism 등의 개념을 도입하여 응집도가 높고 커플링이 약하게 구성
  • 모듈화가 쉬워 이해하기 쉽고, 개발하기 쉬운 장점이 있음
  • 우아하게 복잡성을 해결하고 쉽게 적응할 수 있다

Abstraction

  • 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 공통된 기능을 간추려 내는 것
  • 공통의 속성이나 기능을 묶어 클래스를 정의하는 것

Encapsulation

  • 연관된 Attribute 와 Operation을 논리적으로 묶고, 실제 구현 내용을 외부로 부터 감추어 은닉
  • 객체에 관련된 Attribute 나 Operation을 부분적으로 공개함으로써 접근을 제어
  • 내부의 변경이 시스템 전체에 주는 영향을 최소한으로 억제

Information Hiding

  • Attribute 와 Method 를 공개하지 않고 숨기고 공개된 인터페이스를 통해서만 접근이 가능하도록 하는 개념
  • 공개 범위는 접근지시자를 이용하여 지정
  • 내부의 변경이 외부에 미치는 영향을 최소화

Inheritance

  • 한 클래스로부터 멤버 함수와 멤버 변수를 물려 받는 것
  • 부모 클래스의 기능을 자식 클래스가 재사용할 수 있고 기능을 확장할 수 있다

Polymorphism

  • 다형성이란 하나의 객체에 여러 가지 파생 타입을 대입할 수 있다는 것을 의미

Overloading

  • 같은 이름의 메서드에 인자에 따라서 다형성을 갖느 것

Overriding

  • 자식클래스에서 부모클래스에 의해 제공된 함수를 재구성함
  • 같은 시니쳐의 메서드라도 실제 생성된 객체에 따라 메서드를 호출하는 것

Dynamic Binidng

  • Runtime 에 실제 Reference 하는 객체의 메서드가 호출되는 것
  • 슈퍼 클래스를 서브 클래스가 상속받으면 오버라이딩을 하는데, 생성 타입에 따라서 사용할 메서드를 선택한다.
  • OCP 를 가능하게 하는 장치로, 확장한 기능 또는 객체가 기존의 코드 변경 없이 호출되게 만들 수 있음

Modularity

  • 클래스 소스 코드는 다른 소스나 클래스와 독립적으로 개발되고 유지보수 될 수 있음.

Substituability

  • 서브 타입은 언제나 자신의 기반타입 대신 교체될 수 있어야 한다.

Generic Class & Template

  • 미리 정의하지 않은 타입을 매개변수로 지정하여, 내부의 클래스 타입을 컴파일 타임에 교체할 수 있는 것

Reenginnering

  • 소프트웨어 기능의 변경없이 구조를 새로운 형식으로 재구성하기 위해 평가하고 변경하는 기술
  • Reverse Engineering (검사) + Refactoring (변경)

Refactoring

  • 시스템 동작의 변경 없이 이해하기 쉽고 변경하기 쉽도록 소프트웨어의 내부 구조를 변경하는 것
  • 응집도를 높이고, 커플링을 낮추는 방향으로 변경

Comments