개발환경 구축
▶ 프로그램 개발 도구 4가지
- 구현 도구: 코드 작성, 디버깅, 수정 등의 작업을 하며, 개발에 가장 많이 사용됨
- 테스트 도구: 코드의 기능 검증과 품질 향상을 위해 사용
- 형상관리 도구: 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전관리를 위해 사용
- 빌드 도구: 코드 빌드 및 배포를 수행하며 구성요소들과 모듈들에 대한 의존성 관리 지원
▶ 빌드 도구 5가지
- Ant: XML 기반으로, 형식적 규칙이 없고 빌드 프로세스만 정의한다. 스크립트 재사용이 어렵다.
- make: 유닉스 계열 운영체제에서 주로 사용되며, Makefile을 참조하여 빌드한다.
- Maven: Java용 프로젝트 관리도구로 Ant의 대안으로 만들어졌다. POM.xml을 통해 라이브러리를 관리한다.
- Gradle: Groovy 기반의 오픈소스 빌드 자동화 도구로, 안드로이드 앱 개발 환경에서 사용한다. Ant과 Maven의 단점을 보완하였다.
- Jenkins: Java 기반의 오픈소스 빌드 자동화 도구로 SVN, Git 등 대부분의 형상 관리 도구와 연동이 가능하다. 가장 많이 사용된다.
▶ 서버 하드웨어 환경
- 웹 서버: HTTP를 이용하여 요청/응답을 처리한다. 웹 상의 정적 컨텐츠를 처리한다. Apache, IIS, Google, Nginx 웹 서버 등이 있다.
- 웹 어플리케이션 서버: Servlet, JSP 등 동적 컨텐츠를 처리한다. Tomcat, Weblogic, Jeus, Resin 등이 있다.
- DB 서버: 데이터를 수집, 저장한다. MySQL, Oracle, MS-SQL 등이 있다.
- 파일 서버: 서비스 제공을 목적으로 유지하는 파일들을 저장한다. AWS S3 등이 있다.
▶ 클라이언트 하드웨어 환경
- PC
- 웹 브라우저 화면
- 모바일 앱
▶ 소프트웨어 환경
- 운영체제: 하드웨어와 UI 담당
- JVM: Java 관련 응용프로그램을 가동하기 위한 환경
- 웹 서버: HTTP를 이용하여 요청/응답을 처리한다. 웹 상의 정적 컨텐츠를 처리한다. Apache, IIS, Google, Nginx 웹 서버 등이 있다.
- 웹 어플리케이션 서버: Servlet, JSP 등 동적 컨텐츠를 처리한다. Tomcat, Weblogic, Jeus, Resin 등이 있다.
▶ 형상 관리
소프트웨어 개발 과정에서 발생하는 모든 소프트웨어 변경 사항을 관리하기 위한 활동으로, 개발의 모든 단계에 적용된다.
▶ 형상 관리의 4가지 절차 및 특징
- 형상 식별: 형상 관리 대상 정의 및 식별
- 형상 통제: 변경 요구와 변경 활동을 통제하여 베이스라인이 잘 반영되도록 조정
- 형상 감사: 베이스라인의 무결성 평가하기 위해 확인, 검증
- 형상 기록: 형상 및 변경관리에 대한 각종 수행결과 기록 및 보고서 작성
공통 모듈 구축
▶ 모듈
프로그램의 기능을 독립적인 부품으로 분리한 것으로, 재사용 및 공유가 가능한 하나의 소프트웨어 단위
▶ 모듈화
소프트웨어의 성능을 향상시키고, 시스템의 디버깅, 시험, 통합 및 수정이 용이하도록 시스템을 분해하고 추상화하는 설계 기법
▶ 결합도 정의 및 종류 6가지
모듈 간의 상호 의존성을 뜻하며, 낮을수록 좋다.
낮은 결합도 ▶ 높은 결합도 순
- 자료 결합도 (Data Coupling): 모듈 호출 시 매개 변수로 데이터를 넘겨주는 경우
- 스탬프 결합도 (Stamp Coupling): 모듈 호출 시 매개변수로 자료구조(배열, 구조체) 를 넘겨주는 경우
- 제어 결합도 (Control Coupling): 한 모듈이 다른 모듈을 통제하거나 처리 기능이 두 모듈에 분리된 경우
- 외부 결합도 (External Coupling): 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈이 참조할 경우
- 공통 결합도 (Common Coupling): 모듈 밖에 선언된 전역변수를 참조하고 갱신하는 경우
- 내부 결합도 (Content Coupling): 다른 모듈 내부의 변수나 기능을 다른 모듈에서 사용하는 경우
▶ 응집도 정의 및 종류 6가지
모듈의 독립성, 모듈 내부 구성요소 간 연관성을 뜻하며, 높을 수록 좋다.
낮은 응집도 ▶ 높은 응집도 순
- 우연적 응집도 (Coincidetal Cohesion): 모듈 내부의 구성요소가 서로 아무 연관이 없을 경우
- 논리적 응집도 (Logical Cohesion): 모듈이 유사한 성격을 가진 처리 요소들로 구성되는 경우
- 시간적 응집도 (Temporal Cohesion): 특정 시간에 처리되는 기능들을 모아 모듈로 작성한 경우
- 절차적 응집도 (Procedural Cohesion): 모듈 안의 구성요소들이 기능을 순차적으로 수행할 경우
- 교환적(통신적) 응집도 (Communication Cohesion): 모듈 안의 구성요소들이 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 경우
- 순차적 응집도 (Sequential Cohesion): 모듈 내의 활동에서 나온 출력 데이터를 다음 활동의 입력 데이터로 사용할 경우
- 기능적 응집도 (Functional Cohesion): 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우
▶ DAO, DTO, VO
- DAO (Data Access Object): 데이터에 접근하는 역할을 수행하는 객체
- DTO (Data Transfer Object): 계층간 데이터 교환을 위한 객체
- VO (Value Object): DTO와 같지만, Read Only 속성을 가지고 있음
▶ 공통 모듈 구현 절차
DTO/VO ▶ SQL ▶ DAO ▶ Service ▶ Controller ▶ View
▶ 팬 인(Fan-In) / 팬 아웃(Fan-Out)
- 팬 인 (Fan-In): 어떤 모듈을 제어하는 모듈의 수
- 팬 아웃 (Fan-Out): 어떤 모듈이 제어하는 모듈의 수
배치 프로그램
▶ 배치 프로그램
사용자와의 상호작용 없이 일련의 작업을 작업단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는것
▶ 배치 스케줄러 정의 및 종류 2가지
일괄처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 스프링 배치 (Spring Batch): Spring Source와 Accenture사가 공동 개발한 오픈소스 프레임워크로, Spring Framework의 다양한 기능을 제공한다.
- 쿼츠 (Quartz): Spring Framweork에 플러그인 되어 개발되는 응용 프로그램들의 일괄 처리를 위한 기능을 제공하는 오픈소스 라이브러리
▶ Cron 표현식
스케줄러를 실행시키기 위해 작업이 실행되는 시간 밎 주기를 설정하는 표현식
디자인 패턴
▶ 디자인 패턴
소프트웨어 디자인에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책
▶ 생성 패턴 5가지
- Singleton: 전역 변수를 사용하지 않고 객체를 하나만 생성
- Abstract Factory: 구체적인 클래스에 의존하지 않고 연관되거나 의존적인 객체들의 조합을 만드는 패턴. Factory Method 패턴을 사용한다.
- Factory Method: 상위 클래스에선 객체 생성 인터페이스를 정의하고, 하위 클래스에서 인스턴스 생성
- Prototype: 원형 인스턴스를 복제하여 인스턴스 생성
- Builder: 복잡한 객체를 생성할 때 사용하는 패턴으로, 정의와 구현 클래스를 분리한다. Optional한 속성이 많을 때 주로 사용한다.
▶ 구조 패턴 7가지
- Adapter: 기존 생성된 클래스를 재사용할 수 있도록 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
- Bridge: 구현부에서 추상 계층을 분리하여 추상화된 부분과 구현 부분이 독립적으로 확장 가능한 패턴
- Composite: 객체들의 관계를 트리 구조로 구성하여 단일, 복합 객체를 동일하게 다루도록 하는 패턴
- Decorator: 기존의 클래스에 그때그때 필요한 기능을 추가해 나가는 패턴
- Facade: 많은 분량의 코드에 단순하게 접근이 가능한 인터페이스를 제공하는 패턴
- Flyweight: 다수의 유사한 객체의 생성/조작 비용을 절감할 수 있는 패턴
- Proxy: 접근이 힘든 객체에 대한 대역을 제공하는 패턴
▶ 행위 패턴 11가지
- Chain of Responsibility: 요청을 처리하는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
- Command: 하나의 추상 클래스에 메서드를 만들고 명령이 들어오면 명령에 맞는 서브 클래스가 실행되도록 하는 패턴
- Interpreter: 언어에 문법 표현을 정의하는 패턴
- Iterator: 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
- Mediator: 클래스 간의 상호작용을 캡슐화하여 한 클래스에서 위임해 처리하는 패턴
- Memento: Undo 기능 개발 시 사용하는 패턴
- Observer: 객체의 상태가 바뀌면 다른 객체들에게 통보되고 자동으로 내용이 갱신되는 패턴
- State: 동일한 동작을 객체의 상태에 따라 다르게 처리할 때 사용하는 패턴
- Strategy: 알고리즘 군을 정의하여 필요할 때 알고리즘을 선택하여 사용하는 패턴
- Template Method: 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 패턴
- Visitor: 특정 클래스가 다른 클래스들에 방문하여 작업을 수행하는 패턴
'정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 6. 화면 설계 (0) | 2021.11.15 |
---|---|
[정보처리기사 실기] 5. 인터페이스 구현 (0) | 2021.11.12 |
[정보처리기사 실기] 3. 통합 구현 (0) | 2021.10.07 |
[정보처리기사 실기] 2. 데이터 입출력 구현 (0) | 2021.10.04 |
[정보처리기사 실기] 1. 요구사항 확인 (0) | 2021.09.26 |