■ 개발 환경 구축 도구 (하드웨어)
- 웹 서버 (정적 파일들을 제공)
- 웹 애플리케이션 서버 (WAS : Web Application Server - 동적 서비스를 제공)
- 데이터베이스 서버 (DB Server - 데이터베이스와 이를 관리하는 DBMS를 운영)
- 파일서버 (File Server - DB에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버)
■ 개발 환경 구축 도구 (개발 소프트웨어)
- 구현 도구 : 코드의 작성, 편집, 디버깅 등 ex) Eclipse / Visual Studio Code / InteliJ / NetBeans 등
* IDE (Integrated Development Environment) : 통합 개발 환경
- 테스트 도구 : xUnit / Spring Test 등
- 형상관리 도구 : CVS / Subversion / Git 등
CVS | SVN | GIT |
파일단위 커밋 안정적이며 백업용량적게 차지 커밋실패싯 롤백불가 느린처리속도 파일이름 변경불가 |
CVS 단점보안 중앙 저장소형태 커밋 실패시 롤백가능 .svn 디렉토리로 지저분 이진파일은 머지불가 개별 개발자 이력기록이 불가 |
분산저장소 타입 (분산형 버전관리 시스템) 오프라인 작업가능 개발자별 History 가능 수많은 기능으로 사용이 복잡 사용미숙시 Conflict 발생 잦음 |
- 빌드 도구 : Ant, Maven , Gradle 등
- 설계/모델링 도구 : StarUML / DB Designer / ArogoUML 등
- 요구사항 관리도구 : Trello / OSRMT / JFeature 등
■ CI (Continuous Integration)
지속적인 통합 / 일련의 작업을 특정 시점이 아닌, 지속적으로 수행하는 것을 뜻함
CI도구는 형상관리도구, 빌드도구, 테스트 도구와 호환이 중요하다
대표적인 CI도구로는 Jenkins(오픈소스), Bamboo(상용) 등이 있다.
- CI는 모든 개발을 완료한 뒤에 통합하고 품질을 고려하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있다.
■ 시스템 소프트웨어
운영체제OS / JVM / Web Server / WAS (Web Application Server) / DBMS
■ 형상관리 (SCM : Software Configuration Management)
[개념] 소프트웨어 개발에 있어 모든 변경사항을 체계적으로 추적, 통제, 감사, 기록하는 활동
형상항목을 식별하여 그 기능적, 물리적 특성을 문서화하고, 그러한 특성에 대한 변경을 제어하며, 변경처리 상태를 기록 및 보고하고, 명시된 요구사항에 부합하는지 확인하는 기술적이고 관리적인 감독, 감시활동
■ 형상관리 절차 4단계 [ 식 통 감 기 ]
형상 식별 (베이스라인 기준을 정하는 활동)
-> 형상 통제 (의 개념을 쓰라 -20년 3회출제)
: (=변경 관리) 형상 변경 제안을 검토, 승인하여 현 baseline에 반영할 수 있도록 통제
-> 형상 감사 (무결성을 평가하기위해 확인(Validation), 검증(Varification)과정을 통해 공식적으로 승인하는 작업)
-> 형상 기록/보고 (결과를 기록 및 관리하고 보고서 작성)
■ 형상관리 특징
프로젝트 생명주기 모든 단계에서 수행 되며 유지보수 단계에서도 수행된다.
개발 전체의 비용을 줄이고, 개발 과정 중 여러 문제발생을 최소화하도록 보증학는 것이 목적이다.
■ 공통 모듈이란?
정보 시스템 구축 시 자주 사용하는 기능들로써 재사용이 가능하게 패키지로 제공하는 독립된 모듈을 의미
■ 공통 모듈 명세작성 원칙 [ 정 명 완 일 추 ]
- 정확성 : 실제 시스템 구현시 필요여부를 알 수 있도록 정확히 작성
- 명확성 : 해당 기능에 대해 일관성있고 명확하게 하나로 해석할 수 있도록 작성
- 완전성 : 시스템 구현 시 요구사항과 필요한 모든 것을 기술
- 일관성 : 공통 기능 사이에 충돌이 발생하지 않도록 작성
- 추적성 : 해당 기능에 대한 유기적 관계에 대한 식별이 가능하도록 작성
■ 공통 모듈 테스트
(1) 테스트케이스 (Test Case) 개념
요구사항을 준수하는지 검증하기 위해 테스트 조건, 입력 값, 예상 출력 값 및 수행한 결과 등의 테스트 조건을 명세한 것
테스트 기반에 따른 테스트
- 명세기반 테스트 : 명세를 테스트케이스로 만들어 Test
- 구조기반 테스트 : 내부의 논리 흐름에 따라 test
- 경험기반 테스트 : 유사 SW나 기술들의 test
(2) 테스트 프로세스
< 결합도는 낮을 수록 응집도는 높을 수록 좋다.
- 외운 순서는 결합도 낮-> 높 / 응집도 높 -> 낮 >
■ 결합도 [ 자 스 제 외 공 내 ]
- 자료 결합도 (Data Coupling) : 모듈간 전달되는 파라미터를 통해서만 상호작용 발생
- 스탬프 결합도 (Stamp Coupling) : 모듈간 배열이나, 객체, 구조 등이 전달되는 경우 (배열이나 오브젝트, 스트럭쳐)
- 제어 결합도 (Control Coupling) : 단순처리값만이 아니라 어떻게 처리해야하는지 명시된 제어요소가 전달
- 외부 결합도 (External Coupling) : 어떤 모듈에서 반환한 값을 다른 모듈에서 참조 사용
- 공통 결합도 (Common Coupling) : 파라미터가 아닌 모듈밖의 전역변수를 참조하고 갱신하는식으로 상호작용
- 내용 결합도 (Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 (직접 참조, 사용)
■ 응집도 [ 기 순 통 절 시 논 우 ]
- 기능적 응집도 (Functional Cohension) : 하나의 기능만 수행하는 모듈
- 순차적 응집도 (Sequential Cohension) :모듈 내에서 한 활동으로 부터 나온작업 결과를 -> 다른 모듈의 입력값으로 사용
- 통신적 응집도 (Informational Cohension) : 동일한 입력과 출력을 사용해 다른 기능을 수행하는 활동이 모여있을 경우
- 절차적 응집도 (Procedual Cohension) : 모듈안의 구성요소들이 그 기능을 순차적으로 수행하는 경우
- 시간적 응집도 (Temporal Cohension) : 같은 시간대에 처리되어야 하는 활동들을 한 모듈에서 처리
- 논리적 응집도 (Logical Cohension) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
- 우연적 응집도 (Coincidental Cohension) : 관련 없는 작업들을 한 모듈에 모은 경우
■ 모듈화의 목표
정의 : 소프트웨어의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 분해하는 것으로 아래가 목표다.
(1) 모듈간 결합도 최소화 (Loose Coupling)
(2) 모듈내 응집도 최대화
■ 팬인(Fan-In) / 팬아웃(Fan-Out)
모듈에 들어오는거 / 아웃은 나가는거
■ 프로세스란?
한 개 이상의 정보 자원을 입력을 통해 가치있는 산출물을 제공하는 모든 관련 활동들의 집합
■ 프레임워크의 특징 [ 모 재 확 제 ]
모듈화 / 재사용성 / 확장성 / 제어의 역흐름 (IoC - Inversion of Control)
* 모듈화 = 캡슐화
* 재사용성 : 프로임워크는 재사용 가능한 모듈들을 제공함으로써 개발자의 생산성 향상
* 확장성 = 다형성
* 제어의 역흐름 : 개발자가 관리하고 통제해야하는 객체들의 제어권한을 프레임워크에 넘김으로써 생산성을 향상시킴
■ DBMS 접속(Connection) 기술
- JDBC (Java DataBase Connectivity) : 자바에서 데이터베이스를 사용할 수 있도록 연결해주는 응용 프로그램 인터페이스
- ODBC (Open DataBase Connectivity) : 윈도우즈 응용프로그램에서 다양한 DBMS에 접근하여 사용할 수 있도록 개발한 표준 개방형 응용 프로그램 인터페이스 규격 / 개발 언어에 관계없이 사용할 수 있음
- MyBatis : JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임 워크 / SQL을 거의 그대로 사용가능
■ 영속계층의 이해
- DAO (Data Access Object) : DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담
- DTO (Data Transfer Object) : 프로세스 사이에서 데이터를 전송하는 객체를 의미
(스스로의 데이터를 저장 및 회수하는 기능을 제외하고 아무기능도 없다는 것이 DAO와의 차이)
- VO (Value Object) : 간단한 독립체를 의미하는 작은 객체
(DTO와 동일한 개념이지만 read only 속성을 가짐)
■ 서버 개발 과정 (내가하던거랑 반대로하네.ㅋㅋ)
DTO/VO 구현(데이터 교환객체 만듬)
-> SQL 구현(데이터 SQL문 생성)
-> DAO 구현(데이터 실제조작코드만들기)
-> Service 구현(사용자 요청응답로직구현)
-> Controller 구현 (사용자의 요청에 적절한 서비스 호출해 그 결과를 사용자에게 반환하는 코드 구현 )
■ 배치 스케쥴러 특징 [ 대 자 견 신 안 성 ]
대용량 데이터 / 자동화 / 견고성 / 신뢰성 / 안전성 / 성능
* 자동화 : 심각한 오류 상황 이외는 사용자 개입없이 동작해야한다.
* 견고성 : 유효하지 않은 데이터 처리에도 비정상적인 동작이 발생해서는 안된다.
* 안정성 : 어떤 문제, 언제 발생했는지 추적이 가능해야한다.
■ 배치 프로그램 - 주요배치 스케줄러
(1) 스프링 배치
(2) Quartz : 스프링 프레임워크로 개발되는 응용프로그램 일괄처리를 위한 다양한 기능을 제공하는 오픈소스 라이브러리
- Scheduler, Job, Job Detail, Trigger
(3) Cron : 리눅스의 스케쥴러 도구로 Crontab 명령어를 통해 작업을 예약할 수 있음
■ 디버그 (Debug) = 디버깅(Debugging) : 논리적인 오류를 찾아내는 과정
■ 디버거 (Debugger) : 버그를 참조 수정하기 위한 필수적인 도구
■ 배포 프로세스
빌드내용 식별 -> 패키징 도구식별(=패키징 도구선정) -> DRM 흐름을 확인하여 패키징 수행 -> 패키징 도구설치 -> 배포 작업 -> 정상 배포확인
■ 인터페이스 Interface 특징
1) 멤버변수를 가질 수 없다.
2) 함수는 선언만 할 수 있고, 구현은 불가능
3) 자체로 객체를 생성할 수 없다. (인터페이스를 구현한 클래스를 참조하는 것은 가능)
- 구현객체에서는 implements 사용
■ 추상클래스 abstract 특징
1) 직접 객체로 만들 수 없다.
2) 자식 클래스들이 공통으로 사용하는 기능을 구현하여 상속받을 수 있게한다.
3) 자식 클래스에게 구현하도록 강제한다.
[개념] 공통 사용 부분은 부모클래스(추상클래스)에서 구현하고 상세구현이 다른 메소드는 자식클래스에서 각각 정의
■ 접근제한자
public : 모든 범위
protected : 상속관계 또는 동일 패키지
default : 동일 패키지
private : 동일 클래스
[클래스 다이어그램에서 표기법]
+ : public
# : protected
~ : default (이름은 package)
- : private
■ 정보처리기사에서 가장 자주 출제되는 정렬
(1) 버블 정렬 : "앞의 수가 뒤의 수보다 크다면, 둘의 위치를 바꿔라"
int temp;
for(int i=0; i<n; i++){
for(int j=0; j<n-1; j++){
if(a[j+1] < a[j]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
(2) 선택 정렬(Selection Sort) : 최소값을 저장하는 코드
for( int i=0; i<n-1; i++{
int min = i;
for(int j = j+1; j<n; j++){
if(a[j] < a[min){
min = j;
}
}
if(min != i){
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
(3) 삽입 정렬 (값을 시프트하는 정렬은 삽입정렬이 유일)
int n;
for(int i=1; i<n; i++){
int temp = a[i];
int j = i-1;
while(j >=0 && a[j] > temp){
a[j+1] = a[j];
j--;
}
a[j+1] = key;
} // → 우측으로 시프트(Shift)하라는 의미
■ C 출력문
printf("%d", 10); → 10
printf("%f", 10.1 → 10.100000
printf("%s", "ttt") → ttt
printf("%04d", 19) → 0019
printf("%.2f", 0.1234) → 0.12
printf("\n") → 줄바꿈 이거 없이 연달아 printf *2번해도 한줄로 나온다.
■ python (인터프리터 형태의 언어이면서 동시에 '객체지향언어')
- { } 집합자료형(Set, Dictionary) # ( ) 튜플은 수정불가(읽기전용이다.)
ex) a[1] = 'aaa' #컴파일에러 - 튜플은 2개이상 출력시 ('a','b') 괄호를 포함하고 출력된다.
- 집합자료형(Set) : 순서 없이 사용된다. / 중복을 허용하지 않는다. { }
- 클래스 선언 class Aaa;
- 함수 선언 def add(self, x, y):
return x+y
* 파이썬의 멤버함수는 첫 번째, 인자로 self가 들어간다. 클래스 블록 내부에 있는 함수의 첫 번째 인자에
self가 없다면 객체생성 없이 사용할 수 있는 클래스 함수 또는 정적 함수로 선언된다.
* 파이썬의 함수는 리턴값을 함수 앞에 표기하지 않고, 구현부에 return의 유무로 리턴값이 있는 함수인지, void형인지 판단한다.
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사_실기] Chapter 6. 화면 설계 (0) | 2020.10.11 |
---|---|
[정보처리기사_실기] Chapter 5. 인테페이스 구현 (0) | 2020.10.11 |
[정보처리기사_실기] Chapter 3. 통합 구현 (0) | 2020.10.10 |
[정보처리기사_실기] Chapter 1. 요구사항 확인 (0) | 2020.10.10 |
[정보처리기사_실기] 기타 정리&암기 (0) | 2020.10.07 |