코딩뿌셔

[4과목] 프로그래밍 언어 활용 - 서버프로그램 구현 본문

자격증/정보처리기사

[4과목] 프로그래밍 언어 활용 - 서버프로그램 구현

He__o 2022. 7. 3. 00:55

01 개발환경 구축

02 공통 모듈 구현

03 배치 프로그램 구현


01 개발환경 구축

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

▶ 개발환경 구축 도구

구분 설명
빌드 도구 작성한 코드의 빌드 및 배포 수행하며 각각 구성요소와 모듈에 대한 의존성 관리 지원
구현 도구 코드 작성, 디버깅, 수정 등 작업에 사용하며 프로그램 개발 시 가장 많이 사용
테스트 도구 코드 기능 검증, 전체 품질 향상을 위해 사용하며 코드테스트, 테스트계획, 수행 및 분석 등 작업 수행
형상 관리 도구 개발자 작성 코드와 리소스 등 산출물에 대한 버전 관리 도구, 프로젝트 진행 시 필수 포함

 

01-1 개발환경 구성요소

▶ 하드웨어 개발환경

▷ 서버 하드웨어

구분 설명 예시
웹 서버 HTTP를 통해 요청하는 HTML문서나 오브젝트를 전송 Apache HTTP 서버, Microsoft
Internet Information 서비스,
Google Web 서버
웹 애플리케이션 서버 사용자에게 동적 서비스를 제공하기 위한 데이터 처리 수행,
웹-데이터베이스 서버 / 웹-파일 서버 사이에서 인터페이스 역할
Oracel WebLogic, Jeus
Apache Tomcat, IBM WebSphere
데이터베이스 서버 데이터베이스와 이를 관리하는 DBMS 운영 MySql / Oracle / MS-sql 서버
파일 서버 파일 저장 하드웨어, 물리 저장 장치 활용(대용량 HDD, SSD) AWS S3

 

▶ 소프트웨어 개발환경

구분 설명
운영체제 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
미들웨어 웹 서버, JVM과 같은 개발환경의 구성요소로 활용
DBMS 데이터 저장 및 활용을 위해 DBMS 설치

 

01-2 서버 개발 프레임워크

▶ 프레임워크(Framework)

  : 소프트웨어 설계와 구현을 재사용 가능하도록 일련의 협업화된 형태로 제공하는 틀

  : 재사용 가능하도록 소프트웨어 구성에 필요한 기본 제공(정보 시스템의 개발 및 운영을 지원하는 도구 및 가이드 포함)

 

▷ 특징

특징 설명
모듈화
(Modularity)
구현을 인터페이스 뒤에 감춰 모듈화를 강화, 설계와 구현 변경에 따르는 영향 최소화
재사용성
(Reusability)
인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 컴포넌트 정의 → 재사용성 높임
확장성
(Extensibility)
다형성을 통해 애플리케이션이 프레임워크의 인터페이스 확장
제어의 역행
(Inversion of Control)
전체 애플리케이션 처리 흐름 제어

 

▷ 구성요소

특징 설명
개발환경 설계, 구현, 테스트 등 개발에 필요한 지원 도구 모음
실행환경 자바 기반 응용시스템 개발 시 필수적 기능으르 패턴화해 미리 구현한 라이브러리
운영환경 표준 프레임워크 기반 개발 시스템에 대한 운영 시 필요한 의사소통, 모니터링 도구
관리환경 표준 프레임워크에 대한 기술 지원, 업그레이드 관리

 

02 공통 모듈 구현

▶ 재사용(Reuse)

  :  목표 시스템의 개발시간 및 비용 절감을 위해 검증된 기능 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업(기존 소프트웨어, 소프트웨어 지식 활용 → 새로운 소프트웨어 구축)

 

▷ 유형

함수와 객체 재사용 컴포넌트 재사용 애플리케이션 재사용

 

▷ 프로그래밍 기법

객체지향 제네릭 자동 메타

 

▶ 모듈화(Modularization)

  : 프로그램 개발 시 생산성과 최적화, 관리에 용이하게 기능 단위로 분할하는 기법

 

▷ 장점

  - 프로그램의 효율적인 관리 및 성능 향상 가능

  - 소프트웨어 이해의 용이성 증대, 복잡성 감소

  - 기능의 분리가 가능하며 인터페이스 단순해짐

  - 재사용 가능, 개발과 유지보수 용이

 

▷ 원리

원리 설명
정보 은닉
(Intformation Hiding)
어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐
분할과 정복
(Divide & Conquer)
복잡한 문제를 분해, 모듈 단위로 문제 해결
데이터 추상화
(Data Abstraction)
각 모듈 자료 구조를 액세스하고 수정하는  함수 내 자료 구조의 표현 내역 은폐
모듈 독립성
(Module Independency)
낮은 결합도와 높은 응집도를 가짐

 

▷ 측정지표(결합도, 응집도) 및 모듈 설계 유의사항

  - 모듈의 독립성을 높이려면 모듈 결합도를 약하게, 응집도를 강하게, 모듈 크기를 작게 만들어야 함

  - 효과적 모듈 설계를 위해선 복잡도와 중복성을 줄이고 일관성 유지해야 함

  - 모듈 기능은 예측 가능해야 하며 지나치게 제한적이면 안됨

  - 모듈 수가 증가하면 상대적 각 모듈 크기가 커짐 → 모듈 사이 상호교류 감소로 과부하 현상 발생

  - 개별 모듈은 독립적으로 주어진 역할만 수행, 타 모듈에 의존성이 높지 않아야 함

  - 좋은 모듈화란 용도에 맞게 잘 구분된 기능을 가진 모듈들로 세분화하는 것임

 

 

▷ 결합도(Coupling)

결합도 높음  ←--------------------------------------------------------------------------------------------------------------------→  결합도 낮음
내용
(Content)
공통
(Common)
외부
(External)
제어
(Control)
스탬프
(Stamp)
자료
(Data)

  ※ 특징 : 모듈 연관성 없음, 인터페이스 의존성, 복잡성 감소, 파급효과 최소화

 

▷ 응집도(Cohesion)

응집도 높음  ←--------------------------------------------------------------------------------------------------------------------→  응집도 낮음
기능적
(Functional)
순차적
(Sequential)
통신적
(Communication)
절차적
(Procedural)
시간적
(Temporal)
논리적
(Logical)
우연적
(Coincidental)

  ※ 특징 : 유사기능 영역구성, 단일 책임할당, 함수 간 상호협력

 

03 배치 프로그램 구현

▶ 배치 프로그램(Batch Program)

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

 

▷ 필수 요소

자동화 안정성 대용량데이터 견고성 성능

 

Comments