시소당
내가 프로그래밍 입문시절 가장 힘들었던 것은 용어에 대한 정의였다.
또하나, 기술에 대한 전체적인 지도를 그리는 것이었다.
어떤 기술이 왜, 언제, 어떻게 쓰여지는지..등등..
이번 주제도 요즘 화두가 되고 있는 프레임웍과 컴포넌트에 대해 확실히 개념정립을 해드리고자 한다.
어떤 설명이든 실제 생활속에 사건이나 사물들과 비교해서 이루어지면 이해가 쉬워진다.
이번 설명은 컴퓨터 조립과 관련지어서 설명하겠다.
Object (부품:칩)
- 컴퓨터 부품과 비교된다.
- ex) CPU, 트랜지스터, 다이오드, 프로펠러, 모터, 납, 기판, I/O칩, RAM 칩, RAM 기판, 케이스, 콘덴서, 전선 등등...
- 재사용성: 모든 부품 재사용 가능하다. 꼭 컴퓨터가 아닌 여러 전자 제품에서 재사용할 수 있다.
- 조립난이도: 전문가의 손길이 필요.조립 속도 가장 늦다.
- 시스템 안정성: 약간의 납땜 및 장착 실수가 시스템에 악영향을 미친다.
- 디버깅: 오류 발생시 어디서 왜 발생했는지 찾는데 시간이 많이 든다.
Component (반제품:보드)
- CPU, 컴퓨터의 랜카드, VGA카드, 메인보드, 모듈램 등 반제품 상태
- ex) 랜카드, VGA카드, 모듈램, 메인보드, 파워서플라이, 케이스, CPU 팬, HDD 등등...
- 재사용성: 재사용하기가 부품보다는 수월하지만 재사용의 범위가 컴퓨터 제품 만드는 영역에 한정된다.
- 조립난이도: 부품을 직접 납땜질하는거 보다는 수월. 수퍼사용자 정도면 조립가능. 부품 땜질하는것 보다는 조립속도 빠르다.
- 시스템 안정성: 부품을 직접 납땜질하는거 보다는 제품 완성 후 안정성이 훨씬 좋다.
- 디버깅: 제품의 오류 발생시 보드 단위로 교체하면서 테스트 할 수 있고, 아예 보드 단위로 테스트 되어서 나왔을 것이다.
- 이때 중요한것, Component 단위로 조립한다고 해서 낱개의 부품을 전혀 안쓰는것은 아니다. 위의 예처럼, CPU를 사용하지 않는가!
즉, Component 기반 개발이라도 클래스와 적절히 썪어서 조립한다는 것이다.
Framework (거의 완제품:베어본)
- 베어본 기반 시스템과 유사. 거의 완제품 상태
- ex) 베어본, CPU, HDD, ODD, RAM 모듈 등등...
- 재사용성: 재사용하기가 컴포넌트 보다야 훨씬 쉽지만, 재상용의 영역이 훨씬 좁아진다.
- 조립난이도: 일반 사용자라면 누구라도 쉽게 조립할 수 있다. 조립속도 가장 빠르다.
- 시스템 안정성: 어느정도 메인보도와 파워서플라이, 케이스 등등 가장 적합한 상태로 미리 조립되어져 있어서 보드 단위로 직접 조립하는것 보다 훨씬 안정성이 뛰어나다. 괜히 파워서플라이를 몇 와트로 해야하는지 고민할 필요가 없다. 단지, 특정 부분만 사용자가 추가하면된다. CPU, 모듈램, HDD, ODD 등.
- 디버깅: 조립의 절차가 훨씬 간결하기 때문에 오류 발생을 검사하기 쉽다.
결론,
고객 입장에서는 프레임웍 기반으로 시스템을 개발하게 되면 최소한의 품질 보장을 받을 수 있다.
개발사 입장에서는 프레임웍 기반으로 개발하게 되면 초보 개발자를 투입하더라도 최소한의 품질을 보장하는 시스템을 개발 할 수 있다. 또한, 시스템 개발 전에 투입되는 기술 교육비가 훨씬 줄어든다. 왜? 조립이 쉬우니까...
이제 왜 너도 나도 프레임웍~ 프레임웍~ 하는지 아시겠는가?
단, 범용성의 시스템을 개발할 때는 프레임웍이 좋지만, 만약, 좀더 특화된 시스템을 개발 하려고 한다면, 오히려 프레임웍을 뜯어 고치는데 시간이 더 걸릴 것이다.
이런 경우, 프레임웍의 도입이 바람직하지는 않다.
즉, 카 네비게이션 시스템을 개발하는데 베어본을 뜯어 고쳐 쓰는것 보다야 보드 단위(컴포넌트)로 개발 및 조립 하는게 나을 것이다.
*베어본이 궁금하신분은, Naver에 물어보거나, 다나와에 가셔서 한번 찾아보시라!^^
오호라.. 이제 설명끝... 아.. 자야 하드래요...^^
출처 [본문스크랩] 클래스,컴포넌트 그리고 프레임웍|작성자 메멘토