일단 작성하고 고쳐보는 개발

일단 작성하고 고쳐보는 개발
길을 닦고 굴림대를 준비하는 데 충분히 주의를 기울이지 않았을 때 생기는 문제점은 소프트웨어를 개발할 때도 똑같이 발생한다. 전체 소프트웨어 개발 팀 75%는 무작정 바위를 밀면서 프로젝트를 시작한다.
이것을 일단 작성하고 고쳐보는 개발 (code and fix development)이라 한다.
즉 소프트웨어 계획이나 설계없이 바로 코딩으로 들어가는 것이다. 개발자들이 코딩하기를 열망하거나, 관리자나 고객들이 진척상황을 빨리 눈으로 보고 싶어하기 때문에 이렇게 하기도 한다. 일단 작성하고 고쳐보는 개발은 아주 소규모의 프로젝트가 아니면 전혀 효과를 발휘하지 못한다.

일단 작성하고 고쳐보는 개발의 문제는 (우리가 바위를 무작정 옮기겠다고 덤볐을 때처럼) 출발선에서 빨리 떠났다고 해서 결승선에 빨리 가까워진다는 것을 의미하지 않는다는 데 있다. 진보된 접근 방식을 사용하는 팀은 생산성을 높은 단계까지 끌어올리고 효율적으로 일을 끝마치도록 도와주는 프레임워크를 사용한다. 사용한 프레임워크를 정하는 것은 바위 밑에 굴림대를 가져다 놓고, 길을 닦고, 프로젝트 님의 에너지를 한 곳에 맞출 수 있도록 준비하는 과정을 뜻한다. 일단 작성하고 고쳐보는 프로젝트는 바위를 일찌감치 옮기기 시작하지만, 매일 충분한 양만큼 옮길 수 있는 것은 아니다. 같은 속도를 지속하기도 쉽지 않다. 일반저긍로 이러한 접근 방식은 초기부터 몇십 만개의 결함을 발생시키다. 몇몇 연구에 의하면 소프트웨어 프로젝트 예산의 40% – 80%가 초기 결함을수정하는데 쓰인다고 한다.

일단 작성하고 고쳐보는 개발은 두 가지 측면에서 매력적이기 때문에 계속 쓰인다.
첫째, 실행 즉시 얼만큼 진척했는지 알 수 있다.
둘째, 프로젝트를 진행하는데 어떠한 훈련도 요하지 않느다는 것이다. 소프트웨어공학적 훈련이 부족한 업계는 이 방식을 가장 많이 사용한다. 일단 작성하고 고쳐보는 식의 접근은 바보들의 황금과 유사하다. 첫눈에는 더할 나위 없이 좋아 보이지만, 숙련된 개발자들은 그것이 얼마나 가치 없는 것인지 안다.

변수 이름을 체계적으로 지어라

1. 변수 이름을 체계적으로 지어라.
2. 헝가리안 표기법으로 변수 이름을 지어라.
3. 변수의 자료형을 변수 이름에 접두사로 표기하라.
4. 기억 영역 계층을 접두사로 활용하라.
5. 함수의 역할을 접두사로 활용하라.
6. 자신만의 접두사를 만들어 활용하라.

7. 이름을 의미 있게 지어라.
8. 비슷한 변수 이름을 사용하지 마라.
9. 의미를 잃지 않는 범위에서 짧게 지어라.
10. 이름이 길면 밑줄 또는 대소문자를 구분하라.
11. 변수 이름을 밑줄로 시작하지 마라.
12. 대소문자를 적절히 배합해서 만들어라.
13. 대소문자를 구분한다는 것을 악용하지 마라.

변수의 자료형에 따라 붙이는 접두사

접두사 접두사가 지시하는 내용
a 배열
arr 배열
b bool형 변수
c character형 변수
d double형 변수
f float형 변수
fd 파일 기술자
fp 파일 포인터형 변수
h 핸들
i int형 변수
n int형 변수
p 포인터형 변수
pfn 함수에 대한 포인터
r 참조형 변수
s String형 변수
str CString형 변수
u 부호 없는 정수(U=unsigned int)형 변수
w word형 변수 = unsigned int형

예 : iNumber, iCounter i_number

변수의 기억 영역 계층과 접두사

접두사 접두사가 지시하는 내용
a 자동(auto) 변수
s 정적(static) 변수
g 전역(global) 변수
e 외부(external) 변수
r 레지스터(register) 변수

예 : int siMyNum; int riCounter;
global unsigned char g_ucMynum;
global unsigned char g_uc_mynum;

함수의 접두사를 활용한 예

함수 예 의미
GetNumber() ‘Get’으로 수를 얻기 위한 함수라는 것을 알 수 있다.
SetNumber() ‘Set’으로 수를 설정하는 함수라는 것을 알 수 있다.
MaxNumber() ‘Max’로 수치 중에 최대값을 얻는 함수라는 것을 알 수 있다.
PutNumber() ‘Put’으로 수를 저장하기 위한 함수라는 것을 알 수 있다.

프로그래머들 사이에서 관행적으로 쓰이는 접두사

접두사 지시하는 내용
Avr 평균값을 얻는다 AvrOfTot
Cnt 데이터의 개수를 얻는다 CntAllthing
Check 어떤 값을 검증한다. ChkData
Get 어떤 값을 얻어낸다. GetData
Set 어떤 값을 설정한다. SetData
Is 무엇인가에 대해서 묻는 역할을 한다. IsKey
Key 데이터 중에서 키 값만을 얻는다. KeyPaymentTable
Max 최대값을 얻는다. MaxOfNum
Mid 중간값을 얻는다. MidOfData
Min 최소값을 얻는다. MinOfArray

프로그래머들 사이에 관행적으로 쓰이는 축약어

어휘 축약어
function func
number num
day d 또는 dd
month m 또는 mm
year y 또는 yy
temporary temp
terminate end
terminal term

대소문자를 구분하여 이름을 짖는 프로그래머의 관행
1. 변수나 객체의 이름은 소문자를 시작한다.
2. 함수, 클래스, 구조형, 공용형 등의 이름은 대문자로 시작한다. (메소드 포함).
3. 기호 상수나 매크로 함수는 모든 글자를 대문자로만 짓는다.

주석을 작성할 때 좋은 코딩 습관

프로그램의 앞부분에 머리 주석을 반드시 달아라
잘 만들어진 주석의 예
/*****************************************************************************/
/* 파일명 : newaccnt.c
/* 작성자 : 1. 출처 :
www.gnu.org의 logcount.c
/* 2. 작성 : 소프트웨어 개발 2팀 아무개
/* 목적 : 사용자 로그 기록을 읽어들여
/* 콜 센터에 제공할 통계를 작성한다.
/* 사용방식 : 매일 한번씩 운영체제에 작성한
/* 스케줄러 프로그램 sched.exe에 의해서 자동으로 실행된다.
/* 이 프로그램을 컴파일하여 만든 실행 파일인 newaccnt.exe는
/* 반드시 sched.exe와 같은 디렉토리에 있어야 한다.
/* 사용파일 : userlog.dat를 읽기모도(r)로 읽어 통계를 낸 후에
/* useracnt.dat에 갱신 모드 (w)로 통계를 기록한다.
/* 제한사항 : 1. userlog.dat이 사전에 반드시 먼저 작성되어 있어야 한다.
/* 만약, 작성되어 있지 않다면 logcount.exe 파일이 제대로 작동하는지 점검한다.
/* 2. 이 프로그램은 반드시 새벽 2시 이후에 작동되어야 한다.
/* 만약 스케줄러 프로그램인 sched.c를 수정하는 경우에 이 시간을 고치지 말것.
/* 오류처리 : 1. 각종 오류가 발생한 경우에 오류 로그파일을
/* errlog.dat로 작성하고 바로 종료한다.
/* 이력사항 : 1. 2002년 3월 10일 최초 작성
/* 2. 2002년 6월 5일 스케줄러 프로그램과 연동되도록 수정
/*****************************************************************************/

/************** 이력사항 *****************************************/
/* v 1.0, 1990.10.1, 통신연구소, 아무개, 최초의 통신모듈을 작성하다.
/* v 1.1, 1990.11.1, 통신연구소, 아무개, callprooc()를 개선하여 속도를 높이다.
/****************************************************************/

다양한 주석의 형태
/* 한 줄 주석은 프로그램의 본문 주석에 많이 사용된다. */
/* –>주의 : 오류 메시지 처리 확인 요망 <–*/
/*>>>>>>>>>>>>> 정밀 계산 루틴 <<<<<<<<<<<<<*/
/*
* 여러 줄에 걸친 주석을 이런 식으로 작성할 수 있다.
* 이런 꼴의 주석은 특별히 강조할 사항은 아니지만
* 긴 문장으로 장황하게 설명하여야 할 때 사용한다.
*/

/*
* 이 모듈은 입력값을 검증한다.
* —————————————————————–
* 줄을 만들어 주석내용을 구분하기도 한다.
*
*/

/********************************************************/
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 경고 (Warning) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
/********************************************************/
/* 이 프로그림은 특별히 주의를 요한다. 열차의 제어
/* 모듈이기 때문이다. 모든 수치를 정밀하게 검증할
/* 필요가 있으면 수십 차려 이상 테스트해야 한다.
/********************************************************/

/*****************************************/
/******************************************
/**** 주의사항 : 절대로 이 프로그램에서는 ******
/**** 부동 소수점 연산을 하여 근사치를 ******
/**** 사용하면 안된다. 반드시 정수형면수만******
/**** 사용하라. 형 변환이 일어나서도 안된다*****
/******************************************
/*****************************************/

한 줄 주석과 주석 상자를 구분하라.

변수 사전 작성요 주석을 달아라
int area; /* 면적 : 지금 시공할 건물의 대지 면적을 계산한다.*/
int wide; /* 넓이 : 대지의 동서방향의 가로길이, 미터단위로 계산한다. */
int height; /* 높이 : 대지의 남북방향의 세로길이, 미터 단위로 계산한다.*/

의사 코드를 프로그램에 기입하라
프로그램의 목적을 주석으로 달아라
/**********************************************/
/* 언제 작성일 : 2004년 2월 10일 */
/* 어디서 장 소 :
/* 누가 작성자 :
/* 무엇을 코드성격 : php 코드로 약 20여줄
/* 왜 작성사유 :
/* 어떻게 작성환경 : APM
/**********************************************/

좋은 도메인…

좋은 도메인이란
좋은 도메인이란 일단 한번만 들어도 오래 기억될 수 있어야 한다. 이런 이름들은 이미 등록된 것이 많아 좋은 이름을 짓고도 등록할 수 없는 경우도 많다. 하지만 몇 가지 요령만 안다면 아직 등록하지 않은 숨겨진 도메인을 찾아 낼 수 있다. 그럼 좋은 도메인 이름을 짓는 방법을 알아보자.

● 가급적이면 알파벳 8자 이내로 이루어져야 한다.
● 사전을 찾지 않아도 누구나 쉽게 알 수 있으면 더욱 좋다.
● 홈페이지의 내용이나 성격과 어울려야 한다.
● 회사 소개 홈페이지라면 회사 상호와 맞아야 한다.
● 한글을 소리나는대로 풀어쓰기보다는 영어로 번안한 도메인이 좋다.
● 발음하기가 쉬워야 한다.
● 도메인 네임에 재미있는 숫자를 이용한 것도 좋다.
● 신조어로 구성되거나 합성된 도메인이라면 더욱 좋다.

출처 : http://blog.naver.com/fallskya/100004556493

좋은 도메인이란 ? ? 쉬워야 한다

안타깝게도 인터넷은 한국에서 시작되지 않았다. 그래서 도메인은 전부 영어로 되어 있다. 물론 한글 도메인도 있긴 하지만 아직까지 대중적으로 쓰이지 않고 있다.
한글도메인이 본격적으로 사용된다면 괜찮긴 하지만.. Continue reading “좋은 도메인…”

MMS PORT

MMS:// 윈도우미디어 서버의 프로토콜
port는 1755번 : 이 포트 열어야 가능하다.

DNS port는 53번…

Port State Service
9/tcp open discard
13/tcp open daytime
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
37/tcp open time
80/tcp open http
110/tcp open pop3
111/tcp open sunrpc
113/tcp open auth
139/tcp open netbios-ssn
443/tcp open https
515/tcp open printer
993/tcp open imaps
995/tcp open pop3s
9999/tcp open abyss

echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users #Active users
systat 11/tcp users #Active users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote #Quote of the day
qotd 17/udp quote #Quote of the day
chargen 19/tcp ttytst source #Character generator
chargen 19/udp ttytst source #Character generator
ftp-data 20/tcp #FTP, data
ftp 21/tcp #FTP. control
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer Protocol
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource #Resource Location Protocol
nameserver 42/tcp name #Host Name Server
nameserver 42/udp name #Host Name Server
nicname 43/tcp whois
domain 53/tcp #Domain Name Server
domain 53/udp #Domain Name Server
bootps 67/udp dhcps #Bootstrap Protocol Server
bootpc 68/udp dhcpc #Bootstrap Protocol Client
tftp 69/udp #Trivial File Transfer
gopher 70/tcp
finger 79/tcp
http 80/tcp www www-http #World Wide Web
kerberos 88/tcp krb5 kerberos-sec #Kerberos
kerberos 88/udp krb5 kerberos-sec #Kerberos
hostname 101/tcp hostnames #NIC Host Name Server
iso-tsap 102/tcp #ISO-TSAP Class 0
rtelnet 107/tcp #Remote Telnet Service
pop2 109/tcp postoffice #Post Office Protocol – Version 2
pop3 110/tcp #Post Office Protocol – Version 3
sunrpc 111/tcp rpcbind portmap #SUN Remote Procedure Call
sunrpc 111/udp rpcbind portmap #SUN Remote Procedure Call
auth 113/tcp ident tap #Identification Protocol
uucp-path 117/tcp
nntp 119/tcp usenet #Network News Transfer Protocol
ntp 123/udp #Network Time Protocol
epmap 135/tcp loc-srv #DCE endpoint resolution
epmap 135/udp loc-srv #DCE endpoint resolution
netbios-ns 137/tcp nbname #NETBIOS Name Service
netbios-ns 137/udp nbname #NETBIOS Name Service
netbios-dgm 138/udp nbdatagram #NETBIOS Datagram Service
netbios-ssn 139/tcp nbsession #NETBIOS Session Service
imap 143/tcp imap4 #Internet Message Access Protocol
pcmail-srv 158/tcp #PCMail Server
snmp 161/udp #SNMP
snmptrap 162/udp snmp-trap #SNMP trap
print-srv 170/tcp #Network PostScript
bgp 179/tcp #Border Gateway Protocol
irc 194/tcp #Internet Relay Chat Protocol
ipx 213/udp #IPX over IP
ldap 389/tcp #Lightweight Directory Access Protocol
https 443/tcp MCom
https 443/udp MCom
microsoft-ds 445/tcp
microsoft-ds 445/udp
kpasswd 464/tcp # Kerberos (v5)
kpasswd 464/udp # Kerberos (v5)
isakmp 500/udp ike #Internet Key Exchange
exec 512/tcp #Remote Process Execution
biff 512/udp comsat
login 513/tcp #Remote Login
who 513/udp whod
cmd 514/tcp shell
syslog 514/udp
printer 515/tcp spooler
talk 517/udp
ntalk 518/udp
efs 520/tcp #Extended File Name Server
router 520/udp route routed
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp #For emergency broadcasts
uucp 540/tcp uucpd
klogin 543/tcp #Kerberos login
kshell 544/tcp krcmd #Kerberos remote shell
new-rwho 550/udp new-who
remotefs 556/tcp rfs rfs_server
rmonitor 560/udp rmonitord
monitor 561/udp
ldaps 636/tcp sldap #LDAP over TLS/SSL
doom 666/tcp #Doom Id Software
doom 666/udp #Doom Id Software
kerberos-adm 749/tcp #Kerberos administration
kerberos-adm 749/udp #Kerberos administration
kerberos-iv 750/udp #Kerberos version IV
kpop 1109/tcp #Kerberos POP
phone 1167/udp #Conference calling
ms-sql-s 1433/tcp #Microsoft-SQL-Server
ms-sql-s 1433/udp #Microsoft-SQL-Server
ms-sql-m 1434/tcp #Microsoft-SQL-Monitor
ms-sql-m 1434/udp #Microsoft-SQL-Monitor
wins 1512/tcp #Microsoft Windows Internet Name Service
wins 1512/udp #Microsoft Windows Internet Name Service
ingreslock 1524/tcp ingres
l2tp 1701/udp #Layer Two Tunneling Protocol
pptp 1723/tcp #Point-to-point tunnelling protocol
radius 1812/udp #RADIUS authentication protocol
radacct 1813/udp #RADIUS accounting protocol
nfsd 2049/udp nfs #NFS server
knetd 2053/tcp #Kerberos de-multiplexor
man 9535/tcp #Remote Man Server

ERP

ERP는 자원에 대한 계획뿐만 아니라 거래의 처리와 관리를 포함한 회사의 전반적인 업무에 활용하기 위한 패키지 형태의 업무용 소프트웨어를 말한다. 특히 Enterprise가 가지는 ‘전사적’이라는 것은 매우 의미가 있다.
회사 내 모든 조직의 계획, 제조, 구매, 판매, 재고, 인사 등의 업무 프로세스들을 단 하나의 시스템에서 통합적으로 지원하는 것이 ERP의 목표이기 때문이다. 그래서 일본에서는 ERP를 전사 업무관리로 번역하고 있다.

통합 시스템의 딜레마

1. 통합시스템은 유연성이 부족하기 때문에 시스템 수정이 쉽지 않다.
2. 사용자가 자신의 판단에 의해 자유롭게 시스템을 사용할 수 있는 여지가 작다.
3. 통합 시스템은 관련 부분간의 연계가 복잡하기 때문에 일반적으로 이해하고 사용하기가 어렵다.
4. 정보를 실시간으로 제공한다는 점에서 효과가 있지만 정확도가 떨어질 경우에는 오히려 커다란 혼란을 초래할 수 있다.

기업인들이 ERP에 대해 부정적인 생각을 갖게 된 근본적인 이유는 ERP와 같은 경영혁신 프로젝트 뒤에는 반드시 절망의 계곡이 따르기 때문이다. 절망의 계곡이란 기업이나 조직을 혁신적으로 변화시킬 때 성과가 일시적으로 저하되는 현상을 말한다.