1. University Information System
- 대학 정보 시스템을 만들기 위한 class diagram을 만들어볼 것이다.
- 대학은 여러개의 단과대학으로 구성되어있다.
- 각 단과대는 여러 기관들로 구성되어 있다.
- 각 기관마다 주소가 있다.
- 단과대 마다 학장이 있다.
- 학장은 직원에 속한다. 직원은 연구직, 행정직으로 분류된다.
- 모든 직원은 security number, 이름, 이메일이 있다.
- 연구직원은 전공이 있고 최소 1개의 기관에 배정된다.
- 연구직원은 프로젝트에 속할 수 있다. 직원마다 기여 시간이 있다.
- 일부 연구직원은 lecturer도 겸직한다.
- course는 id, 이름, 시간으로 정의된다.
2. Step1. Identifying Classes
- 어떤 직원이 영원히 학장일수는 없다. 학장은 class라기보다는 임명되는 role, 자격이기 때문에 클래스로 만들기는 부적절하다.
3. Step2. Identifiying the Attributes
- 밑줄 속성은 static 멤버 변수이다. 총 직원수를 카운트하기 위한 목적으로 선언되었다.
4. Step3. Identifying Relationships
- 관점에 따라서는 lecturer라는 독립된 class를 만들지 않고 역할을 부여하는 방식으로 설계할 수도 있다.
- 여기서는 한번 lecturer면 계속 lecturer여야 한다.
- Employee의 인스턴스는 필요가 없다. 모든 직원은 행정직 아니면 연구직이다. 따라서 Employee는 abstract 클래스이다.
- 한 단과대는 여러개의 기관으로 구성되어있다. 따라서 Faculty는 한개 이상의 Institute class로 구성된다.
- 그리고 한 institute는 반드시 한 faculty에 속한다.
- 관계1 : Dean역할을 갖는 한명의 employee가 0개 혹은 1개의 faculty(단과대)를 리드한다.
- 관계2: 최소 한명 이상의 employee는 정확히 한개의 faculty에 속한다.
- 최소 한명 이상의 연구직원은 최소 한개 이상의 기관에서 일한다.
- 한 직원이 동시에 여러 기관에서 기여할 수 있기 때문에 shared aggregation의 약한 결합이 적합하다.
- 연구직원은 프로젝트에 특정 시간만큼 참여할 수 있다.
- 복수 lecturer는 복수 과목을 teach한다.
5. 결과
6. Code Generation
- enumeration 생성 예시이다.
- 상속관계는 extends 사용
- 다른 클래스와의 관계는 멤버 변수로 추가된다.
- course를 support하는 직원들을 멤버변수, hashtable로 관리한다.
- 다른 클래스와 맺는 관계 수에 따라서 멤버변수 타입이 배열인지 아닌지 결정된다.
'ComputerScience > Software Engineering' 카테고리의 다른 글
소프트웨어공학 - 11. Domain Models (0) | 2022.04.13 |
---|---|
소프트웨어공학 - 10. UML Sequence diagram (0) | 2022.04.07 |
소프트웨어공학 - 8. UML Class diagram (0) | 2022.03.31 |
소프트웨어공학 - 7. Use case diagram (0) | 2022.03.23 |
소프트웨어공학 - 6. Requirement, Use cases (0) | 2022.03.17 |