하는 일이 프로그램 개발이다 보니, 원래는 일하면서 새로 배우게 되는 부분이나, 유용한 스킬에 대해서 정리하고자 블로그를 개설했습니다.
하지만, 일이 바쁘거나, 혹은 블로그에 포스팅하는 귀차니즘이 많아져서 제대로 하지 못했습니다. 평소에 자주 쓰는 JAVA 언어와 html5 기반의 자바스크립트, Spring 또는 Spring Boot 프레임워크 (또는 전자정부 프레임웍), 그리고 오라클이나, MS-SQL 등의 DB 쿼리 작업등을 많이 하는 편입니다.
개발 관련 블로그라고, 처음에 계획한 것은 JAVA의 기초부터 하나하나 차근차근 순서대로 포스팅을 해볼까 했지만, 구글링 하면 한참 잘 정리된 사이트나, 블로그들이 많아서 제 성격상 절대 그분들보다는 잘 정리하고 포스팅할 수 없다는 것을 느꼈습니다. (아마 그때부터 블로그 컨셉이나, 작성할 글들에 대해서 슬럼프가 왔었나 봅니다.)
최근에도 일을 하면서, 새로운 개발을 많이 했었는데요, 음, 하나를 들면 설문조사 System 구축을 하였습니다. 설문조사의 문항 및 문답을 객관식, 주관식, 복수 답안 또는 단수 답안으로 처리하는 작업 및 또한 문항에 어울리는 이미지 파일 첨부 및 삭제 기능 도 추가했었습니다.
이 설문 시스템은 고객이 설문을 작성하여, 소비자 또는 직원들에서 설문조사지를 로그인 한 사용자 팝업 또는 메일로 보내서, 답안을 받고, 답변의 내용은 DB에 적재되고, 이를 통계화해서 설문조사를 해서 추후 상품 개발이나 시스템 개선사항 등을 수립하는 데 사용하는 부분이었습니다.
설문 조사 시스템에서 크게는 문항 작성, 답안 작성, 답안은 객관식 또는 주관식 답안으로 저장이 되며, 문항이든, 답안에 이미지를 추가할 수 있습니다. 당연히 메일 발송이 되어야 되므로 데몬으로 메일 서비스도 구축했고, cronTab으로 메일 발송 처리 DB를 1~2분마다 조회해서 새로운 건이 있으면 발송하는 시스템도 작업했습니다.
설문 내용을 저장 후 설문기간이나, 설문대상(권한이나, 부서 또는 소비자)에 따라서 설문지를 만들어서 설문기간 내에 답안을 할 수 있도록 설문지를 작성하여 메일 또는 사이트 팝업으로 띄울 수 있게 해야 합니다. 문항이나, 답안이 동적으로 만들어져야 되기 때문에 기존의 적재된 설문 DB의 내용과 사용자 정보를 토큰으로 받아서, 메일, 또는 팝업으로 웹 화면을 띄우고(이때는 정적이고, 개인정보 동의 화면 및 설문 답변하기 버튼 처리) 설문지 화면은 Vue.Js로 작업을 했습니다.
보통 자바스크립트의 jstl이나, 제이쿼리로 동적으로 데이터를 테이블 화 하거나, 리스트에 뿌려주는 작업은 많았지만, 이번에 사용해본 뷰 제이에스 또한 부분적인 처리였지만 동적으로 처리를 하면서, 문항, 문답 처리를 하니 깔끔했었네요.
아래는 설문조사 시스템을 개발하면서 메일로 테스트했던 화면입니다. (소스나, 로직이 아니지만, 그래도 이미지가 하나라도 있어야 될 듯해서....)
실제 이런 설문조사 시스템을 구축하면서 느낀 것은, 역시 설계가 중요하구나, (개발하면서, 테이블의 키값이나, 수신, 답변자 테이블의 잦은 칼럼 변경으로 재개발을 많이 했었네요.)
또한 자신이 원하는 설문 문항과, 답안(답안은 객관식이냐, 주관식이냐) 객관식 답안은 복수 답안인지, 단수 답안인지, 점수화시키기 위해서 객관식 답안의 점수 배점은.?(점수는 나중에 통계를 내서 차트나, 표로 보일 때 설문 결과에 대해서 보여주므로 중요하더라고요..)
너무 주절주절 했네요.
요즘은 구글 설문조사? 구글 설문지 같은 좋은 사이트가 많이 개발되어있어서, 설문조사에 대해서는 크게 중요하거나 메가 프로젝트는 아니지만, 한 기업의 상품이나 사내 시스템의 설문시스템을 개발하면서, 많은 작업을 했고, 좋은 경험이었던 것 같습니다. (솔직히 직관적인 것은 아래 구글 설문지인 듯...)
https://www.google.com/intl/ko_kr/forms/about/
요약하자면,
<설문조사시스템 필요한 것>
1. DB 설계와 명확한 정의서 또는 명세서 (실은 개발 시 이것만 잘 되어있어도 개발자가 일하기 쉬워지죠)
2. 메일 발송을 위한 메일 시스템 및 정적인 메일에서 또는 사이트에 팝업으로 정보를 던져주므로 보안을 위해 토큰(Token) 기반 인증 시스템 잘 구축되어있으면 좋습니다.
3. 설문조사 시스템에서 자주 쓰는 문항이나, 답안은 저장을 해두고, 팝업에서 불러올 수 있게 구축하고, 또한 각자의 취향에 맞게 커스터마이징 할 수 있도록 프로그래밍을 해야겠죠. 답안 순서 편집이나, 중복된 답안, 또는 필수 답변 또는 선택 답변 등 생각할 것들이 많더라고요, 이는 테스트 케이스를 잘 작성해서 최대한 반복되는 일을 줄이면, 개발이 조금 더 쉬워집니다.
4. 설문조사 메일 발송 시 메일을 수신 후 답변한 사람은 재답변을 하지 못하도록 제약을 걸어주고, 또한 설문기간에 따라, 답안 작성 시점이나, 설문지 내용을 보여줄지 말지도 정해야 됩니다.
5. 설문조사가 끝났으면, 적절하게 쿼리 작업해서, 차트로 예쁘게 가독성있게 보이게 작업 또는 적절한 그리드나 테이블에 가독성 있게 보이게 작업하면 끝이 납니다. (차트는 html5 기반으로 사용 되는 rMate 차트를 사용 했었습니다.)
뭐 저는 이 정도에서 개발을 완료했는데, 만약 고객사가 광고 마케팅팀이나, 소비자들의 설문에 대한 답변에 대해 취합, 연구해서 매출을 내는 고객사였으면, 아마 설문조사 시스템이 아주 더 체계적이거나 복잡해질 가능성도 있을 듯합니다.
이상입니다.
'개발 및 프로그래밍 관련' 카테고리의 다른 글
VDI환경에서 프로그램 개발 (0) | 2021.12.31 |
---|---|
개발용 키보드 교체, 레오폴드 FC750R PD 저소음 적축 모델 (0) | 2021.11.22 |
[개발] 개발 일을 하면서 알아둬야 할 것들(SI 프로젝트, 프리렌서 개발자) ver 1.0 (3) | 2019.08.23 |
현재의 개발환경? (0) | 2019.08.22 |