개발환경 구축
- 응용 소프트웨어의 개발 편의성, 개발 성능 향상을 위해 하드웨어 및 소프트웨어 개발환경을 구축하는 것
1) 개발환경 구축 도구의 분류
- 빌드 도구
- 구현 도구
- 테스트 도구
- 형상 관리 도구
2) 개발환경 구축 절차
- 프로젝트 요구사항 분석
- 필요 도구 설계
- 개발언어 선정
- 구현도구 선정
- 빌드, 테스트 도구 선정
서버 개발 프레임워크
1) 프레임워크 (Framework)
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀
- 사례: 전자정부 프레임워크, 스프링 프레임워크 등
2) 프레임워크의 특징
- 모듈화 (Modularity)
- 재사용성 (Reusability)
- 확장성(Extensibility)
- 제어의 역행(IoC: Inversion of control)
재사용(Reuse)
1) 재사용의 유형
- 함수와 객체 재사용
- 컴포넌트 재사용
- 애플리케이션 재사용
2) 재사용 프로그래밍
- 객체지향 프로그래밍
- 제네릭 프로그래밍
- 자동 프로그래밍
- 메타 프로그래밍
3) 재사용의 사례
- 라이프러리 (Library)
- 프레임워크 (Framework)
- 소프트웨어 아키텍쳐 (Software Architecture)
모듈화 (Modularization)
- 모듈의 독립성은 결합도와 응집도에 의해 측정
- 독립성 높이려면 결합도를 약하게하고 응집도를 강하게 하며 모듈의 크기를 작게 해야 한다
1) 모듈화의 장점
- 프로그램의 효율적인 관리 및 성능 향상 가능
- 소프트웨어 이해의 용이성 증대와 복잡성 감소
- 기능 분리 가능, 단순한 인터페이스
- 모듈의 재사용 가능으로 개발과 유지보수 용이
2) 모듈 설계 유의사항
- 모듈 간의 결합도 약화, 모듈 독립성 향상
- 복잡도와 중복성 감소, 일관성 유지
- 모듈의 기능은 예측 가능해야 하며 지나치게 제한적이면 안됨
- 유지보수가 용이
3) 모듈화의 유형
구분 | 유형 |
설계 측면 | 모듈 Module |
컴포넌트 Component | |
서비스 Service | |
구현 측면 | 함수 Function |
매크로 Macro | |
인라인 Inline |
결합도 (Coupling)
- 두 모듈간의 상호작용 또는 의존도 정도를 나타내는 것
- 모듈 간의 결합도 감소 -> 모듈 독립성 향상
- 결합도 순서 (강 > 약 / 내공부제스자)
내용,Content > 공유,Common > 외부,External > 제어,Control > 스탬프,Stamp > 데이터(자료)
1) 결합도의 유형
구분 | 설명 |
내용 결합도 | - Content - 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도 - 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도 |
공통 결합도 | - Common - 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용 하는 경우의 결합도 |
외부 결합도 | - External - 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 결합도 |
제어 결합도 | - Control - 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통한사는 경우 - 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 분여하는 권리 전도 현상이 발생하게 되는 결합도 |
스탬프 결합도 | - Stamp - 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도 |
자료(데이터) 결합도 | - Data - 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도 |
응집도 (Cohesion)
- 응집도의 유형 (낮 < 높)
우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적
- 응집도 ▼, 독립성 ▼
- 응집도 ▲, 독립성 ▲, 유지보수 용이
1) 응집도의 특징
- 유사기능 영역구성
- 단일 책임할당
- 함수 간 상호협력
2) 응집도의 유형
구분 | 설명 |
우연적 응집도 | - 모듈 내부의 구성요소들이 연관이 없을 경우의 응집도 |
논리적 응집도 | - 유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들이 한 모듈에서 처리되는 경우의 응집도 |
시간적 응집도 | - 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도 |
절차적 응집도 | - 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도 |
통신적 응집도 | - 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우의 응집도 |
순차적 응집도 | - 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용하는 경우의 응집도 |
기능적 응집도 | - 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
보안 취약성 식별
- 응용 프로그램의 보안 취약점, 위협 요소, 허점을 탐지하는데 도움을 준다
1) 침투 테스트 (Penetration Test)
- 시스템을 안전하게 만들기 위해 전문 해커가 공격자보다 먼저 시스템의 취약점을 찾기 위한 방법
2) 침투 테스트의 절차
- 정찰 > 탐색 > 접근권한취득 > 엑세스유지 > 추적방지
3) 취약성에 따른 공격기법
- 서비스 거부(Dos), 코드 실행, 버퍼 오버플로우, 정보 수집, 권한 상슨, SQL 삽입,
크로스 사이트 스크립팅, 사이트 간 요청 위조 공격, 디렉터리 접근, FTP 바운스 공격
유형 | 설명 |
서비스 거부 (Dos) | - 무의미한 서비스 요청 등의 반복을 통해 시스템의 가용자원을 소모시켜 서비스 가용성을 저하시키는 공격기법 |
버퍼 오버 플로우 | - 정해진 메모리의 범위를 넘치게 해서 원래의 리턴 주소를 변경시켜 임의의 프로그램이나 함수를 실행시키는 시스템 해킹 기법 |
SQL 삽입 | - 데이터베이스와 연동된 웹 애플리케이션에서 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람할 수 있는 공격기법 |
크로스 사이트 스크립팅(XSS) | - 공격자가 게시판에 악성 스크립트를 작성, 삽입하여 사용자가 보았을 때 이벤트를 발생시켜 사용자의 쿠키정보, 개인정보 등을 특정 사이트로 전송하는 공격기법 |
디렉토리 접근 | - HTTP 기반의 공격으로 엑세스가 제한된 디렉터리에 접근하여, 서버의 루트 디렉터리에서 외부 명령을 실행하여 파일, 웹 소스등을 강제로 내려 받을 수 있는 공격기법 |
FTP 바운스 공격 | - FTP 서버가 데이터를 전송할 때 목적지가 어디인지 검사하지 않는 설계상의 문제점을 이용한 공격기법 |
API (Application Programming Interface)
- 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을
제어할 수 있게 만든 인터페이스
1) API 유형
- 오픈 API (Open API), 비공개 API (Close API)
2) API 종류
- 윈도즈 API, 웹 API, 오픈 API, 자바 API
배치 프로그램 구현
- 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일을 처리하는 방법
1) 배치 프로그램의 필수 요소
필수 요소 | 내용 |
자동화 | - 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다 |
안정성 | - 어떤 문제가 생겼는지 언제 발생했는지 등을 추적할 수 있어야 한다 |
대용량 데이터 | - 대용량 데이터는 대용량의 데이터를 처리할 수 있어야 한다 |
견고성 | - 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 한다 |
성능 | - 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 한 |
정리하기
1. 개발환경 구축
- 응용 소프트웨어의 개발 편의성, 개발 성능 향상을 위해 하드웨어 및 소프트웨어 개발환경을 구축하는 것
2. 서버개발 프레임워크
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀
3. 재사용 (Reuse)
- 함수, 객체, 컴포넌트, 애플리케이션 재사용
4. 모듈화 (Modularization)
- 독립성 높이기 : 응집도 높게(강하게), 결합도 낮게(약하게), 모듈의 크기는 작게
5. 결합도 (Coupling)
- 두 모듈 간의 상호작용, 의존도 정도
- 내용 > 공통 > 외부 > 제어 > 스템프 > 자료 결합도
6. 응집도 (Cohesion)
- 응집도와 독립성은 비례
- 우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적
7. 보안 취약성 식별
- 침투 테스트(Penetration Test)
- 절차: 정찰 > 탐색 > 접근권한취득 > 엑세스유지 > 추적방지
- 공격 기법: 서비스 거부(Dos), 코드 실행, 버퍼 오버플로우, 정보 수집, 권한 상슨, SQL 삽입,
크로스 사이트 스크립팅, 사이트 간 요청 위조 공격, 디렉터리 접근, FTP 바운스 공격
8. API (Application Programming Interface)
- 오픈 API, 비공개 API
- 윈도즈 API, 웹 API, 오픈 API, 자바 API
9. 배치 프로그램 구현
- 필수요소: 자동화, 안정성, 대용량 데이터, 견고성, 성능
'정보처리기사 > 4과 프로그래밍 언어 활용' 카테고리의 다른 글
4. 네트워크 기초 활용 (0) | 2023.04.04 |
---|---|
3. 응용 SW 기초 기술 활용 (2) (0) | 2023.04.03 |
3. 응용 SW 기초 기술 활용 (1) (0) | 2023.04.02 |
2. 프로그래밍 언어 활용 (0) | 2023.04.01 |