본문 바로가기
security/정보처리기사

오답 풀이 2 - 정처기 소프트웨어 설계

by aristia 2021. 1. 26.

정보처리가사 어플리케이션 설계, 인터페이스 설계 부분의 기출 문제 풀이를 진행한다.


 

더보기

정답 : 협약

협약에 의한 설계 : 클래스에 대한 여러 가정을 공유하도록 명세한 것

- 선행 조건 : 오퍼레이션이 호출되기 전 참이 되어야할 조건

- 결과 조건 : 오퍼레이션 수행된 후 만족하여야 하는 조건

- 불변 조건 : 클래스 내부가 실행되는 동안 항상 만족하여야 하는 조건

 

 

더보기
정답 : LSP(Liskov Substitution Principle)


SOLID
     : 객체지향 설계는 긴 세월과 수많은 시행착오를 거치며 5가지 원칙이 정리되었다.
       이것은 객체지향 설계의 5원칙이라고 하며, 앞글자를 따서 SOLID라고 한다.


- SRP (단일 책임 원칙; Single responsibility principle)
     : 한 클래스는 하나의 책임만 가져야 한다.

- OCP(개방-폐쇄 원칙; Open/Closed Principle)
     : 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.

- LSP(리스코프 치환 원칙; Liskov Substitution Principle)
     : 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함
       계약에 의한 설계를 참고하라

- ISP (인터페이스 분리 원칙; Interface Segregation Principle)
     : 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.

- DIP(의존 관계 역전 원칙; Dependency Inversion Principle)
     : 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
      의존성 주입은 이 원칙을 따르는 방법 중 하나다.

 

 

더보기

정답 : 절차 중심의 프로그래밍 기법이다.

절차중심의 프로그래밍
C언어와 같이 순차적인 접근이 매우 중요한 방식입니다.
JAVAC#과 같은 객체지향은 메소드나 클래스를 이용하기 때문에 순서에 비교적 자유롭습니다.

 

 

더보기

정답 : 워크 스루

- 동료 검토(Peer Review)
     : 요구사항 명세서 작성자가 명세서 내용을 직접 설명하고,
       동료들이 이를 들으면서 결함을 발견하는 형태

- 빌드 검증
     : 빌드 파일의 기본적인 구동 테스트 단계
       세세한 예외사항보다는 핵심 기능들만 넓게 테스트 하는 방식

- 워크스루(Walk Through)
     : 검토 회의 전에 요구사항 명세서를 미리 배포하여
       사전 검토한 후 짧은 검토 회의를 통해 결함을 발견하는 형태

 

 

더보기

정답 : 논쟁이나 반박을 제한하지 않는다.

<정형 기술검토의 검토 지침 사항>

- 제품 검토의 집중성(수정이 아닌 검토)
- 문제 영역을 명확히 표현하라.
- 해결책이나 개선책에 대해서는 논하지 말라.
- 참가자의 수를 제한(3~5)
- 사전 준비(검토를 위한 자료 사전배포)를 강요하라
.
- 자원과 시간 일정을 할당하라.
- 모든 검토자들을 위해 의미있는 훈련을 행하라.
- 검토자들은 사전에 작성한 메모들을 공유하라.
- 검토의 과정과 결과를 재검토하라. 
- 의제 제한성(의견을 제한하되 충분히 받아들임)
- 안건고수성
- 문제 공개성
- 논쟁 반박의 제한성
- 문서성(발견된 오류는 문서화)

 

 

더보기

정답 : IDL
IDL은 Interface Description Language로, SW개발자다 메시지를 정의할 수 있게 해주는 선언적 언어이며,
CORBA에서 정보를 송수신하는 데 필요한 언어이다.

IDL : 인터페이스 정의 언어. CORBA의 큰 특징 중 하나는 여러언어의 지원. // C,C++,자바 ,COBOL

ADL : 아키텍처 기술 언어.
       소프트웨어 품질과 정확성을 증진하기 위해 소프트웨어 아키텍처를 모형화하고 분석하는 수단을 제공

CSL : 제어 시뮬레이션 언어

UML : 객체지향분석과 설계를 위한 모델링 언어. Booch, Rumbaugh, Jacobson이 주장하는
         각각의 객체지향방법론 중에서 장점들을 통합하여 여러 가지 방법론들을 모두 표현할 수 있도록 만든 언어

 

 

더보기

정답 : 소프트웨어 사용자들이 소프트웨어 사용 방법을 신속히 숙지할 수 있도록 개발된 자동화 패키지이다.

CASE(Computer Aided Software Engineering)
: 소프트웨어 개발 과정의 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는 것.
소프트웨어 생명 주기의 어느 부분을 지원하느냐에 따라 상위CASE, 하위CASE, 통합CASE로 분류됨.

1.상위CASE : 소프트웨어 생명주기의 상위=전반부분인 요구분석,설계단계를 지원하는 CASE
2.하위CASE : 소프트웨어 생명주기의 하위=하반부분인 코드의 작성과 테스트,
                 문서화하는 과정을 지원하는 CASE
3.통합CASE : 소프트웨어 생명주기에 포함되는 전체 과정을 지원하는 CASE

*참고 : 일반적인 소프트웨어 생명주기타당성 검토->개발 계획->요구사항 분석->설계->구현->테스트->유지보수

 

 

더보기

정답 : 다형성(Polymorphism)
다형성은 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때
하나의 메시지에 대한 각 객체(클래스)가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미한다.

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

추상화(Abstraction)
- 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜나가는 것

다형성(Polymorphism)
- 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해
  각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력의 의미
- 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함

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

댓글