본문 바로가기

Dev.../소프트웨어 아키텍처

[SA강좌] Part 1-20 SA기초강좌 맺음말…

개념 설명

SOA와 CBD를 혼동하는 분을 위한 간단히 구분법을 설명드린다. 두 가지 모두 Reusable(재가용성)에서 중요한 개념이다.


하지만 중요하게 다른 점은 서비스가 서비스 소비자가 원하는 궁극의 결과를 얻기 위해 서비스 제공자가 처리해주는 한가지 일의 단위(W3C, Dr.Hao he)라고 보는 것이 SOA이고 컴포넌트는 다른 컴포넌트와 상호 작동하기 위해 만들어진 것으로 특정기능(functionality)또는 일련의 기능을 담고 있으며 명확히 정의된 인터페이스를 가지는 소프트웨어 객체(W3C WS-glossary) 라고 보는 것이다.


또한 가장 큰 차이점은 컴포넌트는 이미 구현된 것이기에 프로그래밍 언어에 중립적이지 않다는점이며 CORBA의 대표적인 실패원인 이기도하다.

1회강의 맺음말

소프트웨어 아키텍쳐에 대해서 기본적인 개념에 대해서 소개하였다고 생각한다.

마지막으로,

현재의 소프트웨어 환경에 대해서 몇가지 거론하고 마무리 하도록 하겠다.

소프트웨어의 환경은 이제야 가내수공업환경을 벗어나고 있다고 보인다. 이제는 좀더 전문적이고 체계적인 환경으로 분화되고 있다고 볼 수 있다. 사실상 아키텍트는 예전부터 존재해왔다. 다만, 실제 프로그래머가 아니라고 치부했을 뿐.


이제 아키텍트는 일종의 건축물의 설계자라고 볼 수 있다.


노가다 판에서 10년을 굴른 사람이라면, 어깨넘어로 배운 기술이 있어서 1층짜리 집은 지을 수 있다. 그것은 구조적인 계산 없이도 적당한 자재만 골라도 집을 지을 수 있고, 법적으로도 큰 문제가 되지는 않는다.


그러나, 노가다판 10년 굴렀다고 63빌딩을 지을 수는 없다.

높이 계산 하나만 하더라도 수많은 구조적인 계산과 복잡한 일정, 공정등을 알아야 하기 때문이다.


노가다를 뛴다고 건축계에서 일한다고 이야기할 수도 있다.

과연 그렇게 생각하는가?


건축을 예로 든다면, 프로그래머는 일당을 받는 노가다 인지도 모른다. 최소한, 전문 기술을 가진 건축기사나 전기기사의 역할은 해야하지 않을까?

특이한 기술 없이 반복적인 벽돌 쌓기를 하면서 남보다 벽돌 이쁘게 잘 쌓았다고 자랑하는 노가노가다 된 것은 아닌가?


건축에서도 예술적인 집을 지으러 다닐 수도 있고, 대규모적으로 평범한 아파트를 지으러 다닐 수도 있다. 따지고 보면 소프트웨어 계통도 유사한 경우가 많다.

따지고 보면, 가장 큰 이익을 창출하는 것도 아파트 공사장일 듯이 보이지만, 그것은 아니다, 미술관이나 예술적인 건물들, 난공사, 댐등의 공사도 있다.


더군다나, 그 도시를 설계하는 사람들도 있고, 예측하는 사람들도 있다.


이를 소프트웨어의 입장에서 생각한다면 어떠한 것들이 그려질까?


아키텍트는 이노베이터를 지향한다고 본다.


언젠가 한번쯤 '소프트웨어의 도시'를 설계하는 사람이 되어야 하지 않을까?


총 6회에 걸친 '소프트웨어 아키텍쳐'에 대해서

가장 '입문'분야인 1회과정을 마무리하고..


1 - 소프트웨어 아키텍쳐 개념에 대한 이해.

2 - 소프트웨어 아키텍쳐 설계를 하는 방법.

3 - 컴포넌트 설계를 하는 방법과 설명,

4 - 아키텍쳐에서 개발로의 이행하는 방법은?.

5 - 소프트웨어 아키텍쳐 산출물 작성법.

6 - 소프트웨어 아키텍쳐 설계(실전예제)에서 얻어보기.


의 내용을 좀더 충실하게 준비된 상황하에서 만나뵙고 싶습니다. 그럼.


개념과 정의

Developer – 계획적, 종합적 방식으로 개발하는 사람을 의미.

원래는 건축용어로써 도시주택에 관련된 개발사업자를 일컫는 말이었다. 디벨로퍼가 대규모적인 뉴타운의 건설과 도시재개발사업의 추진자로서 단순한 부동산업자와 구별되는 이유는, 각종 곤란한 사업에 도전하여 독자적인 이념하에 시대를 선견, 대규모 또는 계획적으로 도시조성을 목표로 지향하는데 있다는 것.


Programmer – 컴퓨터 프로그램의 논리나 알고리즘을 설계하고 프로그램을 작성하고 테스트하는 사람. 이제는 너무 방대한 직업이 되어버린듯.

이당시의 개념으로는 시스템 분석자(system analyst), 데이터베이스 관리자(DBA : database administrator)

프로그래머의 지식은 프로그래밍언어 + 오퍼레이팅 시스템의 명령 + 파일링 시스템의 운영법, 화면설정, 기타 작업도구 사용법을 숙지.


네이버에서 검색해보면.. 리누스 토발스, 미야모토 시게루, 제임스 고슬링, 클리부 배리 몰러등이 검색되네요. 이젠 프로그래머라는 단어는 광역의 단어가 되어버린듯 하므로 대명사가 아닌 소규모의 단어들을 다시 만들어야 할 듯.


Ps~ 이 내용은 저 혼자만의 생각일 뿐입니다.