'개발'에 해당되는 글 188건
- 2008.10.01 UML 강좌
- 2008.10.01 JUnit 기본 사용법
- 2008.09.30 [Doc] MyEclipse 를 사용한 Struts + Spring + Hibernate 통합에 관련 문서
- 2008.09.29 java(jsp) 에서 바이트단위로 문자열 자르기(한글깨짐없이)
- 2008.09.26 RSS 문서 제작을 위한 RSS 규약의 이해 (RSS 2.0)
- 2008.09.23 소프트웨어 개발방법론
- 2008.09.22 비즈니스 프로세스 관리 시스템
- 2008.09.22 BPM 개관 및 구축 방법론 1
UML 강좌
객체지향 분석/설계 산물(artifacts)을 위한, 표준화된 notation
Not a method
Not a development process
UML은 모델링 언어의 통합을 위한 표준
UML은 s/w를 시각화, 명세화, 문서화하기 위한 언어
UML은 시스템의 여러 분야를 포함
데이터 모델링(Entity Relationship Diagram)
객체 모델링
Component 모델링
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); } } |
- 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()"); } } |
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); } } |
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()); } } |
[Doc] MyEclipse 를 사용한 Struts + Spring + Hibernate 통합에 관련 문서
java(jsp) 에서 바이트단위로 문자열 자르기(한글깨짐없이)
{ // 문자열 자르기
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;
}
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> 태그를 닫음으로써 글에 대한 정보가 완료됨을 선언 |
</channel> |
열어놓은 채널을 닫음. |
</rss> |
열어놓은 rss 태그를 닫음. RSS 문서의 끝. |
[출처] RSS 문서 제작을 위한 RSS 규약의 이해 (RSS 2.0) |작성자 길이 |
소프트웨어 개발방법론
소프트웨어 개발방법론
모든 조직 사회에는 그 구성원들이 따라야 하는 제도나 규정 등이 존재하기 마련이다. 이러한 제도와 규정을 이해하고 업무를 처리해 나가다 보면, 가장 효과적으로 그 일을 처리하는 방법(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 |
객체 모델링, 컴포넌트 모델링 |
[출처] 소프트웨어 개발방법론|작성자 후루꾸
비즈니스 프로세스 관리 시스템
비즈니스 프로세스 모델 및 시스템
비즈니스 프로세스의 실행, 제어, 감시 및 모니터링을 담당하는 핵심구성요소이다. 실행 상태 정보를 저장하는 데이터베이스와 실행객체들의 관리를 지원하는 미들웨어 플렛폼, 실행객체들 간의 통신을 담당하는 호출 메커니즘, 그리고 엔진의 실행객체 자체들을 구성하는 아키텍쳐등으로 구성되며, 이들 각각을 어떻게 구성하느냐에 따라 엔진의 성능이 결정된다.
[출처] 비즈니스 프로세스 관리 시스템 |작성자 후루꾸
BPM 개관 및 구축 방법론
[출처] BPM 개관 및 구축 방법론 |작성자 후루꾸