티스토리 뷰

71. 구조적 분석에서 자료 사전(Data Dictionary)작성 시 고려할 사항으로 옳지 않은 것은?

자료 사전의 말 뜻 그대로 "이름이 중복"되면 안되겠지.

사전에 이름이 중복되는게 없는 것처럼.

 

72. 외계인코드(Alien Code)를 가장 잘 설명한 것은?

외계인 코드는 오래되서 참고할 문서도 없고, 개발자도 없어서 유지보수 안되는 코드를 이야기한다.

로직이 복잡한건 스파게티코드.

 

73. 다음 중 독립적인 모듈이 되기 위해서 가장 좋은 결합도 상태는?

[Data Coupling(자료 결합)]

- 모듈 간의 인터페이스가 자료요소로만 구성될 때의 결합도

- 어떤 모듈이 다른 모듈을 호출하며 매개 변수, 인수로 데이터를 넘겨주며 호출받은 모듈은 받은 데이터에 대한 처리결과를 다시 돌려주는 것

 

[Stamp Coupling(스탬프 결합)]

- 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭쳐등이 전달되는 경우

- 두 모듈이 동일한 자료구조를 조회하는 경우의 결합도록 자료구조의 어떤 변화, 즉 포맷이나 구조의 변화는 그것을 조회하는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모듈에 까지 영향을 미치게 됨

 

[Control Coupling(제어 결합)]

- 한 모듈이 다른 모듈의 내부에서 작용하는 노리적 흐름을 제어하기 위해 제어 플래그나 정보를 매개변수로 전달단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소(DCD, Flag등)이 전달되는 경우.

- 상위 모듈이 하위 모듈의 상세한 처리 절차를 알아 이를 통제한 경우나 처리 기능이 두 모듈에 분리되어 설계된 경우에 발생

- 하위 모듈에서 상위 모듈로 제어 신호가 이동해 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상 발생

 

[External Coupling(외부 결합)]

- 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우.

- 참조되는 데이터의 범위를 각 모듈에서 제한할 수 있음.

 

[Common Coupling(공통 결합)]

- 파라미터가 아닌 모듈 밖에 선언되어 있는 건역 변수를 참조하고 전역변수를 갱신하는 식으로 상호작용하는 경우

- 공통 데이터 영역의 내용을 조금만 변경해도 이를 사용하는 모든 모듈에 형향을 미치므로 모듈의 독립성을 약하게 함

 

[Content Coupling(내용 결합)]

- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

 

위의 각 결합도의 특징을 근거로 아래와 같은 순서대로 왼쪽에서 오른쪽방향으로 결합도가 약한 순서대로 나열했다.

자료결합 스탬프 결함 제어 결합 외부 결합 공통 결합 내용 결합

제일 결합도가 약한 것은 "자료결합", 강한 것은 "내용 결합"이 된다.

독립적인 모듈일 수로 결합도가 가장 약하게 되므로 보기에서 가장 약한 결합도는 "Stamp Coupling"이 되겠다.

 

74. 소프트웨어를 재사용함으로써 얻을 수 있는 이점으로 가장 거리가 먼 것은?

소프트웨어 재사용(Reuse) 장점

- 생산성 증가

- 소프트웨어 품질 향상

- 프로젝트 문서를 공유

 

정답은 1번 "새로운 개발 방법론 도입 용이"가 되겠다.

75. 소프트웨어 생명주기 모형에서 프로토타입 모형의 장점이 아닌 것은?

프로토타입 모형의 장점

- 고객의 요구사항이 모호하거나 명세화할 수 없는 경우 또는, 실현 가능성이 의문시 될 경우 유용함

- 여러 테스트 환경을 설정하고 각 테스트 환경별로 검증을 미리하여 이후 시스템 테스트에 들어가는 비용을 최소화

- 실 제품 보급 전 미리 사용자를 교육시킬 수 있음

- 고객이나 사용자가 직접보고 상호 의사소통을 통해 불완전하거나 일치하지 않는 요구사항을 발견하여 조기에 수정가능(정확하고 품질 높은 요구 사항 명세를 작성)

- 개발될 제품의 윤곽이나 기능을 명확하게 할 수 있음

 

일단 답은 1번이다. 문제에서 장점을 찾고 있는데 부정적인 단어를 사용하면 당연한거 아닌가??

 

76. 럼바우의 객체 지향 분석에서 분석 활동의 모델링과 가장 관계없는 것은?

<럼바우 분석 기법(Rumbaugh)>

소프트 웨어 구성요소를 그래픽 표기법을 이용하여 모델링.

객체 모델링 기법(OMT, Object Modeling, Technique)이라고 함.

분석 활동은 객체 모델링, 동적 모델링, 기능 모델링을 통해 이뤄짐.

 

[객체 모델링(Object Modeling)]

- 객체 다이어그램(객체 관계)으로 표시

- 가장 중요하며 선행되어야할 모델링

- 객체 모델링 순서

  1. 객체와 클래스를 식별

  2. 클래스에 대한 자료를 사전 작성

  3. 클래스 간의 관계 정의

  4. 객체 속성 및 연결 관계 정의

  5. 클래스 계층화 및 모듈로 정의

  6. 생성된 모형을 반복적으로 검증

 

[동적 모델링(Dynamic Modeling)]

- 상태 다이어그램(상태도)를 이용해 시간에 흐름에 따른 객체들 간의 제어 흐름, 상호작용, 동작 순서 등의 동적인 행위를 표현하는 모델링

- 동적 모델링 순서

  1. 사건의 상호 작용 순서에 대한 시나리오 작성

  2. 시나리오를 역할과 시간에 따라 표기한 수 사건 추적도 작성

  3. 사건 추적도를 사건 발생자의 관계로 설명하는 사건 흐름도 작성

  4. 사건과 상태를 연결시킨 상태도 작성

 

[기능 모델링(Functional Modeling)]

- 자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리

- 어떤 데이터를 입력하여 어떤 결과를 구할 것인가를 표현함

- 기능 모델링 순서

  1. 외부와 시스템 간의 입출력 자료를 정의

  2. 자료 흐름도를 상세화

  3. 프로세스 기능에 대한 정의를 기능 명세서로 작성

  4. 제약 조건 파악

  5. 최적화 기준 명세

 

정답은 2번 절차 모델링이 되시겠다.

 

77. CASE가 제공하는 기능으로 거리가 먼 것은?

CASE가 뭔가 했더니 Computer Aided Software Engineering 이라고 해서 "소프트웨어 공학의 여러 작업들을 자동화하는 도구" 라고 한단다.

 

특징은 아래와 같다.

  • 부품의 재사용성을 향상
  • 품질과 일관성을 효율적으로 관리
  • 생명주기의 모든 단계를 연결시켜주고 자동화시켜준다.
  • 유지보수를 용이하게 수행할 수 있도록 함
  • 공학의 여러 작업들을 자동화하는 도구
  • 시스템의 문서화 및 명세화를 위한 그래픽 기능을 제공
  • 자료흐름, 비즈니스 프로세스 등의 다이어그램을 쉽게 작성하게 해주는 소프트웨어도 CASE도구

주요기능은 아래와 같다.

  • S/W 라이프사이클 전 단계의 연결
  • 모델들 사이의 모순검사
  • 모델의 오류 검증
  • 자료흐름도 등 다이어그램 작성
  • 다양한 소프트웨어 개발 모형 지원
  • 시스템 문서화 및 명세화를 위한 그래픽 지원

정답은 2번이 되시겠다. CASE자체가 개발 방법론인데 새로운 개발 방법론을 생성할 수 있을리가.

 

78. 자료흐름도(DFD)의 각 요소별 표기 형태의 연결이 옳지 않은 것은?

- Data Flow(데이터 흐름) : Arrow(화살표)

- Data Store(데이터 저장소) : Open-Ended Rectangle. 평행선으로 나타내고 평행선 안에 데이터 저장소 명칭을 부여

- Extenal Entity(외부 엔티티) : Double Square. DFD 범위 밖 사각형 형태로 표시

- Process(프로세스) : Circle(원형)

- Terminator(중단) : Square(사각형)

 

정답은 3번. DataStore는 평행선이다.

 

79. S/W 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법은?

비용산정기법의 종류에 대해서 공부하자.

 

[하향식 비용 산정 기법]

과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법

- 프로젝트 전체 비용을 산정한 수 각 작업별로 비용을 세분화

- 전문가 감정 기법, 델파이 기법등이 있다.

 

<전문가 감정 기법>

조직 내 경험이 많은 두 명이상의 전문가에게 비용 산정을 의뢰

- 가장 편리, 신속하게 비용 산정, 의뢰자에게 믿음을 얻을 수 있음

- 새 프로젝트에는 과거 프로젝트와 다른 요소가 있음을 간과할 수 있음

- 새 프로젝트와 유사한 프로젝트에 대한 경험이 없을 수 있음

- 개인적이고 주관적일 수 있다.

 

<델파이 기법>

전문가 감정 기법의 주관적 편견을 보완하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법

- 편견이나 분위기에 지배되지 않도록 한 명의 조정자와 여러 전문가로 구성

- 산정 순서

  1. 조정자는 산정 요원에게 시스템 정의서, 비용 내역을 기록할 서실을 제공

  2. 산정 요원은 정의서를 분석하여 익명으로 비용을 산정

  3. 조정자는 산정요원의 반응을 요약하여 배포

  4. 산정요원은 이전 산정 결과를 이용하여 다시 익명으로 비용을 산정

  5. 요원들 간의 의견이 거의 일치 할 때까지 반복

 

[상향식 비용 산정 기법]

상향식 비용 산정 기법은 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법

- LOC(원시 코드 라인 수) 기법, 개발 단계별 인원 수 기법, 수학적 산정기법 등이 있다.

 

<LOC(원시 코드 라인 수)기법>

LOC 기법은 소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정한다.

- 측정이 용이하고 이해하기 쉬워 가장 많이 사용한다.

- 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정한다.

 

예측치 = a + 4m + b / 6 (단, a : 낙관치, b: 비관치, m:기대치(중간치)

 

(산정공식)

- 노력(인원) = 개발기간 * 투입인원 = LOC/1인당 월평균 생산 코드 라인 수

- 개발 비용 = 노력(인원) * 단위 비용(1인당 월평균 인건비)

- 개발 기간 = 노력(인원) / 투입인원

- 생산성 = LOC / 노력(인원)

 

* 비관치 : 가장 많이 측정된 코드 라인 수

* 낙관치 : 가장 적게 측정된 코드 라인 수

* 기대치 : 측정된 모든 코드 라인 수의 평균

 

<개발 단계별 인원수(Effort Per Task) 기법>

- LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는 데 필요한 노력(인월)을 생명 주기의 각 단계별로 산정한다.
- LOC 기법보다 더 정확하다.

 

정답은 4번, LOC 기법이 되겠다.

80. 소프트웨어 품질 목표 중 사용자의 요구 기능을 충족시키는 정도를 의미하는 것은?

[소프트웨어 품질 목표(Software Quality And Goals)]

 

- 정확성(Correctness) : 사용자의 요구 기능을 충족시키는 정도

- 신뢰성(Reliability) : 정확하고 일관된 결과를 얻기 위해 요구된 기능을 오류 없이 수행하는 정도

- 효율성(Efficiency) : 요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도, 자원의 낭비 정도

- 무결성(Integrity) : 허용되지 않는 사용이나 자료의 변경을 제어하는 정도

- 사용 용이성(Usability) : 사용에 필요한 노력을 최소화하고 쉽게 사용할 수 있는 정도. 적절한 사용자 인터페이스와 문서를 가지고 있는 정도

- 유지보수성(Maintainability) : 사용자의 기능 변경의 필요성을 만족하기 위하여 소프트웨어를 진화하는 것이 가능한 정도

- 유연성(Flexibility) : 소프트웨어를 얼마만큼 쉽게 수정할 수 있는가 하는 정도

- 시험역향(Testability) : 의도된 기능을 수행하도록 보장하기 위해 프로그램을 시험 할 수 있는 정도

- 이식성(Portability) : 다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정 될 수 있는 정도

- 재사용성(Reusability) : 전체나 일부 소프트웨어를 다른 목적으로 사용 할 수 있는가 하는 정도

- 상호운용성(Interoperability) : 다른 소프트웨어와 정보를 교환할 수 있는 정도

 

"Correctness"가 정답이 되겠다.

댓글
댓글쓰기 폼