'My work space/Java'에 해당되는 글 78건

  1. 2008.08.20 Enumeration & Iterator
  2. 2008.08.20 JDK5.0 새롭게 변화한 것 및 추가사항
  3. 2008.08.20 Ⅶ. Activity Diagram
  4. 2008.08.20 Ⅵ. Collaboration Diagram
  5. 2008.08.20 Ⅴ. Sequence Diagram
  6. 2008.08.20 Ⅳ. Class Diagram
  7. 2008.08.20 Ⅲ. Use Case Diagram, Use Case 정의서
  8. 2008.08.20 Ⅱ. UML구성요소
  9. 2008.08.20 Ⅰ. UML 개요
  10. 2008.08.20 J2EE , J2SE 한글 API [다운가능]
2008. 8. 20. 15:10

Enumeration & Iterator

Enumeration : 자바 초기버젼에서 개발된 것으로, HashTable과 Vector에서 사용가능
Iterator : jdk 1.2버젼에서 개발된 것으로, Collection 인터페이스를 구현한 모든 클래스에서 사용가능.

API를 확인해볼까요??
Vector와 HashTable에 있는 메소드입니다.
(HashTable에는 Enumeration 타입의 key()메소드도 존재합니다.)

하지만, ArrayList, LinkedList, HashMap에서는 찾아볼 수 없었습니다.
iterator는 HashTable이든 HashMap이든, Vector든 LinkedList든,
모두 쓸 수 있다는 것이죠.

Iterator에 대해서는 저번에 알아봤으니까.
이번에는 Enumeration의 API를 간단하게 뒤져봐야겠네요.

hasMoreElements

<PRE>boolean hasMoreElements()</PRE>
Tests if this enumeration contains more elements.
Returns:
true if and only if this enumeration object contains at least one more element to provide; false otherwise
Iterator의 hasNext()와 똑같은 일을 하는군요!!

nextElement

<PRE>E nextElement()</PRE>
Returns the next element of this enumeration if this enumeration object has at least one more element to provide.
Returns:
the next element of this enumeration.
Throws:
NoSuchElementException - if no more elements exist.
다음 elements가 존재하지 않으면, Exception이 발생하네요 ㅋㅋ
이것 또한 Iterator의 next()와 같아 보이는군요..ㅋㅋ

Vector의 요소들을 출력하는 예제입니다.
<PRE>
for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
System.out.println(e.nextElement());

}
</PRE>자 그럼, 본격적으로 차이점에 대해서 알아보도록 합시다.

Snap Shot
Enumeration과 Iterator의 가장 큰 차이점은 바로 Snap Shot입니다.
Enumeration은 Snap Shot을 지원합니다. 여기서 'fail-fast
'라는 개념이 나오는데요.
Iterator는 fail-fast 방식이라고 합니다.
그럼 과연 이것이 무엇일까요?? 좋은 아티클이 있어서 긁어왔습니다...-ㅅ-;;

Fail-Fast

자바 2 이전 버전에서 사용되던 Vector, Hashtable의 뷰 객체인 Enumeration은 fail-fast 방식이 아니었으나, 자바 2의 콜렉션 프레임워크에서 콜렉션 뷰인 Iterator, ListIterator 객체는 fail-fast 방식이라는 점이다.

콜렉션 뷰는 콜렉션 객체에 저장된 객체들에 대한 순차적 접근을 제공한다. 그러나, 뷰 객체인 Enumeration 또는 Iterator 객체를 얻고 나서 순차적 접근이 끝나기 전에 뷰 객체를 얻은 하부 콜렉션 객체에 변경이 일어날 경우, 순차적 접근에 실패하게 된다. 여기서 변경이라는 것은 콜렉션에 객체가 추가되거나 제거되는 것과 같이 콜렉션 구조의 변경이 일어나는 경우를 말한다.

이런 상황은 멀티쓰레드 구조와 이벤트 구동 모델에서 일어날 수 있으며, 개발자가 혼자 테스트할 경우 발견하기 어려운 문제이다. 따라서 정확한 이해와 예상이 필요하며, 이에 대한 대처 방안을 마련해야 한다.

하부 콜렉션 객체에 변경이 일어나 순차적 접근에 실패하면 Enumeration 객체는 실패를 무시하고 순차적 접근을 끝까지 제공한다. Iterator 객체는 하부 콜렉션 객체에 변경이 일어나 순차적 접근에 실패하면 ConcurrentModificationException 예외를 발생한다. 이처럼 순차적 접근에 실패하면 예외를 발생하도록 되어 있는 방식을 fail-fast라고 한다.

Iterator는 fail-fast 방식으로 하부 콜렉션에 변경이 발생했을 경우, 신속하고 결함이 없는 상태를 만들기 위해 Iterator의 탐색을 실패한 것으로 하여 예외를 발생하며, 이렇게 함으로써 안전하지 않을지도 모르는 행위를 수행하는 위험을 막는다. 왜냐하면 이러한 위험은 실행 중 불특정한 시간에 멋대로 결정되지 않은 행위를 할 가능성이 있기 때문에 안전하지 않다고 할 수 있기 때문이다.


멋집니다..-ㅅ-; 더이상 설명할 것이 없을 것 같은데요.
흐음.. 일단 정리를 해보면, iterator는 일종의 pointer가 있습니다.
예전에 LinkedList 개념을 그림으로 그려보았는데요.
그거랑 매우 비슷합니다.


포인터가 Array의 자기자신과 다음 객체를 가르키는 것이지요.
그래서 위에 아티클에 써져있는 것처럼 삭제나 수정시 참조무결성 원칙에 어긋나게되어서
에러가 발생하게 되는것입니다.

아티클에 SnapShot에 대한 좋은 내용도 있더군요.

스냅샷

이처럼 콜렉션 뷰 객체인 Iterator와 ListIterator 객체가 fail-fast 방식인 이유는 스냅샷에 대한 보장을 포함하고 있지 않기 때문이다. 즉, 콜렉션의 뷰인 Iterator 객체를 얻었을 때 그 순간의 상태를 따로 생성하지 않기 때문에, Iterator 객체에서 순차적으로 하부 콜렉션 객체를 접근할 때, 콜렉션 객체의 변경에 영향을 받게 된다.

따라서, 콜렉션 뷰인 Iterator를 통하여 순차적 접근을 행하는 도중에 하부 콜렉션 객체에 변경이 일어날 가능성이 있는 경우 스냅샷을 명시적으로 생성하는 것이 좋다. ArrayList를 이용한 스냅샷을 생성하는 간단한 방법은 다음과 같다.

<PRE class=code>
public Iterator snapshotIterator(Collection collection) {
return new ArrayList(collection).iterator();
}

이렇게 스냅샷을 이용하면 스냅샷이 생성된 순간의 상태에 대하여 Iterator를 통한
콜렉션의 뷰를 생성하게 된다. 하부 콜렉션의 변경이 일어나도 스냅샷에는 반영되지
않으며 Iterator는 실패없이 실행된다.</PRE>

콜렉션 계열 중에 ArrayList를 사용하는 이유는 다른 콜렉션 계열 클래스들보다 생성과순차적 접근이 빠르기 때문이다. ArrayList가 삽입과 삭제에 불리한 단점이 있으나
이 경우에는 삽입과 삭제가 없으므로 고려되지 않는다.


조금 더 쉽게 정리를 해보자면,
Enumeration은 객체를 복사해서 저장합니다. 그래서 삭제나 수정시 전체 콜렉션에는
큰 타격을 주지 않는다는 것이죠.

Synchronization

제가 원래 알고 있던 지식은 "Enumeration은 동기화를 지원한다." 였는데,
어디서 잘 못 주워들었나봅니다. -ㅛ-
아티클에 <<콜렉션 프레임워크의 클래스들은 동기화를 보장하고 있지 않다.>>
라고 써져있더라구요. 그래서 찾아보았습니다. 역시 API에서 Enumeration부분을 봐도,
동기화에 대해서 정의된 부분은 찾을 수 없더라구요.
하지만,  Vector와 ArrayList의 차이점을 공부한 글에서도 알 수 있을 듯이
Vector는 동기화가 아주 넘쳐납니다-ㅅ-; 그러한 사실은 이클립스에서 Vector.class를
가보면, synchronized로 도배가 되어있는 것을 볼 수 있답니다.

아티클에는,
<<멀티쓰레드에서 콜렉션 구현 객체에 동시에 추가, 삭제를 위한 접근이 행해진다면, 그러한 행위가 발생하는 부분에 동기화를 명시적으로 해주어야 한다.>>
라고 써져있더군요. 방법까지 친절하게 명시해주고 있었습니다.
요렇게-ㅅ-;

Collection c = Collections.synchronizedCollection(myCollection);

결론적으로, Enumeration과 Iterator 사이에서 뚜렷하게 차이를 보이는 점은
 "스냅샷을 지원하느냐 하지 않느냐" 라는 것 같습니다.
아티클에서는 "Fail-fast Iterator에 대한 멀티쓰레드 무결성 해결방법" 이라는 제목아래 글을 써내려가고 있는데요. 스냅샷과 동기화가 Iterator의 멀티쓰레드 무결성 해결방법으로 제시되었고, 그와 함께 예시 소스코드도 보여주고 있습니다. 그러니까 Iterator가 스냅샷을 지원하지 않아도, 스냅샷을 명시적으로 생성할 수 있다는 것입니다. 이런건 한번 소스코드를 작성해봐야 확실히 알 수 있겠네요.

'My work space > Java' 카테고리의 다른 글

JUnit 이클립스 사용  (0) 2008.08.20
JUNIT 사용 가이드라인  (0) 2008.08.20
JDK5.0 새롭게 변화한 것 및 추가사항  (0) 2008.08.20
Ⅶ. Activity Diagram  (0) 2008.08.20
Ⅵ. Collaboration Diagram  (0) 2008.08.20
2008. 8. 20. 15:09

JDK5.0 새롭게 변화한 것 및 추가사항

JDK5.0 새롭게 변화한 것 및 추가사항

1. Generic Type: collection은 대부분 런타임시 에러가 체크가 되었지만, 이 타입을 사용하면, 컴파일시 타입에러를 알수가 있다.
ex) Collection에서 Map<String,String> dataMap = new HashMap<String,String>();
    와일드 카드이용 Vector<? extends Object> list = new Vector<String>();

기존의 방식은 데이터형의 안전성이 코딩단계에서 걸러지지 않고, 실행단계에서 영향을 미치게 되는 것이다. 또한 프로그래머가 해당 컬렉션에 저장된 클래스 인스턴스의 데이터형에 대해서 사전에 알아야만 캐스팅을 할 수 있다는 번거로움이 있다.

Generic지원 클래스 정의
public class Common<T>{
   public T member;
   public void setMember(T mem){
         this.member = mem;
   }
}
Generic의 이용
Commom<String> common = new Common<String>();


2. 메타데이터

3. 개선된 루프
for ( 데이타 접근변수명 : 배열이나 컬렉션 변수명){
    반복코드
}

4. 오토박싱/언박싱 : primitive타입과 클래스간에 자동 형변환!
5. static import

유틸리티성 메소드들은 정의할 때 static  으로 정의하고 사용할 때는

 

객체를 생성하지 않고 바로 사용합니다.

 

예를 들면 콘솔에 글자를 출력하기 위해서 사용하는

 

System.out.println("화면에 출력합니다");

 

이것일 것 같습니다. ^^

 

static import 를 사용하면 다음과 같이 사용할 수 있습니다.

 

import static java.lang.System.out;

 

 

사용할 때는

 

out.println("화면에 출력합니다.");

 

앞에 클래스명을 생략할 수 있습니다.

 

 

하나더 예를 든다면

 

import static java.lang.System.out;

import static java.lang.Math.*;

 

이렇게 import 한 후에

 

out.println( round(1.3) );

 

이렇게 사용할 수 있습니다.

 

6. formatter와 Scanner : C언어와 같은 printf메소드 지원

7. Varargs(Variable Arguments)

int add(int... arg){ ... }
파라미터가 몇개가 들어올지 모른다는 것을 의미한다.
arg는 배열타입이다.
인자선언에서 마지막 인자로 사용되어야 한다.
비정형 인자는 한번만 사용할 수 있다.

8. Simple RMI interface generation기법

9. JDBC RowSets

1,4,6번정도는 실제 개발시 많은 도움이 될거 같습니다.

'My work space > Java' 카테고리의 다른 글

JUNIT 사용 가이드라인  (0) 2008.08.20
Enumeration & Iterator  (0) 2008.08.20
Ⅶ. Activity Diagram  (0) 2008.08.20
Ⅵ. Collaboration Diagram  (0) 2008.08.20
Ⅴ. Sequence Diagram  (0) 2008.08.20
2008. 8. 20. 15:08

Ⅶ. Activity Diagram

1. Activity Diagram 개요

    ① 정의 : 처리 로직이나 조건에 따른 처리흐름을 순서에 따라 정의한 모델

    ② 작성목적

        * 처리순서 표현 (대상에 관계없이..)

        * 비즈니스 프로세스 정의(이 용도로 가장많이 사용됨) : 업무의 As-is분석, To-be 분석 가능

        * 프로그램 로직 정의 : 처리흐름의 도식화로 프로그램 로직 정의 가능

        * 유즈케이스 실현

    ③ 작성시기 : 그 시점이 한정되어 있지 않고 다양하게 사용 가능

        * 업무 프로세스 정의 시점.

        * 유즈케이스 정의서 작성 시, 처리절차 기술할 때

        * 오퍼레이션 사양 정의시

    ④ 작성순서

        * 작성대상 선정 : 업무프로세스 모델링, 오퍼레이션 사양 정의

           ↓

        * Swim lane 정의 : 대상영역에 명확한 역할을 정의해야 할 때.

           ↓

        * 처리절차 모델링 : 시작점, 끝점 반드시 표현.

2. Activity Diagram 구성요소

    ① Things

        * Activity : 행위나 작업 ( 내부적으로 구조를 가지는 단위0

              ex) 상품조회, 구매결정, 결재내용입력, 결재자지정....

        * Initial State : ●         * Final State : ⊙

            

        * Decision(Branch) : ◇

        * Synchronization bar : 병렬처리절차가 시작되거나 모이는 지점

          

            ex)

                    

    ② Relationship

        * Transition(전이) : 하나의 액티비티가 행위를 완료하고 다른 액티비티로 처리순서가 옮겨

                                    지는 제어흐름 표현 

    ③ Swim lane : 하나의 처리를 구분지음.

       

3. Activity Diagram 사례

    ① SCM 시스템의 일반 정보에 대한 Role 액티비티 다이어그램

        * AS-IS

         

        * TO-BE

         

         → 모든 사용자에게 일반정보를 제공했던 것을 등록여부와 거래품목 등록여부 확인 후

             등록된 사용자에게만 일반정보 제공.

    ② 프리즘에서 유지보수 절차 프로세스를 정의한 액티비티 다이어그램


출처

http://blog.naver.com/westengirl/140003983368

'My work space > Java' 카테고리의 다른 글

Enumeration & Iterator  (0) 2008.08.20
JDK5.0 새롭게 변화한 것 및 추가사항  (0) 2008.08.20
Ⅵ. Collaboration Diagram  (0) 2008.08.20
Ⅴ. Sequence Diagram  (0) 2008.08.20
Ⅳ. Class Diagram  (0) 2008.08.20
2008. 8. 20. 15:07

Ⅵ. Collaboration Diagram

1. Collaboration Diagram 개요

    ① 정의 : Sequence Diagram과 같으며 모델링공간에 제약이 없어 구조적인 면을 중시 가능.

    ② 작성목적

        * 객체간 동적 상호작용을 구조적 측면을 중시하여 작성

        * 객체를 더욱 상세히 정의

        * 유즈케이스 실현

        * 프로그래밍 사양 정의

    ③ 작성시기 : 유즈케이스 작성 후부터 코딩 전.

        ※ 시퀀스 다이어그램과 콜레보레이션 다이어그램 중 하나만 작성하면 됨.

    ④ 작성순서 : Sequence Diagram과  동일.


2. Collaboration Diagram 구성요소

    ① Thing

        * Actor : Sequence Diagram과  동일

        * Object : Sequence Diagram과  동일

    ② Relationship

        * Message

          - Flat Flow of Control

           

         

          - Nested Flow of Control

          

          - Asynchronous Flow of control


           

          - Return Flow

           

        * Link : 객체와 객체간 연관관계.

                   메시지는 링크를 따라 움직이므로 객체가 통신하려면 링크되어 있어야 함.

                  

3. Collaboration Diagram 사례

   

모듈. Use case Diagram, Use case/ 6. 유즈케이스 정의서의 사례/ 사례 2를
컬레보레이션 다이어그램으로 작성한 것입니다. 이 IS 운영시스템을 개발하는 프로젝트
에서는 실제로 작성하지 않았습니다. 앞의 자기진단에서 언급한 것처럼 케이스 도구를
이용하여 시퀀스 다이어그램에서 컬레보레이션 다이어그램을 만들었습니다.
시퀀스 다이어그램에서는 메시지가 위에서 아래로 시간 순서대로 흐르는데,
컬레보레이션 다이어그램에서는 Numbering을 통해서 순서가 나타납니다. 이 또한,
케이스 도구로 컬레보레이션 다이어그램을 자동 생성할 경우, 자동으로 Numbering이
됩니다.


출처

 

http://blog.naver.com/westengirl/140003963057

'My work space > Java' 카테고리의 다른 글

JDK5.0 새롭게 변화한 것 및 추가사항  (0) 2008.08.20
Ⅶ. Activity Diagram  (0) 2008.08.20
Ⅴ. Sequence Diagram  (0) 2008.08.20
Ⅳ. Class Diagram  (0) 2008.08.20
Ⅲ. Use Case Diagram, Use Case 정의서  (0) 2008.08.20
2008. 8. 20. 15:07

Ⅴ. Sequence Diagram

1. Sequence Diagram 개요

    ※ UML은 기존에 제공하지 못했던 객체간 동적 상호 작용을 제공한다.

        이를 Interaction이라 하는데 UML에는 Sequence Diagram과 Colleboration Diagram이

        Interaction Diagram에 속한다.

    ① 정의 : 문제해결에 필요한 객체를 정의하고 객체간 동적 상호관계를 시간순서에 따라 정의.

    ② 작성목적

        * 객체간 동적 상호작용을 시간적 개념을 중시하여 모델링

        * 객체의 오퍼레이션과 속성을 상세히 정의

        * Usecase를 실현

        * 프로그래밍 사양 정의

    ③ 작성시기 : 유즈케이스 다이어그램 정의 후부터 프로그램 코딩전

    ④ 작성순서

        * 작성대상 선정 : 유즈케이스를 선정하고 유즈케이스 정의서 분석

        * 액터 위치시킴 : 액터는 좌측부터 위치..

        * 클래스 위치시킴 : 유즈케이스에 참여하는 클래스 위치.

        * 객체간 메시지정의 : 시간순서대로 객체간 메시지 정의

        * 객체 추가정의 : 요구사항 처리를 위해 필요한 객체가 정의되지 않았으면 추가 정의.


2. Sequence Diagram 구성요소

    ① Thing

        * Actor : Usecase에서의 actor.

        * Object : 클래스의 인스턴스. 클래스 타입으로 선언된 변수형태로 존재.

                      

    ② Rlationship

        * Message : 객체와 객체가 통신하는 유일한 수단

            - Flat Flow of Control : 가장 일반적 메시지

            

            - Nested Flow of Control : 메시지가 중첩 시 메시지가 모두 돌아와야 다음 처리진행

           

            - Asynchronous Flow of control : 메시지의 결과를 기다리지 않고 다음 처리 진행

           

            - Return Flow : 메시지를 처리한 결과. 필요한 경우에만 사용.

            

    ③ etc

        * Life Line : 객체의 생존기간. 점선에 X표시가 객체가 소멸하는 시점.

          

        * Activation : 객체가 활성화 되어있는 기간. -점선표기

                           객체가 외부 메시지를 받고 보낸 메세지를 기다리는 기간.-좁고긴시각형

            

    

3. Sequence Diagram 사례

    ① 설계단계 Sequence Diagram

       

    ② 상세설계단계 Sequence Diagram

       


   단계                     설계단계                      상세설계단계

------------------------------------------------------------------------------------

Actor                     User                                  Buyer System User

------------------------------------------------------------------------------------

Boundary 객체        SearchItemGroupListUI         ListItemGroupUI

------------------------------------------------------------------------------------

Control 객체           ItemGroupCtl                       ICCMItemGroup(<<interface>>)

------------------------------------------------------------------------------------

Entity객체               ItemGroupEty                     CMItemGroupDAO(<<DAO>>),
                                                                    CMItemGroupVO(<<VO>>)

------------------------------------------------------------------------------------

                            requestItemGroupInfo          listItemGroup

                            ------------------------------------------------------------------ 

메시지                   searchItemGroupInfo           listItemGroup
                                                                    (searchArg:CMListSearchArg)

                            ------------------------------------------------------------------

                            searchItemGroupInfo           listItemGroup

                                                                   (searchArg:CMListSearchArg,

                                                                     con:Connection)

------------------------------------------------------------------------------------


ex)


모듈. Use case Diagram, Use case/ 6. 유즈케이스 정의서의 사례/ 사례 2를 시퀀스
다이어그램으로 작성한 것입니다.
액터는 Prism Admin입니다. 설계단계에서 나온 것으로 객체들은 Boundary, Control,
Entity가 도출되었으며, 아이콘으로 표기되었습니다.
액터로부터 이벤트를 받는 역할은 Boundary인 'CreateWbsCodeView' 객체가 담당
하고, Control인 'WbsMngtCtl' 객체가 비지니스 로직을 담당하는 역할을 하고 있음을
알 수 있습니다.
메시지 1.1.6:*[For each Wbs Code]updateWbsCodePriority():void에서 몇 가지를
살펴 보겠습니다.

-

1.1.6 : 메시지의 흐름 순서를 표기(필수는 아님)

-

* : 메시지가 반복되는(looping) 것을 표기

-

[For each Wbs Code] : 메시지가 실행되기 위한 조건(Guard Condition)

-

updateWbsCodePriority() : 메시지 명

-

void : Return 값


ex) 앞서 언급한 회계 시스템 시퀀스 다이어그램


출처

 

http://blog.naver.com/westengirl/140003933764

'My work space > Java' 카테고리의 다른 글

Ⅶ. Activity Diagram  (0) 2008.08.20
Ⅵ. Collaboration Diagram  (0) 2008.08.20
Ⅳ. Class Diagram  (0) 2008.08.20
Ⅲ. Use Case Diagram, Use Case 정의서  (0) 2008.08.20
Ⅱ. UML구성요소  (0) 2008.08.20
2008. 8. 20. 15:06

Ⅳ. Class Diagram

1. Class Diagram 개요

    ① 정의 : 클래스간 정적인 정의와 관계 표현

    ② 작성목적

        * 클래스 식별 및 관계 정의

        * 클래스간 관계를 정의함으로써 시스템 이해용이.

        * 클래스의 오퍼레이션과 속성을 정의함으로써 SW 시스템 설계

        * 일관된 형식으로 분석설계 방식 제공.

    ③ 작성순서

        * 클래스 정의 → 속성, 오퍼레이션 정의 → 클래스간 관계정의 ┐

               ↑__________________________________________________┘

 

2. Class Diagram 구성요소

    ① Class

        

    ② Association : 두 클래스간 일반적 협력 관계

: 양방향 관계

: 화살표는 참조 방향

            ex)

            

    ③ Aggregation : 두 클래스간 전체-부분 관계. 각 클래스가 독립적 생명 주기를 갖는다.

        Composition : 두 클래스간 부분-전체 관계. 부분 생명주기가 전체 클래스의 영향을 받음.

              

    ④ Generalization : 두 클래스가 일반화-특수화 관계. 상속(Inheritance)의 특성을 지님.

               

    ⑤ Dependency : 클래스간 사용관계- 다른 객체를 생성하고 소멸시키는 보다 종속적 관계임.

3. Multiplicy와 특별한 Class 간 관계

    ① Multiplicity(관계수) : 클래스가 관계에 참여하는 개체의 수.

           - Many                                                  - Exactly 5

       

           - Zero or more                                        - one to ten

       

            - exactly 2,3,5

       

    ② Multiple Association(다중연관관계) : 두 클래스 간 두 가지 이상의 Association이 존재.

    

    ③ Reflexive Association : 같은 클래스기리 맺어지는 관계

    ④ Qualifier 연관관계 : 관계수가 복잡한 경우

    ⑤ Association Class(연관 클래스) : Association 관계 에서 고유의 속성이나

                                                       오퍼레이션이 필요한 경우

      

4. 사례




출처

 

http://blog.naver.com/westengirl/140003933502

'My work space > Java' 카테고리의 다른 글

Ⅵ. Collaboration Diagram  (0) 2008.08.20
Ⅴ. Sequence Diagram  (0) 2008.08.20
Ⅲ. Use Case Diagram, Use Case 정의서  (0) 2008.08.20
Ⅱ. UML구성요소  (0) 2008.08.20
Ⅰ. UML 개요  (0) 2008.08.20
2008. 8. 20. 15:05

Ⅲ. Use Case Diagram, Use Case 정의서

1. Use Case Diagram 개요

    ① 정의 : 사용자 관점에서 SW 시스템의 범위와 기능 정의.

                 시스템애 해야할 무엇을 작성. 어떻게는 서술하지 않음.

    ② 목적 - 업무범위 정의

               - 사용자 정의

               - 업무기능 정의

               - 사용자 요구사항 정의

               - 사용자와 개발자간 의사소통 도구

               - 분석, 설계 작업 기준

               - 테스트 기준

    ③ 작성단계

        * 액터식별 → 유즈케이스 식별 →         관계정의            →  유즈케이스 구조화

                    


2. Use Case Diagram 구성요소

    ① Actor : 시스템 외부에 독립적으로 존재하면서        ② UseCase : 사용자 관점의 시스템이

                    시스템과 교류하는 것                                                 제공하는 서비스

                                                                     

    ③ Association : 액터와 유즈케이스간 관계

                

          : 상호교류시..                                             : 커뮤니케이션을 받는 쪽이 화살표를 받음.

    ④ Generalization : 액터끼리, 유즈케이스끼리 관계로 일반화 관계 정의

               

          : 화살표를 받는 쪽이 상위개체.

    ⑤  Include : 한 유즈케이스가 다른 유즈케이스에게 서비스를 요청하는 관계

                      서비스는 반드시 수행되어야 함.                   

                   

    ⑤ Extend : 한 유즈케이스가 다른 유즈케이스에게 서비스를 요청하는 관계

                     but 서비스는 조건에 따라 수행될 수도 안 될 수 도 있다.

                

     ex) 프리즘 시스템

       


3. Use Case 정의서

    : Use Case의 처리내용을 기술한 문서

    

    ① 작성시기 : Use Case Diagram이 만들어진 직후

    ② 구성

        = UseCase명+이벤트흐름{기본흐름+선택흐름}+특별요구사항+사전조건+사후조건+확장조건


※ 사례

           

   *  병원관계자가 원하는 기능

      - 진료비는 진료정보를 입력하면 자동 산정된다

      - 환자는 진료예약을 하고, 환자의 과거 병력과 진료정보는 관리된다.

      - 일반 사용자는 병원정보와 의료진 정보를 조회하고 상담한다.

      - 의료진은 자신의 진료스케쥴을 자동 생성하고 진료내역을 관리하고, 환자정보를 조회 한다.

      - 원무와 직원은 이 시스템을 통해 진료비 청구서를 조회, 발행하고, 진료예약을 확정한다.

  =>


출처http://blog.naver.com/westengirl/140003904775

'My work space > Java' 카테고리의 다른 글

Ⅴ. Sequence Diagram  (0) 2008.08.20
Ⅳ. Class Diagram  (0) 2008.08.20
Ⅱ. UML구성요소  (0) 2008.08.20
Ⅰ. UML 개요  (0) 2008.08.20
J2EE , J2SE 한글 API [다운가능]  (0) 2008.08.20
2008. 8. 20. 15:05

Ⅱ. UML구성요소

Diagram = Things + Relationships


 

----------------------------------------------------------------------------------------

1. Diagram

   ① Usecase Diagram

       * 용도 - 사용자관점에서 논리적인 시스템의 기능 정의

                 - 인수측과 개발측이 이해를 같이하는 도구

                 - 시스템 전체 개발범위 결정

                 - 시스템 분석, 설계 기준

                 - 인수테스트 기준

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ② Class Diagram

       * 용도 - SW의 기본구성단위인 클래스와 그들간의 관계 정의

                 - 정적인 관점에서 클래스 구조 표현

                 - 기본적 데이터 모델링 수행(분석단계)

                 - 객체지향 언어코딩을 위한 설계 사양 제공(설계단계)

                 - 분석에서 설계까지 일관된 형식의 SW시스템 분석, 설계 도구

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ③ Sequence Diagram

       * 용도 - 객체들간 협력 과정을 동적으로 정의한 Diagram

                 - 유즈케이스 단위로 작성

                 - 분석에서 설계까지 일관된 형식의 SW 시스템 분석 설계 도구

                 - 클래스 다이어그램과 병행되며 상호간 일관성 요구됨

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ④ Collaboration Diagram

       * 용도 - Sequence Diagram과 동일함.

                 - 객체와 메시지를 구조적으로 표현.

                 - Sequence Diagram과 의미 손실없이 변환 가능.

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ⑤ State Chart Diagram

       * 용도 - 하나의 객체가 생성되어 소멸 될 때까지의 모든 상태를 분석 표현.

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ⑥ Activity Diagram

       * 용도 - 일(Activity)의 수행 순서와 처리흐름 모델링. 플로우 차트와 용도 비슷.

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ⑦ Component Diagram

       * 용도 - 컴포넌트로 이루어진 구성체계 표현. 정적 구성관계 표현.

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ⑧ Deployment Diagram

       * 용도 - 컴퓨팅 환경인 노드와 그 노드에 배치할 컴포넌트 구성을 나타냄.

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

   ⑨ Object Diagram

       * 용도 - 특정 조건하에서 주요 객체들의 속성과 객체관계를 분석함으로써

                   클래스 모델의 완전성 검증.

       * 작성시기

           요구정의→분석→기본설계→상세설계→개발→구현

----------------------------------------------------------------------------------------

2. Things

    = Structural Things + Behavioral Things + Grouping Things + Annotation Things

   ① Structural Things

       * Class : 같은 종류의 객체 집합

 

       * 인터페이스 : 오퍼레이션을 선언만 하고 구현하지 못함.

       * Collaboration(협력) : 구현관점에서 어떤 목적을 달성하기 위한 일련의 행위

                 

       * Use Case : 시스템이 제공하는 서비스 혹은 기능단위

                   

       * Active Class : 하나 이상의 프로세스나 쓰레드를 갖는 객체를 파생하는 클래스 기술

                    

       * Component : 시스템에서 독립적인 실행단위 혹은 배포단위로 관리되는 한 묶음의 SW

                     

       * Node : 연산능력이 있는 물리적 요소(컴퓨팅)

                       

   ② Behavioral Things(행위사물)

       * Interaction(교류) : 객체들간 주고받는 메시지

                          

       * State Machine(상태머신) : 객체의 상태와 상태간 허용된 액션 정의

                           

    ③ Grouping Things(그룹사물)

       * Package : UML요소를 그룹으로 묶어놓은 것

                                 

   ④ Annotation Things(주해사물)

       * Note : 주석

                     

----------------------------------------------------------------------------------------3. Relationshhip(관계)

   ① Dependency : 한 쪽사물이 그 역할을 수행키 위해 다른 사물의 도움이 반드시 필요한 경우

                       

   ② Association : 한 쪽 사물에서 상대편 사물 참조.

                       

   ③ Generalization : 상속관계

                       

   ④ Realization : 선언하는 사물과 구현하는 사물간 관계.

                       

----------------------------------------------------------------------------------------

출처

http://blog.naver.com/westengirl/140003904446

'My work space > Java' 카테고리의 다른 글

Ⅳ. Class Diagram  (0) 2008.08.20
Ⅲ. Use Case Diagram, Use Case 정의서  (0) 2008.08.20
Ⅰ. UML 개요  (0) 2008.08.20
J2EE , J2SE 한글 API [다운가능]  (0) 2008.08.20
JDK1.4 Logging API의 사용을 통한 Logging  (0) 2008.08.20
2008. 8. 20. 15:04

Ⅰ. UML 개요

1. UML 이란..?

   : Unified

   : Modeling Language

   : Object Oriented

   : 적용분야에 제한이 없다.

2. UML 특징

   * 가시화 언어 + 명세화 언어 + 구축언어 + 문서화 언어

3. UML 등장의 의의

   * 표기체계의 통합 및 표준화

   * 개발 프로세스와 개발언어에 독립적 표기체계

   * 적용에 제한없는 범용적 표기체계

----------------------------------------------------------------------------------------4. 모델링

   * 모델 : 간소화 시켜놓은것.

   * 목적 - 시스템의 시각화

             - 시스템의 구조나 행위 명시

             - 시스템 구축 안내 템플릿 제공

             - 결정사항을 문서화

   * 원칙 - 작성할 모델의 적절한 선택

             - 다양한 각도에서 작성 가능

             - 실체의 정확한 반영

             - 하나의 모델은 충분치 않음.

----------------------------------------------------------------------------------------

5. 객체지향

   * 객체 : 현실에 존재하는 실체가 인간의 사고과정을 통해 머리속에 정리된 개념

   * 객체의 조건 = 상태 + 행위 + 식별자

   * 클래스 : 유사한 특성을 가진 객체들의 모임

               = Attribute + Operation

   * 객체지향의 특성

        - 캡슐화 : 속성과 오퍼레이션의 객체내 결합. 정보은폐가능.

        - 추상화 : 실체의 관심부분만 취하는 방식. 다양성을 가짐.

        - 상   속 : Generation 과 Specialization으로 중복 제거.

        - 다형성 : 동일한 외부 명령에 대해 각 객체가 서로 다른 방식으로 수행.

                       고수준의 추상성 제공, 외부에서 객체의 오퍼레이션 접근용이. 재사용성 증대.

   * 객체지향의 장점

        - 실세계를 정확히 반영

        - 하나의 패러다임

        - 재사용성

        - 높은 안정성

   * 객체지향의 단점

        - 전문가 부족

        - 분석, 설계, 구현 모두가 적용되어야 의미 있음.

        - 다소간의 시스템 성능 저하

출처http://blog.naver.com/westengirl/140003902164

2008. 8. 20. 15:03

J2EE , J2SE 한글 API [다운가능]

ico-file j2ee한글api_1.3.zip
ico-file j2se한글api.zip

ejb interface 찾아보는데 j2se에서 한참동안 찾고 허무해졌다는....


다운받을 수 있게 올려놨습니다


덤으로 j2se 5.0 한글도 올려놨습니다


초보라서 아직까진 한글로 보고 있습니다 ..

'My work space > Java' 카테고리의 다른 글

Ⅱ. UML구성요소  (0) 2008.08.20
Ⅰ. UML 개요  (0) 2008.08.20
JDK1.4 Logging API의 사용을 통한 Logging  (0) 2008.08.20
프로그래밍에유용한사이트  (0) 2008.08.20
AWT/SWING 성능 비교(기본 출력 기능)  (0) 2008.08.20