자주나오는 용어 정리
07 May 2022
|
Architecture
Terms
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을 부분적으로 공개함으로써 접근을 제어
- 내부의 변경이 시스템 전체에 주는 영향을 최소한으로 억제
- Attribute 와 Method 를 공개하지 않고 숨기고 공개된 인터페이스를 통해서만 접근이 가능하도록 하는 개념
- 공개 범위는 접근지시자를 이용하여 지정
- 내부의 변경이 외부에 미치는 영향을 최소화
Inheritance
- 한 클래스로부터 멤버 함수와 멤버 변수를 물려 받는 것
- 부모 클래스의 기능을 자식 클래스가 재사용할 수 있고 기능을 확장할 수 있다
Polymorphism
- 다형성이란 하나의 객체에 여러 가지 파생 타입을 대입할 수 있다는 것을 의미
Overloading
- 같은 이름의 메서드에 인자에 따라서 다형성을 갖느 것
Overriding
- 자식클래스에서 부모클래스에 의해 제공된 함수를 재구성함
- 같은 시니쳐의 메서드라도 실제 생성된 객체에 따라 메서드를 호출하는 것
Dynamic Binidng
- Runtime 에 실제 Reference 하는 객체의 메서드가 호출되는 것
- 슈퍼 클래스를 서브 클래스가 상속받으면 오버라이딩을 하는데, 생성 타입에 따라서 사용할 메서드를 선택한다.
- OCP 를 가능하게 하는 장치로, 확장한 기능 또는 객체가 기존의 코드 변경 없이 호출되게 만들 수 있음
Modularity
- 클래스 소스 코드는 다른 소스나 클래스와 독립적으로 개발되고 유지보수 될 수 있음.
Substituability
- 서브 타입은 언제나 자신의 기반타입 대신 교체될 수 있어야 한다.
Generic Class & Template
- 미리 정의하지 않은 타입을 매개변수로 지정하여, 내부의 클래스 타입을 컴파일 타임에 교체할 수 있는 것
Reenginnering
- 소프트웨어 기능의 변경없이 구조를 새로운 형식으로 재구성하기 위해 평가하고 변경하는 기술
- Reverse Engineering (검사) + Refactoring (변경)
Refactoring
- 시스템 동작의 변경 없이 이해하기 쉽고 변경하기 쉽도록 소프트웨어의 내부 구조를 변경하는 것
- 응집도를 높이고, 커플링을 낮추는 방향으로 변경
Comments