2025.03.26 스프링 공부
유스케이스 다이어그램
- 엑터 : 누가 시스템을 사용할 것인가?
- 기능 : 시스템은 사용자를 위해 무엇을 하는가?
- 사용자와 상호작용을 하기 위해서 시스템이 제공해야할 인터페이스는 무엇인가?
프로그램 개발에 참여하는 사람은 의뢰인과 개발자이지만, 실제로 사용하는 사람은 사용자이다. 따라서 개발자가 사용자의 요구를 빠르게 이해하고, 요구사항에 맞게 제작해야한다.
유스케이스 다이어그램은 기능과 사용자를 직관적으로 이해할 수 있도록 제작되어야 하며, 다음 사항들이 반영되어야 한다.
1. 엑터
엑터는 사람모양으로 표시하며, 아래에 사용자를 표시한다. 보통 유저, 관리자등이 표시되지만 경우에 따라 시스템이나 카드결제시스템등의 소프트웨어가 표시되기도 한다.
2. 시스템
유스케이스 다이어그램에서 시스템 스코프는 사각형으로 묶어 시스템의 범위를 표시한다.
3. 유스케이스
시스템에 대한 시나리오의 집합 혹은 기능들을 표시한다. 주로 발생하는 이벤트를 흐름으로 표시하며 주요기능을 요약하여 표시한다.
엑터를 배치하고 시스템 범위 안에 어떤 시스템에 대한 CRUD에 대해서 배치하고 엑터가 그 기능들중에 사용가능한 것, 사용할수 없는것 등을 표시한다.
포함관계
include는 반드시 실행되어야 하는 기능을 연결하여 표시하는것으로, 보통 공통된 기능을 많이 표시한다.
예를들어 내 정보를 수정하기 위해서는 로그인을 먼저 해야한다던가, 대출을 하기 위해서는 신원이 조회되야 한다 등의 내용들이 포함관계에 해당된다.
확장관계
하나의 유스케이스에 추가되거나, 확장된 기능을 표현하기 위해 사용되며, 기본 유스케이스를 수정하지 않고 선택적으로 실행될 수도, 안될 수 도 있는 기능을 나타내며 반드시 실행될 필요는 없다.
예를들어 메일이 도착하면 메일을 꼭 확인하지 않아도 된다. 결제를 할때는 카드를 써도 되고 현금을 써도 된다. 이런것들이 확장관계에 해당한다.
유스케이스는 어떠한 관리 단위로 생각해보고 그에 대해서 CRUD를 적용할수 있는지 아닌지에 따라서 식별을 다르게 할수있다.
만약 멤버에 대해 생각해보자면 CRUD를 적용할때 멤버등록, 멤버조회, 멤버정보수정, 멤버탈퇴 등 CRUD가 가능하기 때문에 이는 하나로 묶어서 멤버관리라고 볼수있다.
하지만 결제, 현금지불, 카드지불과 같은 것들은 CRUD를 적용할 수없기 때문에 관리보다는 유틸적인 기능이라 보는것이 맞다.
클래스다이어그램
시스템 구조를 이해하고 의사소통의 효율성을 높이면서 문서화시키는 중에 설계오류를 발견하고 수정할수 있기 때문에 소프트웨어 설계단계에서 매우 중요하다.
시스템에서 사용되는 모든 클래스에 대해서 클래스이름, 변수, 함수를 정리하고 정의해서 다이어그램으로 나타낸 후 화살표를 이용해 클래스간의 서로 관계를 나타낸다.
변수의 정의
public이면 +, private면 -를 사용하고, 변수명 : 데이터타입의 형태로 정의한다.
함수의 정의
public이면 +, private면 -를 사용하고, 함수명(매개변수명1 : 데이터타입1, 매개변수명2 : 데이터타입2):리턴타입의 형태로 정의한다.
연관관계
두 클래스 사이에서 지속적으로 관계를 가질때, 객체의 참조를 전역변수로 가지고 있을때에 해당하며, 이 경우에는 서로의 관계를 실선에 >모양 화살표로 표현한다.
의존관계
두 클래스 사이에서 일시적으로 메서드를 사용하기 위해서 접근할때 의존관계에 해당하며, 이 경우에는 점선에 >모양 화살표로 표현한다.
상속관계
두 클래스가 상속관계일때 해당하며 실선에 빈 세모 모양 화살표를 사용해서 표현한다.
구현관계
클래스가 인터페이스를 상속했을때에 해당하며 점선에 빈 세모 모양 화살표를 이용해서 표현한다.
집합관계
두 클래스 사이에서 한 클래스가 다른 클래스의 객체를 포함하지만 생명주기가 독립적인 경우를 의미한다. 이 경우 포함하는 일부객체가 소멸해도 계속 존재할수 있다. 점선과 빈 다이아모양 화살표로 표현한다.
복합관계
한 클래스가 다른 클래스의 객체를 포함하며 생명주기가 같은 경우를 의미한다. 즉 함께 생성되고 소멸한다. 점선과 칠한 다이아모양 화살표로 표현한다.
시퀀스 다이어그램
객체지향 프로그래밍에서 시스템의 행동을 시각적으로 표시하는데 사용되는 대화형 다이어그램이다.
시퀀스 다이어그램에는 객체, 라이프라인, 메시지, 활성바를 표시하고 시스템의 흐름에 따라 객체간에 교환되는 메시지를 시간 순서에 따라 보여준다.
갈때는 실선으로 가서 올때는 점선으로 오며, 오는 선이 없으면 void 즉 setter, 오는 선이 있으면 getter로 볼수있다.