이론공부/IT 개념정리

용어 정리 라이브러리, 프레임워크, 퍼블리싱

뽀사장 2024. 1. 19. 15:34
728x90
반응형

1. 라이브러리

재사용 가능한 코드의 집합으로서, 특정 기능을 수행하기 위해 미리 작성된 함수, 클래스, 모듈 등을 포함한다

다양한 라이브러리를 사용하면 개발자는 새로운 코드를 작성하지 않고 기존의 코드를 활용하여 작업을 수행할 수 있다

 

a. 특징

- 재사용성: 라이브러리는 여러 프로젝트에서 재사용될 수 있다. 이는 개발 시간을 단축하고 효율성을 향상시킨다

- 모듈화: 라이브러리는 각각의 기능이나 모듈로 구성되어있어 필요한 부분만 사용할 수 있다

- 유지보수 용이성: 라이브러리의 업데이트나 버그 수정이 필요할 때, 해당 라이브러리만 업데이트 하면 되므로 유지보수가 용이하다

 

b. 종류

- 표준 라이브러리: 언어 자체에 기본적으로 포함된 라이브러리로, 언어 개발사에서 제공하는 기본 기능들을 포함한다. 예를 들어 코틀린 표준 라이브러리는 언어에 내장되어있다

- 외부 라이브러리: 개발자 또는 커뮤니티에 의해 개발되어 제공되는 라이브러리로, 프로젝트에 필요한 특정 기능을 확장하거나 제공한다. 외부 라이브러리는 주로 패키지 관리 도구를 사용하여 프로젝트에 추가된다

(예시)

// 표준 라이브러리의 예시

fun main() {

      val list = list0f(1, 2, 3, 4, 5)

      println(list.sum()) // 표준 라이브러리의 함수를 사용하여 리스트의 합을 계산

}

 

// 외부 라이브러리의 예시 (JUnit 라이브러리를 사용한 단위 테스트)

import org.junit.Test

import kotlin.test.assertEquals

 

class MyUnitTest {

      @Test

       fun testSum() {

             val result = sum(3, 5)

             assertEquala(8, result)

       }

 

      private fun sum(a: Int, b: Int): Int {

             return a + b

       }

}

 

 

c. 라이브러리 관리

- 코틀린은 Maven, Gradle과 같은 패키지 관리 도구를 사용하여 외부 라이브러리를 프로젝트에 추가한다

- 패키지 관리 도구는 라이브러리의 버전 관리 및 의존성 해결을 도와준다

 

라이브러리는 프로그래밍 생태계에서 핵심적인 역할을 하며, 개발자는 필요에 따라 다양한 라이브러리를 활용하여 효율적으로 프로젝트를 진행할 수 있다

 

 

2. 프레임워크

소프트웨어 개발을 위한 구조나 뼈대를 제공하는 추상적인 구조체다

애플리케이션을 개발하기 위한 구조와 규칙을 제공하는 특별한 환경이라고 보면 된다

개발자는 프레임워크를 사용하여 자신의 애플리케이션을 개발하며, 프레임워크는 개발자가 직접 구현하지 않아도 되는 일부 기능을 제공한다

 

a. 특징

- 역할 분리: 역할을 분리하여 각 부분에 대한 책임을 명확히 정의한다. 이로써 개발자는 특정 부분에 집중하며 개발할 수 있다

- 재사용성: 일반적인 기능이나 패턴을 재사용 가능한 형태로 제공하여 개발자가 반복해서 구현하지 않아도 된다

- 확장성: 새로운 기능이나 모듈을 쉽게 추가할 수 있도록 확장성을 제공한다

- 표준화: 일정한 규칙과 표준을 제공하여 개발자 간의 협업을 쉽게 한다

- 제어 역전: 애플리케이션의 흐름을 제어하고, 개발자가 정의한 코드를 호출하는 방식으로 동작한다

 

b. 웹 프레임워크

- Spring Framework(Java): 자바 기반의 엔터프라이즈 애플리케이션을 개발하는 데 사용되는 포괄적인 프레임워크

- Django (Python): 파이썬 기반의 웹 애플리케이션을 빠르게 개발하기 위한 프레임워크

 

c. GUI 프레임워크

- Qt(C++): 크로스 플랫폼 GUI 응용 프로그램을 개발하기 위한 프레임워크

- JavaFX(Java): 자바 기반의 GUI 응용 프로그램을 개발하기 위한 프레임 워크

 

d. 웹 애플리케이션 프레임워크:

- Ruby on Rails(Ruby): 루비 기반의 웹 애플리케이션을 빠르게 개발하기 위한 프레임워크

- Express.js(JavaScript): Node.js 기반의 웹 애플리케이션을 위한 경량 프레임워크.

 

e. 프레임워크 사용의 예시

// Spring Framework를 사용한 간단한 웹 애플리케이션 개발

 

// Controller 클래스 정의

@RestController

class MyController {

 

     @GetMapping("/hello")

      fun hello(): String {

            return "Hello, World!"

       }

}

 

// 메인 애플리케이션 클래스

@SpringBootApplication

class MyApplication

 

// 애플리케이션 실행

fun main(args: Array<String>) {

      runApplication<MyApplication>(*args)

}

 

위 예시 코드는 Spring Framework를 사용하여 간단한 웹 애플리케이션을 개발하는 예시다

개발자는 'MyController'클래스를 작성하여 '/hello'경로로의 요청에 대한 응답을 정의하고, 'MyApplication'클래스를 실행하여 애플리케이션을 시작한다

Spring Framework는 내부적으로 애플리케이션의 생명주기를 관리하고, HTTP 요청을 'MyController'에 매핑하여 처리한다

 

 

*** 프레임워크와 라이브러리의 차이점과 제어역전

- 집짓기에 두가지를 비교하자면 프레임워크는 모델하우스라고 할 수 있다. 모델하우스는 가구의 위차나 방의 용도를 우리가 수정할 수 있는 범위가 제한적이고 주방의 위치, 기둥의 개수, 방의 개수 등 집을 이루고 있는 굵직한 뼈대는 수정할 수 없다. 사용자는 모델하우스가 제공하는 청사진 안에서만 움직일 수 있다. 프레임 워크가 제공하는 틀에 따라 코드를 작성해야하는거이므로 통제권을 사용자가 아닌 프레임워크가 쥐고있다고 보면 된다

- 라이브러리는 이케아에서 산 재료로 가구를 조립하는것에 비유할 수 있다. 집겡서 아용할 가구를 조립하거나 만들기 위해 나무부터 공수를하는게 아니라 이케아 혹은 가구점에 가서 기본적인 재료를 사서 입맛대로 조립하고 배치할 수 있다. 재료의 선택권이나 통제권이 사용자에게 있는 것이다

- 제어역전이란, 개발자가 해왔던 일(제어)을 프로그램. 즉, 프레임워크가 대신 해준다는 의미이다

스프링과 같은 프레임워크를 사용하다보면, 스레드를 직접 만들고, 객체의 생명주기를 직접 코딩하진 않는 것 처럼. 원래 개발자가 가지고 있어야 할 객체의 제어권을 프레임워크가 대신 해준다는 의미로, "제어권이 역전되었다"라는 뜻에서 제어역전이라고 한다

 

 

 

 

3. 퍼블리싱

제작한 콘텐츠를 외부로 공개하거나 배포하는 과정을 말한다

주로 디자인, 콘텐츠 제작, 웹 개발 등의 작업을 거쳐 만들어진 결과물을 다양한 매체나 플랫폼에 공개하거나 유통하는 것을 의미한다

 

a. 퍼블리싱의 주요 단계

- 디자인 및 콘텐츠 제작: 콘텐츠의 시각적인 부분과 내용을 디자인하고 작성한다

- 개발: 웹사이트, 앱 또는 다른 디지털 콘텐츠를 만들기 위한 프로그래밍 및 기술적인 작업을 수행한다

- 테스트: 완성된 콘텐츠나 애플리케이션을 다양한 환경에서 테스트하여 문제를 찾고 수정한다

- 배포: 제작된 콘텐츠를 웹사이트, 앱스토어, 인쇄물 등 다양한 매체나 플랫폼에 배포한다

- 마케팅 및 홍보: 공개된 콘텐츠를 대상 사용자에게 알리고 홍보하여 시장에서 주목받을 수 있도록 한다

 

b. 퍼블리싱의 예시

- 웹사이트 퍼블리싱: 디자인 및 콘텐츠 제작 후, 웹사이트를 호스팅 서버에 업로드하여 공개한다. 이후 마케팅을 통해 사용자들에게 알려지고 접근할 수 있게 된다

- 앱 퍼블리싱: 모바일 앱을 개발한 후, 해당 앱을 앱 스토어에 등록하여 사용자들이 다운로드하고 설치할 수 있게 한다. 이때 앱의 설명, 스크린샷, 평가 등을 통해 사용자에게 앱의 특징을 전달한다

- 인쇄물 퍼블리싱: 책, 잡지, 포스터 등의 인쇄물을 제작한 후, 출판사나 인쇄소 등을 통해 대중에게 배포한다

 

c. 퍼블리싱과 개발의 차이

- 퍼블리싱: 주로 디자인, 콘텐츠 제작, 마케팅 등을 중심으로 완성된 결과물을 다양한 매체에 배포하는 과정을 의미한다

- 개발: 주로 소프트웨어, 앱, 웹사이트 등의 기술적인 부분을 중심으로 코드 작성, 테스트, 배포 등을 수행하는 과정을 의미한다

 

퍼블리싱은 제작한 콘텐츠나 애플리케이션을 사용자들과 공유하는 중요한 단계이며, 이를 통해 제품이나 서비스가 시장에서 활발한 활동을 할 수 있게 된다

 

728x90
반응형