크로스 플랫폼 :
하나 이상의 플랫폼에서 실행 가능한 소프트웨어라는 것을 뜻하는 용어. 예시로, 한 앱이 안드로이드와 아이폰에서 기능상, 외관상의 차이 없이 똑같게 실행된다면 그 앱은 크로스 플랫폼으로 개발된 것이라 볼 수 있다.
'용어정리 및 개념정리' 카테고리의 다른 글
컴포넌트(component) (0) | 2018.03.14 |
---|---|
카디널리티(cardinality) (0) | 2018.03.08 |
크로스 플랫폼 :
하나 이상의 플랫폼에서 실행 가능한 소프트웨어라는 것을 뜻하는 용어. 예시로, 한 앱이 안드로이드와 아이폰에서 기능상, 외관상의 차이 없이 똑같게 실행된다면 그 앱은 크로스 플랫폼으로 개발된 것이라 볼 수 있다.
컴포넌트(component) (0) | 2018.03.14 |
---|---|
카디널리티(cardinality) (0) | 2018.03.08 |
컴포넌트 개념의 유래
많은 하드웨어 제품들은 각각 독립된 기능을 가진 모듈로 만들어진다.
이 제품들은 회사 상관없이 서로 조합하여 하나의 제품이 만들어진다.
이러한 제품들의 부품은 문제가 발생했을 시,
해당 부품만 다른 부품으로 바꾸어도 제품은 문제없이 작동한다.
컴퓨터와 스마트폰과 같은 제품들을 상상해보면 금방 이해가 갈것이다.
반면에, 소프트웨에 에서는 상황이 틀리다.
소프트웨어를 독립적으로 개발되지 않은 경우가 많을 뿐더러, 독립적으로 개발되어도
다른 모듈과의 호환을 생각하지 않고 개발한다.
이는 결국 소프트웨어의 재사용을 어렵게 하고 유지보수 비용이 크게 증가하는 원인이 된다.
이러한 상황에서 소프트웨어의 재사용의 중요성 과 필용성을 위해 나온 기술이 컴포넌트 기술이다.
컴포넌트는 독립적인 단위모듈이다.
하드웨어처럼 독립적인 기능을 수행하고 추후에 교환될 수 있도록 해야한다.
또한 컴포넌트의 세부사항은 겉으로 드러나선 안되는것 이며, 일부러 끄집어 내려는 시도조차
하지 말아야 한다. 필요한것은 단지 해당 컴포넌트를 쓰기 위해 제공해주는 일종의 '장치'가 필요하다.
예를들어서, 스마트폰의 밧데리 수명이 다했을 경우 밧데리를 새로 구입하여,
스마트폰에서 밧데리만 교체했을 것이다. 이때 스마트폰 단자와 밧데리 단자가 맞물려야 제 기능을
발휘하는데 이때 밧데리 단자가 앞서 말했던 일종의 '장치'가 된다.
컴포넌트 개념을 객체지향 언어에 대입
스마트폰과 밧데리가 각각 독립적으로 문제없이 돌아간다고 가정할때, 상호간의 단자만 규격에 맞을시,
어떠한 밧데리를 교환하더라도 스마트폰은 정상 작동할 것이다.
이와 같이 소프트웨어 에서도 단자와 같은 일종의 장치가 필요하다. 객체지향 언어에서는 이러한 장치를
인터페이스(interface)로 제공해준다. 인터페이스는 사용자에게 해당 소프트웨어를 쓰기위한
메서드(=장치)를 공개하고, 규격화된 메서드 환경에서 소프트웨어를 개발할 수 있는 환경을 제공해준다.
소프트웨어의 세부내용은 인터페이스를 구현받은 클래스가 작성한다.
이렇게 함으로써 객체지향 개념은 정보은닉개념을 수행할 수 있을 뿐더러,
각각 독립된 모듈로 소프트웨어를 만들수 있도록 크게 이바지 할 수 있다.
결론적으로, 컴포넌트는 각각 독립된 모듈을 뜻하며, 이는 흔히 JAVA같은 oop 언어등의 class등의
개념과는 다르다. 하나의 컴포넌트는 하나의 클래스로만 작성될 수 도 있지만, 여러개의 클래스로도
작성될 수 있기 때문이다. 컴포넌트 개념을 잘 적용한 소프트웨어란 부품(인터페이스를 구현받은 클래스)
만 바꾸어 주었을시, 오류 없이 잘 작동 되는것 을 의미한다.
1. 컴포넌트는 독립적인 소프트웨어 모듈이다
컴포넌트를 한마디로 표현하자면 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 모듈로서 이후 시스템을 유지보수하는데 있어 교체가 가능한 부품이다.
소프트웨어 컴포넌트는 하드웨어의 그래픽카드와 같은 개념으로 독립적인 기능을 수행하는 소프트웨어 모듈이라고 설명할 수 있으며 소프트웨어 컴포넌트는 컴포넌트란 말로 대체되어 사용되고 있다.
2. 컴포넌트는 구현, 명세화, 패키지화, 그리고 배포될 수 있어야 한다
컴포넌트의 정의나 형태는 관점에 따라 다양하게 존재하지만 재사용 부품으로서의 컴포넌트가 되기 위해서는 아래의 내용들을 만족해야만 한다.
소스코드(Source Code)가 아닌 실행코드(Executable Code) 기반으로 재사용할 수 있도록 이미 구현(Implementation)이 완료되어 있어야만 한다
컴포넌트는 해당 컴포넌트의 용도, 유형, 기술표준과 인터페이스등에 대한 정보들에 대해서 명세화(Specification) 되어 있어야만 한다
교체가능한 컴포넌트를 개발하기 위해서는 표준(Standard)을 준수하여 개발해야 한다
컴포넌트가 개발되어 배포될 때 관련 문서와 코드들이 독립적인 단위로 패키지화(Packaging)되어 있어야만 한다
컴포넌트는 독립적인 업무단위로 개발된 것이므로 사용자가 필요한 기능만을 패키지한 컴포넌트를 재사용할 수 있도록 독립적으로 배포(Deployment) 가능해야만 한다
3. 하나의 컴포넌트는 하나 이상의 클래스들로 구성될 수 있다
컴포넌트와 클래스는 다른 개념이며 컴포넌트와 객체 또한 다른 개념이므로 컴포넌트가 되기 위해서 반드시 클래스나 객체로 만들어야만 하는 것은 아니다. 기존의 C나 Cobol로 개발된 모듈 또한 컴포넌트로 만들수 있으나 현재의 컴포넌트 기술 표준들과 핵심개념들이 객체지향에서 비롯된 개념들이 많아 컴포넌트를 개발하는데 있어 객체지향 기술을 바탕으로 하는 것이 보다 효과적일 수 있다. 하나의 컴포넌트를 개발하기 위해서는 하나 이상의 클래스들을 바탕으로 개발할 수 있으며 이렇게 개발된 컴포넌트가 실행될 때 해당 컴포넌트의 인스턴스(Instance)인 컴포넌트 객체가 수행된다. 이때 컴포넌트 내부에는 하나 이상의 클래스에 대응하는, 하나 이상의 객체들이 수행되고 있는것이라고 생각할 수 있다
4. 컴포넌트는 인터페이스를 통해서만 접근할 수 있다
컴포넌트내의 정보는 외부로부터 모두 숨겨진다. 따라서 외부에서 접근할 수 있도록 컴포넌트가 제공하는 서비스를 정의한 인터페이스만을 제공하고 컴포넌트를 사용하기 위해서는 어떤 인터페이스를 사용해야 하는지만을 알수 있다. 따라서 인터페이스는 외부와의 연결을 위해 반드시 존재해야만 하며 이처럼 컴포넌트가 내부 정보를 숨기고 인터페이스만 제공함으로써 소프트웨어도 하드웨어처럼 조립 기반으로 갈수 있게 되는 것이다.
출처:
http://mommoo.tistory.com/55 [개발자로 홀로 서기]
http://blog.naver.com/PostView.nhn?blogId=k1qpo&logNo=104169141
크로스플랫폼 (0) | 2018.05.17 |
---|---|
카디널리티(cardinality) (0) | 2018.03.08 |
cardinality 란 사전적 의미로는 집합원의 갯수라고 합니다. (원소의 개수)
쉽게 이야기 하자면..
cardinality 가 낮은 경우의 대표적인 속성들로는 성별, 부서, 지역 등이 있을 수 있습니다.
대표적으로는 성별로 들 수 있는데, 성별의 속성에는 남자, 여자 의 두개의 데이터 값만 들어 갈 수 있기 때문에 cardinality 가 낮다고 이야기 할 수 있고,
cardinality 가 높은 경우의 대표적인 속성들로는 주민번호, 사원번호 등이 있을 수 있고,
대표적으로는 주민번호 를 들 수 있는데, 대한민국 전체 인구가 서로 다른 주민번호를 갖고 있기 때문에
cardinality 가 높다고 이야기 할 수 있습니다.
크로스플랫폼 (0) | 2018.05.17 |
---|---|
컴포넌트(component) (0) | 2018.03.14 |