제안요청서란?
프로젝트 끝나고 본사로 복귀해서 refresh 좀 하려고 하면 누가 부르죠^^
ㅇㅇ기관 제안요청서가 떴는데... 같이 제안서를 쓰자고ㅜ.ㅜ
이런 불상사를 피하기 위해서는 휴가 일정을 잘 맞춰야 되요^^
공공기간(민간기업 포함)의 프로젝트를 수주하기위해서는 제안서 제출 및 제안발표는 기본적으로 필수 프로세스입니다. 제안서 작성은 오늘 포스팅은 주제인 제안요청서에 기반하여 작성되어 집니다.
본격적으로 제안요청서에 대해 알아보기 전에 이번 포스팅은 공공기관의 전자정부 사업을 중점으로 작성된다는 것을 알려드립니다.
제안요청서(Request for Proposal)가 뭐죠?
- 시스템 구축 및 SW 서비스를 발주하기 위하여 입찰 대상자에게 발주자의 요구사항을 제시하기 위한 문서입니다.
발주의 종류와 발주 프로세스에 대해서 알고 넘어가죠.
1. 전자정부 사업의 발주 종류
- 분리발주 : 프로젝트의 투명성 확보를 위해 시스템 구축 시 SW 서비스 업무와 HW 도입 사업을 분리하여 발주
- 분할발주 : SW의 전문성 높이기 위해 분석/설계 단계와 구현/테스트 단계를 나누어 발주
2. 발주 프로세스(ISO-12207)
1) 발주준비 : 비즈니스, HW/SW 요구사항 정의(발주 계획서)
2) 제안요청서 : 제안 요구사항 문서화(RFP, 평가기준서)
3) 계약 : 입찰공고(나라장터 등), 제안평가, 공급자(수행사) 선정, 계약체결(평가 결과서, 계약서)
4) 공급자(수행사) 관리 : 수행계획 검토 및 승인, 계약진행(사업수행계획서)
5) 인수 및 종료 : 검사, 인수 테스트, 인수(종료 보고서)
발주기관에서 제안요청서를 제시하는 이유는 뭘까요?
관점 |
설명 |
발주기관 |
|
제안사 |
|
감사기관 |
|
그렇다면, 제안요청서가 갖추어야할 요건도 있겠네요!
- 사업의 목적 및 이해 : 사업(프로젝트)을 추진하는 이유 및 목적, 과업범위 제시
- 제약사항 : Legacy 시스템과 상호운영성을 위한 개발언어, Framework 지정
- 기능적 요구사항 : 공통, 핵심, 선택 요구사항 제시, 기능점수를 통한 대가산정
- 비기능적 요구사항 : 성능, 보안, UI 등 시스템의 품질요구사항
- 관리적 요구사항 : 수시, 정기(주말 및 월간보고), 중간, 완료보고, 인력관리
- 입찰조건 : 참여기업 조건 및 이력 등 공시
- 제안평가 기준 : 기술 및 가격평가 기준 제시
공통 요구사항 |
핵심 요구사항 |
선택 요구사항 |
|
|
|
2. 비기능적 요구사항
성능 |
보안 |
UI |
|
|
|
3. 비기능적 요구사항 중 성능 요구사항의 사례
요구사항 |
시나리오 |
목표치 |
우선순위 |
Batch처리 (OLAP) |
당일에 발생한 트랜잭션 데이터(거래정보 등)을 추출, 가공, 적재를 22시에 매일 수행 |
30분 이내 |
중 |
Online 조회 (OLTP) |
End User가 웹 브라우저를 통해 조회하는 화면을 대상으로 10 ~ 20개 ROW를 기준 |
3초 이내 |
상 |
통계정보 조회 |
기간(일별, 월별, 년도별), 부서별 민원처리 통계조회 |
30초 이내 |
하 |
제안요청서(RFP)가 뭐고, 왜 작성하는지, 무슨 내용으로 작성되는지에 대해 간단하게 적어봤습니다. 백문이 불여 일견이라고 나라장터 등에서 제안요청서를 한 번 보는게 훨씬 더 도움이 된다고 생각됩니다.
페이지 이동 시 검색조건 유지
페이징 처리된 화면에서 페이지(페이지 번호) 이동 시 검색조건을 유지하기 위한 소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | function fn_movePage(pageNo){ // 검색조건 INPUT ID var voArrId = ["searchDiv", "searchValue"]; // 검색조건 값 var voArrValue = ["${noticeBean.searchDiv}","${noticeBean.searchValue}"]; // FORM NAME var formNm = "frm"; // URL var gotoUrl = "<c:url value='/notice/noticeList.do'/>"; gfn_pagingSearch(pageNo,formNm,gotoUrl,voArrId,voArrValue); } /*----------------------------------------------------------------------------------------------- * function : gfn_pagingSearch(pageNo,formNm,gotoUrl,voId,voValue) * 설명 : 페이지 버튼 클릭하면 VO에 담긴 검색조건으로 검색하기 * param : pageNo(페이지번호),formNm(폼이름),gotoUrl(액션url),voArrId 배열,voArrValue 배열 ----------------------------------------------------------------------------------------------*/ function gfn_pagingSearch(pageNo,formNm,gotoUrl,voArrId,voArrValue) { var arr = new Array(); var i = 0; for(var i in voArrId){ var retVal = new Object(); retVal.arrId = voArrId[i]; retVal.arrValue = voArrValue[i]; arr[i] = retVal; ++i; } $("#pageIndex").val(pageNo); for(var i=0;i<arr.length;i++){ var retVal = arr[i]; $("#"+retVal.arrId).val(retVal.arrValue); } $("#"+formNm).attr("action",gotoUrl).submit(); } | cs |
'프로그래밍' 카테고리의 다른 글
다운로드 파일명 깨짐현상 처리 (1) | 2017.05.22 |
---|---|
SSL 인증 우회하기 (1) | 2017.04.18 |
스프링 프로젝트 - 공지사항 등록 테스트 (0) | 2017.03.17 |
스프링 프로젝트 - 공지사항 기능 구현 (0) | 2017.03.16 |
스프링 프로젝트 - 첨부파일 처리 (0) | 2017.03.10 |
SSL(TLS) 인증 우회하는 JAVA 코드
여러 공공기관에서 많은 데이터를 개방하고 있죠~
예전에는 엑셀파일 형식으로 많이 개방했었는데, 요즘은 데이터 최신성 유지 및 활용성을 높이기 위해 OPEN API 방식으로 제공을 하고있습니다.
가끔 SSL(TLS)가 적용된 OPEN API 호출 시 인증서 오류(SSL통신)가 발생하기도 합니다. 인증서 만료 또는 인증서 없을 경우 발생하죠!
SSL의 개념에 대해 궁금하시면 여기를 참조하세요!
이러한 문제를 해결하는 방법으로 아래 소스코드처럼 인증우회(인증서 무시)하는 방법이 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | Document xml = null; HttpURLConnection connection = null; try{ DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); URL restUrl = new URL(url); String protocol = restUrl.getProtocol(); /* 프로토콜이 HTTPS일 경우 서버쪽 인증서를 신뢰할 수 있도록 처리 */ if(protocol.toLowerCase().equals("https")){ TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @SuppressWarnings("unused") public void checkClientTrusted(X509Certificate[] certs,String authType) { } @SuppressWarnings("unused") public void checkServerTrusted(X509Certificate[] certs,String authType) { } @Override public void checkClientTrusted( java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException { // TODO Auto-generated method stub } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException { // TODO Auto-generated method stub } } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } /*connection 정보 설정*/ connection = (HttpURLConnection) restUrl.openConnection(); connection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); connection.setRequestProperty("Accept-Language", "ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3"); connection.setRequestProperty("Connection", "keep-alive"); connection.setConnectTimeout(Configure.HTTP_CONN_TIME_OUT); if(timeOut > 0){ connection.setReadTimeout(timeOut); }else{ connection.setReadTimeout(Configure.HTTP_READ_TIME_OUT); } /* 호출한 결과를 XML문서로 저장 */ xml = documentBuilder.parse(connection.getInputStream()); }catch(MalformedURLException me){ me.printStackTrace(); throw new MalformedURLException("MalformedURLException"); }catch(Exception e){ throw new Exception(e.getMessage()); }finally{ /* resource */ connection.disconnect(); } | cs |
'프로그래밍' 카테고리의 다른 글
다운로드 파일명 깨짐현상 처리 (1) | 2017.05.22 |
---|---|
페이지 이동 시 검색조건 유지 (0) | 2017.04.18 |
스프링 프로젝트 - 공지사항 등록 테스트 (0) | 2017.03.17 |
스프링 프로젝트 - 공지사항 기능 구현 (0) | 2017.03.16 |
스프링 프로젝트 - 첨부파일 처리 (0) | 2017.03.10 |