코딩뿌셔
[4과목] 프로그래밍 언어 활용 - 서버프로그램 구현 본문
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)
: 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
▷ 필수 요소
자동화 | 안정성 | 대용량데이터 | 견고성 | 성능 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[4과목] 프로그래밍 언어 활용 - 네트워크 기초 활용 (0) | 2022.07.03 |
---|---|
[4과목] 프로그래밍 언어 활용 - 응용 SW 기술 (0) | 2022.07.03 |
[3과목] 데이터베이스 구축 (0) | 2022.06.15 |
[2과목] 소프트웨어 개발 - 데이터 입출력 (0) | 2022.06.14 |
[1과목] 소프트웨어 설계 - 요구사항 확인 (0) | 2022.06.13 |