본문 바로가기

study_IT/개발 용어 사전

[ 121 ~ 130 ] Coding Convention, JAR, 형상관리, Major Upgrade, Minor Upgrade, Spring Framework, Repository, Git, FQCN, Inversion of Control

728x90
반응형

121. Coding Convention

프로그래밍 언어를 사용하여 코드를 작성할 때 일관성을 유지하고 가독성을 높이기 위해 정의된 규칙의 모음 (코드의 구조, 명명 규칙, 들여쓰기, 주석 사용 등)

프로젝트 팀이 일관된 코드 스타일과 구조를 유지할 수 있도록 도와주며, 코드의 가독성을 높이고 유지보수를 쉽게 만든다. 

예) 들여쓰기 (Indentation), 변수와 함수명 (Variable and Function Names), 주석 (Comments), 상수 (Constants), 클래스와 메서드 구조 (Class and Method Structure), 예외 처리 (Exception Handling), 파일 구조 (File Structure), 프로그래밍 언어 특정 규칙 (Language-Specific Rules) 등

Coding Convention은 프로젝트 팀이 일관된 코드 스타일을 유지하고 협업을 원활하게 하기 위해 매우 중요하다. 일반적으로 각 언어나 프레임워크마다 추천하는 코딩 규칙이 있으며, 이러한 규칙을 따르면 코드의 가독성이 높아지고 유지보수가 편리해진다.

 

122. JAR

"Java Archive"의 약어로, 자바 애플리케이션의 클래스, 리소스 및 관련 파일을 하나의 아카이브 파일로 패키징하는 데 사용되는 파일 형식. JAR 파일은 여러 개의 클래스 파일과 라이브러리, 이미지, 소리 파일 등을 포함할 수 있으며, 이를 하나의 단일 파일로 묶어서 배포하고 실행하는 데 사용됨.


JAR 파일의 주요 특징 : 압축된 형식, 자바 클래스와 리소스 포함, 매니페스트 파일 포함, 클래스패스(Classpath) 설정, 배포와 실행 편의성 등

JAR 파일은 Java 개발자들이 프로그램을 패키징하고 배포하는 데 널리 사용되며, 다수의 라이브러리와 프레임워크도 JAR 파일 형식으로 제공된다. Java 개발 환경에서는 JDK(Java Development Kit)에 기본적으로 포함되어 있어, 개발자들은 JAR 파일을 손쉽게 생성하고 사용할 수 있다.

 

123. 형상관리(Version Control 또는 Source Control)

소프트웨어 개발 프로젝트에서 코드와 관련 자산들의 버전과 변경 이력을 체계적으로 관리하는 프로세스와 도구. 형상관리 시스템은 여러 개발자가 협업하는 프로젝트에서 개발 작업을 조직하고 추적하며, 변경사항을 관리하고 복구하는 등의 목적이 있다.

  

형상관리의 주요 목표와 기능: 버전 관리, 동시 공유와 협업, 복원 및 롤백, 추적성과 감사, 변경 분석 등

 

124. Major Upgrade

소프트웨어의 주요 버전 업데이트. 소프트웨어의 중요한 변경 사항이나 새로운 기능이 도입될 수 있다.

주요 버전이 변경되면 기존 버전과의 호환성이 일부 또는 완전히 손실될 수 있으며, 사용자는 새 버전으로 업그레이드할 때 주의해야 한다. 일반적으로 소프트웨어의 기능, 성능, 안정성 및 보안 측면에서 큰 변화가 있을 때 이루어진다.

예) 새로운 기능 추가 (New Features), 성능 향상 (Performance Improvements), 보안 강화 (Security Enhancements), 인터페이스 및 디자인 개선 (Interface and Design Enhancements), 하위 호환성(Historical Compatibility) 유지 또는 중단, API 변경 (API Changes) 등

Major Upgrade는 소프트웨어의 중요한 발전 단계를 나타내며, 사용자 및 이해관계자들에게 새로운 기능과 혜택을 제공함으로써 제품이나 서비스의 가치를 높이는 역할을 한다.

 

125. Minor Upgrade

주로 보안 패치, 버그 수정, 성능 향상 등 주요 업그레이드(Major Upgrade)보다 작은 범위의 업데이트

일반적으로 소프트웨어의 작은 수정, 개선, 버그 수정, 안정성 향상, 성능 향상 및 일반적인 기능 업데이트를 포함한다. 부분 업데이트는 주요 기능에 큰 변화를 가져오지 않으며, 기존 버전과의 호환성을 유지하려는 경향이 있다.

예) 버그 수정 (Bug Fixes), 보안 패치 (Security Patches), 성능 향상 (Performance Improvements), 기능의 작은 추가 또는 수정 (Minor Feature Additions or Modifications), 인터페이스 수정 (Interface Modifications), 작은 문서 업데이트 (Minor Documentation Updates) 등

Minor Upgrade는 일반적으로 Major Upgrade에 비해 작은 범위의 변경사항을 포함하며, 주로 소프트웨어의 안정성과 신뢰성을 향상시키는 데 중점을 둔다. 사용자들이 이러한 업데이트를 적용하면서 소프트웨어를 계속해서 최신 상태로 유지할 수 있다.

 

126. Spring Framework

자바 기반의 웹 애플리케이션 및 서비스 개발을 위한 포괄적인 프레임워크로, 의존성 주입(Dependency Injection)과 관점 지향 프로그래밍(Aspect-Oriented Programming)을 지원하며, 웹 개발, 데이터 액세스, 보안 등 다양한 기능을 제공한다.


Spring Framework의 주요 특징과 구성 요소 : Inversion of Control (IoC), 의존성 주입 (Dependency Injection), AOP (Aspect-Oriented Programming), 트랜잭션 관리 (Declarative Transaction Management), MVC 웹 프레임워크, 데이터 액세스/통합 (Data Access/Integration), 보안 (Security), 모듈화 (Modularity) 등

Spring Framework는 엔터프라이즈 애플리케이션의 개발을 더 쉽고 효율적으로 만들어주는 강력한 도구로 폭넓게 사용되고 있으며, Java 기반의 웹 애플리케이션부터 대규모 엔터프라이즈 시스템까지 다양한 프로젝트에서 널리 사용되고 있다.

 

127. Repository

프로그램 개발을 위한 코드를 관리하고 협업하는 공간. 주로 코드 버전 관리 시스템을 사용하여 이러한 저장소를 관리하며, 가장 널리 사용되는 코드 버전 관리 시스템은 Git이다. 저장소를 사용하면 코드의 히스토리를 관리하고, 버그 수정, 새로운 기능 추가, 코드 리팩토링 등을 추적하여 개발 프로세스를 효과적으로 관리할 수 있다. 저장소를 이용하면 여러 사람이 동시에 작업하고 변경 사항을 통합하는 것도 가능해지므로 팀의 협업이 용이해진다.

 

128. Git

Git은 버전 관리 시스템(Version Control System, VCS) 중 하나로, 소스 코드의 버전 및 변경 내역을 효과적으로 관리하는 도구이다. 개발자들이 협업하며 소프트웨어 개발을 할 때 코드의 변경 사항을 추적하고 다양한 버전을 관리하는데 사용된다. 분산된 구조 덕분에 중앙 서버에 대한 의존성이 줄어들고, 네트워크가 불안정한 상황에서도 작업할 수 있다.


Git의 주요 특징: 분산 버전 관리, 브랜치 (Branch) 기능, 병합 (Merge) 기능, 이력 관리, 원격 저장소 (Remote Repository) 지원, 빠른 속도와 효율적인 저장 방식, Commit(커밋), Pull Request(풀 리퀘스트) 등


Git은 변경된 파일만을 저장하고 전체 파일을 저장하지 않아 빠른 속도와 효율적인 저장 방식을 제공한다.
Git은 오픈 소스이며, 다양한 운영 체제(Windows, macOS, Linux 등)에서 사용할 수 있다. Git 명령행 도구 외에도 다양한 그래픽 사용자 인터페이스(GUI) 도구도 제공되어 사용자의 선호에 따라 선택할 수 있다. Git을 사용하면 팀 프로젝트의 협업을 더욱 효율적으로 관리할 수 있으며, 코드의 품질을 유지하고 발전시킬 수 있다.

 

129. FQCN (Fully Qualified Class Name)

Java나 다른 객체 지향 프로그래밍 언어에서 클래스를 완전히 정확하게 식별하기 위해 사용되는 클래스의 이름을 나타낸다. 클래스 이름은 패키지 이름과 클래스의 이름을 합쳐서 구성된다. 패키지 이름은 클래스가 속한 계층적인 이름 공간을 나타내며, 클래스의 이름은 그 패키지 내에서 유일한 식별자이다. 이 두 가지 정보를 결합하여 FQCN을 형성한다.

예를 들어, 자바의 "java.util" 패키지에 있는 "ArrayList" 클래스의 FQCN은 다음과 같다: java.util.ArrayList

FQCN은 클래스의 이름 충돌을 방지하고, 클래스가 정확하게 식별되며 로드되도록 보장하는데 도움이 된다. 특히 여러 패키지에서 클래스 이름이 같은 경우에 중요한 역할을 한다.

FQCN은 클래스의 정확한 위치를 지정하므로, 패키지 구조와 클래스 명명 규칙을 잘 이해하고 사용하는 것이 중요하다.

 

130. Inversion of Control (IoC)

소프트웨어 디자인 패턴의 하나로, 컴퓨터 프로그램의 제어 흐름이 일반적인 방식과는 다르게 제어되는 원리를 나타낸다. 이 패턴은 프로그램의 컴포넌트 간의 의존성을 관리하고 코드의 유연성과 재사용성을 향상시키는 데 사용된다. 일반적인 프로그래밍 방식에서는 코드의 흐름을 개발자가 제어하며, 필요한 컴포넌트를 생성하고 관리하지만, IoC에서는 이러한 제어 흐름을 역전시켜서 프레임워크나 컨테이너가 컴포넌트의 생성과 관리를 담당한다. 즉, 개발자는 컴포넌트의 동작 방식에 초점을 맞추고, 컨테이너가 컴포넌트의 생명주기와 의존성을 관리한다.

 

IoC의 핵심 아이디어는 "제어의 역전"이다. 개발자가 제어의 흐름을 결정하지 않고, 외부에서 제어되는 구조를 만들어 유연성을 높이고 코드의 재사용성을 높인다. 이를 통해 코드의 결합도를 낮추고 의존성 관리를 용이하게 만들어 대규모 소프트웨어 개발에 유리한 환경을 조성한다.

 

일반적으로 IoC 컨테이너는 여러 디자인 패턴 중 하나인 "DI(Dependency Injection) 컨테이너"를 사용하여 IoC를 구현한다. 대표적인 DI 컨테이너로는 Spring Framework에서 제공하는 B가 있다. 이러한 컨테이너를 사용하면 객체 간의 의존성을 쉽게 주입하고 관리할 수 있다. IoC는 코드의 유지보수성, 테스트 용이성, 확장성을 향상시키는데 기여하며, 모듈 간의 결합도를 낮추어 더 유연하고 확장 가능한 소프트웨어를 설계하는 데 도움을 준다.

 

IoC는 주로 다음과 같은 방식으로 구현된다.

1) 의존성 주입(Dependency Injection, DI) : 컴포넌트가 필요로 하는 의존성을 외부에서 주입받는 방식. 컨테이너는 컴포넌트 생성 시 해당 컴포넌트가 필요로 하는 다른 컴포넌트를 자동으로 주입한다.

2) 컨테이너/프레임워크 사용: IoC 컨테이너나 프레임워크를 사용하여 컴포넌트의 라이프사이클 관리와 의존성 관리를 수행한다. 대표적인 예로 Spring Framework(BeanFactory, ApplicationContext)가 있다.

 

이와 같은 IoC 패턴은 코드의 유지 보수성과 확장성을 향상시키며, 테스트 가능한 코드 작성을 촉진한다.

 

728x90
반응형