<소프트웨어순환공학실험실>
석사/박사 과정 후보생 모집
날짜: 2014년 9월 20일
수신: 예비 컴퓨터전공 학사 및 석사 졸업 대상자
발신: <소프트웨어순환공학실험실> 지도교수 이문근
주제: 실험실 석사/박사 과정 후보생 모집
<소프트웨어순환공학실험실>에서 다음과 같이 석사와 박사 과정 후보를 모집합니다.
|
석사 |
박사 | |
인원 |
2명 |
1명 | |
지원 |
학비 |
석사과정 2년 학비 전액 지급 |
박사과정 2년 학비 전액 지급 |
급여(수습) |
수습 기간 : 월30만원 |
수습 기간 : 월 40만원 | |
급여(과정) |
월40~70만원 |
월 80~100만원 | |
자격 |
1) 전공: 컴퓨터 관련 전공 2) 평균 GPA 3.0 이상 3) 프로그램 및 SW 제작 능력 |
1) 전공: 컴퓨터 관련 전공 2) 평균 GPA 3.0 이상 3) 프로그램 및 SW 제작 능력 4) 논문 작성 능력 | |
연구분야 |
1) 역공학 도구 개발 2) 재공학 도구 개발 |
1) δ-Calculus 개발. 2) 순공학 도구 개발 | |
수행과제 |
아래 ‘현 수행과제’ 참조 |
아래 ‘현 수행과제’ 참조 |
1. 연구실 소개
<소프트웨어순환공학실험실>은 소프트웨어순환공학을 연구하는 실험실입니다. 소프트웨어순환공학은 아래그림에서 보여주는 바와 같이 소프트웨어의 순공학과 재/역공학의 생명주기(life cycle)을 통합한 소프트웨어공학의 한 분야입니다. 이 분야에서 가장 핵심적인 목표는 요구사항(requirements)과 설계/명세(design/specification) 그리고 구현/소프트웨어(implementation) 사이의 일관성 및 통일성을 어떻게 보장하고 유지 및 관리하는가 하는 것입니다. 이 목표를 달성하기 위해서 가장 중요한 역할을 하는 것이 바로 명세언어 (specification language)입니다. 즉, 요구사항과 구현된 소프트웨어의 일관성과 통일성이 명세언어를 매개체를 통해 이루어진다는 의미입니다.
2. 연구분야
<소프트웨어순환공학실험실>의 연구분야는 크게 4가지로 나누어집니다:
1) 요구사항 분석 및 추출: 자연어로 구성된 소프트웨어의 요구사항을 분석하고 추출하는 방법을 연구하는 분야.
2) 요구사항 명세 및 검증: 추출된 요구사항을 명세하기 위한 언어를 개발하는 분야. 현재까지 개발한 프로토타입 단계의 명세 언어는 다음과 같은 것들이 있습니다:
i) ATM(Abstract Timed Machine): 상태도에 기반을 둔 명세언어. 이 언어의 기본적인 특성은 시간을 표현할 수 있다는 것과 추상화를 통해서 ATM들이 계층화를 이룰 수 있다는 것입니다. 이 ATM을 통해서 도달성(reachability) 문제를 다룰 수 있으며, 상태증폭문제에 추상성을 부여하며 복잡성을 일부분 해결했습니다. 특히 실시간시스템의 명세와 검증에 이 언어를 사용했습니다.
ii) CARDMI(Calculus of Real-Time Distribution, Mobility, and Interaction): 프로세스대수(process algebra)에 기반을 둔 언어. 이 언어는 분산실시간시스템을 명세하고 검증하기 위하기 위해 개발한 언어입니다. 이 언어의 가장 기본적인 특성은 분산실시간시스템의 지정학적 분산성과 이들 간의 상호작용 및 이동성을 명세할 수 있다는 것과 이러한 상호작용과 이동성이 deadline과 같은 시간에 대한 제약조건을 만족하는 지를 검증할 수 있다는 것입니다. 특히 분산실시간시스템의 복잡성을 해결하기 위한 방안으로 대수(algebra)에 계층성을 정의하여 추상화를 가능하게 하였고, 추상화에 기반한 동일성(equivalence)을 정의함으로써 명세의 검증을 정당화했습니다.
iii) ONION: 상태도와 프로세스대수를 융합한 시각화 언어. 이 언어는 상태도와 프로세스대수(process algebra)의 단점을 극복하기 위해 개발된 언어입니다. 이 언어의 특징은 프로세스대수의 거시적 관점과 상태도의 미시적 관점을 하나의 융합된 시각적 형식으로 표현한 것입니다. 이렇게 함으로서 분산실시간시스템의 분산성과 상호작용, 이동성 및 프로세스 제어를 하나의 융합(거시적+미시적) 관점에서 일목요연하게 명세하고 분석 및 검증을 할 수 있게 하였습니다. 나아가 상호작용, 이동성 및 프로세스 제어에 시간적이 속성을 표현할 수 있는 OTAG(Onion Timed Action Graph) 도표언어와 과 이에 대한 제약조건을 명세하고 검증하기 위한 VLO(Visual Logic for Onion) 시간논리언어를 개발하여, 분산실시간시스템의 다양한 요구사항을 명세하고 검증할 수 있게 하였습니다.
iv) δ-Calculus: 이는 현재 연구실에서 집중적으로 고안하고 있는 정형기법입니다. 이 기법은 CARDMI의 기본적인 개념을 동기적/비동기적 그리고 능동적/수동적 이동성 관점으로 재정리하고 이를 ACSR 프로세스대수를 기반으로 확장하여 구현하고 있으며, 이를 ACSR/VERSA를 통하여 구현하고자 합니다.
3) 코드 생성: 위 명세언어에서 명세한 시스템에 대한 skeleton code를 자동 또는 반자동으로 생성하는 기술입니다. 예를 들면, Ada나 Java와 같은 코드를 생성하는 것입니다.
4) 소프트웨어 재/역공학: 기존의 legacy 소프트웨어를 재공학하거나 역공학하는 방법을 연구하는 분야. 현제 실험실에서 적용할 수 있는 방법과 기술은 다음과 같습니다:
i) SRL(Software Representation Language): 소프트웨어를 표현하고 관리하기 위한 매개 언어. 이 언어는 기존의 assembly, Fortran, COBOL, PL/I, C, C++, Ada 등의 legacy code를 재역공학하기 위한 중계언어입니다. 여기에 관련된 기술은 parser, loader, unloader 등과 같은 기술이 있습니다.
ii) 언어 번역: 하나의 legacy 코드를 현대화하기 위한 기본 기술입니다. 방법은 하나의 언어를 다른 언어로 번역하는 것입니다. 예를 들면, 원시언어들이 현대언어로, 저급언어들이 고급언어들로 번역하는 것입니다. 현재까지 실험실에서 번역한 언어들은 다음과 같습니다:
a) Fortran → Ada,
b) Assembly 언어 → Ada,
c) C → Ada
d) C → C++
e) PL/I → Java
e) COBOL → Java
iii) 역공학 기술: 이 기술은 기존의 legacy code로부터 설계정보를 추출하는 방법입니다. 예를 들면, dataflow, 상태도, IO mapping 등의 정보를 추출하는 것입니다. 특히 실험실에서 개발한 명세언어들로 역공학하는 것이 연구의 목표입니다.
5) 메타-모델링 (Meta-Modeling): 대부분의 이론적인 연구들은 구현되지 못하고 단순히 이론으로 머무는 경우가 많습니다. 하지만, 본 연구실의 연구는 구체적인 시스템을 통해서 구현이 되어야 합니다. 이를 위해서, 이러한 방법론들을 구현할 수 있는 모델링 도구들이 요구됩니다. 그렇지 않을 경우, 이를 직접 개발해야 하는 어려움이 있습니다. 이는 많은 시간을 요구할 뿐만이 아니라, 원하는 결과가 산출된다는 보장도 없습니다. 이러한 문제를 해결하기 위해서, 메타 도구들이 사용되고 있습니다. 본 연구실의 지도교수는 DECDesign과 Teamwork라는 메타 도구들을 사용한 바 있고, 본 실험실에서는 Meta-Dome과 후속 도구인 Dome을 사용하여, 역공학 도구를 개발한 바 있습니다. 최근에는 국내에는 소개되지 않은 새로운 도구를 사용하여 순공학 도구와 순환공학도구를 개발하기 위하여 연구에 박차를 가하고 있습니다.
6)행위온통로지
이외에도 다음과 같은 영역에 대한 이론과 기술을 확보하고 있습니다:
1) 메신저 프로토콜 및 응용 시스템 개발
2) RFID 관련 기술 및 응용 시스템 개발
3) 행위 온톨로지 이론 및 기술 개발
4) 개인화 폰트 이론, 기술 및 시스템 개발
3. 수행과제
1) 현 수행과제
i) [2014~2018] 우주용 SW의 검증 및 신뢰성 확보 방안에 관한 연구
ii) [2013~2016] 고품질 융합 SW 개발 지원 도구 연구 및 고급 인력 양성.
iii) [2010~2014] Open Cloud Computing에서 지능형 메타 SaaS를 위한 아키텍처 개발
2) 대표 기수행과제 [전북대학교]
i) 한국학술진흥재단, 지정학-시간 공간에서의 추상화 실시간 분산성, 이동성, 상호작용을 위한 Calculus의 개발, 2007.08∼2010.7.
ii) 한국과학재단, 소프트웨어 순환공학에 기반을 둔 임무위주 시스템의 종합 환경 개발, 1999.9~2002.8.
iii) 한국과학재단, 소프트웨어 재역공학을 위한 객체지향방법론 개발, 1997.3~1999.2.
iv) 한국정보통신연구관리단, 역명세를 이용한 실시간 시스템 검증 방법 개발, 1998.8~1999.7.
3) 대표 기수행과제 [미국, CCCC]
i) NSWC, Reengineering Concurrent Software into Ada, 1993.1~1993.12.
ii) NSWC, The Development of an Environment for Understanding of Real-Time Software, 1994.1~1994.8.
iii) NSWC, System Engineering Automation (SEA) for Distributed System, 1992.5~1996.1.
iv) NSWC, Software Specification Assistant (SSA), 1992,5~1996.1.
v) NSWC, Software Reverse Engineering of Assembly Code, 1992.5~1996.1.
vi) NSWC, Software Re/Reverse Engineering Environment (SRE), 1992.5~1996.1.
4. 석사 과정
1) 목표
<소프트웨어순환공학>실험실에서 설정한 석사과정의 목표는 소프트웨어순환공학에 관한 이론과 기술은 습득하고, 실험실에서 고안한 이론을 구현하기 위한 기술 및 환경을 개발하는 것을 기본으로 하고 있습니다. 하지만 이 외에도 새로운 분야에 관한 가능성도 열려있습니다.
2) 자격
석사과정 후보는 학부의 평균 GPA가 3.0이상이면 됩니다. 하지만 프로그램과 SW 개발에 관한 능력과 열정이 있어야 합니다. 그 이유는 본 실험실에서는 개발하는 SW나 System은 현장에서 실질 사용가능한 제품들이기 때문입니다. 이러한 SW나 System들은 특정한 변수나 함수를 조작하여 가상적으로 실험한 결과를 가지고 그 인과관계를 분석하는 연구와는 질적으로 다릅니다. SW나 System의 공정과정을 준수하고, 그들의 life cycle을 고려한, 현장에서 실질적으로 사용가능한 제품을 개발하는 것은 프로그래머와 엔지니어의 가장 기본적인 능력중의 하나입니다. 이러한 능력을 개발하기 위한 기본적인 조건과 관심 및 열정이 있어야 합니다.
3) 장래성
본 실험실은 전통적으로 경쟁력이 있는 프로그래머와 엔지니어들을 양산해 왔습니다. 그 이유는, 위에서 설명한 바와 같이, 실험실에서 수행하는 연구들과 과제들이 이론적으로나 실질적인 관점에서 현장에서 필요하고 사용가능한 프로그램과 SW를 직접적으로 다루고 있기 때문입니다.
지금까지 실험실 출신의 학생들은 대부분 연구소와 기업에서 SW와 System을 개발하는 핵심적인 프로그래머와 엔지니어로 현장에서 일을 하고 있습니다. 그들의 수준은 우리나라 유명대학 추신의 그 어떤 프로그래머와 엔지니어와 비교를 해도 결코 뒤지지 않습니다. 다시 말하면, 국내 최고 수준의 프로그래머와 엔지니어가 되어야 한다는 것이 우리 실험실의 모토입니다.
5. 박사 과정
1) 목표
<소프트웨어순환공학>실험실에서 설정한 박사과정의 목표는 소프트웨어순환공학에 관한 이론을 체계화하는 것입니다. 그리고 이렇게 체계화된 이론을 구현하기 위한 기술을 개발하고 이를 기반으로 메타-모델링 환경을 시스템을 구현하는 것 있습니다. 그리고 이렇게 체계화된 이론과 구현된 시스템을 국제 수준의 논문으로 국제 논문지에 발표하는 것입니다.
2) 자격
박사과정 후보는 학부의 평균 GPA가 3.0이상, 석사의 평균 GPA가 3.5이상이어야 합니다. 그리고 다음과 같은 능력을 검증 받아야 합니다:
i) 수학적 배경: 박사과정에서는 수학에 대한 이론적인 배경이 요구됩니다. 그 이유는 연구의 주제가 분산실시간시스템과 같은 대상 시스템의 요구사항들을 정형적으로 명세하고 이러한 요구사항들이 명세 단계에서 만적이 되는지를 분석 및 검증하는 것이기 때문에 이를 정형적으로 명세하고 분석 및 검증하기 위한 논리학, 프로세스대수, 상태도들에 대한 이론 수학적 능력이 요구됩니다. 나아가 새로운 이론을 고안하고 향상시킬 수 있는 창의력이 요구됩니다.
ii) 시스템 개발 능력: 위 i)의 이론을 위한 수학 능력을 바탕으로 새로운 이론을 특정 환경에서 구현할 수 있는 능력이 요구됩니다. 이를 위해서는 메타-모델링 및 conceptual modeling에 대한 이해가 요구되며, 이를 기반으로 메타-모델링 환경에서 이러한 관련 시스템을 구현할 수 있는 능력이 있어야 합니다. 이에 대한 기본적인 환경과 교육은 실험실에서 자체적으로 교육과 훈련을 제공할 것이며, 필요시 EU에 소재한 대상 도구 개발 회사를 통해 전문적인 교육을 제공할 것입니다.
iii) 논문 작성 능력: 마지막은 이렇게 획득한 i)의 이론과 ii)의 도구 및 시스템을 기반으로 특정 도메인에 속한 실질적인 응용 시스템을 대상으로 실험을 실행하고 이에 대한 결과를 국제적인 수준의 논문으로 작성하는 능력입니다.
3) 장래성
석사과정에서 설명한 바와 같이, 본 실험실은 전통적으로 경쟁력이 있는 프로그래머와 엔지니어들을 양산해 왔습니다. 박사과정은 이를 기반으로 이론가 뿐이 아니라, 관련 분야의 연구나 과제를 직접적으로 수행 및 관리하는 능력으로 넘어 이를 제안하고 평가할 수 있는 능력을 전문가를 양성하고 있습니다. 그리고 이렇게 배출된 박사들이 국내외 어떤 기업, 연구소, 대학에서라도 독립적으로 연구와 개발 및 교육을 수행할 수 있는 자생력을 가지게 될 것입니다. 다시 말하면, 국내/외 최고 수준의 프로그래머와 엔지니어 뿐만 아니라 theorist, practitioner, specialist, inventor가 되어야 한다는 것이 우리 실험실의 모토입니다.
6. 마치는 글
많은 학부생들이 4학년이 되면서 취업 때문에 고민이 많습니다. 취업난이 심하기 때문입니다. 반면에 대학원 진학에 대해서는 거의 생각을 하지 않습니다. 대학원 진학은 취업과 연관성이 없다고 생각하기 때문입니다.
대학원진학도 취업의 한 형식입니다. 먼저 내가 일을 하고 싶은 전공을 미리 정하는 것입니다. 그리고 석사과정동안 그 분야에서 필요한 지식과 기술을 습득하게 됩니다. 그 지식과 기술은 학부에서는 습득할 수 없는 것들입니다. 그리고 그 과정을 성실히 마치고 나면, 일반적으로 그 전공분야에서, 현장에서 일을 할 수 있는 기회가 마련됩니다. 일반적으로 그 기회는 학부를 마치고 그 분야에서 직장을 구하는 것보다 더 좋고 안정적인 기회입니다. 이런 형식의 취업을 일반적으로 도제식(apprentice) 취업이라고 하며, 일반적으로 대학원 1년을 직장경력 2년으로 간주합니다.
급한 마음에 학부를 졸업하고 취업을 하게 되면, 본인의 전공과 다른 분야에서 일을 하는 경우들이 종종 있습니다. 또한 본의의 전공 분야에서 일을 하더라고 본인이 원하지 않는 일을 하는 경우들은 더욱 더 많습니다.
본인이 원하는 분야에서 본인이 원하는 일을 하고 싶다면 대학원에 진학하는 것이 바람직합니다.
석사과정을 마친 대학원생들도 마찬가지입니다. 석사논문을 쓰면서 박사과정을 진학을 해야 할 지, 취업해야 할 지, 때문에 고민이 많습니다. 박사과정은 석사과정의 단순한 연장이 아닙니다. 박사과정은 석사과정의 한 차원 높은 발전 또는 진화의 과정이라고 볼 수 있습니다. 관련 분야의 전문가가 되기 위해서는 석사과정만으로는 부족합니다. 박사과정에서 더 체계적인 이론을 학습 및 개발할 수 있고, 이를 기반으로 한 더 체계적인 시스템을 구현할 수 있습니다. 박사 후 바로 취업을 원하지 않는다면, 졸업 후, 국제적인 대학과 연구소에서 박사후 과정을 계속할 수 있습니다. 도전하는 자에게만이 기회가 주어집니다.
사람이 살고 있는 <소프트웨어순환공학실험실>
지도교수 이문근