본문 바로가기
정보 처리 기사 지록지

[정처기] 정보처리기사 실기 핵심 요약 vol 1.

by Luciditas 2023. 8. 17.
728x90

소프트웨어 개발 생명 주기(Software Development Life Cycle; SDLC)

소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용하는 과정.

 

SDLC 모델의 종류

1) 폭포수 모델

각 단계가 완료된 후 다음 단계로 넘어갈 수 있는 모델. 선형, 순차적 모형이라고도 한다.

(고전적 생명 주기 모형)

 

2) 프로토타이핑 모델

프로토타입을 구현한 후 고객의 피드백을 반영해 수정해가는 모델

 

3) 나선형 모델

위험을 최소화하기 위해 점진적으로 개발해 나가는 모델

 

4) 반복적 모델

구축 대상을 나누어 병렬적으로 개발한 후 각 결과물을 통합하거나 그 과정을 반복적으로 개발한ㄴ 모델

 

소프트웨어 개발 방법론

1) 구조적 방법론

전체 시스템을 기능에 따라 나눠 개발하고 이를 통합하는 방식. (하향식 방법론)

Nassi–Shneiderman diagram을 사용한다. (도형식, 제어 논리 구조, 명확한 식별이 가능)

 

2) 정보공학 방법론

정보 시스템 개발에 필요한 관리 절차와 작업 기반을 체계화한 방법론

 

3) 객체지향 방법론

복잡한 현실 세계에서 인간이 이해하는 방식으로 적용하는 소프트웨어 개발 방법론

 

4) 컴포넌트 기반 방법론(Component Based Development ; CBD)

컴포넌트 단위로 개발을 진행한 후 이렇게 만들어진 여러 컴포넌트를 조립해 하나의 새로운 응용 프로그램으로 만들어가는 방법론

(생산성, 확장성, 재사용성이 높다.)

 

5) 애자일 방법론

전차보다는 구성원 중심의 개발 방법론.

변화에 대응하기 유연하고 신속히 적응함 => 효율적인 시스템을 개발할 수 있다.

 

6) 제품 계열 방법론

특정 제품에 적용하고 싶은 공통된 기능을 정의해서 개발한다.

(임베디드에 유용함.)

 

애자일 방법론

XP(Extreme Programming)

의사소통 개선과 즉각적인 피드백이 장점인 프로그래밍 방법론.

 

XP의 가치

1) 용기 2) 단순성 3) 의사소통 4)존중 5) 피드백

 

XP의 기본 원리

 

1. 짝 프로그래밍(Pair Programming)

개발자 둘이서 하나의 프로젝트를 같이 수행

 

2. 공동 코드 소유(Collective Ownership)

시스템 코드를 접근 권한이 있는 사람이면 언제라도 수정이 가능하게 함.

 

3. 지속적인 통합(Continuous Intergration)

모든 프로젝트 가 끝난 후 통합 및 배포하는 것이 아닌 작은 단위로 SW를 통합 및 빌드를 수행하는 것.

 

4. 계획 세우기(Planning Process)

개발자가 필요한 것은 무엇이고 지연되는 부분이 어느 부분인지를 알고 계획을 세운다.

 

5. 작은 릴리즈(Small Release)
작은 시스템을 먼저 만들고 짧은 단위로 업데이트를 수행하는 것

 

6. 메타포어 (Methaphor)

공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간 의사소통을 원활하게 만드는 방법

 

7. 간단한 디자인(Simple Design)

요구사항에 적합한 범위 내에서 가장 단순하게 시스템을 설계한다.

 

8. 테스트 기반 개발(Test Driven Development)

 

9. 리팩토링 (Refactoring)

프로그램의 외부적인 기능은 변경하지 않은 상태에서 불필요한 중복의 제거나 단순화 등을 수행하여 유지 보수성을 높이는 작업

 

10. 코드 표준 (Coding Standard)

효과적인 공동 작업을 위해 코딩 표준을 정의하는 것.

 

스크럼(SCRUM)

매일 정해진 시간과 장소에서 짧은 시간 동안 개발을 수행하는 것.

 

스크럼의 구성 요소

1. 백로그(backlog)

제품과 프로젝트에 대한 요구사항을 정리한다.

 

2. 스프린트(sprint)

2-4주의 짧은 개발 기간 동안 몰입하여 수행하는 것을 의미한다.

 

3. 스크럼 미팅(scrum meeting)

매일 15분 정도의 시간을 활용하여 구성원들이 진행하는 회의

 

4. 스크럼 마스터(scrum master)

프로젝트의 마스터를 일컫는다.

 

5. 스프린트 회고(Sprint Retrospective)

스프린트 주기를 되돌아 보며 규칙 준수 여부, 개선점을 확인한다.

 

비용산정 모형

 

하향식 

델파이 기법

전문가의 경헙적 지식을 통한 문제 해결 및 미래 예측을 위한 기법

 

상향식

LoC(Line of Code)

원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정해 예측치를 구해 비용을 산정하는 방식

 

Man Month

한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식

프로젝트 기간 = man month (Loc / 프로그래머이 월간 생산성) / 프로젝트 인력

 

COCOMO

보헴이 제안한 프로그램 규모에 따른 비용 산정하는 모형

 

조직형(Organic Model) - 5라인 이하

반 분리형(Semi-Detached Mode)  - 30만 라인 이상

임베디드형(Embeded Mode) - 30만 라인 이상

 

Putnam

개발 주기의 단계 별로 요구할 인력의 분포를 가정하는 방식

(생명주기 예측 모형, rayleigh-norden 곡선)

 

기능 점수(Function Point ; FP)

고객의 요구 기능에 따른 가중치를 부여하는 방식

 

일정 관리 모델

주 공정법(CPM)

여러 작업의 수행 순서가 얽혀 있는 Project의 일정을 계산

(임계 경로는 가장 오래 걸리는 경로)

 

PERT

일의 순서를 계획적으로 정리하기 위한 수렴 기법

비관치, 중간치, 낙관치의 3점 추정 방식을 이용한다.

 

주 공정 연쇄법(CCPM)

자원제약사항을 고려해 일정을 작성한다.

 

현행 시스템 파악

구성, 기능, 인터페이스를 파앙ㄱ하여 아키텍쳐 및 소프트웨어 구성을 파악하여 하드웨어 및 네트워크 구성을 파악하는 것

 

소프트웨어 아키텍쳐

소프트웨어 구성요소와 그 구성 요소의 특성 중 외부적인 특성, 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체를 의미한다.

 

소프트웨어 아키텍쳐 4 + 1 View

고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방법

 

유주케이스 뷰

유즈케이스나 아키텍쳐를 도출, 다른 뷰를 검증하는데 사용한다.

 

논리 뷰

시스템의 기능적인 요구사항을 말한다.

 

프로세스 뷰

시스템의 비기능적 요구사항을 말한다.

 

구현 뷰

모듈의 구성을 보여준다.

 

배포 뷰

어떻게 배치되는가

 

소프트웨어 아키텍쳐 유형

 

계층화 패턴

서로 대응하는 두 개의 계층 사이에서만 상호작용

 

클라이언트-서버 패턴

다수의 클라이언트와 하나의 서버가 대응하는 패턴

 

파이프-필터 패턴

데이터 스트림을 생성하고 처리하는 시스템에서 사용하는 패턴

 

브로커 패턴

분리된 컴포넌트들로 구성된 분산 시스템에서 사용되는 원격 서비스 실행을 통해 상호 작용이 가능함

 

MVC 패턴

모델

핵심 기능, 데이터의 보관

 

사용자에게 정보를 표시한다.

 

컨트롤러

사용자에게 요청을 입력 받아 처리한다.

 

소프트웨어 아키텍처 비용 평가 모델의 종류

 

SAAM

변경이 용이하고 기능성에 집중하는 모델

 

ATAM

아키텍처의 품질이 속성을 만족하는지 판단

 

CBAM

경제적 의사결정에 대한 요구를 충족하는지 확인한다.

 

ADR

응집도 평가 모델

 

ARID

특정 부분 품질 요소를 파악

 

 

 

 

 

 

 

 

 

 

728x90