'개발'에 해당되는 글 188건

  1. 2008.10.01 UML 강좌
  2. 2008.10.01 JUnit 기본 사용법
  3. 2008.09.30 [Doc] MyEclipse 를 사용한 Struts + Spring + Hibernate 통합에 관련 문서
  4. 2008.09.29 java(jsp) 에서 바이트단위로 문자열 자르기(한글깨짐없이)
  5. 2008.09.26 RSS 문서 제작을 위한 RSS 규약의 이해 (RSS 2.0)
  6. 2008.09.23 소프트웨어 개발방법론
  7. 2008.09.22 비즈니스 프로세스 관리 시스템
  8. 2008.09.22 BPM 개관 및 구축 방법론 1
2008. 10. 1. 15:56

UML 강좌




UML1) ?
객체지향 분석/설계 산물(artifacts)을 위한, 표준화된 notation
Not a method
Not a development process
UML은 모델링 언어의 통합을 위한 표준
UML은 s/w를 시각화, 명세화, 문서화하기 위한 언어
UML은 시스템의 여러 분야를 포함
데이터 모델링(Entity Relationship Diagram)
객체 모델링
Component 모델링
2008. 10. 1. 10:04

JUnit 기본 사용법




JUnit은 자바 세계에서 가장 널리 사용되어지고 있는 단위 테스팅 도구이다. Eclipse를 비롯한 대부분은 IDE는 JUnit을 기본으로 지원하고 있다. 단위테스트에 국한되어 있어 모든 테스트를 소화하기엔 부족한 점이 있지만, 기능의 확장을 위해 이를 기반으로 한 Add-ons 이나 Extensions 들이 많이 나와있다. 현재까지 가장 많이 쓰여 왔던 JUnit 3.8 버전의 사용법을 간단히 정리해본다.

1. 기본 테스트 예제

import junit.framework.TestCase;

public class SimpleTest extends TestCase {
	private int x = 3;
	private int y = 2;
	
	public void testAddition() {
		int z = x + y;
		assertEquals(5, z);
	}
}
- junit.framework.TestCase 를 상속한 테스트용 클래스 생성.
- public void 타입으로 선언된 test* 로 시작되는 테스트 메소드 작성.
- assert 로 테스트 결과 검증.

2. setUp과 tearDown을 이용한 각 테스트 메소드 실행시마다 초기화 및 종료화 처리 예제

import junit.framework.TestCase;

public class SetupTest extends TestCase {
	private int x;
	private int y;
	
	protected void setUp() {
		x = 3;
		y = 2;
		System.out.println("setUp()");
	}
	
	public void testAddition() {
		int z = x + y;
		assertEquals(5, z);
	}
	
	public void testSubtraction() {
		int z = x - y;
		assertEquals(1, z);
	}
	
	protected void tearDown() {
		System.out.println("tearDown()");
	}
}
- 각 테스트 마다 매번 setUp() 과 tearDown() 실행.

3. TestSetup를 이용한 클래스내 모든 테스트 실행 전 초기화와 실행 후 종료화 처리 예제

import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestSetupTest extends TestCase {
	private static int x;
	private static int y;

	public static Test suite() {
		TestSetup setup = new TestSetup(
				new TestSuite(TestSetupTest.class)) {
			protected void setUp() {
				x = 3;
				y = 2;
				System.out.println("setUp()");
			}
			
			protected void tearDown() {
				System.out.println("tearDown()");
			}
		};
		return setup;
	}

	public void testAddition() {
		int z = x + y;
		assertEquals(5, z);
	}

	public void testSubtraction() {
		int z = x - y;
		assertEquals(1, z);
	}
}
- 모든 테스트 실행 전과 실행 후 단 1회만 setUp()과 tearDown() 실행.

4. 예외 테스트 예제

import junit.framework.TestCase;

public class ExceptionTest extends TestCase {	
	public void testDivisionByZero() {
		try {
			int n = 2 / 0;
			fail("Divided by Zero!"); // 실패
		}
		catch (ArithmeticException ae) {
			assertNotNull(ae.getMessage()); // 성공
		}
	}
}

5. TestSuite를 이용한 모든 테스트 실행 예제

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {
	public static Test suite() {
		TestSuite suite = new TestSuite("All JUnit Tests");
		suite.addTestSuite(ExceptionTest.class);
		suite.addTestSuite(SetupTest.class);
		suite.addTestSuite(SimpleTest.class);
		suite.addTest(TestSetupTest.suite());
		return suite;
	}

	public static void main(String[] args) {
		junit.textui.TestRunner.run(suite());
	}
}



2008. 9. 30. 16:13

[Doc] MyEclipse 를 사용한 Struts + Spring + Hibernate 통합에 관련 문서




2008. 9. 29. 17:17

java(jsp) 에서 바이트단위로 문자열 자르기(한글깨짐없이)




 protected String strCut(String szText, int nLength)
 { // 문자열 자르기
  String r_val = szText;
  int oF = 0, oL = 0, rF = 0, rL = 0;
  int nLengthPrev = 0;
  try
  {
   byte[] bytes = r_val.getBytes("UTF-8"); // 바이트로 보관
   // x부터 y길이만큼 잘라낸다. 한글안깨지게.
   int j = 0;
   if (nLengthPrev > 0)
    while (j < bytes.length)
    {
     if ((bytes[j] & 0x80) != 0)
     {
      oF += 2;
      rF += 3;
      if (oF + 2 > nLengthPrev)
      {
       break;
      }
      j += 3;
     }
     else
     {
      if (oF + 1 > nLengthPrev)
      {
       break;
      }
      ++oF;
      ++rF;
      ++j;
     }
    }
   j = rF;
   while (j < bytes.length)
   {
    if ((bytes[j] & 0x80) != 0)
    {
     if (oL + 2 > nLength)
     {
      break;
     }
     oL += 2;
     rL += 3;
     j += 3;
    }
    else
    {
     if (oL + 1 > nLength)
     {
      break;
     }
     ++oL;
     ++rL;
     ++j;
    }
   }
   r_val = new String(bytes, rF, rL, "UTF-8"); // charset 옵션
  }
  catch (UnsupportedEncodingException e)
  {
   e.printStackTrace();
  }
  return r_val;
 }
2008. 9. 26. 18:07

RSS 문서 제작을 위한 RSS 규약의 이해 (RSS 2.0)














RSS 항목 

 항목의 의미  사용법 

<?xml version="1.0" encoding="euc-kr" ?> 

XML 파싱을 위해 필요한 정보 선언 

<rss version="2.0"> 

RSS 버전 선언 

<channel> 

RSS 정보가 시작됨을 의미 

<title>오마이뉴스</title> 

RSS 제공 사이트의 타이틀을 기록 

<link>http://www.ohmynews.com/</link> 

RSS 제공 사이트의 URL  기록 

<description>뉴스게릴라들의뉴스-오마이뉴스</description> 

RSS 제공 사이트의 간단한 설명을 기록 

<language>ko</language> 

RSS 문서에서 사용되는 국가 언어 선언 

<copyright>Copyright (c) OhmyNews.com All rights reserved</copyright> 

RSS 문서 저작권 선언 

<lastBuildDate>Fri, 8 Apr 2005 14:30:20 +0900</lastBuildDate> 

RSS 문서가 최종 작성된 시간 기록 

<item> 

 기록시작. 

<title>- <![CDATA[ '거창 민간인 학살사건' 위령제 11   ]]> </title> 

글의 제목 

<link>http://www.ohmynews.

com/ArticleView/article_view.asp

?no=219789&rel_no=1</link> 

글의 전문(全文) 확인할  있는 웹주소 

<description>- <![CDATA[ 한국전쟁 전후 거창지역 민간인 희생자  합동  ]]> </description> 

글내용 일부 또는 전체를 기록 

<category>사회</category> 

글이 포함되는 카테고리 

<author>(성효 기자)</author> 

글의 저작자를 기록 

<pubDate>Fri, 8 Apr 2005 13:57:20 +0900</pubDate> 

글이 작성된 시간을 기록 

</item>  

</item> 태그를 닫음으로써 글에 대한 정보가 완료됨을 선언
( 개수만큼 <item>…</item> 태그 반복) 

</channel> 

열어놓은 채널을 닫음. 

</rss> 

열어놓은 rss 태그를 닫음. RSS 문서의 . 

 


2008. 9. 23. 00:25

소프트웨어 개발방법론




소프트웨어 개발방법론

모든 조직 사회에는 구성원들이 따라야 하는 제도나 규정 등이 존재하기 마련이다. 이러한 제도와 규정을 이해하고 업무를 처리해 나가다 보면, 가장 효과적으로 일을 처리하는 방법(Method) 과정에서 필요한 지식이 축적되는데, 이를 체계적으로 정의한 것이 방법론(Methodology)이다. 정보 시스템 구축 시에도 정보 시스템의 구축업무 수행에 필요한 자원, 산출물, 참여자 등을 정의하고 이러한 내용을 일관된 흐름으로 체계적으로 정리한 방법론이 소프트웨어 개발 방법론이다.

 

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

-      소프트웨어를 생산하기 위해 반복적으로 수행될 실행 방법을 정리한

-      정보 시스템을 구축하는데 필요한 여러 가지 일들의 수행방법과 이러한 일들을 수행하려는 절차에서 필요한 소프트웨어 공학 원리에 입각한 각종 기법 도구를 기업의 문화를 바탕으로 체계적으로 정리하여 표준화한

 

소프트웨어 개발방법론의 등장 배경

-      소프트웨어 위기 인식에 따른 소프트웨어 공학의 발전

-      소프트웨어 이용범위의 확대 소프트웨어 Project 개념의 등장

-      소프트웨어 Project 규모 복잡도 증가

 

소프트웨어 개발방법론의 필요성

-      소프트웨어 위기를 극복하기 위한 방법론 필요성 증대

-      공정의 가시화와 프로젝트의 효율적 관리 필요

-      개발경험 축적 재활용을 통한 개발생산성 향상

-      소프트웨어 품질의 균일화

-      개발 조직의 의사 소통 활성화

-      시스템 개발 노하우 축적

 

소프트웨어 개발방법론의 구성요소

구성요소

내용

작업절차

-      프로젝트 수행 이루어지는 작업단계의 체계

-      단계별 활동, 활동 세부작업 열거, 활동의 순서 명시

작업방법

-      단계별 수행해야 하는

-      절차/작업 방법

산출물

-      단계별로 만들어야 하는 산출물의 목록 양식

관리

-      프로젝트 진행 기록

-      계획수립, 진행관리, 품질, 외주, 예산, 인력관리 등의 기록

기법

-      단계별로 작업수행 기술 기법의 설명

도구

-      기법 지원도구에 대한 구체적인 사용표준 방법

 

소프트웨어 개발방법론의 종류

개발방법론

구조적 방법론

정보공학 방법론

객체지향 방법론

컴포넌트 기반 방법론

연대

1960 년대 ~ 1980년대 중반

1980년대 중반 ~ 1990년대 중반

1990년대 중반 ~ 2000년대

1990년대 후반 ~ 현재

목표

비즈니스 프로세스 자동화

경영전략적 정보시스템 구축

재사용 시스템

컴포넌트 개발 및 활용

주요모형

프로세스 (기능)

데이터

객체

컴포넌트

주요기술

   

메인프레임 환경

단위업무 전산화

3세대 언어

(COBOL, Fortran, C)

소프트웨어 공학 태동

PC보급확산

전사규모의 정보시스템

관계형 데이터베이스

4세대 언어

(Visual Basic, Power Builder, Delphi)

클라이언트/서버

사용자 중심 설계

통합 CASE

인터넷 이용확산

다양한 SW요구 증대

객체지향 언어

(C++,Java)

UML

분산 객체기술

Round-Trip CASE

비즈니스 기능 단위 컴포넌트

J2EE 기반 기술

COM 기반 기술

웹서비스 기술

기존 시스템 연동 기술

애플리케이션 서버

주요기법

기능모형

(자료흐름도, 자료사전, 기능명세)

프로그램 구조 설계

(구조도, 모듈명세)

데이터 모형

(객체 관계도)

정보전략계획

BRP

분산설계

객체모형

위험관리

반복적/점진적 개발

분석/설계 패턴

설계 개선

(Refactoring)

컴포넌트 명세

컴포넌트 추출

컴포넌트 연동

아키텍처 설계

특징

학습용어

보편적 활용

안정된 개발 방법론

실세계 개념 모형

UML 사용 확산

적기 개발

개발 비용 감소

 

산업구조

소품종 다량생산

다품종 소량생산

인터넷 비즈니스

인터넷 비즈니스

모델링

기능 모델링

데이터 모델링, 프로세스 모델링

객체지향 관점, UML

객체 모델링, 컴포넌트 모델링

 


2008. 9. 22. 13:42

비즈니스 프로세스 관리 시스템




서론
1.       조직 내의 업무처리의 생선성을 분석한 결과 업무 처리의 전체시간 중에 단지 10%만이 업무자체에 소요되고 나머지 90%의 시간은 업무간의 전이 또는 전달시간에 소요된다는 것을 알게 되면서, 업무처리 프로세스에 대한 생산성 향상 문제로 정보기술의 초첨이 바뀌게 된다. 이러한 사실이 곧 비즈니스 프로세스 리엔지니어링과 자동화를 통한 업무생산성 향상에 초점을 두게 되는 계기가 되었고, 최근 2000년대에는 프로세스중심의 정보기술(BPM)이 핵심으로 등장하였다.


 
2.       워크플로우관리 기술과 웹서비스 기술 그리고 엔터프라이즈 애플리케이션 통합 기술를 기반으로 하는 비즈니스프로세스관리기술은 바로 프로세스중심 정보기술의 핵심기술이다.
3.       조직 내의 대표적인 프로세스기반 정보기술 인프라인 EAI기술 및 워크플로우 기술과 조직간의 정보관리 및 통합을 위한 대표적인 인프라인 웹서비스 및 ebXML기반의 비즈니스프로세스기술의 효율적 통합이 더욱 요망되고 있다.
 
BPM 기술의 정의
-         WfMC : BPM의 정의는 워크플로우 기술에 EAI 또는 WS 기술을 접목시킨 개념 즉, 워크플로우 중신의 프로세스 자동화
-         BPMI, W3C : 웹서비스 중심의 프로세스 협업 기술
-         일반적인 인식 : BPM 기술이 프로세스 기반의 정보관리 시스템을 구축하기 위한 새로운 소프트웨어 솔루션의 한 축이다!
 
“BPM 기술은 워크플로우 기술과 EAI 기술 그리고 웹서비스 기술의 통합 솔루션이다.”
 
기존 솔루션에서 바라보는 BPM의 관점
Ø         전통적인 프로세스 자동화 기술인 워크플로우 솔루션 관점 : BPM을 워크플로우 기술의 확장 개념으로 정의한다. 워크플로우 기술은 이기종 솔루션 간의 연동과 응용프로그램(EAI)과의 연동을 필요로 하는데, 이러한 두 가지 연동을 구현하는 기술로서 웹서비스 기술을 이용하며, 따라서, BPM의 최종목적인 조직내 프로세스와 조직간 프로세스의 통합을 구현할 수 있다고 이해하고 있다. à WfMC에서 OASIS 기반으로 Wf-XML 2.0발표
Ø         웹서비스 솔루션 관점 : 프로세스 기반 웹서비스 솔루션을 BPM기술이라고 정의 한다, BPEL(Business Process Execution Language)로 표현된 웹서비스 프로세스의 실행을 구현하는 솔루션으로 BPM 기술을 정의한다.
Ø         기업응용프로그램 통합 솔루션 관점 : 프로세스 기반 기업응용프로그램 통합 솔루션을 BPM 기술이라고 정의한다.
 
BPMS(Business Process Management System)
 
시스템의 구성요소
Ø        모델링 서비스 부분 : 비즈니스 프로세스의 모델링을 담당하는 부분
Ø        엔진 서비스 부분 : 비즈니스 프로세스의 실행을 담당




비즈니스 프로세스 모델 및 시스템
비즈니스 프로세스는 Activity들의 집합으로 구성되며, Activity들 간에 상호 제어순서 상의 선행 관계를 갖는다. 또한 각각의 Activity는 컴퓨터 프로그램이나 인간의 행동을 통해 구현 및 실행될 수 있으며, 이의 실행을 위한 사전 정보(Input Repository)와 실행 후의 사후 정보(Output Repository)가 정의 되어야 한다. 마지막으로 각 Activity의 실행 및 접근 권한을 정의하기 위한 조직 정보가 할당되어야 하는데, 이는 그 Activity의 실행을 담당할 Role과 그 Role에 대항하는 Actor 또는 Group을 할당함으로써 정의될 수 있다.
 


 
비즈니스 프로세스 관리 엔진


비즈니스 프로세스의 실행, 제어, 감시 및 모니터링을 담당하는 핵심구성요소이다. 실행 상태 정보를 저장하는 데이터베이스와 실행객체들의 관리를 지원하는 미들웨어 플렛폼, 실행객체들 간의 통신을 담당하는 호출 메커니즘, 그리고 엔진의 실행객체 자체들을 구성하는 아키텍쳐등으로 구성되며, 이들 각각을 어떻게 구성하느냐에 따라 엔진의 성능이 결정된다.
엔진의 성능에 가장 큰 영향을 미치는 요소는 엔진 실행 객체를 구성하는 아키텍처의 구성방법에 있다.
Ø        비즈니스 프로세스를 구성하는 각 Activity가 엔진의 실행 객체로 구현되는 Activity기반 아키텍처
Ø        비즈니스 프로세스 모델의 인스턴스 또는 워크케이스를 엔진의 실행 객체로 구현하는 워크케이스 기반 아키텍처
 
런타임 클라이언트
 
런타임 클라이언트는 최근에 인터넷 및 웹의 기능과 성능이 급속하게 향상되면서 웹기반으로 구현되는 것이 전반적인 상품화 시스템의 추세이다. 런타임 클라이언트의 주요 구성요소는 다음과 같다.
 
1.       비즈니스 프로세스 모델 정보를 제공하는 부분
2.       실행되고 있는 인스턴스들에 대한 상태정보를 제공하는 부분
3.       Activity들의 실제적인 구현인 응용 프로그램과의 연동 부분
4.       각종 사용자 역할에 따른 접근 제한 기능 등
 
차세대 비즈니스 프로세스 관리 시스템과 주요 연구개발 이슈
 


 
최근의 정보기술 인프라는 조직 내와 조직 간 정보기술 인프라들 간의 통합과 정보관리기술과 정보통합기술들 간의 통합을 효율적이고 효과적으로 지원하기 위한 자세대 비즈니스 프로세스 관리 기술을 중심으로 발전되고 있다.
차세대 정보기술의 최종 모습은 결국 웹서비스 기반의 정보기술 인프라로 수렴되어, 조직 내 및 조직 간 통합프로세스기반 정보관리 및 정보통합을 구현하는 웹서비스기반의 차세대 워크플로우 및 비즈니스 프로세스 관리 시스템이 될 것이다.
차세대 비즈니스 프로세스 관리 기술을 구성하는 주요 시스템들의 유형은 다음과 같다.
Ø        EAI 기반의 워크플로우 관리 시스템 : 조직 내의 프로세스 기반 정보관리 및 정보통합 기술
Ø        ebXML 기반의 비즈니스프로세스 관리 시스템 : 조직 간의 프로세스기반 정보관리 및 정보통합 기술
Ø        WS기반의 차세대 워크플로우 및 비즈니스 프로세스 관리 시스템 : 조직 내 및 조직 간의 통합프로세스기반 정보관리 및 정보통합 기술
2008. 9. 22. 13:40

BPM 개관 및 구축 방법론




BPM의 도입
BPM이란, 말 그대로 ‘프로세스 관리’를 가리킨다.
-         기존의 프로세스를 제대로 관리함으로써 비용절감과 생산성 향상을 가져오게끔 하는 것이다.
-         BPM Top-Down방식으로 진행된다. 때문에 성공적인 BPM을 위해서는 무엇보다도 경영자의 실천 의지가 담보 되어야 한다.
 
BPM의 효과
낯선 업무들 속에서 자신이 해야 할 일이 무엇인지를 파악하기란 쉽지 않다. 하지만 BPM의 도입은
-         업무 프로세스의 관리를 통해 일의 분배가 이루어져, 낭비되는 인력이 발생하지 않게 된다.
-         업무 프로세스의 표준화 작업으로 숙련도에 따른 업무능력의 편차를 줄여준다. 업무의 효율성을 높일 수 있는 것이다.
-         BPM은 생산업무 프로세스에 문제점이 도출되는 것과 동시에 대응, 관리가 가능하다.
-         BPM은 프로세스의 가시화, 업무의 자동화, 통합된 시스템 환경을 제공한다.
-         BPM은 복잡한 서류작성 업무를 표준화 된 탬플릿을 제공함으로써 손쉽게 해결하고 복잡한 보고라인 또한 온라인 업무 프로세스 등으로 대체할 수 있게 한다.
 
BPM BPR
BPM BPR(Business Process Re-engineering)이 무엇이 다르냐고 묻는 사람이 있을 것이다. BPM BPR 이후의 지속적인 프로세스 관리를 의미한다. 기존의 많은 기업들은 BPR로 프로세스의 혁신을 시도해왔다. 하지만 BPR은 말 그대로 ‘Re-engineering, 즉 프로세스를 재정립하는 것이다. 때문에 BPR 이후의 관리 부재로 인해 많은 기업들은 업무에 혼선을 빚는 경우가 발생했다. BPM은 ‘Re-engineering’ 이후의 프로세스를 제대로 수행할 수 있도록 제어해 줌으로써 업무처리 방식의 변경이 미치는 혼선을 최소화 한다. 뿐만 아니라 프로세스 정보를 별도로 분리함으로써 변화에 민첩하게 대응할 수 있도록 해준다. 프로세스가 제대로 실행되게 강제함으로써 그 프로세스의 실행과정을 분석하고 개선, 관리하는 것이다.
 
BPR과 지식 경영의 차이점
BPR은 인간과 정보의 체계적인 조화를 의미하며, 상명하달 방식, 선형적 구조이고, 가치 창조를 글로 표현하는 것이 어렵지 않다는 전제하에 구현되며, 예측 가능한 환경에서 경쟁함을 전제로 한다. 확실한 지식에만 의존한다. 반면에 지식 경영의 특징은 효율성보다는 효과를 더 중시하고, 하의상달 형식, 네트워크 구조이다. 창의적, 즉흥적 방식에 장점이 있다. , 예측 불가능 상황에서 경쟁할 때 효과가 있으며, 암묵적 지식에 의존한다는 점 등이 그 특징이다. 그러므로 BPR이 지식 경영에 비하여 상대적으로 더 구현이 용이함을 알 수 있다. 그래서 BPR에서 지식 경영으로의 움직임이 의미하는 것은 단순한 변화 이상의 심오한 무엇이 있다는 것을 의미한다.