Part 1 

요구사항 문서에는 ATM 시스템의 목적과 그 시스템이 무엇을 해야 하는지가 명시되어 있다.
한 국내 은행이 사용자(예: 은행 고객)가 기본적인 금융 거래를 수행할 수 있도록 새로운 현금 자동 입출금기(ATM)를 설치할 예정이다.
각 사용자는 은행에 하나의 계정만 가질 수 있다.

 

  • ATM 사용자
    그들의 계좌 잔액을 조회하다.
    현금을 인출하다 
    자금을 예치하다

ATM 사용자 인터페이스

  1. 사용자에게 메시지를 표시하는 화면
  2. 사용자로부터 숫자 입력을 받는 키패드
  3. 사용자에게 현금을 지급하고
  4. 사용자로부터 예금 봉투를 받는 예금 슬롯
  5. 현금지급기는 매일 500달러 20센트짜리 지폐를 싣고 시작한다.

은행 고객이 ATM을 통해 시작한 금융 거래를 수행할 수 있는 소프트웨어를 개발하십시오.
컴퓨터의 모니터를 사용하여 ATM 화면을 시뮬레이션하고 컴퓨터의 키보드를 사용하여 ATM의 키패드 시뮬레이션.


ATM 세션은 다음과 같이 구성된다. 

  1. 계정 번호 및 개인 식별 번호(PIN)를 기준으로 사용자 인증 
  2. 금융 거래 생성 및 실행


사용자를 인증하고 트랜잭션을 수행하려면 다음과 같이 하십시오. 

은행의 계정 정보 데이터베이스와 상호 작용하다. 

각 계정에 대해 데이터베이스는 계좌 번호, PIN, 잔액을 계좌에 저장한다.


가정 간소화:
은행에서는 ATM을 한 대만 구축할 계획이므로 여러 대의 ATM이 동시에 이 데이터베이스에 액세스하는 것은 걱정할 필요가 없다.
은행은 사용자가 ATM에 접속하는 동안 데이터베이스 정보를 변경하지 않는다.
은행은 중요한 보안 조치 없이 ATM이 데이터베이스에 있는 정보에 접근하고 조작할 것을 신뢰한다.


ATM에 처음 접근할 때 사용자는 다음과 같은 일련의 사건을 경험해야 한다(그림 12.1 참조).
화면에 시작!이 표시되고 사용자에게 계정 번호를 입력하라는 메시지가 표시된다.
사용자는 키패드를 사용하여 5자리 계정 번호를 입력한다.
화면에는 사용자에게 지정된 계정 번호와 관련된 PIN(개인 식별 번호)을 입력하라는 메시지가 표시된다. 
사용자는 키패드를 사용하여 5자리 PIN을 입력한다.
사용자가 유효한 계정 번호와 해당 계정에 대한 올바른 PIN을 입력하면 메인 메뉴가 화면에 표시된다(그림 12.2). 사용자가 잘못된 계정 번호나 잘못된 PIN을 입력하면 화면에 적절한 메시지가 표시되면 ATM이 1단계로 돌아가 인증 프로세스를 다시 시작하십시오.


사용자가 잔액조회를 하기 위해 1을 입력하면 화면에 사용자의 계좌 잔액이 표시된다.
그러기 위해서는 ATM이 은행의 데이터베이스에서 잔금을 회수해야 한다.


다음 단계는 사용자가 철회를 위해 2를 입력할 때 발생하는 상황을 설명한다.
화면에는 표준 인출 금액의 메뉴 거래 취소 옵션이 표시된다.
사용자가 키패드를 사용하여 메뉴 선택을 시작한다.
뽑는 금액이 사용자의 계좌잔액보다 크면 이를 기재하고 더 적은 금액을 선택하라는 메시지가 화면에 뜬다. 현금 자동 인출기는 1단계로 돌아간다. 선택한 인출금액이 사용자의 계좌잔액(즉, 허용금액)보다 적거나 같으면, ATM은 4단계로 진행된다. 사용자가 취소를 선택하면 ATM이 메인 메뉴를 표시하고 사용자 입력을 기다린다.


현금지급기에 현금이 충분하다면, 현금자동입출금기는 5단계로 진행된다. 

그렇지 않으면, 화면에는 문제를 나타내는 메시지가 표시되고 사용자에게 더 적은 인출 금액을 선택하라고 지시한다. 

현금 자동 인출기는 1단계로 돌아간다.
ATM은 은행 데이터베이스에 있는 사용자 계정에서 인출 금액을 인출한다.
현금지급기는 사용자에게 원하는 금액을 지급한다.
화면에는 사용자에게 돈을 받으라는 메시지를 표시한다.



다음 단계는 사용자가 입금하기 위해 3을 입력할 때 발생하는 조치를 설명한다. 
화면에는 입금 금액을 입력하거나 0을 입력해 취소하라는 메시지가 뜬다.
사용자는 키패드를 사용하여 예금 금액 또는 0을 입력한다. 
사용자가 입금액을 지정하면 ATM은 4단계로 진행된다. 사용자가 (0을 입력하여) 거래를 취소하도록 선택하면 ATM이 메인 메뉴를 표시하고 사용자 입력을 기다린다.
화면에는 사용자에게 예금 봉투를 넣으라는 메시지가 표시된다. 
입금 슬롯이 2분 이내에 입금 봉투를 받으면 ATM은 입금액을 은행 데이터베이스에 있는 사용자 계좌로 입금액을 크레디트(예: 입금액을 사용자의 계좌 잔액에 추가)한다.


시스템이 성공적으로 트랜잭션을 실행한 후에는 사용자가 추가 트랜잭션을 수행할 수 있도록 메인 메뉴로 돌아가야 한다.
사용자가 시스템을 종료하면 화면에 감사 메시지가 표시되고 다음 사용자의 환영 메시지가 표시되어야 한다.


ATM 시스템 분석
앞의 문장은 요구사항 문서의 단순화된 예다.
- 일반적으로 요구사항 수집의 세부 프로세스 결과
시스템 분석가는 소프트웨어가 무엇을 해야 하는지 더 잘 이해하기 위해 은행 전문가들을 인터뷰할 수 있다. 
시스템 분석가는 획득한 정보를 사용하여 시스템 설계자가 시스템을 설계할 때 안내하는 시스템 요구사항 목록을 작성할 수 있다.


분석 단계는 해결해야 할 문제를 정의하는 데 초점을 맞춘다.
어떤 시스템을 설계할 때는 문제를 바로 해결해야 하지만, 똑같이 중요한 것은 올바른 문제를 해결해야 한다는 것이다.


분석 단계에서 시스템 설계자는 시스템이 무엇을 해야 하는지를 설명하는 높은 수준의 사양을 만들기 위해 요건 문서를 이해하는 데 초점을 맞춘다.
설계 단계(설계 규격)의 산출물은 이러한 요건을 충족하기 위해 시스템을 구성하는 방법을 명확히 지정해야 한다.


UML 2 표준은 시스템 모델을 문서화하기 위한 13가지 다이어그램 유형을 지정한다.
각 도표는 시스템 구조 또는 동작의 고유한 특성을 모델링한다. 즉, 6개의 도표는 시스템 구조와 관련되며, 나머지 7개는 시스템 동작과 관련이 있다.
우리는 클래스를 모델로 하는 클래스 다이어그램이나 시스템에서 사용되는 "빌딩 블록"만 사용할 것이다.


요구사항 문서에 나타나는 명사와 명사 구문을 분석하여 시스템 구축에 필요한 클래스를 파악한다.
우리는 이러한 명사와 명사 구절들 중 일부는 실제로 시스템에 있는 다른 계급의 속성이라고 결정할 수도 있다.
우리는 또한 명사들 중 일부는 시스템의 일부분에 해당하지 않으므로 모델화해서는 안 된다고 결론지을 수도 있다.
우리가 디자인 과정을 진행함에 따라 추가적인 수업들이 우리에게 명백해질 수 있다.



우리는 ATM 시스템에 의미가 있는 명사와 명사 구문만을 위한 클래스를 만든다.
요구사항 문서는 일반적인 의미에서 "거래"를 자주 설명하지만, 우리는 현재 금융거래의 넓은 개념을 모형화하지 않는다.
대신 우리는 세 가지 유형의 거래(즉, "balance 조회", "출금", "예금")를 개별 등급으로 모델링한다.
이러한 클래스는 자신이 나타내는 트랜잭션을 실행하는 데 필요한 특정 속성을 가지고 있다.


Classes:

§ATM

§screen

§keypad

§cash dispenser

§deposit slot

§account

§bank database

§balance inquiry

§withdrawal

deposit


UML은 우리가 클래스 다이어그램을 통해 ATM 시스템의 클래스와 그들의 상호 관계를 모델링할 수 있게 해준다.

그림 12.6은 등급 ATM을 나타낸다.

각 클래스는 3칸의 직사각형으로 모델링된다.
윗부분에는 굵은 글씨로 가로로 중심을 맞춘 반의 이름이 들어 있다.
가운데 칸에는 반의 속성이 들어 있다.
맨 아래 칸에는 반의 운영이 들어 있다.


Class diagrams also show the relationships between the classes of the system.

Figure 12.7 shows how our classes ATMand Withdrawal relate to one another.

Notice that the rectangles representing classes in this diagram are not subdivided into compartments

 

클래스 다이어그램은 시스템 클래스 간의 관계도 보여준다.
그림 12.7은 우리 클래스 ATM과 인출기가 어떻게 서로 연관되어 있는지를 보여준다.
이 다이어그램에서 클래스를 나타내는 직사각형은 구획으로 세분화되지 않는다는 점에 유의하십시오.


The solid line that connects the two classes represents an association—a relationship between classes.

The numbers near each end of the line are multiplicity values, which indicate how many objects of each class participate in the association.

§At any given moment, one ATM object participates in an association with either zero or one Withdrawalobjects—zero if the current user is not currently performing a transaction or has requested a different type of transaction, and one if the user has requested a withdrawal.

Figure 12.8 lists and explains the multiplicity types.

 

두 클래스를 연결하는 실선은 클래스 간의 관계인 연관성을 나타낸다.
선의 각 끝 근처에 있는 숫자는 각 클래스의 개체가 얼마나 많은 연관성에 참여하는지를 나타내는 다중성 값이다.
임의의 순간에 하나의 ATM 개체는 0 또는 1개의 인출 개체(현재 사용자가 트랜잭션을 수행하지 않거나 다른 유형의 트랜잭션을 요청한 경우 0)와 연결에 참여하며, 사용자가 철회를 요청한 경우 0.
그림 12.8은 다중성 유형을 나열하고 설명한다.


An association can be named.

§The word Executes above the line connecting classes ATM and Withdrawal in Fig. 12.7 indicates the name of that association.

§This part of the diagram reads one object of class ATM executes zero or one objects of class Withdrawal.

Association names are directional, as indicated by the filled arrowhead.


연관성은 이름을 붙일 수 있다.
그림 12.7의 등급 ATM과 인출기를 연결하는 선 위의 excute이라는 단어는 해당 연결의 이름을 나타낸다.
다이어그램의 이 부분은 "클래스 ATM의 한 개체는 0 또는 한 개체의 클래스 인출 실행"이라고 쓰여 있다. 
연결 이름은 채워진 화살촉에 표시된 방향이다.


그림 12.9에서 ATM 클래스의 연결 라인에 부착된 고체 다이아몬드는 ATM이 화면, 키패드, 캐시디펜서 및 예금슬롯 클래스와 구성 관계를 가지고 있음을 나타낸다.
구성은 전체/부분 관계를 의미한다.
연결선 끝에 구성 기호(솔리드 다이아몬드)가 있는 클래스는 전체(이 경우 ATM)이며, 연결선 반대쪽 끝에 있는 클래스는 부품이다.



Classes have attributes (data) and operations (behaviors).

Look for descriptive words and phrases in the requirements document.

For each such word and phrase we find that plays a significant role in the ATM system, we create an attribute and assign it to one or more of the classes identified in Section 12.3

 

클래스는 속성(데이터)과 운영(행동)을 가지고 있다.
요구사항 문서에서 설명된 단어나 구문을 찾으십시오.
ATM 시스템에서 중요한 역할을 하는 각각의 단어와 구에 대해, 우리는 속성을 만들어 12.3절에 명시된 하나 이상의 클래스에 할당한다.


 



운영이란 클래스의 개체가 클래스의 클라이언트(사용자)에게 제공하는 서비스다.
우리는 요구사항 문서에서 주요 동사와 동사 구문을 검토함으로써 많은 수업 운영을 도출할 수 있다.
그림 12.16의 동사 구절은 각 클래스의 작동을 결정하는 데 도움이 된다.



'📌 java > Object-oriented Programming' 카테고리의 다른 글

java - use case diagram, scenario  (0) 2020.05.09
ATM_Implementation  (0) 2020.05.09
java - UML  (0) 2020.05.07
Homework_8  (0) 2020.05.07
Homework_W7 (상속 ≠ 오버라이딩)  (0) 2020.05.02
복사했습니다!