1. 지금까지 없던 무엇을 만들겠다면 스스로 화면을 구성해보자.

 

소프트웨어 주문개발이란 아무것도 없는 무 에서 새로운 무언가를 만들어 내는 것이다.

그러자면 내가 만들고자 하는 물건(프로그램)에 대해서 제작해야 할 업체에 최대한 소상하게 전달을 해야 한다.

예로 당신이 컵을 만드는 생산공장에 당신만이 생각한 획기적인 모양의 컵을 의뢰한다고 생각해보자.

아마 대부분의 업체는 상세한 설계서가 없으면 아예 당신의 문의를 거들떠도 보지 않을것이다.

이 세상에 얼마나 많은 종류의 컵이 존재하는지 당신이 한번만 더 생각해 보았다면

아마 최소한 크기와 어느정도의 모양은 종이에 그려서 가져가지 않겠는가? 프로그램도 마찬가지다.

 

2. 정확한 업무플로우가 존재하는가? 그렇다면 화면설계는 필요하지 않다.

 

업무가 명확하다면 그리고 그 업무의 어떠한 부분을

전산화 할지에 대한 정확한 계획이 서 있다면 화면구성은 필요하지 않다.

단지 그 업무플로우에 대한 시작부터 끝까지의 명확한 정의만이 필요할 뿐이다.

고객관리를 한다면 고객의 어떤것을 관리하는지 (ex- 이름/성별/나이/키/몸무게/성향 등..) 를 나열해 보자.

그리고 그런 각각의 항목들이 업무프로세스의 어느위치에서 활용되는지를 검토해 보도록 하자.

그리고 그 과정에 대해서 업체에 설명할 수 있을 만큼의 준비를 해야 한다.

가급적 회사에서 사용하고 있는 업무용 서류양식 등이 적합한 자료이다.

 

3. 이것도 있으면 좋겠고 저것도 있으면 좋겠고..

 

프로그램은 현재의 업무나 생활을 보조하는 역할이지 그것을 완전하게 대처할 수 있는 수단은 아니다.

그러므로 가장 효과적인 프로그램 제작 및 사용방법은

현재의 업무중 가장 시간이 많이 들어가며 혼돈이 잦은 데이터를

올바르게 정렬하고 백업하기 위한 목적을 최 우선으로 들어야 한다.

그러므로 초기 프로그램 개발시에는 현재 운영중인 업무를 우선하여 집중적으로 개발하여야 하며

앞으로 사용할 예정인 업무 등 현재까지 정형화되지 않은 업무는 가급적 빼고 개발을 하는것이

비용 및 효과면에서 효율적이다.

 

 

4. 이미 나와있는 프로그램을 조금만 수정하면..?

 

프로그램이란 소프트웨어 개발자가 작은 논리에서부터 큰 논리까지 각각 개별의 프로그램 알고리즘을 구현하여

제작된 소스(원료)를 알 수 없는 결과물 형태이다.

소스가 공개되어 있는(오픈소스) 프로그램이 아닌 이상 시중에 나와있는 프로그램들은

타 업체나 타 사용자가 소스를 수정할 수 없으며(볼수도 없다)

또한 수정한다고 해도 법적 저작권 문제에서 벗어날 수 없는 큰 범죄로서

모든 프로그램들은 프로그램의 역 어셈블(역으로 코드를 추적하여 알고리즘을 파악하는) 을 불허하고 있으며

이경우 막대한 손해배상에 대한 책임도 부과하고 있다.

 

 

5. 간단한 작업인데..

 

"간단하면 직접 하시면 되겠네요.."

 

사용자가 쉽다고 생각하는 프로그램은 내부적으로 매우 복잡한 알고리즘으로 구현된 경우가 많으며

사용자가 복잡하다고 여기는 프로그램일 수록 제 프로그램이 간단한 경우가 많다.

아무리 간단하다고 해도 요구사항을 듣는 일, 그 요구사항을 가시화 하는 일,

그리고 물건으로 만들어 내는 일은 어떻게 하더라도 간단하지 않다.

 

 

6. A업체는 얼마라는데 왜 이렇게 가격 차이가 많이 나나요?

 

당신이 만들고자 하는 프로그램에 대해서 A업체에서 인지하는 업무내용과

현재통화하고 있는 업체에서 인지하고 있는 업무내용이 정확하게 일치하는가?

통상 전화로 당신이 전달할 수 있는 내용은 당신이 생각하고 있는것에 10분의 1도 채 되지 않는 경우가 많으며

전화를 받는 사람이 그 10분의 1만을 보고 판단을 했느냐 아니면

그 뒤의 나머지 9 를 예측하고 판단을 했느냐에 따라 달라진다.

프로그램 개발업체에서도 어느정도 표준화된 개발견적단가가 존재하며 이는 기간으로 산정된다.

기간이 길면 그만큼 비용이 늘어나는 것은 당연. 모든 업체에게 객관적인 견적(실제개발할 수 있는 견적)을 받으려면

당신이 요구내용을 최대한 세부적으로 묘사하여 전달 하여야 한다.

 

 

7. 이미 만들어져서 판매되는 프로그램과 주문개발하려는 프로그램의 비용은 당연히 차이가 날 수 밖에 없다.

 

이미 만들어져서 판매되는 프로그램(패키지)은

제품으로 말하면 금형이 준비되어 찍어내기만 하면 되는(오히려 그보다 더 편한) 것이며

초기 투자비용(적게는 수천만원 많게는 수억원)을

업체에서 자체 투자하여 개발한 후 많은 사용자에게 판매하여 수익을 올리는

시장구조를 가지고 있다. 그러므로 비용이 적게는 수십,많게는 수백만원 선에서 처리가 될 수 있다.

그러나 주문개발 프로그램은 그때그때 개발비용 ( 패키지업체 입장에서보면 투자비용) 이 소요되므로 당연히 비용의

차이가 날 수 밖에 없다.

만들어져서 나오는 휴대폰을 구매하는데는 몇십만원 이면 되지만 당신 하나만을 위하여 모든 생산공정을

새로이 작업하여 휴대폰을 만들어야 할 경우엔 상상도 할 수 없는 금액이 나올 수 있는 것과 같다.

 

 

8. 이걸 만들면 당연히 다른것들도 같이 만들어 지는게 아닌가요?

 

예, 정확하게는 아닙니다.

프로그램이란 논리적으로 따라갈 수 있는 모든 업무의 형태를 개발하는 것은 아니며

사용자가 요구한(그러므로 사용자가 요구하지 않은 그외의 것들은 개발 이 되지 않습니다.)

항목을 기준으로 하여 프로그램을 개발합니다.

예를들어 고객이 "사용자의 정보를 관리하고 싶어요" 라는 말을 했을 경우

기본적으로는 사용자의 정보(고객이 제공해 준)항목을

기반으로 입력/수정/삭제/검색 정도의 기능이 들어갈 뿐입니다.

"사용자 정보관리라고 하면 상담관리나 생일이 되면 생일축하메세지도 보내주고 그런것도 다 되는거 아닌가요?"

라고 생각할 수 있지만 그런 전제 하에 놓고 볼때 "사용자 정보관리" 라는 개념이 무한확장되어 현존하는 최고의

"사용자정보관리" 기능으로 상호접근하게 되는 논리적 모순이 발생합니다.

통상 의뢰시 아래와 같이 하는것이 효율적입니다. "사용자 정보관리를 하고 싶어요"

"사용자의 정보는 약 10여가지 정도가 될것 같습니다."

"사용자 정보등록/수정/삭제 가 되면 되고요" "SMS 기능을 넣고 싶은데 우선 전체sms 발송하기와"

"사용자 생일,결혼기념일,명절때마다 보낼 수 있는기능과"

"사용자와의 전화 또는 미팅내용을 일자별로 보관하고 추후에 열람할 수 있는 기능이 있으면 좋겠어요"

 

 

 

9. A/S 는 언제까지 인가요?

 

A/S 는 초기 협의하게 구현된 프로그램이 정상적인 방법으로 사용시 문제를 발생할 경우를 말한다. 이 경우 법적으로 1년이라는 판례가 있어 보편적으로 1년을 A/S 기간으로 두고 있으나 대부분의 개발업체에서는 자신들이 만든 프로그램에 한하여 고객이 사용하는 기간동안 꾸준히 지원을 해 주는 경우가 많다.

 

 

 

10. A/S 와 유지보수 와 추가개발의 차이점.

 

 

A/S : 제품에 하자가 발생시 진행되는 절차로 최초 개발 완료된 시점의 기능이 보증기간이내에 이상이 발생할 경우

 

유지보수 : 제품에 최초 완료된 상태로 지속적으로 동작 가능하도록 관리하는 경우

 

(

 

ex: 용량관리 X - 누적용량의 증가로 저장장치의 한계에 도달하여 시스템 다운

ex: 용량관리 O - 지속적인 누적용량 모니터링을 통하여 일정시점에 과저 자료의 서버내 삭제 후 별도 보관등의

                   정책 지원으로 지속적으로 운영

)

 

추가개발 : 최초 출시된 이후 어떠한 형태로건 변경이 발생하는 경우

 

 

 

원문 : http://phpschool.com 에서 발췌한 글에서 10번 항목에 제 생각을 약간 반영하였습니다.


***** 2015.02.23 - 필자의 네이버 블러그의 글을 옮겼습니다.