다라다라V
article thumbnail
728x90
반응형
본 글은 "최은만"님의 [소프트웨어 공학의 모든 것]의 연습 문제 답을 공유하고자 작성되었으며, 필자가 직접 문제를 풀며 작성한 것이기에 오류가 있을 수 있습니다. 댓글로 알려주시면 반영하도록 하겠습니다.

시리즈 보기
[소프트웨어 공학의 모든 것] 1장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 2장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 3장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 4장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 5장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 6장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 7장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 8장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 9장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 10장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 11장 연습 문제 해답 및 풀이 해설
[소프트웨어 공학의 모든 것] 12장 연습 문제 해답 및 풀이 해설

 

💡 

시스템 아키텍처에 대한 설명으로 옳지 않는 것은?


① 물리적 구성을 기반으로 정의되는 시스템의 상세 설계도이다.
② 이해당사자들과의 상호 이해, 협상,동의 및 의사 교환을 위한 도구이다.
③ 프로젝트 초기의 설계 결정으로 시스템 개발 및 유지보수 전반에 걸쳐 지속적인 영향력을 갖는다.
④ 시스템에 관련 있는 이해당사자들의 요구사항을 고려하여 정의하여야 한다.

 

💡 

비기능적 요구사항을 고려한 아키텍처 설계로 가장 적합하지 않은 것은? [7급 국가직 공무 원 시험, 2010]


① 가용성이  중요한  요구사항일  경우  아키텍처에  여분의 구성요소들이 포함되도록 설계하여 시스템을 중단 없이 구성요소를 대치하고 갱신할 수 있게 한다.
② 보안성이 중요한 요구사항일 경우 계층구조의 아키텍처를 사용하여 가장 중요한 자산들을 가장 중요한 내부의 계층에서 보호하고 이 계층에 높은 수준의 보안 인증을 적용한다.
③ 안전성이 중요한 요구사항일 경우 안전에 관련된 오퍼레이션 모두를 하나의 서브시스템이나 소수의 서브시스템 내부로 국한시키도록 설계한다.
④ 성능이 중요한 요구사항일 경우 아키텍처는 중요 오퍼레이션을 가능한 많은 서브시스템으로 분할시킨다.

 

💡 

설계 과정을 올바로 나열한 것은?

ㄱ. 서브시스템, 인터페이스 명세
ㄴ. 목표 설정
ㄷ. 스타일 결정
ㄹ. 아키텍처 설계 검토

 

① ㄱ → ㄴ  → ㄹ  → ㄷ

② ㄱ  → ㄴ  → ㄷ  → ㄹ

③ ㄴ  → ㄷ  → ㄹ  → ㄱ

④ ㄴ  → ㄷ  → ㄱ  → ㄹ

 

💡 

설계 원리에 대한 설명 중 옳지 않은 것은?


① 추상화는 복잡한 자료,모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것이다.
② 정보 은닉은 제한된 방법으로의 접근만을 허용해 잘못된 값이 저장되지 않도록 해고, 실수가 잘 발견되지 않도록 하려는 원리다.
③  모듈화는 복잡한 시스템을 세분화 된 구성 요소로 정의하여 개발자와 고객이 더 쉽게 이해할 수 있고 다루기 쉬운 구조로 분할하는 개념이다.
④  캡슐화는 서비스를 수행하는 자료와 함수를 묶어 핵심만을 노출시키고 어떻게 서비스를 제공하는지 자세한 것을 숨기는 개념이다.

 

💡 

모듈 결합도(coupling)에 대한 설명으로 옳은 것은?


① 모듈 간에 의존도가 클수록 결합도는 낮아진다.
② 모듈 간의 제어 요소(function code, flag 등)를 전달하는 것은 전역변수를 사용하는 것보다 바람직하지 않다.
③ 전역변수를 많이 사용할 경우 프로그램 코드가 간단해지므로 유지보수가 편리해진다.
④ 모듈 간의 goto문 사용은 내용결합(content coupling)을 유발할 수 있다.

 

💡 

다음 중 절차적 응집력에 대한 설명으로 잘못된 것은?


① 여러 기능은 순서대로 실행된다.
② 모듈 내부의 어떤 기능 요소의 출력 데이터가 다른 기능 요소의 입력 데이터로 제공한다.
③ 처리 기능보다는 시행 순서에 의해 연결된다.
④ 전달 데이터와 반환 데이터 간에 관련이 없다.

 

💡 

배열, 레코드, 구조체 등을 매개변수로 사용하는 모듈 사이의 결합도는? [7급 국가직 공무원 시험, 2017]


① 데이터 결합도(Data Coupling)        

② 스탬프 결합도(Stamp Coupling)
③ 제어 결합도Control Coupling)
④ 내용 결합도(Content Coupling)

 

💡 

소프트웨어 설계시 모듈 내부의 응집도 측정을 위한 응집력에 관한 예이다. 바르게 연결된 것은? [7급 국가직 공무원 시험, 2009]

 

① 논리적 응집 - 함수 집합을 받아 미지수를 풀어내는 함수
②  계층적 응집 - 메시지 또는 데이터 전송을 위한 서비스
③ 순차적 응집 - 화면을 지우고 팝업창을 띠우는 모듈
④ 교환적 응집 - Employee 라는 클래스의 데이터를 조작, 저장,갱신하는 모듈

 

💡 

음은 소프트웨어의 구성요소인 모듈의 계층적 구성을 나타내는 프로그램 구조도이다. 모듈 G에서의 팬인(fan-in)과 팬아웃(fan-out)은? [7급 국가직 공무원 시험, 2013]

 

[정답] ④ 

 

💡 

다음 각 모듈에 대한 응집도를 판단한 것으로 적절하지 않는 것은?


① SignOn: 이 모듈은 사용자 암호를 받아 검사하고 Snap-Shot 파일을 준비시킨다. - 절차적 응집
② ProduceSummaries: NewSubscriber, Renewals, Expired-Subscriptions의 요약 보고서를 만든다. - 논리적 응집
③ FormatDayReport : 출력을 위한 DaySummary 자료를 출력한다. - 교환적 응집

④ Processwithdrawal : 수강 취소원을 처리한다. 수강 학생 기록부에서 학생 이름을 빼고 등록금 파일을 변경한다. - 순차적 응집

 

💡 

객체지향 설계 기법 중 “클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다.”라는 설계 원칙으로 옳은 것은?


① 단일 책임의 원칙
②  개방 폐쇄의 원칙
③  의존 관계 역전의 원칙
④  인터페이스 분리의 원칙

 

💡 

그림과 같이 서비스 구현 클래스의 a(), b() 연산을 사용하는 클라이언트 클래스가 서비스 구현 클래스에 직접 의존하는 관계에서 클라이언트 클래스가 서비스 인터페이스에 의존하고 서비스 구현 클래스는 서비스 인터페이스를 구현하는 것으로 설계를 변경하였다. 다음 중 이와 가장 관련이 깊은 SOLID 설계 원칙은? [7급 국가직 공무원 시험, 2019]

 

① 단일 책임 원칙(Single Responsibility Principle)
② 리스코프 치환 원칙(Liskov Substitution Principle)
③ 의존관계 역전 원칙(Dependency Inversion Principle)
④ 인터페이스 분리 원칙(Interface Segregation Principle)

 

💡 

클래스 설계 원칙에 대한 설명으로 옳은 것은? [7급 국가직 공무원 시험, 2015]


①  인터페이스 분리(Interface Segregation) 원칙: 추상 클래스나 인터페이스에 의존하지 않고 자주 변경되는 클래스에 의존해야 한다.
②  개방-폐쇄(Open-Closed) 원칙: 클래스는 확장(extension)에 대해서는 열려있어야 하며 변경(change)에 대해서 닫혀있어야 한다.
③  리스코프 교체(Liskov Substitution) 원칙: 여러 개의 책임을 가진 클래스는 하나의 책임을 가진 클래스로 대체되어야 한다.
④  의존 관계 역전(Dependency Inversion) 원칙: 클라이언트는 자신이 사용하는 메소드와 의존 관계를 갖지 않도록 해야 한다.

 

💡 

다음 설명에 해당하는 소프트웨어 설계 원리는? [7급 국가직 공무원 시험, 2012]

범용적 목적의 단일 인터페이스보다는 클라이언트별 인터페이스를 다수 갖도록 설계한다.

 

① CCP(Common Closure Principle)
② OCP(Open-Closed Principle)
③ ISP(Interface Segregation Principle)
④ DIP(Dependency Inversion Principle)

 

💡 

직사각형과 정사각형을 처리하기 위한 클래스 설계에서 위반된 원리는 무엇인가?

 

① 단일 책임의 원리
② OCP의 원리
③ 리스코프 교체의 원리
④ 의존 관계 역전의 원리

 

💡 

다음 설계에 적용된 OCP 원리를 설명한 것 중 옳지 않은 것은?

 

① LogOn은 Dial() 함수 구현의 수정에 닫혀 있다.
② Modem의 종류는 확장에 열려 있다.
③ Send(char) 함수의 구현은 확장에 열려 있다.
④ LogOn은 Modem의 확장에 대하여 닫혀 있다.

 

💡 

다음과 같이 내와 ApplicationLayer를 연관시키기 위하여 인터페이스를 도입하였다. 여기에 적용된 설계 원리는 무엇인가?

 

① 단일 책임의 원리
② OCP의 원리
③ 리스코프 교체의 원리
④ 의존 관계 역전의 원리

 

💡 

응집도를 강한 것부터 순서대로 나열할 때, ㉠ ~ ㉢에 들어갈 용어를 바르게 연결한 것은?

기능적 응집-교환적 응집-(㉠)-(㉡)-(㉢)-우연적 응집

 

① 절차적 응집 | 시간적 응집 | 논리적 응집

② 절차적 응집 | 논리적 응집 | 시간적 응집

③ 논리적 응집 | 시간적 응집 | 절차적 응집

④ 논리적 응집 | 절차적 응집 | 시간적 응집

 

💡 

다음 설계 메트릭 중 얼마나 복잡한지를 나타내는 측정 방법으로 거리가 먼 것은?


①(모듈의 팬 아웃 개수)2
②(입력 및 출력 변수의 개쉬 / (팬 아웃 + 1)
③ 모듈 안의 분기 + 1
④ 클래스의 메소드 개수 + 그 클래스의 메소드가 호출하는 메소드의 개수

 

💡 

설계 메트릭과 설계 원리에 대한 설명으로 옳지 않은 것은? 


① 클래스 당 가중 메소드 값이 클수록 복잡한 것이다.
② 클래스 사이의 결합이 클수록 의존도는 크다.
③ 클래스의 책임은 메소드의 개수와 메소드가 호출하는 메소드의 개수로 측정할 수 있다.
④ 클래스의 안의 속성을 공유하지 않는 메소드의 쌍의 수가 적을수록 응집도가 올라간다.

 

반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!