Chapter1 소프트웨어 공학 개요
문제 1. 소프트웨어의 특징 중 잘못된 설명을 고르시오
- 소프트웨어는 무형적으로 그 구조를 쉽게 파악할 수 있다.
- 소프트웨어는 대량 생산이 쉬움으로, 대부분의 비용은 개발 과정에 소요된다.
- 소프트웨어는 노동 집약적으로 자동화하기 어렵다.
- 소프트웨어는 잘 훈련되지 않으면 제작하기 어려움, 다양한 기술적 지식이 필요하다.
- 소프트웨어는 쉽게 변경 가능하지만, 완전한 이해 없어도 변경할 수 있다.
정답
정답:1
해설:
소프트웨어는 무형적이지만 그 구조를 파악할 수 없다는 설명이 맞습니다.
소프트웨어는 무형적으로 그 구조를 쉽게 파악하기 어렵습니다.
2번에서는 소프트웨어는 대량 생산이 가능하나, 비용의 대부분은 개발 과정에 집중됩니다.
3번은 소프트웨어는 노동 집약적이고 자동화하기 어렵다는 특징을 가지고 있습니다
4,5번도 적절한 설명입니다.
문제 2. 다음 중 소프트웨어 공학의 개념으로 옳지 않은 것은 무엇입니까?
- 고객의 문제를 해결하기 위해 대규모의 고품질 소프트웨어 시스템을 체계적으로 개발하는 프로세스이다..
- 불필요한 기능을 추가하는 것은 문제 해결에 도움이 될 수 있다.
- 소프트웨어 공학의 목표는 고객의 문제를 효과적으로 해결하는 것이다.
- 소프트웨어 공학에서 효율적인 커뮤니케이션이 중요하다
정답: 2
해설:
"불필요한 기능을 추가하는 것은 문제 해결에 도움이 되지 않는다"는 설명이 맞습니다.
소프트웨어 공학에서는 고객의 요구사항을 충족하는 것이 가장 중요합니다.
따라서 불필요한 기능을 추가하면 시스템의 복잡성만 높아지며 문제 해결에 도움이 되지 않습니다.
나머지 선택지는 소프트웨어 공학의 기본적인 개념을 설명하고 있습니다.
문제 3. 다음 중 소프트웨어 공학의 정의에 대한 설명으로 옳은 것은 무엇입니까?
- 소프트웨어는 사용자의 요구에 따라 그때그때 임의로 개발된다.
- 소프트웨어는 공학에서는 개발, 운영, 유지보수 및 파기에 대해 체계적인 접근 방법을 사용한다.
- 소프트웨어는 비용과 일정은 고려하지 않고 고품질을 최우선으로 개발해야 한다.
- 소프트웨어는 잘 훈련되지 않으면 제작하기 어려움, 다양한 기술적 지식이 필요하다.
정답
정답:2
해설:
"소프트웨어 공학에서는 개발, 운영, 유지보수 및 파기에 대해 체계적인 접근 방법을 사용한다."는 설명이 맞습니다.
소프트웨어 공학은 소프트웨어 시스템을 체계적으로 개발하고 운영, 유지보수 및 파기에 대한 전 과정에서 관리하는 접근 방법을 사용합니다.
사용자의 요구에 따라 임의로 개발되거나 비용과 일정이 무시되면 안 됩니다.
개발자는 고객과의 상호작용을 통해 요구사항을 파악해야 합니다.
문제 4. 다음 중 임베디드 시스템의 특징으로 옳지 않은 것은 무엇입니까?
- 하드웨어에 탑재되어 있으면 변경이 어렵다.
- 사용되는 카피 수가 높다.
- 소프트웨어 실행을 위한 하드웨어 성능 요구가 낮다.
- 개발 노력(연간 소요되는 비용)이 낮다.
정답
정답: 3
해설:
임베디드 시스템은 소프트웨어 실행을 위한 하드웨어 성능 요구가 중간 수준입니다, 낮은 수준이 아닙니다.
임베디드 시스템은 주로 하드웨어와 긴밀하게 연결되어 있으며, 일반적으로 하드웨어 성능 요구는 중간 또는 높은 수준입니다.
임베디드 시스템은 다양한 산업에서 널리 사용되기 때문에 많은 카피 수가 필요하며, 하드웨어에 탑재된 후에는 변경이 어렵습니다.
따라서 3번 내용이 틀렸습니다.
문제 5. 다음 중 새로운 시스템 개발 프로젝트의 특징으로 옳은 것은 무엇입니까?
- 프레임워크를 기반으로 시작하여 조립과 커스터마이징이 주된 작업이다.
- 기존 시스템에 대한 깊은 이해가 필요하며, 추가되는 기능이 중요하다.
- 창조적인 발상과 설계의 자유로움이 있으며, 많은 시간이 소요된다,
- 유지보수와 같은 반복적인 작업이 주된 과제이다.
정답
정답:3
해설:
"새로운 시스템 개발" 프로젝트는 창조적인 발상과 설계의 자유로움이 있으며, 많은 시간이 소요됩니다.
새로운 시스템 개발 프로젝트는 기존 시스템이 아닌 새로운 구조를 설계하는 과정으로 창조적인 설계가 필요하며, 시간이 오래 걸릴 수 있습니다.
프레임워크 기반으로 조립과 커스터마이징을 수행하는 작업은 주로 기존 시스템을 개선하거나 확장하는 경우에 해당합니다.
문제 6. 다음 중 소프트웨어 품질의 요소로 옳지 않은 것은 무엇입니까?
- 효율성 (Efficiency): CPU 시간과 메모리 같은 자원을 효율적으로 사용할 수 있는 특성
- 신뢰성 (Reliability): 요구한 기능을 실패 없이 수행할 수 있는 특성
- 재사용성 (Reusability): 부품이 다른 프로젝트에서 사용될 수 없는 특성
- 유지보수성 (Maintainability): 유지 보수를 쉽게 수행할 수 있는 특성
정답
정답:3
해설:
재사용성 (Reusability)는 부품이 다른 프로젝트에서 사용될 수 있는 특성입니다.
소프트웨어 품질의 중요한 요소 중 하나는 "재사용성"으로, 이는 소프트웨어의 일부가 다른 프로젝트에서 다시 사용할 수 있음을 의미합니다.
따라서 3번의 설명은 잘못되었습니다.
나머지 선택들은 소프트웨어 품질의 요소로 적절한 설명을 제공합니다.
문제 7. 다음 중 진화 유형의 소프트웨어 프로젝트에 해당하는 설명으로 옳은 것은 무엇입니까?
- 새로운 시스템을 처음부터 개발하며, 창조적인 발상과 설계 자유로움이 요구된다.
- 프레임워크나 컴포넌트를 기반으로 시작하며, 조립과 커스터마이징이 주요 작업이다.
- 기존 시스템에 대한 깊은 이해가 필요하며, 새로운 기능 추가와 조화가 요구된다.
- 소프트웨어 구조보다는 디자인과 그래픽 요소가 중요하다.
정답
정답: 3
해설:
진화적 소프트웨어 개발은 기존 시스템을 유지하면서 새로운 기능을 추가하거나 수정하는 유형입니다.
기존 시스템에 대한 깊은 이해가 필요하고, 새로운 기능이 기존 시스템과 조화롭게 동작해야 합니다.
창의적인 설계가 필요하거나 새로운 시스템을 처음부터 개발하는 것은 "진화적 모델"의 특징이 아닙니다.
문제 8. 다음 중 소프트웨어 공학의 개념으로 옳지 않은 것은 무엇입니까?
- 고객의 문제를 해결하기 위해 대규모의 고품질 소프트웨어 시스템을 체계적으로 개발하는 프로세스이다.
- 불필요한 기능을 추가하는 것은 문제 해결에 도움이 될 수 있다.
- 소프트웨어 공학의 목표는 고객의 문제를 효과적으로 해결하는 것이다.
- 소프트웨어 공학에서 효율적인 커뮤니케이션이 중요하다.
정답
정답: 2
해설:
소프트웨어 공학에서는 고객의 요구사항을 충족하는 것이 가장 중요합니다.
따라서 불필요한 기능을 추가하면 시스템의 복잡성만 높아지며 문제 해결에 도움이 되지 않습니다.
나머지 선택지는 소프트웨어 공학의 기본적인 개념을 설명하고 있습니다.
Chapter2 소프트웨어 프로세스
문제 9. 다음 중 즉흥적인 개발 프로세스에서 발생할 수 있는 문제로 옳은 것은 무엇입니까?
- 체계적인 테스트나 품질 보증 없이도 소프트웨어의 질이 높아질 수 있다.
- 계획이 없어도 명확한 목표를 가지고 일할 수 있다.
- 요구나 설계의 중요성을 구현하기 전에 일할 수 있다.
- 계획이 없으면 목표 없이 일하게 되어 소프트웨어의 질이 떨어질 수 있다.
정답
정답:4
해설:
"계획이 없으면 목표 없이 일하게 되어 소프트웨어 질이 떨어질 수 있다"는 설명이 즉흥적인 개발 프로세스에서 발생할 수 있는 문제입니다.
즉흥적인 개발 프로세스는 계획이 부족하거나 아예 없는 상태에서 진행되기 때문에 명확한 목표를 설정하지 못하고 개발이 진행될 수 있습니다.
그 결과로, 소프트웨어 품질이 떨어지거나 중간에 큰 문제가 발생할 가능성이 큽니다.
따라서 쳬계적인 계획 없이 진행하면 질이 저하될 수 있습니다.
문제 10. 폭포수 모델의 단점으로 옳은 것은 무엇입니까?
- 각 단계를 병렬로 진행할 수 없다.
- 초기 단계에서의 변경을 수용하기 어렵다.
- 개발 사이클이 너무 짧다.
- 요구사항 변경에 쉽게 대처할 수 있다.
정답
정답: 2
해설:
폭포수 모델은 단계별로 순차적으로 진행되는 개발 모델이기 때문에, 각 단계가 완료되면 되돌아가서 수정하기 어렵습니다.
특히 초기 요구사항이 잘못되었거나 변경이 필요한 경우, 이를 수용하기 어려워 후반부로 갈수록 비용과 시간 손실이 커질 수 있습니다.
문제 11. 익스트림 프로그래밍(Extreme Programing)의 주요 특징으로 옳은 것은 무엇입니까?
- 긴 릴리스 주기를 가진다.
- 코드 작성 후 테스트를 진행한다.
- 페어 프로그래밍을 통해 개발자들이 코드를 함께 작성한다.
- 계획 단계에서 모든 기능을 한 번에 결정한다.
정답
정답:3
해설:
익스트림 프로그래밍(XP)은 애자일 프로세스 모델로 팀원들이 쌍으로 코딩을 하는 "페어 프로그래밍"을 핵심적으로 도입하여 코드 품질을 높이고, 더 나은 의사소통을 통해 오류를 줄이는 방식입니다.
주기는 짧으며, 테스트 주도 개발(TDD)을 사용해 코드 작성 전 테스트를 먼저 설계하는 것이 특징입니다.
문제 12. 다음 중 프로토타입 모델을 사용하는 것이 적합한 경우는?
- 프로젝트가 대규모이며, 반복적인 검증이 필요할 때
- 소프트웨어가 하드웨어와 깊은 연관이 있고, 사용자 인터페이스가 중요한 경우
- 프로젝트를 수행해야 하는지에 대한 결정을 내리기 어려운 경우
- 단기간 내 요구사항을 만족하고, 자동화 도구가 필요한 경우
정답
정답: 3
해설:
프로토타입 모델은 시스템을 처음부터 완전하게 개발하지 않고 일부 기능을 시범적으로 개발하여 고객과 함께 검토하면서 요구사항을 확정하는 방식입니다.
고객이 요구하는 시스템을 명확하게 이해하지 못했거나, 프로젝트를 진행할지 말지에 대한 결정을 내리기 어려울 때 유용합니다.
프로토타입을 통해 개념을 구체화한 후, 이후의 방향을 결정할 수 있습니다.
문제 13. 다음 중 폭포수 모델을 선택하기에 적합한 프로젝트 유형은 무엇입니까?
- 프로젝트의 위험성이 크고 지속적인 변경이 필요한 경우
- 대규모 프로젝트이며 연관 도메인이 많은 경우
- 위험성이 적거나, 유사한 사례가 많을 경우
- 소규모 프로젝트로 빠른 결과물이 요구되는 경우
정답
정답:3
해설:
"폭포수 모델"은 각 단계가 고정된 순서로 진행되며, 후속 단계로 넘어간 후에는 이전 단계로 돌아가 수정하는 것이 어렵습니다.
따라서 위험성이 적고, 유사한 프로젝트를 여러 번 해본 경우와 같이 변경이 적고 예측 가능한 상황에서 적합합니다.
프로젝트의 위험이 크거나 자주 변경이 발생하는 경우, 폭포수 모델보다는 "프로토타입"이나 "에자일 모델"과 같은 더 유연한 접근이 필요합니다.
문제 14. 다음 중 애자일 프로세스 모델을 적용하기에 적합한 프로젝트 특성은 무엇입니까?
- 위험성이 적고 기존에 진행된 유사 사례가 많은 경우
- 단기간 내 요구사항 만족이 필요하고, 고객과의 참여를 통해 효율성 확보가 필요한 경우
- 대규모 프로젝트로 여러 부서와 도메인이 포함된 경우
- 소프트웨어의 복잡성이 높고, 하드웨어와 긴밀하게 연결되어 있는 경우
정답
정답:2
해설:
1번은 폭포수 모델에 대한 설명입니다.
3번은 점증적 모델, 나선형 모델에 대한 설명입니다.
4번은 점증적 모델에 대한 설명입니다.
문제 15. Software design에서 이루어지는 Architectural design의 주된 목적은 무엇입니까?
- 소프트웨어의 데이터 구조를 설계하는 것
- 시스템의 전체적인 구조와 상호작용 방식을 정의하는 것
- 소프트웨어의 개별 컴포넌트를 상세하게 설계하는 것
- 사용자 인터페이스의 구성을 설계하는 것
정답
정답: 2
해설:
Architectural design(아키텍처 설계)는 소프트웨어의 전체적인 구조와 각 구성 요소들이 어떻게 상호작용 하는지를 정의하는 단계입니다.
시스템의 주요 구성 요소(모듈, 서브시스템)와 그들 간의 상호작용을 설계함으로써, 소프트웨어의 큰 틀을 잡는 역할을 합니다.
개별적인 컴포넌트 설계는 후속 단계인 세부단계(Detailed Design)에서 이루어집니다.
문제 16. 요구사항 명세(Software specification) 과정 중, Feasibility study(타당성 조사)의 주된 목적은 무엇입니까?
- 요구사항이 올바르게 분석되었는지 검증하기 위함
- 시스템이 명세된 요구사항을 충족할 수 있는지 판단하기 위함
- 소프트웨어의 구조를 설계하기 위함
- 프로그램 오류를 디버깅하기 위한 계획을 세우기 위함
정답
정답: 2
해설:
Feasibility study(타당성 조사)는 시스템이 요구사항을 실제로 충족할 수 있는지, 즉 실현 가능성이 있는지 판단하는 과정입니다.
이를 통해 시스템이 경제적, 기술적으로 실현 가능한지, 그리고 고객의 요구를 만족시킬 수 있는지를 평가합니다.
설계 단계로 넘어가기 전에 이 조사가 필수적입니다.
'소프트웨어공학' 카테고리의 다른 글
[소프트웨어공학] 중간고사대비 연습문제 Chapter5 유스케이스 모델링, Chapter6 클래스 모델링 (1) | 2024.10.22 |
---|---|
[소프트웨어공학] 중간고사 대비 연습문제 Chapter3 프로젝트 관리, Chapter4 요구사항 정의 및 개발 (0) | 2024.10.22 |
댓글