본문 바로가기
소프트웨어공학

[소프트웨어공학] 중간고사대비 연습문제 Chapter5 유스케이스 모델링, Chapter6 클래스 모델링

by 유노brain 2024. 10. 22.
반응형

Chapter5 유스케이스 모델링

문제 1. 다음 중 유스케이스(use case)의 정의로 옳은 것은 무엇입니까? 

  1. 시스템의 내부 구조를 설명하는 다이어그램이다.
  2. 특정 액터(actor)에 의해 발생하는 이벤트만을 기록한 시나리오이다.
  3. 시스템이 액터(actor)에게 제공하는 하나의 기능이나 목표를 달성하기 위한 일련의 행동과 변형을 설명하는 것이다.
  4. 유스케이스는 시스템의 동작 중 비기능적 요구사항만을 기술한다.

정답

더보기

정답:3
해설:

유스케이스는 시스템이 "액터(actor)"와 상호작용하여 하나의 기능이나 목표를 달성하기 위한 과정을 설명하는 것입니다.

이는 주로 기능적 요구사항을 기술하는 데 사용되며, 시스템 외부에서 발생하는 여러 시나리오를 포함합니다.

1번은 시스템의 내부 구조를 다루는 설명이며,

2번은 이벤트에만 한정된 정의로, 유스케이스의 전체적인 범위를 설명하지 못합니다.

4번은 유스케이스가 주로 기능적 요구사항을 다룬다는 점에서 틀렸습니다.

문제 2. 다음 중 액터(Actor)에 대한 설명으로 옳지 않은 것은 무엇입니까?

  1. 액터는 시스템과 상호작용하는 외부 에이전트를 나타낸다.
  2. 액터는 시스템 내부에 위치하며, 주로 시스템의 동작을 조정한다.
  3. 액터는 사람이거나 다른 시스템일 수 있으며, 시스템의 주요 기능과 상호작용한다.
  4. 액터는 유스케이스의 주체로, 시스템에 메시지를 보내는 역할을 수행한다.
더보기

정답: 2
해설:

액터는 "시스템 외부"에서 시스템과 상호작용하는 주체를 의미합니다.

이는 사용자일 수도 있고, 다른 시스템일 수도 있습니다.

액터는 시스템의 내부 요소가 아니며, 시스템과 데이터를 주고받거나, 시스템의 기능을 이용하는 역할을 합니다.

문제 3. 다음 중 유스케이스에 대한 설명으로 옳지 않은 것은 무엇입니까?

  1. 유스케이스는 시스템의 경계를 정의하고, 시스템이 제공하는 주요 기능을 나타낸다.
  2. 유스케이스는 액터가 시스템과 상호작용하여 가치를 창출하는 행위를 설명한다
  3. 유스케이스는 프로세스가 완성될 때까지 항상 완전한 형태를 갖춰야 한다.
  4. 유스케이스 다이어그램은 시스템의 외부와 내부 요소 간의 상호작용을 시각적으로 나타낸다.

정답

더보기

정답:3
해설:

유스케이스는 시스템이 제공하는 기능을 액터의 관점에서 설명하며, 최종적으로 가치를 제공하는 과정을 나타냅니다.

그러나 유스케이스는 시스템 개발 초기부터 완벽한 상태로 정의되는 것이 아니라, 개발이 진행됨에 따라 점진적으로 완성됩니다.

문제 4. 다음 중 유스케이스 기술의 방법으로 올바르게 설명된 것은 무엇입니까?

  1. 유스케이스의 시작 시점은 반드시 시스템 관리자에 의해 결정된다.
  2. 유스케이스는 너무 자세히 설명하지 않고, 핵심적인 흐름만 명확히 해야 한다.
  3. 유스케이스는 주로 시스템의 내부 구조를 설명하는데 사용된다.
  4. 유스케이스는 여러 단계로 나누어 완성해야만 한다.

정답

더보기

정답: 2
해설:

유스케이스는 시스템이 제공해야 하는 핵심적인 기능과 흐름을 명백히 설명하는 것이 목적입니다.

너무 세세한 내용보다는 사용자와 시스템간의 상호작용에서 중요한 흐름을 정의하는 것이 중요하며, 이를 통해 고객과 개발자가 쉽게 이해하고 검증할 수 있도록 합니다.

1번은 유스케이스 시작 시점이 특정 역할에 한정되지 않고,

3번은 유스케이스가 시스템의 외부와의 상호작용을 다룬다는 점에서 틀렸습니다.

4번도 유스케이스를 단계적으로 완성해야 한다는 제한이 없습니다.

문제 5. 다음 중 유스케이스 간의 확장 관계(Extend relationship)에 대한 설명으로 옳은 것은 무엇입니까?

  1. 확장 관계는 유스케이스가 단일 함수 호출로 다른 유스케이스를 포함하는 관계이다.
  2. 확장 관계는 기본 유스케이스의 확장 지점에 추가 동작을 삽입하는 관계이다.
  3. 확장 관계는 두 유스케이스가 동일한 기능을 수행할 때 사용하는 관계이다.
  4. 확장 관계는 주 유스케이스 없이도 독립적으로 실행될 수 있다.

정답

더보기

정답:2
해설:

확장 관계는 기본 유스케이스에 추가 동작을 삽입하는 데 사용되며, 이는 유스케이스의 흐름을 변경하지 않고 특정 상황에서만 추가 기능을 제공할 수 있도록 합니다.

확장 유스케이스는 확장 지점에서만 실행되며, 주 유스케이스의 일부로 간주되지 않기 때문에 독립적으로 실행되지 않습니다.

1번은 포함 관계에 대한 설명이고,

3번은 동일한 기능을 수행하는 관계가 아니며

4번은 확장 유스케이스가 독립적으로 실행될 수 없기 때문에 틀렸습니다.

문제 6. 다음 중 유스케이스 간의 포함 관계(Include relationship)에 대한 설명으로 옳지 않은 것은 무엇입니까?

  1. 포함 관계는 여러 유스케이스에서 공통적으로 사용되는 행동을 묶어 다른 유스케이스에서 사용할 수 있다.
  2. 포함된 유스케이스는 항상 주 유스케이스와 독립적으로 실행될 수 있다.
  3. 포함 관계는 중복된 행동을 방지하기 위해 사용된다.
  4. 포함된 유스케이스는 주 유스케이스의 실행 흐름 내에서 사용된다.

정답

더보기

정답:2
해설:

포함 관계는 유스케이스의 특정 부분이 여러 유스케이스에서 반복되거나 중복될 때, 그 부분을 별도의 유스케이스로 묶어 다른 유스케이스에서 포함시켜 사용하는 관계입니다.

포함된 유스케이스는 주 유스케이스의 실행 흐름 내에서 호출되며, 독립적으로 실행되지 않습니다.


Chapter6 클래스 모델링

문제 7. 다음 중 객체 파악 단계에서 수행해야 할 작업으로 올바른 것은 무엇인가?

  1. 문제정의서의 명사와 속성을 구체적으로 구분한다.
  2. 문제정의서에서  등장하는 모든 명사에 집중한다.
  3. 객체의 집합(aggregation)과 일반화(generalization)을 정리한다.
  4. 물리적 실체만을 객체로 사용한다.

정답

더보기

정답:2
해설:

객체 파악 단계에서 중요한 작업은 문제정의서에서 등장하는 명사들을 중심으로 객체 후보를 식별하는 것입니다.

모든 명사들이 객체로 사용되지 않지만, 초기에 모든 명사를 후보로 본 후 점차적으로 필요 없는 것을 제거합니다.

1번은 속성 구분이 주가 아니고,

3번과 4번은 후속 단계에서의 작업입니다.

문제 8. 다음 중 클래스 선택 단계에서 수행해야 할 작업으로 올바른 것은 무엇인가?

  1. 문제 정의서와 관련 없는 클래스를 포함시킨다.
  2. 구현과 관련된 구성 요소 (예: CPU, 알고리즘)를 클래스에 포함시킨다.
  3. 객체의 속성에 해당하는 것을 클래스 대신 속성으로 처리한다.
  4. 역할이 명확하지 않은 클래스는 그대로 둔다.

정답

더보기

정답: 3
해설:

클래스 선택 단계에서는 문제정의서에 나타난 명사를 검토하고, 그중에서 속성에 해당하는 것은 객체로 처리하는 것이 아니라 속성으로 처리하는 것이 올바릅니다.

1번과 2번은 부적절하며,

4번은 역할이 불명확할 경우 명확하게 정리해야 합니다.

문제 9. 다음 중 연관관계 및 집합관계 파악 단계에서 사용할 수 있는 올바른 기준은 무엇인가?

  1. 문제정의서에서 등장하는 모든 명사를 관계로 정의한다.
  2. 연관관계는 물리적 위치나 행동과 같은 동사 구문에서 파악한다.
  3. 연관관계와 집합관계는 초기에 명확히 구분해야 한다.
  4. 집합관계는 클래스 간의 통신 관계를 나타낸다.

정답

더보기

정답:2
해설:

연관관계는 동사나 행동과 같은 구문에서 파악하는 것이 좋습니다.

예를 들어 "학생이 수업을 듣는다"와 같은 구문에서 '듣는다'는 연관관계를 나타냅니다.

3번은 연관관계와 집합관계를 초기에 구분하는 것은 필수적이지 않으며,

집합관계는 통신 관계를 나타내지 않습니다.

문제 10. 다음 중 집합관계(aggregation)를 설명하는 올바른 내용은 무엇인가?

  1. 집합관계는 클래스 간의 통신을 나타낸다.
  2. 집합관계는 한 클래스가 다른 클래스의 일부로 포함되는 관계를 나타낸다.
  3. 집합관계는 클래스 간의 행동이나 동작을 나타낸다.
  4. 집합관계는 연관관계보다 약한 형태의 관계를 나타낸다.

정답

더보기

정답: 2
해설:

집합관계는 한 클래스가 다른 클래스의 구성 요소로 포함될 때 사용됩니다.

이는 부분-전체 관계라고도 불립니다.

1번, 3번은 잘못된 설명이며,

4번에서 집합관계가 연관관계보다 약하다는 설명이 틀립니다.

문제 11. 다음 중 다중성 결정에서 고려해야 할 사항으로 올바른 것은 무엇인가?

  1. 모든 연관관계는 반드시 1대 1 관계여야 한다.
  2. 연관관계가 선택사항일 경우, 클래스의 모든 인스턴스가 반드시 연결되어야 한다.
  3. 다대다 관계는 한 클래스의 인스턴스가 다른 클래스의 여러 인스턴스와 연관될 수 있음을 의미한다.
  4. 선택사항 연관관계는 항상 범위가 0이어야 한다.

정답

더보기

정답:3
해설:

다대다 관계는 한 클래스의 인스턴스가 다른 클래스의 여러 인스턴스와 연관될 수 있음을 나타내며, 이는 다중성을 설명하는 중요한 개념입니다.

1번은 모든 연관관계가 1대 1일 필요는 없으며,

2번은 선택사항 연관관계에서 모든 인스턴스가 연결되어야 하는 것은 아닙니다.

4번도 선택사항 연관관계가 항상 0일 필요는 없으므로 틀린 설명입니다.

문제 12. 다음 중 연관관계 세분화 과정에서 올바르게 수행해야 할 작업은 무엇입니까?

  1. 오퍼레이션이 여러 개 있을 때마다 새로운 연관관계를 추가한다.
  2. 연관관계는 어떻게 발생했는지를 설명해야 한다.
  3. 두 클래스 간의 다중 오퍼레이션은 하나의 연관관계로 표현할 수 있다.
  4. 연관관계가 존재하면 항상 오퍼레이션도 존재해야 한다.

정답

더보기

정답:3
해설:

연관관계 세분화 과정에서 여러 오퍼레이션이 있더라도 이를 하나의 연관관계로 표현하는 것이 일반적입니다.

각 오퍼레이션마다 새로운 연관관계를 추가하는 것은 불필요하며, 중복을 초래할 수 있습니다.

2번은 연관관계의 발생 원인을 설명하는 것이 아니라, 오퍼레이션의 세부 사항에 해당하는 내용이고,

4번은 연관관계가 있다고 해서 반드시 오퍼레이션이 있어야 하는 것은 아닙니다.

문제 13. 다음 중 연관관계 세분화 과정에서 올바르게 수행해야 할 작업은 무엇인가?

  1. 재귀 연관관계에서는 역할 이름을 생략한다.
  2. 연관관계의 양 끝에 있는 클래스의 역할을 명확히 구분하여 이름을 추가한다.
  3. "사람이 사람을 관리한다"는 문장은 그대로 사용해도 무방하다.
  4. 재귀 연관관계에서는 연관관계를 하나로 통일해도 된다.

정답

더보기

정답:2
해설:

재귀 연관관계에서는 동일한 클래스가 서로 다른 역할을 수행하기 때문에, 각 역할을 명확히 구분하여 이름을 추가해야 합니다.

이를 통해 역할이 혼동되지 않고, 연관관계가 명확해집니다.

1번과 4번처럼 역할 이름을 생략하거나 연관관계를 통일하면 구분이 어려워집니다.

3번의 경우도 명확한 역할 구분 없이 사용하기에는 부적절합니다.

문제 14. 다음 중 고차(high-order) 연관관계에 대한 설명으로 올바른 것은 무엇인가?

  1. 고차 연관관계는 반드시 세 클래스 이상이 연결된 상태로 유지되어야 한다.
  2. 고차 연관관계는 이진 연관관계로 분해될 수 없다.
  3. 고차 연관관계는 대부분 이진 연관관계로 분해할 수 있다.
  4. 고차 연관관계는 속성을 무시하고 연결을 단순히 유지하는 것이 중요하다.

정답

더보기

정답:3
해설:

고차 연관관계는 세 개 이상의 클래스 간의 관계를 나타내지만, 일반적으로 이진 연관관계로 분해하여 처리할 수 있습니다.

이는 복잡한 연관관계를 더 단순한 이진 관계로 나누어 분석할 수 있게 합니다.

 1번은 고차 연관관계가 반드시 여러 클래스를 연결해야 한다는 잘못된 설명이며,

2번은 분해 가능성에 대한 오해입니다.

4번은 고차 연관관계의 본질을 제대로 설명하지 않습니다.

문제 15. 다음 중 상속을 이용한 단순화에 대한 설명으로 올바른 것은 무엇인가?

  1. Bottom-Up 방식에서는 기존 클래스들을 특수화하여 하위 클래스를 생성한다.
  2. Top-Down 방식에서는 공통 속성이나 연관관계를 찾는 데 중점을 둔다.
  3. Bottom-Up 방식에서는 하위 클래스들의 공통 속성을 찾아 상위 클래스로 일반화한다.
  4. Top-Down 방식은 공통된 속성을 공유하는 하위 클래스를 제거하는 과정이다.

정답

더보기

정답: 2
해설:

Bottom-Up 방식은 하위 클래스들의 공통 속성을 찾아 이를 상위 클래스로 일반화하는 과정입니다.

이는 상속을 통해 코드의 중복을 줄이고, 구조를 단순화하려는 목적을 가지고 있습니다.

1번은 상속의 특수화보다는 일반화와 관련이 있고,

2번은 Top-Down 방식에 대한 적절한 설명이지만 문제에서 묻고 있는 핵심은 Bottom-Up 방식에 관한 것이 때문에 정답이 아닙니다.

4번은 상속의 과정에 맞지 않는 설명입니다.

문제 16. 다음 중 속성 파악에 대한 설명으로 올바른 것은 무엇입니까?

  1. 모든 속성은 처음 클래스 목록 작성 시에 전부 파악해야 한다.
  2. 속성은 객체가 소유하는 특성을 나타낼 수 있으며, 예를 들어 "직원의 이름"과 같은 것이 있다.
  3. 속성은 문제정의서에 명시된 것만 사용해야 하며, 추가로 속성을 파악하는 것은 불필요하다.
  4. 속성은 객체의 행동을 설명하는 데 주로 사용된다.

정답

더보기

정답:2
해설:

속성은 객체가 가지는 특성을 나타내며, 예를 들어 "직원의 이름"처럼 객체가 소유한 정보를 의미합니다.

문제 정의서에 모든 속성이 명시되지 않을 수 있으며, 추가적인 속성 파악이 필요할 수 있습니다.

1번은 처음에 모든 속성을 파악할 필요가 없고,

3번은 추가 속성파악을 무시하므로 틀렸습니다.

4번에서 객체의 행동은 속성이 아닌 메서드로 설명됩니다.

문제 17. 다음 중 속성(Attribute)에 대한 설명으로 옳은 것은 무엇인가?

  1. 속성은 객체가 수행하는 행동을 나타낸다.
  2. 속성은 객체의 상태나 특성을 설명하며, 예를 들어 "이름"이나 "주소"와 같은 값이 포함된다.
  3. 속성은 객체 간의 연관관계를 설명하는데 주로 사용된다.
  4. 속성은 문제정의서에 없는 경우에는 추가할 수 없다.

정답

더보기

정답:2
해설:

속성은 객체가 가지는 상태나 특성을 나타내며, 예를 들어 '이름', '나이', '주소' 등이 속성에 해당합니다. 

객체의 행동은 메서드로 표현되며, 1번은 속성을 설명하는 데 적절하지 않습니다.

3번은 객체 간의 연관관계는 속성이 아니라 연관관계를 통해 설명해야 합니다.

4번도 잘못된 설명으로, 속성은 문제 정의서에 없더라도 필요에 따라 추가할 수 있습니다.

문제 18. 다음 중 문제정의서의 속성에 대한 설명으로 올바른 것은 무엇인가?

  1. 속성은 객체의 행동을 나타내며, 객체의 메서드로 정의된다.
  2. 속성은 객체의 고유한 특성을 설명하며, 예를 들어 "이름", "주소", "나이" 등이 포함된다.
  3. 속성은 처음 클래스 목록을 만들 때 모두 찾아야 하며, 이후에는 수정할 수 없다.
  4. 문제정의서 외의 속성은 추가할 수 없으며, 문제정의서에 나와 있는 속성만 사용해야 한다.

정답

더보기

정답:2
해설:

속성은 객체가 가지는 고유한 특성을 나타내며, '이름', '주소, '나이' 등과 같은 속성이 포함됩니다.

객체의 행동은 메서드로 정의되며 1번은 이를 잘못 설명하고 있습니다.

3,4번은 속성은 처음부터 모두 파악할 필요가 없고, 이후에도 수정 및 추가가 가능하다는 점에서 틀렸습니다.

문제정의서 외의 속성도 요구사항 분석 후에 충분히 추가할 수 있습니다.

반응형

댓글