🚀 What I Studied/정보처리기사

[정보처리기사] 실기 8단원 '서버 프로그램 구현' 정리

박낑깡이 2022. 10. 6. 00:14

형상 통제

: 형상 항목의 버전 관리를 위해서 변경 여부와 변경 활동을 통제하는 활동

 

 

 

개발 도구 분류 (빌구테형)

빌드 도구 - 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
구현 도구 - 코드의 작성과 디버깅, 수정 등과 같은 작업과 구현소프트웨어가 어떤프로그래밍 언어로 개발되는지 선택
- 프로그램을 개발할 때 가장 많이 사용되는 도구
테스트 도구 - 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 기능
형상 관리 도구 - 개발자들이 작성한 코드의 리소스 등 산출물에 대한 버전 관리를 위한도구
- 프로젝트 진행 시 필수로 포함되는 도구
ex) Svn, Git

 

 

 

서버 하드웨어 개발환경

웹 서버 - HTTP를 이용한 요청/응답을 처리
- 웹 상의 정적 콘텐츠(CSS, JS, image)를 처리
ex) Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx
웹 애플리케이션 서버 (WAS) - 동적 콘텐츠(Servlet, JSP)를 처리하기 제공하기 위해 사용
ex) Tomcat, Weblogic, Jeus, Resin
데이터베이스 서버 - 데이터 수집, 저장을 위한 용도로 사용
- 연계되는 주요 DBMS로 MySql, Oracle, MS-SQL, DB2
파일 서버 - 물리 저장장치를 활용한 서버
- 대용량 HDD, SDD 등의 장치가 존재

 

 

클라이언트 하드웨어 개발환경

클라이언트 프로그램 - 설치를 통해 사용자와 커뮤니케이션하는 프로그램
ex) Visual Basic, Delphi
웹 브라우저 - 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
- 웹 사이트
모바일 앱 - 모바일 디바이스에 설치되어 활용되는 애플리케이션
- App Store, Android market에서 다운 가능
모바일 웹 - 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공
- 모바일에 최적화되어 제공되는 웹사이트가 해당

 

 

소프트웨어 개발환경

운영체제 - 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
미들웨어 - 웹 서비스는 WEB, WAS 서버를 설치하여 사용자 요구사항에 적합한서비스 제공
- 자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용
DBMS - 데이터의 저장 및 활용을 위해 DBMS를 설치

 

 

 

응집도 ((낮음 : 나쁜 품질) -> 우논시절 통순기 -> (높음 : 좋은 품질))

- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도

- 정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미

우연적 응집도
(Coincidental)
각 구성요소가 연관이 없을 경우
논리적 응집도
(Logical)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서처리
시간적 응집도
(Temporal)
특정 시간에 처리되어야 하는 활동들
절차적 응집도
(Precedural)
기능을 순차적으로 수행할 경우의 응집도
통신적 응집도
(Communication)
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동
순차적 응집도
(Sequential)
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
기능적 응집도
(Functional)
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

 

 

결합도 ((높음 : 낮은 품질) -> 내공 외제 스자 -> (낮음 : 높은 품질))

내용 결합도
(Content)
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
- 직접적으로 다른 모듈의 내용 참조
공통 결합도
(Common)
- 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신
외부 결합도
(External)
- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우
제어 결합도
(Control)
- 다른 모듈의 내부 논리 조직을 제어하기 위한 목적
- 권리 전도 현상이 발생
스탬프 결합도
(Stamp)
- 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우
- 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도
자료 결합도
(Data)
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우
- 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는다.

 

 

공통 모듈 테스트

- 공통 모듈 테스트를 위해 통합 개발환경 또는 IDE(Integrated Development Environment) 도구를 활용하여 개별 공통 모듈에 대한 디버깅(Debugging)을 수행

- 공통 모듈 태스트는 화이트박스 기법을 활용

- 대표적인 단위 테스트 도구인 jUnit을 활용하여 테스트 코드를 구현

 

 

 

모듈

: 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체

 

 

형상 관리

: 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동

 

 

 

형상 관리의 절차 (식통감기)

형상 식별 - 형상 관리 대상을 정의 및 식별하는 활동
- 추적성 부여를 위해 ID와 관리번호를 부여
- 변경 관련 이슈 발생 시 ID와 관리번호를 이용해 추적
형상 통제 - 형상 항목의 버전 관리를 위한 형상통제위원회 운영
- 변경요구 관리, 변경제어
- 베이스라인에 대한 관리
형상 감사 - 소프트웨어 베이스라인의 무결성 평가
- 베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록 - 소프트웨어 향상 및 변경관리에 대한 각종 수행결과를 기록
- 형상결과 보고서 작성

 

 

 

베이스 라인

: 개발과정의 각 단계별 산출물을 검토, 평가, 조정, 처리 등의 변화를 통제하는 시점의 기준

 

 

 

추상화(Abstraction)

: 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 객체 지향적 관점에서는 클래스를 정의하는 것이 추상화

 

 

 

모듈화

: 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 용이하게 하여 프로그램을 효율적으로 관리할 수 있도록 시스템을 분해하고 추상화 하는 기법

 

 

 

테스트 스텁(Stub)  또는 스텁

- 다른 프로그래밍 기능을 대리하는 코드

- 기존 코드를 흉내 내거나, 아직 개발되지 않은 코드를 임시로 대치하는 역할을 수행

- 모듈 및 모든 하위 컴포넌트를 대신하는 더미 모듈

 

 

 

MVC 패턴

: 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 패턴

모델
(Model)
- 애플리케이션이 무엇을 할 것인지를 정의
- 내부 비즈니스 로직을 처리하기 위한 역할

(View)
- 화면에 무엇인가를 보여주기 위한 역할
- 모델, 컨트롤러가 보여주려고 하는 것들을 화면에 처리
컨트롤러
(Controller)
- 모델이 어떻게 처리할지를 알려주는 역할
- 뷰에 명령을 보내어 화면 요청 결과를 전달

 

 

배치 프로그램

:  사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리하는 프로그램

DAO
(Data Access Object)
특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터 조작
DTO
(Data Transfer Object)
프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장 / 회수 외에 다른 기능 없음
VO
(Value Object)
간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가짐

 

 

 

배치 스케줄러

스프링 배치
(Spring Batch)
스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
쿼츠 스케줄러
(Quartz Scheduler)
스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러

 

 

 

~ 해당 포스팅은 업데이트 중 ~