전체 카테고리 302

소프트웨어 개발방법론의 한계

(출처 : http://www.buggymind.com/366 ) 소프트웨어 개발 방법론 중 가장 널리 쓰이고 있는 것은, 아마 아직도 폭포수(waterfall) 방법론일 것 같습니다. 요구사항 분석 - 설계 - 개발 - 검증으로 이어지는 이 단순한 방법론은 그 단순성과 명료함 때문에 '그다지 심각한 고민 없이도' 현업에 도입되어 쓰이고 있습니다. 그런데 폭포수 방법론에는 대관절 무슨 문제점이 있길래 그토록 많은 비난의 대상이 되고 있는 걸까요? 이미 많은 증거들이 있어서 사실 제가 또 언급할 필요까지는 없는건데, 집으로 돌아오는 비행기 안에서 이런 저런 생각하다보니 이런 결론에 이르게 되더군요. '단순성' 폭포수 방법론은 사실 프로젝트 진행중에 벌어지는 다양한 상황을 처리하기에는 좀 지나치게 단순합니다..

엔지니어 2012.07.06

소프트웨어 개발방법론의 함정

(출처 : http://www.zdnet.co.kr/news/news_view.asp?artice_id=20091129180815&type=det) 체계화된 프로세스와 산출물들로 무장한 개발방법론은 회사에 필요한 이상적인 무기를 제공해줄 것 같지만, 개발방법론을 도입해 크게 효과를 본 회사를 찾기는 쉽지 않다. 개발방법론이 개발을 더 지연시키고 개발자들을 번거롭고 힘들게 한다고 하기도 하고 개발방법론을 도입해서 사용하다가 포기하고 다른 방법들을 기웃거리기도 한다. 왜 이렇게 성공적으로 개발방법론을 도입하는 것이 어렵고, 개발방법론을 효과적으로 소프트웨어 개발에 적용하기 위해서는 어떻게 해야 하는지 알아보자. 독자들 중에서도 개발방법론들을 경험해 본 사람들이 꽤 있을 것이다. 실제로 개발방법론을 경험해 봤..

엔지니어 2012.07.06

mkfifo 함수 예제

mkfifo(const char *pathname, mode_t mode) - 2개의 매개 변수가 필요하네. - mkfifo(파이프사용할 파일명, 모드) - 이걸로 FIFO 파일을 생성하면 이후로는 이파일을 가지고 파이프로 이동할 수 있다. - 동일한 fd를 이용한다면 다른 프로세스에서도 메시지를 받을 수 있다. - 주고 받는 양방향 불가. 수신하는 곳 #include #include #include #include #include #define FIFO_FILE "/tmp/fifo" #define BUFF_SIZE 1024 int main( void) { int counter = 0; int fd; char buff[BUFF_SIZE]; if(mkfifo(FIFO_FILE, 0666) == -1) { ..

엔지니어 2012.07.06

popen 함수 pclose 함수 예제

popen() - 명령어를 shell을 기동 시켜서 열고 pipe로 연결한다. - 이를 위해서 내부적으로 fork(), pipe()를 사용한다. - 실행 쉘인 /bin/sh에 -c 옵션을 사용하여 전달 pclose() - popen으로 열린 파이프 핸들 사용을 종료한다. #include #include #include #include int main() { FILE *fp = NULL; char cmd[1024] = {0,}; char buffer[1024]; pid_t ppid; pid_t *pid; snprintf(cmd, sizeof(cmd), "pidof -x /usr/sbin/sshd"); fp = popen(cmd, "r"); if( fp==NULL) { return -1; } fgets(bu..

엔지니어 2012.07.06

pipe 함수 예제

pipe() - 하나의 파이프 및 파이프에 대한 두 개의 파일 디스크립터가 생성 - 하나의 파이프를 프로세스들이 공유 #include "sys/types.h" #include #include #include #include #define MAXLINE 4096 /* max line length */ /* err_sys("") --> return(1) */ int main(void) { int n, fd[2]; pid_t pid; char line[MAXLINE]; if (pipe(fd) < 0) { printf("pipe error \n"); return(-1); /* err_sys("pipe error"); */ } if ( (pid = fork()) < 0) { printf("fork error \n..

엔지니어 2012.07.06

네트워크 프로그래밍 - 시리얼 통신 - 자료 수신을 위한 poll

2006.12.31 13:01:27 (*.138.143.127) 14819 54 / 0 이번 시간에는 시리얼 통신에서 자료를 수신하는 부분을 구현하려 합니다. 그러나 송신 보다 수신하는 부분은 생각할 점이 있습니다. 전송이야 이쪽에서 필요할 때 보내기만 하면 되기 때문에 "언제라는" 시간적인 문제가 없습니다. 그러나 수신은 자료가 언제 올지를 모르죠. 기다려야 한다는 것인데, 자료가 올 때까지 마냥 시리얼 포트만 쳐다 보고 있을 수 없습니다. 다른 일도 처리 해야죠. 해야할 일이 산더미처럼 쌓였는데, 마냥 포트만 쳐다 볼 수 없습니다. 이럴 때 쉽게 생각할 수 있는 것이 일을 처리하는 중에 잠시잠시 포트를 확인하는 방법입니다. 가령 예를 들어서 아래와 같이 하는 것이죠. while( 1) { // 다른 ..

엔지니어 2012.05.30

NMS의 기본 개념 - 장애관리

http://blog.daum.net/pinkky/6818685 (원본) NMS는 Network Management System의 약자로, 네트워크 관리 시스템 또는 망 관리 시스템이다. 이 말의 의미는 NMS는 네트워크를 관리하는 시스템이며 그 관리 대상이 네트워크 또는 망이라는 의미이다. 즉, 관리 대상이 네트워크 또는 망이라는 사실을 알 수 있다. 말장난 같다는 생각이 들지는 모르겠지만 NMS에서 관리대상의 정의란 매우 중요하다. 그렇다면 네트워크란 무엇인가? 네트워크라는 것은 전산 자원간의 연결 – 전산자원까지 포함해서 - 이다. 즉 "내 PC랑 네 PC랑 연결해서 잘 사용하고 싶어"라는 개념에서 네트워크의 개념이 출발한다고 보면 되겠다. 그렇다면 여기서 네트워크 관리자의 임무는 무엇일까? 네트워..

엔지니어 2011.08.23

Unix Domain Socket UDP

Unix Domain Socket - UDP 윤 상배 dreamyun@yahoo.co.kr 1절. 소개 우리는 이미 이전에 Unix Domain Socket를 이용한 IPC 에서 Unix Domain Socket 에 대한 기본적인 내용을 다루었었다. 그때는 SOCK_STREAM 을 이용한 연결지향의 Socket 를 사용했었는데, internet 소켓과 마찬가지로 UDP 특성 Socket 를 사용할수도 있다. 이번 글 에서는 UDP 를 이용한 Unix Domain Socket 에 대해서 알아보도록 하겠다. 2절. Unix Domain Socket (UDP) 2.1절. 특징 internet socket 상에서 UDP 를 다룰때, 관심을 가지는 특성이 비연결지향성이며, 그런이유로 데이타를 유실할수도 있으며, ..

엔지니어 2011.08.19