로드맵: 조정(tailoring)과 활용 들어가며... SW 엔지니어를 위한 역할기반 로드맵(KR-SI-1401) [https://www.nextree.co.kr/content/images/2016/other/Nextree-A3-Role-based-roadmap-for-SW-engineers-ver-KR-SI-1401.pdf] 을 공개한 이후로 3000여 다운로드와 다양한 의견이 있었습니다. 출발점 치고는 매우 요란하다는 느낌입니다. 용두사미가 안되었으면 하는 바램입니다. 지난 2월 25일, 국가인적자원개발 컨소시엄에서 주최한 소프트웨어 역량강화 세미나에서
UML: 클래스 다이어그램과 소스코드 매핑 불과 몇 년 되지 않은 학생 시절... 처음으로 UML을 접했고, UML의 기초적인 그리는 법과 사용법을 배웠습니다. 개인적으로 쉽지 않은 수업이었는데 그 중 가장 많이 사용되는 클래스 다이어그램에서 클래스간의 relationship(관계)가 제일 어려웠습니다.Generalization(일반화)과 Realization(실체화)은 명확하기 때문에 이해하는데 어려움이 없었고
자료구조: Linked List 대 ArrayList 2014년 모두들 어떤 목적과 계획을 갖고 살고 계신지요? 저는 올 한해 “Go to the Base”를 목표로 여러 계획을 세웠는데요. 그 중 하나가 과거 5년 동안 저를 되 돌아 보고 부족했던 기본 지식을 탄탄히 하는 것이었습니다. 그 중 하나가 자료구조와 알고리즘 이었습니다. 자료구조라 하니
JavaScript: 기분좋은 소스코드 JavaScript는 웹 기반의 스크립트 언어로 매우 동적인 특성을 가지고 있습니다. 그래서 JavaScript를 잘 모르고 사용하거나 다른 언어에서 사용하던 방법과 비슷하게 사용하여도 프로그램이 수행되는 경우가 많습니다. 이러한 점은 JavaScript를 매우 쉬운 언어라고 생각하기 쉽고 이름에서 오는 오해 때문에 Java와 비슷하게 생각할 수도 있습니다. 하지만 언어
XPath 이야기 때는 늦은 가을.. 무더위가 한풀 꺽일 무렵 담당업무의 까다로운 요구사항으로 고민에 빠져있던 저는 프로젝트PM님의 소개로 이 기술과 처음 만났습니다. 두려움 반 설렘 반으로 이 기술을 대면했던 순간과는 달리 이 기술을 쓰면 쓸수록 더욱 더 이 기술에 매료 되었습니다. 왜냐하면 이 기술을 씀과 동시에 매우
또 하나의 크로스 플랫폼: Eclipse RAP 소프트웨어는 우리의 생활 속 구석구석까지 스며들어 늘 우리와 함께 하고 있습니다. 메일이나 메신저를 이용하여 친구나 가족들의 안부를 묻기도 하구요. 워드 프로세서나 스프레드 쉬트 같은 소프트웨어로 우리의 일상 업무를 처리하고 있습니다. 이것이 가능한 이유는 다양한 디바이스들이 우리 곁에 있기 때문입니다. 이러한 소프트웨어들은 서비스 또는 애플리케이션
AngularJS: 사용자정의 디렉티브(directive) 이야기 AngularJS에서는 이미 ngBind, ngModel등 built-in된 다양한 디렉티브를 다루고 있으며, 사용자가 AngularJS의 controller나 service를 새롭게 생성하는 것처럼 사용자정의 디렉티브를 마음껏 생성하고 확장 할 수 있습니다. AngularJS는 템플릿으로 HTML을 지원하기 때문에 사용자정의 디렉티브를 HTML에서 매우 쉽게 적용할 수 있다는 매력을 가지고 있습니다. 이제부터 AngularJS의 디렉티브가 무엇인지,
Java Annotation: 인터페이스 강요로부터 자유를… 작년에 했던 프로젝트에서 Spring Annotation과 JAXB Annotation을 사용한 경험이 있습니다. Annotation을 이용해서 객체의 속성을 매핑하는데 유용하게 사용했던 기억이 나네요. 하지만 최근에 Annotation에 대해 공부하면서, Java에서 제공하는 Annotation만으로도 효율적으로 사용할 수 있다는 점이 흥미로웠습니다. 그래서 지금부터 제가 공부한 Java Annotation을 효율적으로 활용할 수 있는 한
로드맵: 역할 기반 SW 엔지니어 분류 SW 엔지니어를 위한 로드맵(Roadmap)을 만들려면 SW 엔지니어의 활동 범위와 내용에 따른 분류체계가 필요합니다. 조직마다 서로 다른 분류체계를 가지고 있고, 정부에서 추진하는 분류체계와 현장에서 시행하는 분류체계가 서로 다릅니다. 로드맵을 만들려 할 때, 첫 걸음부터 좌절하는 이유가 바로 분류체계의 다양성 때문입니다. 로드맵을 위한 논의에서
JXL : Excel이 Java를 만났을 때 주로 다양한 수치 Data를 다루는 통계Site에서 Data를 Excel File로 내려 받을 수 있도록 제공하는 경우가 많습니다. 보통은 화면에 보이는 내용을 그대로 Excel(xlsx, xls 확장자) 또는 CSV(Comma Separated Values)형식으로 내려 받을 수 있는데, Java에서 Excel을 처리하기 위한 많은 기술들이 있습니다. 실제로 통계관련
Cross-functional Developer 의사소통의 중요성 1 소프트웨어 개발에서 의사소통은 매우 중요합니다. 아래 그림은 개발자라면 한 번쯤은 보았을 것입니다. 개발에 참여하는 여러 이해관계자들이 어떤 의사소통을 하고 있는지를 재미있게 표현합니다. 고객의 요구(requirement)가 어쩌면 이렇게도 다르게 해석될까라고 의아해 할 수도 있습니다. 안타깝게도 소프트웨어 개발 현장에서 이것은 부인할 수
아키텍처 설계: Logback을 활용한 Remote Logging 프로젝트를 진행하며 시스템에서 남기는 로그를 일반적으로 생각하는 로컬 디스크가 아닌 원격지 서버에 남기는 방식을 구현한 사례가 있어 이 경험을 공유하고자 글을 작성하였습니다. 우리가 만드는 소프트웨어는 다양한 로그를 남기고 있습니다. 아마도 99% 이상의 소프트웨어는 어딘가에 로그를 남기고 있을 것이라고 감히 추측해 봅니다. 우리는 눈으로 직접
Ajax를 품은 jQuery 개발자의 길을 선택하면서 Web Page를 드나들 때 남들과는 다른 시선으로 화면을 살펴보는 습관이 생겼습니다. 화면의 내용보다는 신기한 기능을 발견하면 어떻게 동작하는지 예측해보고, 때로는 Source도 열어보기도 하면서 구동하는 원리를 살펴보는 경우가 많아졌습니다. 심지어 화면의 이동 시 화면이 깜빡일 때 Server에서 Data를 조회해서 다시 화면으로 출력하는
정규표현식(Regular Expression)을 소개합니다. 날이 갈수록 개인정보 보호에 관련하여 보안정책을 점진적으로 강화하고 있습니다. 이에 따라 Web에서 회원가입 시 Password 설정을 복잡해진 보안정책에 맞추다 보니 복잡하게 조합해야만 정상적으로 가입을 할 수 있습니다. 이러한 강화된 보안정책 때문에 기존에 사용하던 자신만의 Password를 인위적으로 보안정책에 맞추는 경우가 많을 것입니다. 그러다 보니, 종종
JSP custom tag를 이용한 권한 체크 java 환경에서 웹 개발을 할 때, jsp에서 객체들을 활용 하여 요구 사항에 맞는 화면을 구성을 합니다. 기존 HTML 태그를 활용한 것 보다 더 다양한 화면 구성을 위해 JSTL(JavaServer Pages Standard Tag Library)을 사용 하지만, 이것 만으로 요구사항을 구현하기 힘들 때가 있습니다. 그래서
SW엔지니어를 위한 역할기반 로드맵 들어가기 전에... 많은 SW 엔지니어들이 이야기합니다. 우리의 미래가 궁금하다고. SW 개발팀의 교육훈련 담당자 분들이 이야기 합니다. 무엇을 어떻게 교육해야 할 지 모르겠다고. SW 엔지니어에게 "성장(improvement)"은 바로 "생존(survival)"입니다. SW 개발 조직에서 "역량 향상"을 외치는
모니터링 시스템 구축 지난 1년간 네비게이션 시스템의 차세대 프로젝트에 참여했습니다. 개발 중후반 신규 개발된 서버들이 30개를 넘어섰고 계속해서 추가되고 있던 상황이었습니다. 이에 따라 매분 집계된 각 서버의 요청 처리 결과와 서버 상태를 Web page에서 실시간 조회가능하고 문제가 발생하였을 경우 담당자가 알림을 받을 수 있는 모니터링 시스템을 필요로
아키텍처 설계: 분산캐시-EhCache+Terracotta Server Array 캐시(Cache)는 미리 만들어진 데이터를 임시로 저장하는 공간입니다. 하드웨어(CPU, 메모리, 디스크 등)부터 운영체제, 응용프로그램에 이르기 까지 다양한 IT 분야에서 캐시 매커니즘을 이용하여 한정된 자원을 효율적으로 관리하고, 성능향상을 목적으로 사용하고 있습니다. 웹 애플리케이션의 Long Tail 일반적으로 웹 애플리케이션이 제공하는 기능의 20%가
프로젝트이야기 2: 빅데이터를 이용한 경로탐색정보 분석 산행준비 고객사의 글로벌 경로탐색 프로젝트를 마무리 하던 시점에 업무 담당 매니저에게서 새로운 프로젝트를 제안 받았다. 현재 서비스 중인 LBS시스템의 경로탐색 결과정보를 분석하여 통계를 내는 새로운 업무시스템 구축이었다. 경로탐색 품질을 확인하기 위하여 실사 검증팀이 전국을 순회하며 경로탐색을 수행하며 품질 검증을 하던 수작업 업무에서 하루 평균
Javascript : 함수(function) 다시 보기 자바스크립트는 한동안 개발자들의 많은 오해와 편견으로 toy language 취급을 받아 왔습니다. 누구든지 쉽게 배워 간단히 적용할 수 있다는 생각에 깊이 있는 학습이 이뤄지지 않았습니다. 하지만, 현대의 웹 애플리케이션이 시대적 요구와 사용자의 기대로 인해 점점 더 복잡한 대규모 시스템으로 발전해 나가면서 자바스크립트에 대한 관심이 크게
Java 프로그래밍: Out Of Memory 오류 Java로 소프트웨어를 개발하는 사람이라면 누구나 한번쯤 Out Of Memory Error(이하 OOME)를 만나 보았을 것이다. OOME의 경우 Java의 다른 Error와 다르게 원인과 대응을 하기가 쉽지는 않다. 경험에 비추어 보면 OOME가 발생하는 시점은 대부분 개발이 대부분 완료된 후 사용자 테스트 혹은 인수 테스트단계에서 많이
보험의 첫걸음 : 신계약 가입설계 업무프로세스 보험 회사 SI 프로젝트를 수행한지 5년이 지났다. 보험사 프로젝트를 수행하다 보면 항상 업무에 대한 이해도가 바탕이 되어 진행이 되어야 하나 보험 업무를 경험하지 못한 개발자의 경우 보험사 내의 각종 용어와 Process에 대한 지식의 부족으로 개발 초기 혼란을 겪는 경우를 많이 경험했다. 회사의 사원 혹은
Java reflection과 객체구조탐색 복잡한 구조를 가진 객체에서 문자열을 찾아 치환해야 하는 문제상황을 Java에서 제공하는 리플랙션(reflection) API를 이용하여 해결해 보았습니다. 문제상황 고객사인 OO보험은 소프트웨어 품질과 관련된 활동이 비교적 엄격한 편인데, 품질 기준을 통과해야만 운영서버로의 이관이 허용됩니다. 시스템 개발이 마무리 단계에 이를 무렵 시스템의 보안심의를 통과하라는 요청이 왔는데,
Continuous Delivery를 향한 첫 걸음 소프트웨어 인도의 어려움 지난 1년간 대법원의 각 시스템에 대한 유지보수 프로세스를 관리하는 ‘통합운영관리시스템’을 개발하는 프로젝트에 참여하게 되었다. 우리회사의 Vizend 제품을 이용하여 대법원의 유지보수 프로세스를 지원하도록 커스터마이징하는 업무를 진행하였는데 어려움 중 하나는 바로 소프트웨어의 지속적인 인도를 할 수 있도록 지원하는 것이었다. 일반적인 프로젝트에서라면 폭포수와
설계경험: WAS에서 트랜잭션 처리 이번 프로젝트는 대부분의 Process Layer Component에서 다양한 DB 접근하여 데이터를 조회하고, 조회된 DATA을 요구사항에 따라 조합하여 화면에 보여주는 형태의 프로세스 개발이 많은 프로젝트였다. 다양한 DB을 사용하면서, WAS에서의 Transaction은 One Phase Commit만 지원하도록 설정되어 있었다. 따라서 GLOBAL TRANSACTION을 안됨에 SERVICE/PROVIDER LOGIC 중간 중간에 Transaction을