공부

정보처리기사 필기 공부하기 - [1과목] 소프트웨어 설계

besomilk 2023. 7. 8. 11:59

객체지향기법

추상화

: 데이터들의 공통된 성질을 추출해 슈퍼 클래스 선정

 

다형성

: 각 객체의 고유한 방법으로 응답, 하나의 클래스 혹은 메서드가 다양한 방식으로 동작이 가능.

- 오버로딩

- 오버라이딩

 

캡슐화

- 오류의 파급 효과가 적음

- 재사용 용이

- 인터페이스가 단순해짐

- 객체 간 결합도 낮아짐

 

상속성

: 상위 클래스의 메소드와 속성을 물려받는 것

 

 

설계 기법 (통합 테스트)

하향식 설계

: 주요 제어 모듈의 종속 모듈을 스텁으로 대체 → 한 번에 하나씩 실제 모듈로 교체

→ 모듈이 통합될 때마다 테스트 실시 → 회귀 테스트

- 깊이 우선, 넓이 우선 통합법 사용

- 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음

- 상위 모듈에서는 tc 사용 X

 

 상향식 설계

: 클러스터로 결합 → 드라이버(더미 모듈) 작성 → 클러스터 단위 테스트

→ 클러스터는 상위로 이동해 결합, 드라이버는 실제 모듈로 대체

- 클러스터: 종속 모듈의 그룹

- 스텁은 필요하지 않다

- 인터페이스가 이미 성립되어 있어야 기능 추가가 쉬움

 

 

혼합식 통합 테스트

- 샌드위치식 통합 테스트 방법

- 하위 수준에서는 상향식, 상위 수준에서는 하향식 통합을 사용해 최적의 테스트 지원

 

 

자료흐름도

- 처리 Process : 원
- 자료흐름 Data Flow : 화살표
- 자료저장소 Data Store : 평행선
- 단말 Terminal : 사각형

 

 

UML(Unified Modeling Language)

: 객체 지향 시스템 개발 시 산출물을 명세화, 시각화, 문서화 하는 데 사용하는 표준화된 모델링 언어

 

정적구조

- 클래스

- 객체

- 패키지

- 컴포넌트 다이어그램

- 복합구조

- 배치: H/W자원에 연결된 S/W컴포넌트 배치를 표현

 

동적구조

- 유스케이스

- 상태

- 활동

- 시퀀스

- 통신

- 상호작용

- 타이밍

 

 

UI 설계 도구

스토리보드 : 디자이너와 개발자가 최종적으로 참고하는 작업지침서
- 상단이나 우측에 제목,작성자등을 입력

- 좌측에는 UI화면,우측엔 디스크립션을 기입

 

목업 : 실제 화면과 유사하게 만든 정적인 형태의 모형

- 디자인, 사용방법 설명, 평가 등을 위해

- 시각적으로만 구성 요소를 배치


프로토타입 : 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형

- 와이어프레임이나 스토리보드등에 인터랙션을 적용


유스케이스 : 사용자 측면에서의 요구사항

- 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다.

 

 

애자일 기법

스크럼

- 스크럼 마스터: 팀이 스크럼을 효과적으로 활용할 수 있도록 보장하는 역할 

- 스크럼 프로세스

- 제품 백로그: 사용자 중심 기능들의 우선순위

 

스프린트

- 2~4주간 실제 개발을 진행

- 스프린트 백로그: 스프린트 회의시 결정되는 것으로, 요구사항을 태스크로 구체화 한 문서

- 스프린트 백로그에 작성된 task를 대상으로 작업 시간을 측정해 개발자에게 할당

- task 상태: 할 일, 진행 중, 완료

- Velocity (속도): 한 번의 스프린트에서 한 팀이 어느 정도의 백로그를 감당할 수 있는지에 대한 추정치

 

 

소프트웨어 비용 산정 기법

1. 하향식

- 전문가 감정 기법 : 경험이 많은 두 명 이상의 전문가에게 의뢰

- 델파이 기법 : 많은 전문가의 의견 종합 산정 (주관적인 편견 보완)

 

2. 상향식

LOC 기법

- Line of Code, 원시 코드 라인 수

- 노력(M/M) / 참여 인원

노력 = 총 라인 수 / 평균 생산성

 

3. 수학적 산정 기법

COCOMO 모형

- 보헴의 제안

- LOC에 의한 비용 산정 기법

- 규모에 따라 조직형/반분리형/내장형

종류

- 기본형: 크기와 개발 유형 산정

- 중간형: 4가지 특성에 의해 산정

- 발전형: 공정별로 정확하게 산출

 

Putnam 모형

- 대형 프로젝트 노력 분포 산정

- 생명 주기 예측 모형. 전 과정 동안의 노력 분포 예상

- 개발 기간이 늘어나면 노력 감소

 

기능 점수 모형

- 요인별 가중치 합산해 기능 점수 산출

- 기능 증대 요인: 자료 입력, 정보 출력, 명령어, 데이터 파일, 외부 루틴과 인터페이스

 

 

디자인 패턴

: 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴

GoF (Gangs of Four) 

생성 패턴

- 추상

- 빌더

- 팩토리메서드

- 프로토타입

- 싱글톤

 

구조 패턴

- 어댑터

- 브리지

- 컴포지트

- 데코레이터

- 파사드

- 플라이웨이트

- 프록시

 

행위 패턴

- 책임 연쇄

- 커맨드

- 인터프리터

- 이터레이터

- 중재자

- 메멘토

- 옵서버

- 상태

- 전략

- 템플릿메서드

- 방문자

 

 

클래스 설계 원칙

단일 책임원칙 : 하나의 객체는 하나의 동작만의 책임을 가짐
개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.
리스코프 교체의 원칙 : 특정 메소드가 상위 타입을 인자로 사용할 때, 그 타입의 하위 타입도 문제 없이 작동해야 함
의존관계 역전의 원칙 : 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있음

 

아키텍처 설계

시스템 품질 속성 6가지

가용성, 변경용이성, 성능, 보안성, 사용편의성, 시험용의성

 

설계 과정

1. 설계 목표 설정

2. 시스템 타입 결정

3. 아키텍처 패턴 적용

- 스타일 적용 및 커스터마이즈

- 아키텍처 패턴: 설계 시 발생하는 문제 해결을 위해 미리 만들어 놓은 해결 방식

4. 서브시스템 구체화

- 서브시스템의 기능, 인터페이스 동작 작성

5. 검토

 

 

아키텍처 스타일

1. 클라이언트 서버 구조

컴포넌트가 다른 컴포넌트에게 서비스를 요청.

데이터가 여러 컴포넌트를 거치며 처리.


2. 계층구조

모듈들로 응집된 계층 단위로 SW를 구성

계층간에 사용 가능의 관계로 표현


3. MVC 구조

모델-뷰-컨트롤러, 기능을 분리한 아키텍처


4. 파이프 필터

파이프를 통해 받은 데이터를 변경시키고 그 결과를 파이프로 전송

서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 시스템에 보내는 작업이 반복

 

 

연계 시스템 구성

1) 송신 시스템
  연계할 데이터를 DB와 어플리케이션으로부터 연계테이블 또는 파일 형태로 생성하여 송신
2) 수신 시스템
  수신한 연계테이블, 파일데이터를 수신시스템에서 관리하는 데이터 형식에 맞게 변환하여 DB에 저장하거나 애플리케이션에서 활용할 수 있도록 제공
3) 중계 서버
  송/수신 시스템 사이에서 데이터를 송수신하고, 연계데이터의 송수신 현황을 모니터링함, 연계데이터의 보안강화 및 다중플랫폼 지원 등이 가능

 

객체지향 분석기법

Rumbaugh(럼바우) 방법
모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법

객체 모델링 기법(Object Modeling Technique) 라고도 한다.

분석활동은 객체모델링 -> 동적 모델링 -> 기능 모델링 순으로 통해 이루어진다

모형 3개를 생성하는 방법!

Booch(부치) 방법
미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석 방법

클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의한다.

Jacobson 방법
Use Case를 강조하여 사용하는 분석 방법이다.

Coad와 Yourdon 방법
E-R 다이어그램을 사용하여 객체의 행위를 모델링

객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성하는 기법

Wirfs-Brock 방법
분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법

 

 

 

EAI(Enterprise Application Integration): 기업 응용 프로그램 통합으로 기업용 응용 프로그램의 구조적 통합 방안을 가리킴
FEP(Front-End Processor): 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 차지하는 시간을 줄여주는 프로그램이나 하드웨어
GPL(General Public License): 자유 소프트웨어 재단(OSF)에서 만든 자유 소프트웨어 라이선스
Duplexing: 이중화(데이터베이스의 회복 기법 중 가장 간단한 것)