'개발'에 해당되는 글 188건
- 2008.10.14 RED5
- 2008.10.14 REST [ representational state transfer ]
- 2008.10.08 BPR (Business Process Re-engineering)
- 2008.10.08 관리기법1
- 2008.10.02 TortoiseSVN 설치 및 사용방법
- 2008.10.01 엑셀함수활용콘사이스145.rar
- 2008.10.01 JUnit 을 이용한 단위 테스트
- 2008.10.01 클래스 다이어그램 3
- 2008.10.01 유스케이스(Usecase) 다이어그램 1
- 2008.10.01 UML의 구성
이 문서는 rhel4에서 테스트되었다.
1. red5란 무엇인가?
flash player 중간스트리밍이 가능하도록
리눅스서버에 설치하는 스트리밍 프로그램이다.
2. 설치과정
Installing Red5, version 0.4.1 takes 4 steps
- Installing the Java 1.5 JDK
- Installing Apache Ant.
- Setting the wright Path Variables
- Installing Red 5
First of all, you will need to be logged in as root. Were using bash as shell
Step 1. Installing the Java 1.5 JDK
jdk-1_5_0_14-linux-i586.bin
최신버전을 받는다. 리눅스용중에서 rpm자동설치버전을 받아라.
./jdk-1_5_0_14-linux-i586-rpm.bin
자동설치된다.
주의) 설치전
rpm -qa|grep jdk
rpm -qa|grep java
등 해서 모두 제거한다.
기본설치가 되면, rpm 으로 설치된다.
jdk-1.5.0_14-fcs
/usr/java/jdk1.5.0_14
#vi /etc/profile
맨 밑에
JAVA_HOME=/usr/java/jdk1.5.0_14 #자바가 설치된 위치입니다.
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
이런식으로 저장
#source /etc/profile
설치 끝
텔넷사용시, 로그아웃하고나서 다시로그인할 것
java -version
으로 버전확인할 것
Now let's check the Java version:
[root@hostname ~]# java -versionIt should read something like this:
java version "1.5.0_14"OK 설치성공
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
That was step 1. Still here? let's go to step 2
Step 2. Installing Apache Ant.
드디어, 2장으로 돌입한다.[root@hostname ~]# cd /usr/local/
wget wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.6.2-bin.tar.gzrename the dir to ant
[root@hostname ~]# tar xvzf apache-ant-1.6.2-bin.tar.gz
[root@hostname ~]# ln -s apache-ant-1.6.2 ant
압축풀고, 이름바꾼후에 /usr/local/ant 로 링크시킨다.
1.7.0 에 문제가 있는 것 같음. ant는 버전을 테스트해보고 설치할 것.
ant의 문제는 ant server & 로 할경우 데먼이 올라오지만,
ant 만 실행하면 에러가 남. 1.7.x대역은 데먼이 제대로 실행안됨.
이 부분은 좀 더 연구해 봐야 할 문제
Step 3. Setting the wright Path Variables.
3장 진입
If you'll be running Red5 as root (which you shouldn't) you can add the paths to /root/.bash_profile
otherwise you can add them to /etc/profile add these two lines:
즉,
vi /etc/profile
한 다음,
export ANT_HOME=/usr/local/ant
export PATH=$ANT_HOME/bin:$PATH
이렇게 2줄 추가하고
저장한 후
#source /etc/profile
ant 설치 끝
Step 4. Installing Red5.
red5 설치하기 http://osflash.org/red5 -> wget http://dl.fancycode.com/red5/0.6.3/src/red5-0.6.3.tar.gz
download Red5
[root@hostname ~]# adduser red5
새 사용자 계정을 만든다. 예를들어 red5라고 하자. 이 아이디로는 flv동영상을 올리게 된다.
cd ~red5[root@hostname ~]# tar zxf ~/red5/red5-0.6.3.tar.gz이제 최신버전 다운로드한 것을 푼다.
red5-0.6.3
[root@www red5]#
[root@www red5-0.6.3]# ls
build.properties doc ivy.xml Makefile red5_debug.sh red5-shutdown.bat swf
build.xml dumps lib red5.bat red5-highperf.bat red5-shutdown.sh test
conf ivyconfig.xml license.txt red5_debug.bat red5.sh src webapps
[root@www red5-0.6.3]#
이제 설치하자
ant server &
이 명령으로 red5가 있는 위치를 기본으로 설치가 시작됨
약 15분간 진행됨.
/etc/rc.d/init.d/red5 스크립트 작성
#! /bin/sh
#
# Author: Jake Hilton <red5@jakehilton.com>
# /etc/init.d/red5
#
# Check for missing file
RED5_DIR=/home/red5/red5-0.6.3/
test -x $RED5_DIR/red5.sh || exit 5case "$1" in
start)
echo -n "Starting Red5 Service"
echo -n " "
cd $RED5_DIR
su -s /bin/bash -c "$RED5_DIR/red5.sh &" root
sleep 2
;;
stop)
echo -n "Shutting down red5"
echo -n " "
su -s /bin/bash -c "killall -q -u red5 java" root
sleep 2
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
;;
esac
---------------------------------------------
굵은 부분은 중요하니 알아서 수정할 것
스크립트 구동
/etc/rc.d/init.d/red5 stop
/etc/rc.d/init.d/red5 start
테스트해보기
[root@www red5-0.6.3]# telnet localhost 1935
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
[WARN] 39168 mina-1:( org.red5.server.net.rtmp.RTMPMinaIoHandler.sessionOpened ) Is tcp delay enabled: false
접속성공함
^] 키보드 Ctrl+] 입력
telnet> quit
Connection closed.
[root@www red5-0.6.3]# [DEBUG] 64717 mina-4:( org.red5.server.BaseConnection.close ) Close, not connected nothing to do.[root@www red5-0.6.3]#
[root@www red5-0.6.3]# ps -ax|grep red5
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ
18535 pts/0 Sl 0:01 /usr/bin/java -cp red5.jar:conf: org.red5.server.Standalone
18596 pts/0 S+ 0:00 grep red5
[root@www red5-0.6.3]#
[root@www red5-0.6.3]# netstat -an|more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN
tcp 0 104 116.197.138.27:22 211.187.59.252:4231 ESTABLISHED
tcp 0 0 127.0.0.1:35137 127.0.0.1:5080 FIN_WAIT2
tcp 0 0 127.0.0.1:5080 127.0.0.1:35137 CLOSE_WAIT
1935포트가 정상적으로 LISTEN중이다.
이제 플레이어를 설치하자.
flash_media_player.zip 첨부한 파일 참고
파일을 풀어서 서버에 올림
drwxrwxrwx 2 root root 4096 Jul 30 18:48 extras
-rwxrwxrwx 1 root root 20920 Apr 8 2005 image.jpg
-rwxr-xr-x 1 root root 754 Jan 5 04:08 mediaplayer.html
-rw-r--r-- 1 root root 35041 Dec 18 06:56 mediaplayer.swf
-rwxrwxrwx 1 root root 81222 Dec 27 2006 movie.swf
-rwxrwxrwx 1 root root 343 Jan 5 04:35 playlist.xml
-rwxrwxrwx 1 root root 10055 Feb 10 2007 preview.jpg
drwxrwxrwx 2 root root 4096 Apr 18 2007 readme
-rwxrwxrwx 1 root root 47024 Aug 11 2005 song.mp3
drwxrwxrwx 3 root root 4096 Dec 18 06:58 source
-rwxrwxrwx 1 root root 6880 Mar 1 2007 swfobject.js
-rw-r--r-- 1 root root 305 Jan 5 04:37 test.html
-rwxrwxrwx 1 root root 282797 Aug 11 2005 video.flv
[root@www public_html]# pwd
/home/red5/public_html
[root@www public_html]#
/home/red5/public_html 이라고 가정함.
풀어서 올린결과
이 플레이어는 rtmp://를 지원한다.
mv mediaplayer.html index.html
아파치 virtual 셋팅
<VirtualHost *:80>
DocumentRoot /home/red5/public_html
ServerName red5.도메인.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/red5/red5-0.6.3
ServerName red5rtmp.도메인.com
</VirtualHost>
2개를 동시에 만든다.
왜냐? 해당폴더에 접근이 가능해야 하기때문이다.
아래것은 rtmp://도메인명:1935/oflaDemo/file.flv 형태로 접근하기 위한 것
vi index.html 수정
------------------------------------------
<html>
<head>
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<h3>single file, with preview image:</h3>
<p id="player2"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
<script type="text/javascript">
var s2 = new SWFObject("mediaplayer.swf","playlist","640","480","1");
s2.addParam("allowfullscreen","true");
s2.addVariable("file","playlist.xml");
s2.addVariable("displayheight","380");
s2.addVariable("backcolor","0x000000");
s2.addVariable("frontcolor","0xCCCCCC");
s2.addVariable("lightcolor","0x996600");
s2.addVariable("width","640");
s2.addVariable("height","480");
s2.write("player2");
</script></body>
</html>
-----------------------------------------------------------
vi playlist.xml수정
------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList><track>
<title>FLV Test 2</title>
<creator>Postman</creator>
<location>rtmp://red5rtmp.도메인.com:1935/oflaDemo/</location>
<identifier>Transformers.flv</identifier>
<meta rel="type">rtmp</meta>
</track></trackList>
</playlist>
------------------------------------------------
여기가 중요함
[root@www streams]# ll
total 19980
-rw-r--r-- 1 root root 4546420 Sep 11 14:31 IronMan.flv
-rw-r--r-- 1 root root 8446642 Mar 15 2007 on2_flash8_w_audio.flv
-rw-r--r-- 1 root root 7405850 May 19 2007 Transformers.flv
[root@www streams]# pwd
/home/red5/red5-0.6.3/webapps/oflaDemo/streams
[root@www streams]#
이 속에 존재하는 파일중에 연결한다.
rtmp://주소는 oflaDemo/폴더까지만 적어준다.
이제 테스트해보자
http://red5.도메인.com
했을때, 플레이가 되면 끝남
(주)웹호스트 작성 http://www.webhost.co.kr
작성 : 2008년 1월4일[출처] Setting up Red5 on Redhat ES 4|작성자 장창학
REST [ representational state transfer ]
BPR (Business Process Re-engineering)
관리기법/1
(1) 개요
관리기법/1은 시스템 개발의 전 단계 즉, 계획수립에서 분석 및 설계, 설치 및 운용까지를 지원하는 시스템개발방법론이며 시스템 개발 및 운용 관리, 품질보증활동 등을 지원하는 프로젝트관리 방법론이다.
(2) 구성체계
관리기법/1은 개발경로, 작업 오브젝트, 기법 등 3개의 주요 구성요소로 이루어 진다.
1) 개발경로
개발 경로는 다음과 같이 정의된다.
· 일련의 시스템 개발 또는 유지관리와 관련된 활동으로
· 이러한 활동 및 태스크는 다음과 같다.
- 특정한 목적을 갖는다.
- 작업을 완료할 때 생성, 검토, 또는 갱신할 작업 오브젝트 또는 전달물을 지시한다.
- 전형적으로 작업을 수행할 직능 유형을 정의한다.
이러한 정의에 따라 관리기법/1에서는 프로젝트의 규모, 기술적 범위, 업무절차를 고려하여 주요 개발경로로 정보계획수립, 클라이언트/서버 시스템 개발, 호스트 시스템 개발, 패키지 시스템 개발, 소규모 프로젝트 개발, 고속개발로 나눈다.
· 정보 수립계획—전략적 업무 필요 및 기술 요건을 파악하고 정의한다. 또한 개별적인 프로젝트 수준에서 계획수립을 다룬다.
· 클라이언트/서버 개발—클라이언트/서버 환경에서 분산되고 협동적인 처리를 요구하는 정보 시스템을 위한 것이다. 이 경로에서는 새로운 구성요소를 생성하는 방법과 필요한 경우 기존의 시스템을 통합하는 방법을 제공한다.
· 호스트 개발—기존의 호스트 환경에서 전통적인 온라인 처리를 요구하는 정보 시스템을 위한 것이다.
· 패키지 시스템 개발—시중의 소프트웨어로 충족될 수 있는 업무 그리고 정보 요구를 위한 것이다. 가용한 소프트웨어 패키지를 평가하고 선정하며 필요한 경우 표준 또는 요구사항을 충족시키도록 사용자화하여 설치하는 절차들이 포함된다.
· 소규모 프로젝트 개발—클라이언트/서버 개발과 호스트 개발 두 경로의 부분 집합이다. 이 경로의 범위는 넓은 방법론(클라이언트/서버와 호스트 개발 경로와 같은)과 소규모의 고속 개발 접근방법 사이에 있다.
· 고속 개발—소규모 프로젝트 팀으로 3개월에서 6개월의 기간 동안에 고품질의 응용 시스템을 구축하는 것이다. 팀은 JAD(joint application development), 타임박스, 프로토타이핑과 같은 특정한 기법을 적용하여 “고속”으로 수행한다.
· 시스템 운용 관리—사용자에게 최소한의 혼란으로 시스템 수정이 효과적으로 관리되고 구현되는 것을 보장한다.
또한 관리기법/1에서는 이러한 개발경로와 관련되어 프로젝트 관리, 기반구조 관리를 제공한다.
· 프로젝트 관리—수행중에 있는 업무의 계획이나 관리, 기술이나 경험을 적절하게 섞어서 결합하는 일, 업무의 진행과 질을 감시하는 일 등과 같이 핵심적인 프로젝트 기능을 규정한다.
· 기반구조 관리 - 응용개발 환경과 아키텍쳐를 지원하는 방법론을 제공한다.
2) 개발기법
관리기법/1에서는 각 개발경로에서 진행되는 분석, 설계, 프로젝트 관리, 품질, 기반구조 관리를 지원하기 위하여 개발기법을 제공한다.
3) 작업 오브젝트
작업 오브젝트란 방법론에서 어떤 작업을 완수하기 위해 작성하고 참조하며 관리하게 되는 전달물이며 시스템에 관한 지식의 집합이다. 각 작업 오브젝트는 다음 태스크에 필요한 입력사항이 되며 프로젝트 팀간에 활용을 위하여 리포지터리에 저장되어 관리되는 것이 바람직 하다.
관리기법/1에서는 개발자가 표준양식에 따라 작성하는 전달물로써 작업 오브젝트에 대한 샘플을 제공한다.
(3) 구조
관리기법/1은 개발경로들로 나뉘어 지는데, 각 개발경로들은 단계와 세그먼트 및 태스크의 세 가지 유형의 항목으로 구성된다. 각 개발경로들은 프로젝트의 업무 범위와 기술적 요소, 자원 요소에 의해 정의된다. 단계는 관리기법/1에서 최고 수준의 항목이다. 각 단계는 방법론 계층에서 다음 수준의 세부사항을 나타내는 세그먼트로 나뉘어진다. 각 세그먼트는 태스크로 나뉘어 진다. 태스크는 계층에서 최하위 수준이다.
세그먼트와 태스크가 작업 오브젝트와 전달물을 만드는 실제 활동들이다.
관리기법/1
관리기법/1에서 제공하는 단계중 클라이언트/서버 개발 단계가 대규모 프로젝트를 기준으로 전체 경로들을 포함하고 있으므로, 클라이언트/서버 개발 단계를 본 보고서의 분석에 이용한다.
클라이언트/서버 개발경로에서는 새로운 시스템의 요건을 계통적으로 조직화하고 이러한 요건에 맞도록 시스템을 설계하고 시스템을 구축, 시험, 전개하는 세그먼트들을 포함한다. 여기에는 아키텍쳐(개발, 실행, 운용)을 설계하고 구축, 시험하며 전환하는 세그먼트도 포함된다.
관리기법/1 클라이언트/서버 개발경로 세그먼트 분석
클라이언트/서버 개발경로 중 분석 및 설계, 개발, 설치 단계에 해당되는 세그먼트들은 다음과 같다.
1) 사용자 요구사항
사용자가 필요로 하는 요구사항과 새로운 시스템이 운용될 새로운 전반적인 업무 흐름 및 조직을 이해하고 문서화한다. 또한 프로젝트팀은 사용자의 요구사항과 아울러 기존 시스템과 새로운 시스템의 차이를 찾아 새로운 시스템의 관점에서 필요한 변경사항과 변경되지 않을 구성요소들을 식별한다.
개발기법 - JAD, 면담 등
2) 품질요건
시스템이 그 기능을 얼마나 성공적으로 수행해낼 수 있을 것인가를 기술한다. 일반적으로 성능, 신뢰성, 사용성, 유연성 등의 품질요건을 분석하여 그 측정 방법과 목표치를 정한다. 또한 품질요건들 간에 상충되는 사항이 있는 경우에는 예산, 구현일정 등을 고려하여 품질요건의 순위를 정한다.
3) 요구사항 분석
사용자요구사항 세그먼트에서 분석된 사항들을 사용자와 프로젝트팀 모두가 이해하고 확인할 수 있도록 업무프로세스의 프로토타입을 작성하고 이벤트 모델, 데이터 모델, 프로세스 모델을 통하여 요구사항 모델을 공식화 한다.
4) 업무절차 설계
사용자 관점에서 신규 시스템의 모습을 정의하는 세그먼트로 주요 활동은 대화설계, 윈도우와 기타 입출력 설계, 상세한 작업 흐름을 정의한다.
5) 기술설계
이 세그먼트는 응용 아키텍쳐의 정의 작업부터 시작된다. 요구사항을 기술적 아키텍쳐의 구성요소에 대응시키는 작업과 시스템의 상세한 구성요소를 설계하는 데 필요한 표준과 지침을 마련하는 전반적인 설계 결정이 포함된다. 그 다음 단계로 데이터와 프로세스를 네트워크 전체에 분산시키고, 프로그램을 모듈단위로 구분하고, 프로그램간과 모듈간의 메세지를 설계 및 외부시스템과의 인터페이스 설계를 한다. 데이터 모델은 일단 논리 데이터베이스로 변환시킨 후 물리 데이터베이스 설계로 변환시킨다. 마지막으로 IS운용 필요사항이 고려된다.
6) 품질검증
사용자와 기술 담당자가 모든 기능 요건이 설계 내용에 모두 포함되어 있으며 목표로 하는 품질요건을 충족시킬 수 있을 지에 대해 검증한다. 이 세그먼트에서는 프로토타이핑되거나 시험될 수 있는 품질속성인 사용성과 성능에 특히 주의를 두어야 한다.
7) 전환설계
새 시스템을 운용하는데 필요한 활동 즉, 사용자 교육, 데이터베이스 변환, 시험 및 전개 등에 관한 활동들을 계획 한다.
8) 아키텍쳐 설계 및 프로토타입
이 세그먼트의 초점은 아키텍쳐 설계이다. 아키텍쳐에 대한 개념 설계를 검증, 갱신하고 공급업체 및 제품을 재검토한 후 권고안을 작성한다. 실질적인 프로토타이핑 시험에서는 응용에서 요구하는 모든 요건들을 아키텍쳐가 충족시키는지를 확인한다.
9) 아키텍쳐 구축 및 시험
프로젝트 팀은 아키텍쳐 구성요소를 구축하고 시험한다. 아키텍쳐 및 개발 프로세스는 아키텍쳐 개발자들과 공동으로 아키텍쳐 구성요소, 도구, 표준 등의 베타 테스트를 수행함으로써 시스템 및 그 개발환경이 성능에 대한 요구사항을 모두 만족시키고 있는지를 확인한다.
10) 상세 설계
이전 세그먼트에서 시작되었던 설계 작업을 완료하고, 각 작업 단위에 대한 상세한 문서를 작성한다. 또한 각 프로그래밍 작업단위의 논리 데이터 뷰와 물리 데이터베이스를 작성하고 설계검토를 실시한다. 마지막으로 컴파일 단위를 시험하는 데 사용할 수 있는 공통 시험데이터를 마련한다.
11) 사용자 절차 및 교육
프로젝트 팀은 시스템을 지원하는 성능, 보안, 제어, 컴퓨터 운용 기능들에 대해 사용자 절차를 작성한다. 아울러 입력문서, 출력양식 등에 대한 설계를 마무리 짖고 사용자절차, 보안절차, 제어절차에 대한 상세한 내용을 묶어 사용자 설명서를 작성한다. 또한 프로젝트팀은 사용자 설명서 및 절차로부터 필요한 교육용 자료와 강사용 자료를 작성한다. 프로젝트 팀은 교육에 대해 파일럿 시험이나 검토회를 하는 절차를 수행하여 교육이 효율적으로 구성되어 있는지를 확인한다.
12) 시스템 시험 및 전개 계획 수립
프로젝트 팀은 새로운 시스템을 사용자에게 어떤 방식으로 전개 실시할 것인지에 대한 방안을 마련한다. 이와 같은 작업에 따른 복잡도와 이 작업에 의해 발생되는 필요 자원 및 인원 등은 시스템이 어떤 방식으로 분산되어져 있는지와 변환 작업을 여러 사이트에서 반복해서 실시해야 하는지의 여부에 따라 좌우된다. 아울러 프로젝트 팀에서는 시스템이 당초 원했던 바대로 작동하는 지를 시험하기 위한 시스템 시험계획과 시스템이 정상적으로 작동하는 지를 확인하기 위한 시험데이터와 예상 결과를 포함하고 있는 시스템 시험모델도 마련한다.
13) 프로그래밍
코딩이란 프로그래밍 작업 단위를 컴퓨터가 실행할 수 있는 형태로 변환하는 작업을 의미한다. 프로그래밍 언어를 이용하여 코드를 작성하고, 코드제너레이터 도구에 입력되는 규격을 작성하며, 업무 제어문을 작성하는 일 등이 여기에 포함된다. 그 다음에는 결과를 점검하고 문법상의 오류를 제거한다. 코드를 작성했던 프로그래머와 프로그래밍 업무 단위를 설계했던 분석 담당자, 그리고 가능하다면 한 두 명의 추가 프로그래머가 코드를 재검토한다.
각 프로그래머는 주로 “상세 설계” 세그먼트에서 개발된 공통 시험 데이터에 따라 완벽하게 시험하기에 충분한 시험 데이터를 준비하고 단위 시험을 통해 코드에 오류가 없는지 확인한다. 프로그래머는 시험 결과를 예상 결과와 비교 점검하고 에러를 수정한다.
프로젝트팀 구성원들이 프로그램을 완전히 시험하고 났을 때, 같은 스트링(string)내에 있는 접속 프로그램들과 부분 시험을 실시한다. 이는 프로그램간의 통신을 검증하고 “시스템 시험” 세그먼트의 통합 시험으로 이어진다. 이 세그먼트에서, 프로젝트팀은 프로그래밍을 지휘, 통제하고, 시험을 조정함으로써 코딩 작업을 지원한다.
14) 시스템 시험
프로젝트팀은 시스템 운용으로 가기 전에 시스템 시험 기간 동안 신규 시스템을 시험할 책임이 있다. 프로그래밍으로부터 이루어진 구성을 시험하고 그 결과를 재검토한다. 그런 후, 통합 시험을 실시하고 시스템의 성능을 확인하여 필요하다면 변경을 수행한다. 또한 결과를 조사하여 결함이 있다면 수정해 준다. 마지막으로, “품질 보증” 검토를 포함한 사용자 시험을 실시하여 시스템이 사용자가 기대한 대로 성능을 수행하는지 확인한다.
15) 전개준비
프로젝트팀에서는 신규 시스템을 전개하기 전에 필요한 모든 작업을 완료한다. 교육팀에서는 시스템을 사용할 요원을 교육하고 교육 결과에 대한 피드백을 받아 교육 프로그램에 반영한다. 프로젝트팀은 구축에 따른 비용 산정, 구축 완료 일정 및 책임/의무조항, 하드웨어 및 소프트웨어 전달을 포함하여 신규 사이트에 필요한 모든 조치를 취해야 한다. 마지막으로, 프로젝트팀은 기존 데이터베이스와 소스들에 들어 있는 데이터를 변환시켜 준다.
16) 시스템 전개
성공적인 전개를 위해서는 신규 프로그램이나 절차를 사용하는 것 이상의 것이 관련된다. 작업 환경은 신규 시스템만을 반영해야 한다. 구 시스템의 나머지는 반드시 제거해야 한다. 프로젝트팀은 시스템을 재검토하고 분석하여 설계서에 명시된 기능을 수행하는지 검증한다. 마지막으로, 프로젝트 팀은 신규 시스템이 사용자와 업무상의 요구사항과 작업요건에 더욱 적합하게 하기 위해 시스템의 운용 초기에 행한 변경사항이나 향상된 점을 문서화하여 향후 재구현시 반영할 수 있도록 해야 한다.
세그먼트 |
태스크 |
산출물 |
대 |
중 |
소 |
전개 준비 |
인원교육 훈련 |
교육 자료 |
필수 |
필수 |
필수 |
장소 준비 |
네트워크 환경 설명, 하드웨어 환경 설명 |
필수 |
필수 |
선택 | |
변환화일 작성 |
변환 계획, 변환절차 |
필수 |
필수 |
선택 | |
시스템 전개 |
준비시험 실시 |
시험 접근 방법 |
필수 |
필수 |
필수 |
장소변환 |
유지관리 지침서 |
필수 |
필수 |
필수 | |
운용감독 |
변경요청, 성능 모델, 요구사항 설명 |
필수 |
필수 |
필수 | |
개선사항 문서화 |
변경요청 |
필수 |
필수 |
필수 |
(2) 시스템 유형별
다음은 순수 S/W개발과 SI사업인 경우의 비교 이다.
세그먼트 |
태스크 |
세부 산출물 |
S/W |
SI |
사용자 요구사항 |
작업흐름 및 조직확인 |
엔티티관계도, 작업 흐름도, 조직도, 조직별 프로세스 |
필수 |
필수 |
사용자 요구사항 파악 |
면담 비망록, 요구사항 설명, 현행 시스템 설명 |
필수 |
필수 | |
현행설계 복구 |
관계유형 설명, 엔티티 유형설명, 속성유형설명, 요구사항 설명 |
필수 |
필수 | |
품질요건 |
품질요건 파악 |
품질속성 설명, 품질지침 및 기준 |
필수 |
필수 |
척도 및 목표구축 |
품질속성 설명 |
필수 |
필수 | |
요건분석 |
업무절차 프로토 타입 |
업무처리 프로토타입, 쟁점 및 미결사항 |
필수 |
필수 |
이벤트 모델작성 |
이벤트별엔티티 매트릭스 엔티티 순기도, 이벤트-자극-반응 설명 |
필수 |
필수 | |
프로세스 모델작성 |
업무기능 분해, 데이터흐름도, 기본절차 설명 |
필수 |
필수 | |
데이터 모델작성 |
속성유형설명, 영역설명, 엔티티유형설명, 엔티티관계도, 관계유형 설명 |
필수 |
필수 | |
업무절차 설계 |
다이얼로그 설계완료 |
다이얼로그 흐름도, 윈도우 설명, 프로젝트 표준 |
필수 |
필수 |
윈도우 및 화면설계 |
다이얼로그 흐름도, 아이콘설명, 리스트 상자설명, 메뉴항목 설명, 푸쉬버튼설명, 윈도우설명 |
필수 |
필수 | |
보고서 및 문서설계 |
보고서 설명, 서식설명 |
필수 |
필수 | |
작업흐름 정의 |
사용자 문서 윤곽, 작업 흐름도 |
필수 |
필수 | |
기술설계 |
응용아키텍쳐 정의 |
응용구조, 응용흐름, 쟁점 및 미결사항, 프로젝트 표준, 시스템 아키텍쳐 보고서, |
필수 |
필수 |
네트워크를 통한 데이터및 프로세스 분산 |
작업/프로세스별 엔티티, 위치 유형별 엔티티, 위치유형별작업/프로세스, 프로젝트 표준 |
필수 |
필수 |
세그먼트 |
태스크 |
산출물 |
S/W |
SI |
기술설계 |
메시지 및 프로세스 흐름정의 |
응용흐름, 화일설명, 실행프로그램 설명, 메시지 설명, 서버설명, |
필수 |
필수 |
논리데이타베이스 설계 |
데이터 요소설명, 화일설명, 외부키 설명, 논리데이타베이스 다이어그램, 일차키 설명, 레코드 설명, 관계형 테이블 설명,뷰(View)설명, |
필수 |
필수 | |
자동화 프로세스 설계 |
콜 패턴, 실행프로그램 설명, 메시지 설명, 모듈설명, 절차도, 레코드 설명, 서버설명 |
필수 |
필수 | |
기술설계 |
시스템 접속설계 |
레코드 설명, 메시지 설명, 변경 요청 |
필수 |
필수 |
IS 운용프로세스 설계 |
|
|
| |
물리데이타베이스 설계 |
화일설명, 색인설명, 레코드 설명, 관계형 테이블 설명, 테이블 스페이스 설명 |
필수 |
필수 | |
품질검증 |
기능완성도 검증 |
변경 요청, 기능완성도승인 |
필수 |
필수 |
품질속성 시험 및 검증 |
변경 요청, 성능모델, 품질요건승인 |
필수 |
필수 | |
전환설계 |
교육과목 계획수립 |
교육과목 |
필수 |
필수 |
시험접근방법 설계 |
시험 접근 방법 |
필수 |
필수 | |
전개구성 설계 |
응용릴리즈 계획, 응용구조, 변경 요청 |
필수 |
필수 | |
데이터변환절차 설계 |
응용흐름, 변환매핑, 실행프로그램설명, 논리데이타베이스 설명, 레코드 설명, 모듈설명, 서버설명, 변경요청 |
필수 |
필수 | |
아키텍쳐 설계 및 프로토타입 |
아키텍쳐방향 확인 |
프로세싱 환경 요약, 프로젝트 표준, 시스템 아키텍쳐 보고서, |
선택 |
필수 |
H/W 및 시스템 S/W선정 |
계약서, 프로젝트 표준, 시스템 아키텍쳐 보고서(네트워크 환경설명, 시스템 소프트웨어 설명, 하드웨어 환경설명) |
선택 |
필수 | |
아키텍쳐설계 및 프로토타입 |
시스템 아키텍쳐 보고서(개발아키텍쳐, 실행아키텍쳐, 운용아키텍쳐, 아키텍쳐프로토타입 결과), 프로젝트 표준 |
선택 |
필수 | |
세그먼트 |
태스크 |
산출물 |
S/W |
SI |
아키텍쳐 구축 및 시험 |
아키텍쳐구축 및 시험 |
응용흐름, 실행프로그램 정의, 예상결과, 프로젝트 표준, 서버설명, 시험조건, 시험주기 통제표, 시험주기 흐름 |
선택 |
필수 |
응용구축 프로세스 시범 |
프로그램 사양, 프로젝트 표준 |
선택 |
필수 | |
성능 벤치마크 실시 |
벤치마크 보고서 |
선택 |
필수 | |
상세설계 |
기술설계 완료 |
콜패턴, 대화 흐름 설명,다이얼로그 흐름도, 실행 프로그램 설명, 아이콘 설명, 리스트 박스 설명, 메뉴 항목 설명, 메시지 설명, 모듈설명, 절차도, 푸쉬 버튼 설명, 레코드 설명, 화면 설명, 윈도우 설명 |
필수 |
필수 |
작업단위 설계 |
프로그램 사양 |
필수 |
필수 | |
데이터베이스 설계 완료 |
화일설명, 색인 설명, 레코드 설명, 관계형 테이블 설명, 테이블 스페이스 설명 |
필수 |
필수 | |
설계 검토 실시 |
설계검토 승인 |
필수 |
필수 | |
공통시험 데이터 준비 |
시험 베이스 내용 |
필수 |
필수 | |
사용자 절차 및 교육 |
절차 개발 |
도움말 텍스트 설명, 절차 지침서 |
필수 |
필수 |
사용자 지침서 작성 |
사용자 문서 윤곽. 절차 지침서 |
필수 |
필수 | |
교육자료 작성 |
교육 과목, 교육 자료 |
필수 |
필수 | |
시스템 시험 및 전개계획 수립 |
전개 및 변환계획 완료 |
변환계획, 변환 맵핑, 설치장소 계획, 설치장소 요건, 설치준비 체크리스트, 소모품 요건, 전개계획 |
선택 |
필수 |
변환절차 개발 |
변환 맵핑, 변환절차, 절차지침서 |
필수 |
필수 | |
시스템 시험 계획 수립 |
시험 조건, 시험주기 통제표, 시험 접근 방법 |
필수 |
필수 | |
시스템 시험 모델 작성 |
예상 결과, 시험 베이스 내용, 시험 조건, 시험주기 통제표, 시험 작업 스트림 |
필수 |
필수 |
세그먼트 |
태스크 |
산출물 |
S/W |
SI |
프로그래밍 |
작업단위 생성 및 코딩 |
코딩된 작업 단위 |
필수 |
필수 |
시험데이타 준비 |
예상 결과, 시험 베이스 내용, 시험 조건, 시험주기 통제표 |
필수 |
필수 | |
코드검토 실시 |
코드 검토 체크 리스트 |
필수 |
필수 | |
단위 및 스트링 시험실시 |
서버설명,시험 베이스 내용, 코딩된 작업 단위 |
필수 |
필수 | |
개발지원 |
작업단위 개발 통제 |
필수 |
필수 | |
시스템 시험 |
구성진척 |
구성설명 |
선택 |
필수 |
통합시험 실시 |
통합시험 결과 |
필수 |
필수 | |
사용자 시험실시 |
사용자 시험결과 |
필수 |
필수 | |
상세결과 검토 |
변경요청, 시스템 조사요청 |
선택 |
필수 | |
전개 준비 |
인원교육 훈련 |
교육 자료 |
필수 |
필수 |
장소 준비 |
네트워크 환경 설명, 하드웨어 환경 설명 |
선택 |
필수 | |
변환화일 작성 |
변환 계획, 변환절차 |
필수 |
필수 | |
시스템 전개 |
준비시험 실시 |
시험 접근 방법 |
필수 |
필수 |
장소변환 |
유지관리 지침서 |
필수 |
필수 | |
운용감독 |
변경요청, 성능 모델, 요구사항 설명 |
필수 |
필수 | |
개선사항 문서화 |
변경요청 |
필수 |
필수 |
(3) 고속개발
관리기법/1에서는 고속개발을 위한 세그먼트와 태스크, 산출물을 제시하고 있다. 고속개발은 프로젝트를 짧은 시간대 내에서 구현할 필요가 있는 경우와 다음 특징이 있는 경우에 적용할 만하다.
· 반복구축(contruction through iterations)을 위한 프로토타이핑과 분할(partitioning)을 적용하여 클라이언트/서버 또는 GUI 같은 온라인 시스템을 지원
· 검증된 기술아키텍쳐 및 플랫폼, 이것이 기술적인 위험의 정도를 줄인다.
· 구축된 개발 환경은 템플릿(template)을 개발 및 시험할 필요를 줄이고, 데이터요소 정의와 같이 재사용할 수 있는 리포지터리 오브젝트를 제공한다.
· 정규사용자(full-time users)가 상세한 요구사항 및 검증을 지원하는 프로젝트에 할당된다.
세그먼트 |
태스크 |
산출물 |
|
분석 |
이벤트 모델작성 |
엔티티 순기도, 이벤트-자극-반응 설명, 이벤트별 엔티티 |
|
사용자 요구사항 파악 |
면담 비망록, 요구사항 설명, 현재 시스템 설명 |
||
척도 및 목표구축 |
|
||
업무절차 프로토 타입 |
업무처리 프로토타입, 쟁점 및 미결사항 |
||
프로세스 모델작성 |
기본절차 설명, 데이터흐름도, 업무기능 분해 |
||
데이터 모델작성 |
관계유형 설명, 엔티티관계도, 엔티티 유형설명, |
||
구축 |
사용자 인터페이스 설계 |
다이얼로그 흐름도, 윈도우 설명, 프로젝트 표준, 위치 유형별 작업/ 프로세스 보고서 설명, 서식설명, |
|
네트워크를 통한 데이터및 프로세스 분산 |
위치 유형별 엔티티, 위치 유형별 작업/프로세스, 작업/프로세스별 엔티티, 프로젝트 표준 |
||
메시지 및 프로세스 흐름정의 |
메시지 설명, 서버설명, 실행프로그램 정의, 응용흐름, 화일설명 |
세그먼트 |
태스크 |
산출물 |
구축 |
데이타베이스 설계 |
관계형 테이블 설명, 논리데이타베이스 설명, 데이터 요소설명, 레코드 설명, 뷰(View)설명, 외부키 설명, 일차키 설명, 화일설명 |
자동화 프로세스 설계 |
레코드 설명, 화일설명, 메시지 설명, 모듈설명, 서버설명, 실행프로그램 정의, 조직별 프로세스, 절차도, 콜 패턴 | |
시험사례 준비 |
시험 베이스 내용, 시험 조건, 시험주기 통제표, 예상 결과 | |
작업단위 생성 및 코딩 |
코드 작업 단위 | |
단위 및 스트링 시험실시 |
서버설명,시험 베이스 내용, 코드 작업 단위 | |
사용자 시험실시 |
사용자 시험결과 | |
품질속성시험 및 검증 |
| |
전개 |
절차작성 및 직원교육 |
|
통합시험 실시 |
사용자 시험결과 | |
장소변환 |
유지관리 지침서 | |
운용감독 |
변경요청, 성능 모델, 요구사항 설명 |
TortoiseSVN 설치 및 사용방법
엑셀함수활용콘사이스145.rar
내용을 보시려면 비밀번호를 입력하세요.
JUnit 을 이용한 단위 테스트
유난히도 "버그"를 많이 발생시키는 프로그래밍 패턴때문에, 난 "버그양성소" 역할을 해왔었다. 그동안은 main() 메소드를 통해 클래스와 메소드를 테스트했는데, 그동안의 무식함을 반성하고자 제일 기본적인 JUnit에 대해서 알아보았다.
1. JUnit 이 뭐지?
JUnit 은 테스트 프레임워크 (툴) 이다.
한마디로, 정해진 형식에따라 test 메소드를 작성해 놓으면 자동으로 실행시켜주고 결과도 리턴해주는 놈이다.
그럼 기존 java 애플리케이션 [public static void main(String[] args)] 을 이용한 테스트와는 뭐가 다른가?
정해진 방법대로 작성해 놓으면 테스트 java 애플리케이션 안의 메소드를 호출하지 않아도 자동 실행해주기 때문에, 손이 덜 간다. 그리고, 테스트 Java 애플리케이션이 많을때 이것을 일일이 실행해야 테스트를 해야하는 반면, JUnit은 TestSuit 이라는 개념을 지원해 여러개의 Test 클래스들을 한꺼번에 실행해 볼수 있다.
2. JUnit 을 사용하려면 ?
다운로드 및 참고자료 : http://junit.sourceforge.net/
junit.jar 를 classpath에 추가 하기만 하면 된다.
Eclipse 에는 기본 플러그인으로 설치되어 있어 바로 사용가능하다.
3. 코드 작성법
1) JUnit의 TestCase 를 상속하여 클래스를 생성한다.
2) 메소드 실행전 초기화 부분은 setUp() 메소드에, 실행후 초기화는 tearDown() 에 기술한다.
3) 각각의 테스트할 단위들을 testXXXXX() 로 작성한다.
4) 각 메소드에 assertXXXX() 메소드를 삽입하여, 테스트의 성공 유무를 판가름한다.
아래 조건을 만족하지 않으면 실패로 간주
ex) assertEquals : 같지 않으면 실패,
assertEquals - 같은지 비교
assertNull - null값을 리턴하는지 비교
assertNotNull - 인자로 넘겨받은 객체가 null인지 판정하고 반대인경우 실패로 처리한다.
assertSame - assertSame 은 expected 와 actual이 같은 객체를 참조하는지 판정하고
그렇지 않다면 실패로 처리한다.
assertNotSame - expected 와 actual이 서로 '다른' 객체를 참조하는지 판정하고, 만약
같은 객체를 참조한다면 실패로 처리한다.
assertTrue - boolean 조건이 참인지 판정한다. 만약 조건이 거짓이라면 실패로 처리한다.
fail - 테스트를 바로 실패 처리한다.
4. 코드샘플과 실행결과
1) 코드 샘플
import junit.framework.TestCase;
import com.ilikeclick.fw.util.*;public class testUtilClass extends TestCase
{
private String testStr1 = null;
private String testStr2 = null;
public void setUp()
{
System.out.println("setUp()");
}
public void tearDown()
{
System.out.println("tearDown()\n");
testStr1 = null;
testStr2 = null;
}
public void testCryptUtility()
{
System.out.println("testCryptUtility()");
testStr1 = "sokum";
testStr2 = CryptUtility.encrypt(testStr1, 3);
assertNotNull(testStr2);
assertEquals(testStr1, CryptUtility.decrypt(testStr2, 2));
}
public void testRandomUtility()
{
System.out.println("testRandomUtility()");
for(int loopCnt=0; loopCnt < 128; loopCnt++)
{
testStr1 = RandomUtility.createNumAlphaCode(loopCnt);
assertNotNull(testStr1);
}
}
}
2) 콘솔 - 실행결과
3) JUnit 결과창
위에서는 testCryptUtility() 에서 테스트가 실패하게 비밀키를 다른게 설정했다. 참고로, CryptUtility 는 시져알고리즘을 구현한 클래스로 비밀키를 이용하여 암호화와 복호화를 지원한다.
JUnit 결과창을 보면, 실행갯수와 오류와 실패 갯수, 실행시간, 실패에 대한 추적을 한눈에 볼수 있다.
4) 테스할 Class에 대한 TestCase 코드 자동생성하기
이클립스에서, 테스트하고 싶은 클래스에 마우스 오른쪽 버튼을 누르고 JUnit 테스트 코드를 생성하면, 선택된 클래스의 모든 메소드를 테스트 가능하도록 껍질코드(?)를 만들어 준다.
5) TestCase 한꺼번에 실행하기
이러한 TestCase 를 한대에 묶어서, TestSuit 을 만들어 한꺼번에 실행해 볼 수 있다. 추가로 테스트할 TestCase 는 // $JUnit-BEGIN$ 과 // $JUnit-END$ 사이에 클래스이름을 추가해주면 된다.
import junit.framework.Test;
import junit.framework.TestSuite;public class AllTests
{
public static Test suite()
{
TestSuite suite = new TestSuite("Test for com.ilikeclick.fw.test");
// $JUnit-BEGIN$
suite.addTestSuite(testUtilClass.class);
// $JUnit-END$
return suite;
}
}
5. JUnit 을 적용하면 좋은점
1) Eclipse에 기본으로 플러그인이 포함되어 있어 사용이 쉽다.
2) JUnit 은 단위테스트의 개념을 초기확립(?) 시킨 놈으로써의 의의와 범용적으로 사용하고 있다.
3) TestSuit 을 제공함으로써 여러개의 TestCase 클래스를 한번에 실행시킬수 있다.
6. 불편한 점
1) 메소드 실행전후에 초기화를 담당하는 setUp(), tearDown() 메소드에 사용자 파라메터를 넘길수 없어
불편하다.
2) 반드시 TestCase 를 상속해야 하기땜에, 단일상속의 제한이 있는 Java 에서는 다양한 테스트가 불가능
하다. +_+ 제일 불편한 부분이 아닐까 싶다.
물론, JUnit 이 다른 클래스나 다른 모듈에 의존성 없이독립적으로 실행되어야 한다는 점은 십분 이해가
가지만, 그렇다고 확장성마저 없애버린것은 좀 오버인듯 싶다.
(그래서 다른 테스트 플랫폼도 나오고 있지만...)
3) Servlet 은 어떻게 테스트하지? +_+;; 물론, 더 찾아봐야 알겠지만 Servlet은 어떻게 해야 할지 감이 안온다.
* JUnit 을 둘러보며 느낀점
1) 결국 JUnit 은 형태를 정해놓고, 그 방법대로 코드를 작성하면 자동으로 메소드를 실행해주는 역할 밖에
하지 않을정도로 간단한 놈이다.
2) 라이브러리를 지원하지 않아도 Reflection 을 사용하면 금방 구현할것 같다. 결국 어떤사람이 먼저
아이디어를 떠올리고 그것을 실행으로 옮기느냐에 따라 선도자가 될수도 있고, 흐름에 따르는 순응자가
될수도 있다는 것을 다시 한번 느꼈다.
3) 버그가 줄어들겠지? 가 아니라, 테스트 메소드를 호출하기에 편할것같다.
버그 날만한 것을 testXX() 메소드에 기술하여 테스트하는건 기존과 똑같으므로 결국 프로그래머에 달렸다.
단, 누가 보더라도 메소드의 의도가 명확하고, 모든 메소드에 대하여 testXXX() 메소드를 반드시 작성해야
함으로 작성자가 아닌 다른 프로그래머가 해당 메소드를 사용할때 "샘플코드" 로써의 역할도 수행할 수 있
어 편할 듯 싶다.
예전 프로젝트에서 공통업무를 맡으면서 수많은 버그들을 만들어, 본인이나 쓰는 사람이나 서로 스트레스를 많이 받았었다. 이젠 개발 5년차다. 그만큼 단단한 코드 작성이 필요한 시점이 아닐까 싶다.
작성 : 남경식 / 2008-01-02 / isokum@hotmail.com
클래스 다이어그램
클래스의 의미는 일반적으로 객체지향 언어에서 사용하는 클래스의 의미와 유사하다. 클래스라는 것은 시스템에서 동작하게 되는 하나의 개념의 추상화 도구로써 사용되며 추상화의 단계에 따라 클래스의 의미가 약간씩 차이가 생긴다. 만약 설계 당시에 추상화가 아주 높은 단계에서 이러한 클래스는 시스템에서 사용되는 하나의 역할로서의 의미를 가진다. 하지만 구현단계와 같은 추상화 단계가 아주 낮은 상태에서는 실제 객체를 생성하기 위한 클래스의의미를 가지게 된다. 이러한 단계의 구별은 사용자의 의도에 따라 적당히 사용하면 될 것이다.
상속의 의미는 일반 언어에서의 상속의 의미와 유사하게 상위클래스의 모든 특징과 행위를 하위의 클래스가 모두 이어받게 된다. 즉 다양한 클래스들의 나열에서 동일한 행위나 특징을 가진 여러 클래스들이 존재할 때 공통되는 부분을 상위 클래스로 만들 수 있다.
4.클래스와 클래스의 연관관계(Association Relationship)
의존관계의 의미는 한 클래스의 변화가 다른 클래스에 영향을 미칠 때 사용한다. 이러한 의존의 관계는 여러가지 관계에서 나타날 수 있다. 의존관계의 종류에 관하여서는 다음 호에 자세히 다루도록 할 것이다.
유스케이스(Usecase) 다이어그램
유스케이스의 표기는 그림 1에서와 같이 타원으로 표시하고 이름을 속에 명시하게된다.
그림 2 - 액터
그림 3 - 스테레오 타입이 액터인 클래스
그림 4 -액터와 액터 사이의 일반화 관계
그림 5 - 통신(Association) 관계
그림 6 - 확장(Extends) 관계
그림 7 - 사용(Uses) 관계
그림 8 - 일반화(Generalization) 관계
- 시스템의 주기능을 사용하는 사람은 누구인가.
- 누가 시스템으로부터 업무 지원을 받는가?
- 누가 시스템을 운영, 유지 보수하는가?
- 시스템과 정보를 교환하는 외부 시스템은 무엇인가?
- 시스템이 내어놓은 결과물에 누가 관심을 가지는가?
- Actor가 요구하는 시스템의 주요 기능은 무엇인가?
- Actor가 시스템의 어떤 정보를 수정, 조회, 삭제, 저장하느가?
- 시스템이 Actor에게 주는 어떠한 Event가 있는가?, Actor가 시스템에는 어떠한 Event가 있는가?
- 시스템의 입력과 출력으로 무엇이 필요한가? 그리고 입력과 출력이 어디에서 오고 어디에로 가는가?
- 시스템의 구현에서 가장 문제가 되는 점은 무엇인가?
참고로 유스케이스 다이어그램을 잘 그리기 위해 다음의 단계로 넘어가는 것을 주저하지 말기 바란다. 프로젝트를 잘 수행하기 위해서는 여러 번의 반복적 개발을 통해 오류의 수정 과정이 필요하고 이에 유스케이스 다이어그램을 수정하는 일도 포함된다. 즉 어느 정도 유스케이스 다이어그램이 완성되면 다음의 다이어그램을 진행하길 바란다.
UML의 구성
그림 1 - 유스케이스 다이어그램
그림 2 - 클래스 다이어그램
그림 3 - 시퀀스 다이어그램
그림 4 - 콜레버레이션 다이어그램
그림 5 - 상태 다이어그램
그림 6 - 액티비티 다이어그램
그림 7 - 디플로이먼트 다이어그램
그림 8 - 컴포넌트 다이어그램
이 글에 삽입된 다이어그램은 “Plastic Software”의 UML 모델링 툴인 “PLASTIC 2.0”을 이용하여 그렸다.