티스토리 뷰

61. 소프트웨어 프로젝트 관리의 주요 구성 요소인 3P에 해당하지 않는 것은?

프로젝트 관리를 위한 3P

- 사람(People) : 프로젝트 관리에서 가장 기본이 되는 인적 자원

- 문제(Problem) : 사용자 입장에서 문제를 분석하여 인식함

- 프로세스(Process) : 소프트웨어 개발에 필요한 전체적인 작업 계획

 

Power는 하드웨어 관리쪽이 아닐까??

정답은 4번 Power.

 

62. 소프트웨어 재공학의 주요 활동 중 역공학에 해당하는 것은?

일단 "소프트웨어 재공학의 주요활동"에 대해서 알아보자.

 

- 분석(Analysis)

: 기존 소프트웨어 명세서를 확인하여 소프트웨어 동작을 이해하고, 재공학 대상을 선정.

 

- 개조(재구조, 재구성)

: 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 형태로 바꿈.

 기존 소프트웨어를 향상시키기 위하여 코드를 재구성하므로 기능과 외적인 동작은 바뀌지 않음.

 

- 역공학(Reverse Engineering)

: 기존 소프트웨어를 분석하여 설계도를 추출하거나 다시 만들어내는 작업.

정공학과 반대의 개념으로 기존 코드를 복구하는 방법.

역공학의 가장 간단하고 오래된 형태는 재문서화.

 

- 이식(Migration)

: 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 반환.

 

보기의 1번은 "분석", 보기의 2번은 "개조", 보기의 4번은 "이식"이 되겠다.

정답은 3번.

 

63. 소프트웨어 프로젝트 측정에서 신뢰할만한 비용과 노력 측정을 달성하기 위한 선택사항이 아닌 것은?

[신뢰할만한 비용과 노력측정을 달성하기 위한 선택사항들]

- 프로젝트의 정확한 측정을 위해 충분한 시간을 갖고 측정

- 상대적으로 간단한 분해기술을 이용

- 실험적 모델을 형성

- 하나 이상의 자동화 측정도구를 이용

 

정답은 1번. 간단한 분해기술을 이용해야한다. 복잡한 분해기술이라니 누가 좋아하겠어?

 

64. 소프트웨어 위기를 가져온 원인으로 가장 옳지 않은 것은?

소트웨어 위기의 원인은 아래와 같다.

  • 소프트웨어 규모의 대규모화, 복잡화에 따른 개발비용 증대

  • 하드웨어 비용에 대한 소프트웨어 가격 상승폭 증가

  • 유지보수의 어려움과 개발정체 현상 발생

  • 프로젝트 개발 및 소요예산 예측의 어려움

  • 신기술에 대한 교육 및 훈련의 부족

그리고 증상은 아래와 같다.

  • 프로젝트 예산이 초과되었다.

  • 프로젝트 일정이 지연되었다.

  • 소프트웨어가 비효율적이었다.

  • 소프트웨어 품질이 낮았다.

  • 소프트웨어가 요구 사항을 만족시키지 못하는 일이 빈번히 일어났다.

  • 프로젝트는 관리 불가능했고 코드 관리는 힘들었다.

  • 소프트웨어가 고객의 손에 전달 되지 못했다.

결국 정답은 4번 "수요의 감소"는 원인이 아니다. 

 

65. 객체 지향 개념 중 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 의미하는 것은?

객체지향개념에 대해서 들여다보고 가자.

 

- 현실 세계의 개체(Entity)를  기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때도 객체들을 조립해서 작성할 수 있도록 하는 기법을 말함

 

[객체(Object)]

필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 소프트웨어 모듈(Attribute + Method)

 

[어트리뷰트(Attribute)]

객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄

데이터, 속성, 상태, 변수, 상수, 자료 구조라고도 함

 

[메소드(Method)]

객체지향 시스템에서 전통적 시스템의 함수(Function) 또는 프로시저(Procedure)에 해당하는 연산 기능

객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산을 정의한 것

 

[클래스(Class)]

공통된 속성과 연산(행위)을 갖는 객체의 집합으로 객체의 일반적인 타입(Type)을 의미

하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화를 의미

모든 객체들은 더 큰 클래스의 멤버이고, 그 클래스에 대하여 이미 정의된 개별 자료구조와 연산이 상속이 되며, 그 때문에 개별 객체는 클래스의 인스턴스가 됨

 

[메시지(Message)]

메시지는 객체(Object)들 간에 상호작용을 하는데 사용되는 수단

객체(Object)의 메소드(동작, 연산)를 일으키는 외부의 요구 사항임

 

(메시지의 구성요소)

- 메시지를 받는 객체(수신자)의 이름

- 객체(Object)가 수행할 메소드 이름

- 메소드를 수행할 때 필요한 인자(속성값)

 

정답은 2번 클래스가 되겠다.

 

66. 객체들 간에 메시지를 주고받을 때 각 객체의 세부내용은 알 필요가 없으므로 인터페이스가 단순해지고 데이터와 데이터를 처리하는 함수를 하나로 묶는 것을 의미하는 것은?

이것의 정답은 encapsulation인데 이 문제를 풀기위해서는 "객체지향 기법의 기본 원칙"에 대해서 알아야한다.

 

[캡슐화(Encapsulation)]

- 캡슐화는 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶은 것

- 객체지향 시스템에서 자료부분과 연산(또는 함수)부분등 정보처리에 필요한 기능을 한 테두리로 묶는 것

- 객체지향의 기본 원리인 정보은폐와 가장 밀접한 관계가 있음

- 객체지향 개념에서 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터피이스만을 밖으로 드러내는 과정

- 서로 관련 있는 데이터와 연산자를 하나로 묶어서 프로그램의 컴포넌트로 재사용 할 수 있는 개념

 

 - 캡슐화 개념이 갖는 장점

  -- 재사용이 용이

  -- 인터페이스 단순화

  -- 변경이 발생할 때 오류의 파급효과가 적음

 

[정보은닉(Information Hiding)]

- 다른 객체에서 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것

- 정보은닉 목적

  -- 고려되지 않은 영향(Side Effect)들을 최소화 하기 위하여

 

[추상화(Abstraction)]

- 추상화는 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화 하는 것

 

[상속성(Inheritance)]

- 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것

- 상위 클래스의 속성과 연산을 하위 클래스가 공유할 수 있기 때문에 객체(Object)와 클래스의 재사용

 

[다형성(Polymorphism)]

- 객체지향 시스템에서 서로 다른 Class들이 같은 의미의 응답을 하는 특성

- 한 메시지가 객체에 따라 다른 방법으로 응답할 수 있는 것

- 많은 상이한 클래스들이 동일한 메소드명을 이용하는 능력

 

67. 소프트웨어 재공학은 어떤 유지보수 측면에서 소프트웨어 위기를 해결하기 위한 방법인가?

- 수정적 유지보수(Corrective Maintenance) : 내재된 결함들을 제거

- 완전적 유지보수(Perfective Maintenance) : 응답시간 감소와 같은 프로덕트의 효율성 개선작업

- 적응적 유지보수(Adaptive Maintenance) : 변경된 운영환경을 적응시키기 위한 변경작업

- 예방적 유지보수(Preventive Maintenance) : 기존 소프트웨어의 기능을 개조하거나 개선하는 예방 측면 작업

 

소프웨어 재공학(Software Reengineering)

  • 유지보수 비용이 소프트웨어 개발 비용의 대부분을 차지하는 문제를 염두에 두어 기존 소프트웨어의 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시키려는 기술
  • 유지보수 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
  • 기존 소프트웨어의 기능을 개조하거나 개선하므로, 예방 유지보수 측면에서 소프트웨어 위기를 해결하는 방법
  • 소프트웨어 재공학도 자동화된 도구를 이용하여 소프트웨어를 분석하고 수정하는 과정을 포함
  • 스프트웨어에서 발생할 수 있는 오류가 줄어 들고, 비용이 절감 됨

정답은 Preventive Maintenance가 되겠다.

68. 자료흐름도(DFD)의 작성 지침이라고 볼 수 없는 것은?

[작성지침]

- 자료 흐름(Flow)은 처리(Process)를 거쳐 변환될 때마다 새로운 이름을 부여함

- 처리(Process)가 출력 자료를 산출하기 위해서는 반드시 입력 자료가 발생해야함

- 최하위 처리(Process)는 소단위명세서를 갖는다.

- 처리(Process)와 하위 자료 흐름도의 자료 흐름은 서로 일치되어야 함

- 자료 저장소에 입력 화살표가 있다고 하여 반드시 출력 화살표가 표시될 필요는 없음

 

"배경도"와 관련된 지침은 없다. 3번 정답

 

69. 소프트웨어 생명주기 모형 중 Spiral Model에 대한 설명으로 가장 옳지 않은 것은?

나선형 모델(Spiral Model)이란?

나선형 모델은 4가지 섹션들로 구성되며, 소프트웨어가 완성될 때 까지 이들이 반복되는 모델.

점증모델, 반복적 모델과 마찬가지로 이 모델에서도 프로세스들이 반복적.

다른 점은 위험을 분석하는 프로세스가 명시되어 있다는 점.

 

[개발단계]

  1. 계획 및 정의
  2. 위험 분석
  3. 구축
  4. 고객평가
  5. 고객과의 의사소통

[장점]

- 비용, 시간이 많이 드는 큰 시스템 구축시 효과적

- 테스트에 소비되는 비용, 제품의 보급이 늦어지는 문제를 해결

- 각 순환 주기를 나선형 모델의 특별한 경우로 간주하며, 근본적으로 유지보수와 개발간 큰 차이가 없다.

 

[단점]

- 고객과 개발자가 같은 조직에 있는 내부 프로젝트의 경우, 위험 분석 단계에서 프로젝트의 수행을 중단해야한다고 결정되었다면, 프로젝트를 위해 구성된 인원을 다른 프로젝트에 다시 할당해야함

- 규모가 큰 프로젝트에만 유용하므로 위험분석을 수행하는데 드는 비용이 상당하다면 위험 분석을 수행하는 것이 의미가 없음

- 위험을 정확하게 분석하지 못했다면 엄청난 문제를 야기할 수 있음

 

선형 모델이 아니고 점증, 반복적 모델이다. 정답은 4번.

 

70. 소프트웨어 공학에 대한 설명으로 가장 옳지 않은 것은?

 

댓글
댓글쓰기 폼