DevGang

컴포넌트, 모듈, 프로시저 본문

Study/정리

컴포넌트, 모듈, 프로시저

별천랑 2021. 4. 2. 11:51

컴포넌트 개념의 유래

  많은 하드웨어 제품들은 각각 독립된 기능을 가진 모듈로 만들어진다. 이 제품들은 회사 상관없이 서로 조합하여 하나의 제품이 만들어진다. 이러한 제품들의 부품은 문제가 발생했을 시, 해당 부품만 다른 부품으로 바꾸어도 제품은 문제없이 작동한다. 컴퓨터와 스마트폰과 같은 제품들을 상상해보면 금방 이해가 갈 것이다.

 

 반면에, 소프트웨어에서는 상황이 틀리다. 소프트웨어를 독립적으로 개발되지 않은 경우가 많을뿐더러, 독립적으로 개발되어도 다른 모듈과의 호환을 생각하지 않고 개발한다. 이는 결국 소프트웨어의 재사용을 어렵게 하고 유지보수 비용이 크게 증가하는 원인이 된다. 이러한 상황에서 소프트웨어의 재사용의 중요성과 필용성을 위해 나온 기술이 컴포넌트 기술이다.

컴포넌트는 독립적인 단위 모듈이다.

  하드웨어처럼 독립적인 기능을 수행하고 추후에 교환될 수 있도록 해야 한다. 또한 컴포넌트의 세부사항은 겉으로 드러나선 안 되는 것이며, 일부러 끄집어 내려는 시도조차 하지 말아야 한다. 필요한 것은 단지 해당 컴포넌트를 쓰기 위해 제공해주는 일종의 '장치'가 필요하다. 예를 들어서, 스마트폰의 배터리 수명이 다했을 경우 배터리를 새로 구입하여,

스마트폰에서 배터리만 교체했을 것이다. 이때 스마트폰 단자와 배터리 단자가 맞물려야 제 기능을 발휘하는데 이때 배터리 단자가 앞서 말했던 일종의 '장치'가 된다.

컴포넌트 개념을 객체지향 언어에 대입

  스마트폰과 배터리가 각각 독립적으로 문제없이 돌아간다고 가정할 때, 상호 간의 단자만 규격에 맞을 시, 

어떠한 배터리를 교환하더라도 스마트폰은 정상 작동할 것이다. 이와 같이 소프트웨어에서도 단자와 같은 일종의 장치가 필요하다. 객체지향 언어에서는 이러한 장치를 인터페이스(interface)로 제공해준다. 인터페이스는 사용자에게 해당 소프트웨어를 쓰기 위한 메서드(=장치)를 공개하고, 규격화된 메서드 환경에서 소프트웨어를 개발할 수 있는 환경을 제공해준다. 소프트웨어의 세부내용은 인터페이스를 구현받은 클래스가 작성한다. 이렇게 함으로써 객체지향 개념은 정보은닉 개념을 수행할 수 있을뿐더러, 각각 독립된 모듈로 소프트웨어를 만들 수 있도록 크게 이바지할 수 있다.

 

 결론적으로, 컴포넌트는 각각 독립된 모듈을 뜻하며, 이는 흔히 JAVA 같은 oop 언어 등의 class 등의 개념과는 다르다. 하나의 컴포넌트는 하나의 클래스로만 작성될 수 도 있지만, 여러 개의 클래스로도 작성될 수 있기 때문이다. 컴포넌트 개념을 잘 적용한 소프트웨어란 부품(인터페이스를 구현받은 클래스)만 바꾸어 주었을 시, 오류 없이 잘 작동되는 것 을 의미한다.

 

출처: https://mommoo.tistory.com/55 [개발자로 홀로 서기]

모듈이란

 모듈(module)또는 라이브러리(library)란 다양한 용도로 사용될 수 있는 프로시저를 제공하는 소프트웨어입니다. 모듈과 라이브러리는 수많은 소프트웨어의 실행에 필요하며, 그 소프트웨어들에 내장되거나 함께 배포되곤 합니다.

프로시저(Procedure)

 특정 작업을 수행하기 위한 순차적인 명령의 나열입니다. 전체 프로그램 흐름을 구성하는 부분 프로그램이며, 프로그램 속에서 여러 차례 재사용될 수 있습니다. 흔히 함수(function), 메서드(method), 서브루틴(subroutine)이라는 용어로도 불리며, 이 용어들을 혼용하기도 합니다만, 엄밀하게 정의하면 의미가 조금씩 다릅니다.

 

출처 : 한 권으로 그리는 컴퓨터과학 로드맵 / 블라드스톤 페헤이라 필루 저

 

* 함수 < 클래스 < 객체, 인스턴스 < 모듈 < 패키지 < 컴포넌트

 

함수 - 가장 기본적인 기능 단위

 

클래스 - 변수와 함수들을 포함하는 특정 기능들의 집합

객체 - 클래스를 정의된 것을 선언해줌으로 만들어지는 것을 객체

인스턴스 - 객체가 메모리에 떠 있는 것을 의미, 프로그램을 운영체제에서 실행하데 되면 인스턴스화

 

이 함수들이 엮어서 기능들을 만들게 되는데요. 의미있는 묶음으로 묶어서 사용하는데, 이를 모듈이라고 합니다.

모듈 - import 하는 선언을 통해서 기능들을 추가할 수 있는데, 이러한 기능들(함수)의 집합이 모듈임.

모듈 - 기능(함수)들의 집합

 

패키지 - 모듈들의 모음

 

컴포넌트 - 특정 기능들의 모음이자 재사용가능한 단위 독립적으로 실행될 수 있는 것 프로그램과 달리 개발에 사용할 수 있게끔 명세화되고, 사용할 수 있어야 함. 그래서 CBD(Component Based Development)라는 것은 이렇게 독립적으로 기능들을 만들고, 다른 개발 파트에서 활용할 수 있게 하자라는 개념이고, 외부 인터페이스가 있어야 합니다.

이는 안드로이드 개발 시에도 액티비티 같은 것을 만들고 나면 재사용할 수 있는데 이 레벨이 컴포넌트입니다.

'Study > 정리' 카테고리의 다른 글

데이터 구조  (0) 2021.04.07
절차 지향  (0) 2021.04.02
시간 복잡도  (0) 2021.04.02
[IntelliJ] Spring Framework Tomcat 설정하기  (0) 2021.03.08
[IntelliJ] 기존 Spring Framework 세팅하기  (0) 2021.03.08
Comments