16. 정보기술 기술지도사

2023년도 제38회 기술지도사(정보기술관리분야) 2차 3교시 소프트웨어 공학 (정답)

Mr. Slumber 2023. 11. 27. 16:06
728x90
반응형

【문제 1】나선형(spiral) 모델에 관한 다음 물음에 답하시오. (30점)

(1) 개발 절차를 포함하여 나선형 모델을 설명하시오. (10점)

(2) 나선형 모델의 장점 2가지만 설명하시오. (10점)

(3) 나선형 모델의 단점 2가지만 설명하시오. (10점)

 

나선형 모델(Spiral Model)

(1) 나선형 모델의 개발 절차

  • 나선형 모델은 소프트웨어 개발을 위한 반복적, 점진적인 접근 방식을 제공합니다. 주요 단계는 다음과 같습니다:
    1. 목표 설정: 각 사이클의 목표, 제약 조건 및 시스템 요구사항을 정의합니다.
    2. 위험 분석: 잠재적인 위험을 식별하고 해결 방안을 모색합니다.
    3. 개발 및 검증: 소프트웨어 개발이 진행되고, 필요한 경우 프로토타입이 생성되어 검증됩니다.
    4. 계획 검토: 고객 피드백을 받고 다음 사이클의 계획을 수립합니다.
  • 각 사이클은 이러한 단계들을 순환하면서 점차 완성도 높은 소프트웨어로 발전합니다.

(2) 나선형 모델의 장점 두 가지

  1. 유연한 요구사항 변경 대응: 개발 과정에서 변화하는 요구사항에 유연하게 대응할 수 있습니다.
  2. 위험 관리 강화: 각 사이클에서 위험을 평가하고 대처 방안을 마련함으로써 프로젝트의 리스크를 효과적으로 관리할 수 있습니다.

(3) 나선형 모델의 단점 두 가지

  1. 복잡성과 관리 어려움: 여러 사이클과 복잡한 단계로 인해 프로젝트 관리가 어려워질 수 있습니다.
  2. 비용과 시간의 증가: 반복적인 사이클과 상세한 위험 분석 과정은 프로젝트의 시간과 비용을 증가시킬 수 있습니다.

나선형 모델은 반복적인 개발 접근 방식을 통해 유연성과 위험 관리를 강조하지만, 이로 인한 복잡성과 비용 증가는 주의해야 할 단점입니다.

 

【문제 2】소프트웨어 모듈화에 관한 다음 물음에 답하시오. (30점)
(1) 소프트웨어 설계 시 모듈화의 장점을 3가지만 설명하시오. (10점)
(2) 우연적(coincidental) 응집도, 절차적(procedural) 응집도, 자료(data) 결합도, 공통 (common) 결합도의 개념을 각각 설명하시오. (20점)
 
 

(1) 모듈화의 장점 세 가지

  1. 유지보수 용이: 모듈화를 통해 각 부분이 독립적으로 작동하므로, 하나의 모듈에서 발생하는 문제가 전체 시스템에 영향을 미치는 것을 최소화할 수 있으며, 특정 부분만을 수정하거나 업데이트하기 쉽습니다.
  2. 재사용성: 모듈화된 구성 요소는 다른 프로젝트나 다른 부분에서 재사용이 가능하여 개발 시간과 비용을 절약할 수 있습니다.
  3. 가독성 및 관리 용이성: 모듈화된 코드는 구조가 명확하고 이해하기 쉬워, 코드의 가독성이 향상되며, 프로젝트 관리가 용이해집니다.

(2) 응집도 및 결합도의 개념

  1. 우연적 응집도(Coincidental Cohesion)
    • 모듈 내의 요소들이 특별한 관련성 없이 우연히 모여 있는 상태를 의미합니다. 이는 가장 낮은 수준의 응집도로, 이런 모듈은 구조적으로 불안정합니다.
  2. 절차적 응집도(Procedural Cohesion)
    • 모듈 내의 요소들이 특정 순서나 절차에 따라 수행되어야 하는 작업들로 구성되어 있습니다. 이는 모듈이 일련의 연속된 단계를 수행하도록 구성되었음을 나타냅니다.
  3. 자료 응집도(Data Cohesion)
    • 모듈이 동일한 데이터나 데이터 구조에 작업하는 함수들로 구성되어 있을 때 나타나는 응집도입니다. 모듈 내의 각 함수는 같은 데이터 집합을 다룹니다.
  4. 공통 응집도(Common Cohesion)
    • 모듈 내의 함수들이 같은 데이터나 자원을 공유할 때 나타나는 응집도입니다. 이러한 공통적인 데이터는 모듈 내의 함수들 사이에 강한 연관성을 만들어냅니다.

이러한 응집도와 결합도의 개념은 소프트웨어 설계에서 매우 중요하며, 각각의 프로그램 구성 요소가 얼마나 잘 구성되어 있는지, 그리고 어떻게 상호작용하는지를 이해하는 데 도움을 줍니다.

 

【문제 3】소프트웨어 품질 평가 모델 ISO/IEC 9126의 품질 특성에 관한 다음 물음에 답하시오. (10점)

(1) 기능성(functionality)에 관하여 설명하시오. (4점)

(2) 신뢰성(reliability)에 관하여 설명하시오. (3점)

(3) 사용성(usability)에 관하여 설명하시오. (3점)

 

ISO/IEC 9126 소프트웨어 품질 평가 모델의 품질 특성

(1) 기능성(Functionality)

  • 기능성은 소프트웨어가 사용자의 요구사항과 필요를 충족시키는 정도를 나타냅니다. 이는 소프트웨어가 제공하는 기능들이 요구사항을 만족하는지, 필요한 기능들을 적절하게 제공하는지를 포함합니다.
  • 기능성의 하위 요소로는 적합성(adequacy), 정확성(accuracy), 상호운용성(interoperability), 보안(security), 준수(compliance) 등이 있습니다.

(2) 신뢰성(Reliability)

  • 신뢰성은 소프트웨어가 지정된 조건 하에서 일관되게 올바른 결과를 제공하고 예상대로 작동하는 능력을 의미합니다.
  • 신뢰성은 소프트웨어가 오류에 대해 얼마나 견고한지, 예상대로 작동하는 시간의 비율이 어느 정도인지를 측정합니다. 이는 시스템의 안정성과 복구 가능성을 포함합니다.

(3) 사용성(Usability)

  • 사용성은 사용자가 소프트웨어를 효과적이고, 효율적으로 사용하고, 만족감을 얻을 수 있는 정도를 나타냅니다.
  • 사용성은 사용의 용이성, 학습 용이성, 사용자 인터페이스의 매력도, 사용자 만족도 등을 포함합니다. 사용자가 소프트웨어를 쉽게 이해하고, 효율적으로 사용할 수 있으며, 사용 경험이 긍정적인가를 평가합니다.

이러한 특성들은 소프트웨어가 실제 사용 환경에서 얼마나 효과적이고 효율적으로 기능할 수 있는지를 평가하는 데 중요한 기준을 제공합니다.

 

【문제 5】UML(Unified Modeling Language)에 관한 다음 물음에 답하시오. (10점)
(1) 컴포넌트(component) 다이어그램의 개념을 설명하시오. (5점)
(2) 배치(deployment) 다이어그램의 개념을 설명하시오. (5점)
 

UML(Unified Modeling Language) 다이어그램

(1) 컴포넌트 다이어그램(Component Diagram)

  • 컴포넌트 다이어그램은 시스템 내의 컴포넌트들과 그들 간의 관계를 나타내는 UML 다이어그램입니다.
  • 이 다이어그램은 시스템을 구성하는 각각의 컴포넌트(소프트웨어 코드 단위, 라이브러리, 모듈 등)를 시각화하며, 컴포넌트 간의 인터페이스와 의존성을 보여줍니다.
  • 컴포넌트 다이어그램은 시스템의 물리적 구조를 나타내며, 소프트웨어 구성 요소들이 어떻게 연결되어 있는지를 명확하게 이해하는 데 도움을 줍니다.

(2) 배치 다이어그램(Deployment Diagram)

  • 배치 다이어그램은 시스템의 물리적 구조를 나타내는 UML 다이어그램으로, 소프트웨어 요소가 하드웨어 요소에 어떻게 배치되는지를 보여줍니다.
  • 이 다이어그램은 하드웨어의 노드(서버, 컴퓨터, 네트워크 장치 등)와 노드에 배치된 컴포넌트(실행 파일, 데이터베이스, 소프트웨어 시스템 등)를 시각화합니다.
  • 배치 다이어그램은 시스템의 물리적 요소들 간의 관계 및 네트워크 구조, 시스템의 물리적 배치에 대한 상세한 정보를 제공합니다.

컴포넌트 다이어그램과 배치 다이어그램은 소프트웨어의 구조와 시스템의 물리적 환경을 이해하는 데 매우 중요한 역할을 하며, 복잡한 시스템의 설계 및 문서화 과정에서 널리 사용됩니다.

 

【문제 6】위험분석에 관한 다음 물음에 답하시오. (10점)
(1) 그림에서 제시된 위험(risk)관리 단계를 각각 설명하시오. (8점)
- 위험요소 식별 - 위험 분석 - 위험 계획 수립 - 위험 감시
(2) 프로젝트 수행 시 발생할 수 있는 위험요소를 1가지만 쓰시오. (2점)
 

위험 관리 단계

(1) 위험 관리 단계 설명

  1. 위험요소 식별 (Risk Identification)
    • 이 단계에서는 프로젝트 또는 프로세스에 영향을 미칠 수 있는 잠재적 위험요소들을 식별합니다.
    • 여기에는 기술적, 조직적, 환경적, 재정적 위험 등 다양한 종류의 위험요소들이 포함될 수 있습니다.
  2. 위험 분석 (Risk Analysis)
    • 식별된 위험요소들의 영향과 발생 가능성을 평가하는 단계입니다.
    • 위험 분석은 프로젝트에 미치는 각 위험요소의 심각도와 확률을 정량화하거나 정성화하여 분석합니다.
  3. 위험 계획 수립 (Risk Planning)
    • 위험 분석을 바탕으로 위험을 최소화하거나 관리할 수 있는 전략과 계획을 수립합니다.
    • 이 단계에는 위험 대응 계획, 완화 전략, 긴급 대책 계획 등이 포함됩니다.
  4. 위험 감시 (Risk Monitoring)
    • 위험 관리 계획의 실행을 지속적으로 모니터링하고, 새로운 위험요소의 출현을 감시하는 단계입니다.
    • 필요한 경우, 위험 관리 계획을 조정하고 개선합니다.

(2) 프로젝트 수행 시 발생할 수 있는 위험요소 한 가지

  • 기술적 변화 또는 불확실성: 새로운 기술의 도입, 기존 기술의 변경, 기술적 문제 또는 버그 등은 프로젝트 수행에 영향을 미칠 수 있는 주요 위험요소 중 하나입니다.

위험 관리는 프로젝트의 성공적인 완수를 위해 필수적인 과정이며, 각 단계의 체계적인 수행을 통해 프로젝트의 리스크를 효과적으로 관리할 수 있습니다.

728x90