ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료구조 2장 연습문제 풀이
    자료구조 2021. 10. 21. 21:09
    728x90
    반응형

    1. 소프트웨어 생명주기와 각 단계를 시스템 예를 들어 설명하시오.

     

    답 : 소프트웨어 생명주기의 단계는 다음과 같다.

    요구 분석 → 시스템 명세 → 설계 → 구현 → 테스트 → 유지 보수

    요구 분석 단계에서는 개발해야 할 소프트웨어의 성격을 정확히 이해하고 개발 방법과 필요한 자원과 예산을 예측해야 한다.

    시스템 명세 단계에서는 시스템 기능 명세서를 작성하여 소프트웨어의 입력 데이터는 무엇이며, 입력 데이터로 처리하는 내용과 그 결과 생성되는 출력이 무엇인지 정의해야 한다. 이때 기능 명세서는 개발 과정에서 의견 차이나 오류로 인해 재개발 작업이나 사용자 불만이 발생하지 않도록 가능한 정확하게 작성되어야 한다.

    설계 단계에서는 개발 목표 기능을 어떻게 해결할 것인지를 구체적으로 정의해야 한다.

    구현 단계에서는 설계 단계에서 논리적으로 결정한 문제해결 방법을 특정 프로그래밍 언어를 사용해서 실제 프로그램을 작성한다.

    테스트 단계에서는 구현이 완료된 시스템이 설계한 대로 동작하는지 테스트해야 한다. 이때 테스트란 개발한 시스템이 요구사항을 만족하는지, 실행결과가 예상한 결과와 정확하게 맞는지를 검사하고 평가함으로써 오류를 최대한 발견해서 완성도를 높이는 작업이다.

    유지 보수 단계에서는 프로그램의 오류 수정에서부터 시스템 디자인 수정, 새로운 요구사항에 대한 기능 추가 등 모든  활동을 포함하는 단계이다.

     

     

     

    2. 데이터베이스 설계 단계의 순서로 알맞은 것은?

    ① 물리적 설계    ② 구현    ③ 개념적 설계   
    ④ 요구 조건 분석    ⑤ 논리적 설계

    가. ③-⑤-④-①-②    나. ④-①-③-⑤-②    다. ④-③-⑤-①-②    라. ③-⑤-①-④-②

     

    답 : 다. ④-③-⑤-①-②

     

     

     

    3. 소프트웨어 개발 방법론에서 구현(Implementation)에 대한 설명으로 가장 적절한 것은?

    가. 요구 사항 분석 과정 중 모아진 요구 사항을 옮기는 것

    나. 시스템이 무슨 기능을 수행하는지에 대한 시스템의 목표 기술

    다. 프로그래밍 또는 코딩이라 불리며 설계 명세서가 컴퓨터가 알 수 있는 모습으로 변환되는 과정

    라. 시스템이나 소프트웨어 요구 사항을 정의하는 과정

     

    답 : 다. 프로그래밍 또는 코딩이라 불리며 설계 명세서가 컴퓨터가 알 수 있는 모습으로 변환되는 과정

    ? : 

    가는 설계에 대한 설명이다.

    나는 시스템 명세에 대한 설명이다.

    라는 요구 분석에 대한 설명이다.

     

     

     

    4. 소프트웨어 개발을 위한 프로그래밍 언어의 선정 기준으로 거리가 먼 것은?

    가. 개발 대상자의 경험과 지식

    나. 대상 업무의 성격

    다. 과거의 개발 실적

    라. 4세대 언어 여부

     

    답 : 라. 4세대 언어 여부

    ? : 프로그래밍 언어 선정 기준은 프로젝트에 대한 사용자의 요구, 프로그래머의 능력, 현재 사용 중인 언어, 컴파일러의 가용성과 품질, 지원 가능한 개발도구, 언어의 호환성, 개발 경험 등이 있다.

     

     

     

    5. 소프트웨어 개발의 생산성에 영향을 미치는 요소가 아닌 것은?

    가. 프로그래머의 능력

    나. 팀 의사 전달

    다. 제품의 복잡도

    라. 소프트웨어 사용자의 능력

     

    답 : 라. 소프트웨어 사용자의 능력

    ? : 소프트웨어 사용자(우리와 같은 일반적인 소비자)의 능력은 중요치 않다.

     

     

     

    6. 소프트웨어의 재사용으로 얻어지는 이익이 아닌 것은?
    가. 표준화의 원칙을 무시할 수 있다.

    나. 프로젝트의 개발 위험을 줄여줄 수 있다.

    다. 프로젝트의 개발 기간과 비용을 줄일 수 있다.

    라. 개발자의 생산성을 향상시킬 수 있다.

     

    답 : 가. 표준화의 원칙을 무시할 수 있다.

    ? : 소프트웨어를 재사용한다고 해도 표준화의 원칙을 무시할 순 없다.

     

     

     

    7. 소프트웨어의 재사용과 관련된 내용 중 가장 적절한 설명은?

    가. 시스템 명세, 설계, 코드 그리고 다른 팀에서 작성한 문서를 공유함으로써 소프트웨어 개발을 복잡하게 만든다.

    나. 소프트웨어를 재사용함으로써 유지 보수 비용이 높아진다.

    다. 모든 소프트웨어를 개발할 때는 반드시 소프트웨어를 재사용해야만 한다.

    라. 소프트웨어의 개발 생산성과 품질을 높이려는 주요 방법이다.

     

    답 : 라. 소프트웨어의 개발 생산성과 품질을 높이려는 주요 방법이다.

    ? : 

    가 : 시스템 명세, 설계, 코드 그리고 다른 팀이 작성한 문서를 서로 공유함으로써 소프트웨어 개발이 더 쉬워진다.

    나 : 소프트웨어의 재사용으로 유지 보수 비용이 낮아진다.

    다 : 반드시 소프트웨어를 재사용하지 않아도 된다.

     

     

     

    8. 상향식 통합테스트(Bottom-Up Integration Test)의 과정이 옳게 나열된 것은?

    ① 드라이버(Driver)라는 제어 프로그램의 작성
    ② 낮은 수준의 모듈들을 클러스터(Cluster)로 결합
    ③ 클러스터의 검사
    ④ 드라이버를 제거하고 클러스터를 상위로 결합

    가. ①-②-③-④    나. ②-①-③-④    다. ②-③-①-④    라. ①-②-④-③

     

    답 : 나. ②-①-③-④

    ? : 상향식 테스트는 최하위 단계의 단위 프로그램을 테스트하고 그 상위 단계의 구성요소를 테스트한 후에 다시 그 상위 단계의 구성요소를 테스트하는 식으로 최상위 단계까지 반복 시행하여 테스트하는 방식이다.

     

     

     

    9. 소프트웨어 품질 측정의 항목으로 거리가 먼 것은?

    가. 정확성    나. 무결성    다. 간결성    라. 사용성

     

    답 : 다. 간결성

    ? : 소프트웨어 품질 측정 항목에는 정확성, 유지 보수성, 무결성, 사용성이 있다.

     

     

     

    10. 소프트웨어 라이프 사이클 단계 중 가장 오랜 시간이 걸리며 대부분의 비용을 차지하는 단계는?

    가. 타당성 검토 단계

    나. 운용 및 유지 보수 단계

    다. 기본 설계 단계

    라. 실행 단계

     

    답 : 나. 운용 및 유지 보수 단계

    ? : 소프트웨어 생명 주기에서 가장 긴 시간을 차지하며 대부분의 비용을 차지하는 단계는 유지 보수 단계이다.

     

     

     

    11. 좋은 소프트웨어의 조건이라고 할 수 없는 항목은?

    가. 남이 알아보기 쉬워야 한다.

    나. 경제적이어야 한다.

    다. 문서화가 잘 되어 있어야 한다.

    라. 프로그램이 독창적이어야 한다.

     

    답 : 라. 프로그램이 독창적이어야 한다.

    ? : 독창성은 좋은 소프트웨어의 조건에 해당되지 않는다.

     

     

     

    12. 시스템 테스팅 단계의 순서가 적절하게 이루어진 것은?
    가. 단위 테스트 - 통합 테스트 - 시스템 테스트 - 수용 테스트

    나. 수용 테스트 - 단위 테스트 - 통합 테스트 - 시스템 테스트

    다. 단위 테스트 - 통합 테스트 - 수용 테스트 - 시스템 테스트

    라. 수용 테스트 - 시스템 테스트 - 단위 테스트 - 통합 테스트

     

    답 : 가. 단위 테스트 - 통합 테스트 - 시스템 테스트 - 수용 테스트

     

     

     

    13. 검증 시험(Validation Test)을 할 때 Beta Test에 대한 설명으로 옳은 것은?

    가. 사용 부서에서 개발 담당자가 시험한다.

    나. 개발 부서와 사용 부서가 공동으로 시험한다.

    다. 개발 부서에서 개발자가 시험한다.

    라. 실업무를 가지고 사용자가 직접 시험한다.

     

    답 : 라. 실업무를 가지고 사용자가 직접 시험한다.

    ? : 베타 테스트는 제품을 판매하기 전에 제품을 사용할 의사가 있는 잠정적 고객들이 실제로 사용해보도록 하여 새발자가 찾지 못한 오류를 찾아내는 테스트이다.

     

     

     

    14. 유지 보수의 활동 종류로 볼 수 없는 것은?

    가. 정정(Corrective) 보수

    나. 품질(Quality) 보수

    다. 적응(Adaptive) 보수

    라. 예방(Preventive) 보수

     

    답 : 나. 품질(Quality) 보수

    ? : 유지 보수 활동의 종류로는 수정형 유지 보수, 적응형 유지 보수, 완전형 유지 보수, 예방형 유지 보수가 있다.

     

     

     

    15. 알고리즘의 요건을 설명하시오.

     

    답 : 효율적이고 정확하게 문제를 해결하기 위해서는 데이터를 정확히 정의하고, 처리해야 하기에 알고리즘이 필요하다.

    효과적인 알고리즘이 되기 위해서는 다음의 조건을 만족해야 한다.

    1. 입력(input) : 알고리즘 수행에 필요한 자료가 외부에서 입력되어야 한다.
    2. 출력(output) : 알고리즘 수행 후 하나 이상의 결과를 출력해야 한다.
    3. 명확성(definiteness) : 수행할 작업의 내용과 순서를 나타내는 알고리즘의 명령어들은 명확하게 명세되어야 한다.
    4. 유한성(finiteness) : 알고리즘은 수행 뒤에 반드시 종료되어야 한다.
    5. 효과성(effectiveness) : 알고리즘의 모든 명령어들은 기본적이며 실해애이 가능해야 한다.

     

     

     

    16. 다음의 알고리즘을 순서도를 사용하여 표현하시오.

    for(i ← 1; i <= n; i ← i + 1) do {
    	for(j ← 1; j <= n; j ← j + 1) do
        		A ← A + B;
    }

     

    답 :

    순서도는 다음과 같은 기호를 사용하여 알고리즘의 실행 단계를 표현한다.

    순서도를 표현하면 다음과 같다.

     

     

     

     

    17. 문제 16번 알고리즘의 시간 복잡도를 Big-Oh 표기법으로 표현하시오.

     

    답 : O(n2)

    ? : for문의 시간 복잡도는 n이며, for문이 중첩되어 있으므로 시간 복잡도는 O(n2)이다.

     

     

     

    18. 소프트웨어 유지 보수 작업의 목적으로 부적절한 것은?

    가. 하자 보수    나. 환경 적응    다. 예방 조치    라. 설계 수정

     

    답 : 라. 설계 수정

    ? : 설계 수정은 유지 보수 단계에서 실시하지 않는다.

     

     

     

    19. 소프트웨어 유지 보수에 관련된 설명으로 옳지 않은 것은?

    가. 유지 보수는 소프트웨어가 인수, 설치된 후 발생하는 모든 공학적 작업을 말한다.

    나. 유지 보수는 원인에 따라 수정 보수, 적응 보수, 완전화 보수, 예방 보수 등이 있다.

    다. 소프트웨어에 가해지는 변경을 제어 관리하는 것을 형상 관리라고 한다.

    라. 소프트웨어 비용 중 유지 보수 비용은 개발 비용보다 적다.

     

    답 : 라. 소프트웨어 비용 중 유지 보수 비용은 개발 비용보다 적다.

    ? : 소프트웨어 생명주기 중 유지 보수에 드는 비용이 가장 크다.

     

     

     

    20. 공학적으로 좋은 소프트웨어에 대한 설명으로 적합하지 않은 것은?

    가. 사용법, 구조의 설명, 성능, 기능이 이해하기 쉬워야 한다.

    나. 유지보수가 용이해야 한다.

    다. 실행 속도가 빠르고, 소요 기억 용량을 많이 차지할수록 좋다.

    라. 사용자 수준에 따른 적당한 사용자 인터페이스를 제공해야 한다.

     

    답 : 다. 실행 속도가 빠르고, 소요 기억 용량을 많이 차지할수록 좋다.

    ? : 소요 기억 용량을 적게 차지할수록 좋다.

     

     

     

    21. 소프트웨어의 품질 목표 중에서 옳고 일관된 결과를 얻기 위하여 요구된 기능을 수행할 수 있는 정도를 나타낸 것은?

    가. 무결성    나. 정확성    다. 효율성    라. 신뢰성

     

    답 : 라. 신뢰성

    ? : 신뢰성에 대한 설명이다.

    무결성 : 바이러스 같은 외부의 공격에 대해 문제가 발생하지 않는 보안성을 의미한다.

    정확성 : 요구되는 기능들을 소프트웨어가 정확하게 수행하는 정도를 말한다.

    효율성 : 요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도, 자원의 낭비 정도를 의미한다.

     

     

     

    22. 알고리즘 시간 복잡도 O(1)이 의미하는 것으로 옳은 것은?

    가. 모든 O(1) 알고리즘은 어떤 컴퓨터에서나 동일한 수행시간을 갖는다는 의미이다.

    나. 모든 O(1) 알고리즘은 한 컴퓨터에서 동일한 수행시간을 갖는다는의미이다.

    다. 알고리즘의 입력 데이터 수가 한 개라는 의미이다.

    라. 알고리즘의 수행시간이 입력 데이터 수와 상관없이 일정하다는 의미이다.

    마. 알고리즘의 길이가 입력 데이터보다 작다는 의미이다.

     

    답 : 라. 알고리즘의 수행시간이 입력 데이터 수와 상관없이 일정하다는 의미이다.

    ? : O(1)의 시간 복잡도를 갖는 알고리즘은 입력 데이터 수와 상관없이 수행시간이 일정하다.

     

     

     

    23. 아래의 시간 복잡도를 작은 것부터 큰 순서로 나열한 것을 골라라.

    ① O(n)    ② O(nlogn)    ③ O(logn)    ④ O(log(logn))

    가. ④<③<①<②    나. ③<①<②<④    다. ③<①<④<②    라. ④<③<②<①    마. ②<③<①<④

     

    답 : 가. ④<③<①<②

    ? : n값에 대한 실행 함수 비교

    logn < n < nlogn < n2 < n3 < 2n

    728x90
    반응형
Designed by Tistory.