Just do IT
article thumbnail

개발환경 구축

   - 응용 소프트웨어의 개발 편의성, 개발 성능 향상을 위해 하드웨어 및 소프트웨어 개발환경을 구축하는 것

 

   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. 배치 프로그램 구현
   - 필수요소: 자동화, 안정성, 대용량 데이터, 견고성, 성능

 

2. 프로그래밍 언어 활용

profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!