[모바일 플랫폼 기반 계획 및 학습인지 모델 프레임워크 기술 개발]
본 프로젝트는 안드로이드 기반 상황 인지 스마트폰 애플리케이션들의 유기적인 결합을 위한 프레임워크에 관한 것입니다. 상황 인지 시스템에 필요한 독립적인 모듈이 존재하지만, 기존의 안드로이드는 이를 통합하여 유기적으로 결합할 적절한 방법을 제시하지 못했습니다. 따라서 안드로이드 플랫폼을 감추고, 유기적인 결합을 위한 복잡도를 최소화하여 개발자에게 편의를 제공하는 프레임워크를 개발하는 것이 필요했습니다.
이를 위해 여러 기관이 개발한 독립적인 컴포넌트를 하나의 시스템처럼 동작하기 위한 공유 저장소인 블랙보드와 이를 사용하기 위한 라이브러리를 구현했습니다. 이는 개발자가 어떤 형태의 데이터를 기록할지 모르므로 기록 가능한 데이터의 종류에 제한을 두지 않았습니다. 또한, 각 컴포넌트가 동시에 데이터 값을 기록하거나 가져갈 수 없도록 동기화했습니다.
블랙보드를 사용하기 위해서 블랙보드와 컴포넌트 간의 동기적 호출이 필요했습니다. 이는 프로세스 범위를 넘어서는 독립적인 애플리케이션 간의 통신이므로 AIDL을 사용했습니다. 이를 바탕으로 컴포넌트와 블랙보드 간 서비스 바인딩을 통해 원격지 함수 호출이 가능하도록 했으며, 싱글톤 형태로 객체를 얻도록 하여 블랙보드에 접근했습니다.
또한, 블랙보드에서 값이 변경되었을 때 이를 전달하기 위한 비동기적 호출로서 인텐트 방송을 사용했으며, 웹 서비스 요청은 쓰레드를 사용했습니다. 동기적, 비동기적 호출을 위한 서비스 바인딩, 브로드케스트 리시버를 등록하는 과정은 사용자에게 일련의 과정이 보이지 않도록 최소화하여 라이브러리로 배포했습니다.
모두가 노력한 결과 해당 과제는 20** *** 모바일 플랫폼 기반 계획 및 학습 인지 모델 프레임워크 기술 워크샵에서 시현을 했으며 이를 바탕으로 국내 저널 논문을 작성할 수 있었습니다. 이를 통해 복잡도를 최소화하고 개발자에게 편의를 제공하기 위한 끊임없는 연구의 중요성을 깨달았습니다.
[안전한 문자 관리자 페이지]
** 서비스 개발 파트에서 10만 명이 사용하는 앱을 효율적으로 관리하기 위한 안전한 문자 관리자 페이지 개발에 참여했습니다. 해당 페이지는 스미싱 위험 분석 결과에 해당하는 결과와 악성 URL에 대한 통계, 키워드 관리 등에 해당하는 정보를 제공합니다.
이를 위해 먼저 주어진 요구사항에 따른 웹 페이지를 HTML, CSS, JavaScript를 이용하여 나타내기 시작했습니다. 이후 jQuery와 Ajax를 사용하여 특정 함수를 호출할 때 표를 정의했고 이후 Worker 기능을 지닌 Class와 SQL을 이용하여 데이터 값을 저장하거나 불러왔습니다. 어느 정도 틀이 완성될 때마다 꼼꼼한 QA를 했으며 사용자가 편리하게 이용할 수 있도록 구현했습니다.
이후 보도자료로 나갈 통계 페이지의 SQL을 작성했고 이를 jqPlot를 이용해 막대 차트를 그려 한눈에 정보를 확인할 수 있도록 했습니다. 이러한 개발 과정을 통해 서버와 웹 간의 이해도를 높일 수 있었으며 팀원과 역할 분배의 중요성을 느꼈습니다.
[안드로이드 애플리케이션을 이용한 임베디드 데이터베이스 관리 툴 개발]
본 프로젝트는 임베디드 데이터베이스에 대한 이해와 활용을 위해 SQLite Library에서 지원되는 API를 이용하여 JNI 작성을 바탕으로 애플리케이션을 개발했습니다. SQLite에서 제공하는 주요 API로 데이터베이스 연결 객체를 위한 생성자 역할인 open() 함수부터 prepare(), step(), finalize(), 그리고 open() 함수 호출로 생성된 데이터베이스 연결을 종료하는 close() 함수 등을 사용했습니다.
먼저 Java Class에서 C로 작성된 JNI native 함수와 연결할 메소드를 native 키워드를 이용하여 선언했고, 이에 대한 헤더파일을 생성하여 JNI native 함수를 구현할 .c 파일을 생성했습니다. 이후 Cygwin과 NDK를 설치하여 .so 파일을 생성했고, 이를 사용하기 위한 액티비티를 구현했습니다.