서버프로그램 구현 - 개발환경 구축, 공통 모듈 구현

2022. 6. 7. 14:58정처기(필기)/프로그래밍언어활용

더보기

(1) 개발환경 구축

1. 개발환경 구축의 개념

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

 

▼ 개발환경 구축 도구의 분류

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

 

2. 개발환경 구성요소

[1] 하드웨어 개발환경

① 서버 하드웨어 개발환경

- 프로젝트 구성에 따라 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버로 구분

 

  • 웹 서버 : 웹 브라우저의 요청을 받아 HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트 등을 전송해주는 서버(ex : Apache HTTP Server, Microsoft Internet Information Service, Google Web Server 등)
  • 웹 애플리케이션 서버 : 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 처리를 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버(ex : Oracle WebLogic, Apache Tomcat, IBM WebSphere, JEUS 등)
  • 데이터베이스 서버 : 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버(MySql Server, Oracle Server, MS-SQL Server 등)
  • 파일 서버 : 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버, 대용량 HDD나 SSD 등의 장치가 존재(AWS S3 등)

 

② 클라이언트 하드웨어 개발환경

- 서버 개발환경에서 제공된 서비스를 사용하기 위해 UI를 제공한다. 

 

▼ 클라이언트 하드웨어 환경

구분 설명
클라이언트
프로그램
설치를 통해 사용자와 커뮤니케이션하는 프로그램
Visual Basic, C#, Delphi 등으로 개발되어 사용
웹 브라우저 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
일반적인 웹사이트
모바일 앱 모바일 디바이스에 설치되어 활용되는 애플리케이션
모바일 웹 웹 브라우저와 동일한 형태로 모바일 상 웹 브라우저를 통해 서비스를 제공
모바일에 최적화되어 제공되는 웹 사이트

 

[2] 소프트웨어 개발환경

- 프로젝트 요구사항에 부합한 운영체제, 미들웨어, DBMS를 선정한다.

 

▼ 소프트웨어 개발환경

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

 

더보기

(2) 서버 개발 프레임워크

1. 프레임워크의 개념

- 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀

 

 

▼ 프레임워크 특징

  • 모듈화 : 구현을 인터페이스 뒤에 감춰 모듈화를 강화
  • 재사용성 : 인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 일반적 컴포넌트를 정의하여 재사용성을 높임
  • 확장성 : 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장
  • 제어의 역행 : 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어

 

▼프레임워크 구성요소

  • 개발환경 : 설계, 구현, 테스트 등 개발에 필요한 지원 도구 모음
  • 실행환경 : 자바 기반 응용시스템 개발 시 필수적 기능을 패텬화해 미리 구현해둔 라이브러리 코드 모음
  • 운영환경 : 표준 프레임워크 기반 개발 시스템에 대한 운영 시 필요한 의사소통 및 모니터링 도구 모음
  • 관리환경 : 표준 프레임워크에 대한 기술 지원, 업그레이드 등 관리하기 위한 내부 업무 시스템

 

2. 프레임워크의 사례

전자정부 프레임워크 

- 전자정부 서비스 품질향상, 정보화 투자 효율을 위하여 범정부적 개발 프레임워크 표준을 정립, 응용 SW에 대한 구성기반과 서비스를 공유하는 프레임워크

 

 

더보기

(3) 재사용

1. 재사용이란

- 목표 시스템의 개발 시간 및 비용 절감을 위하여 거증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업

 

 

2. 재사용의 유형

  • 함수와 객체 재사용 : 클래스나 함수 단위로 구현한 소스 코드를 재사용
  • 컴포넌트 재사용 : 컴포넌트 단위로 재사용
  • 애플리케이션 재사용 : 공통기능을 제공하는 애플리케이션과 기능을 공유하여 재사용

3. 재사용 프로그래밍 기법

  • 객체지향 프로그래밍 : 객체 단위로 재사용이 이루어지도록 설계, 구조화된 프로그래밍 구현이 가능
  • 제네릭 프로그래밍 : 하나의 값이 여러 데이터 타입을 가질 수 있음, 재사용성을 높일 수 있는 프로그래밍 방식
  • 자동 프로그래밍 : 사용자가 설정 변수에 근거한 프로그램 생성
  • 메타 프로그래밍 : 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그래밍

 

4. 재사용의 사례

  1. 라이브러리 : 소프트웨어 개발시 공통으로 사용될 수 있는 특정한 기능을 모듈화한 기법
    1. 표준 라이브러리 : 특정 언어으 개발환경에 기본적으로 포함되는 라이브러리
    2. 런타임 라이브러리 : 프로그램이 실제 환경에서 실행되기 위해 필요한 모듈
  2. 프레임워크 : 소프트웨어 개발에서 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 툴(클래스 + 라이브러리)
  3. 소프트웨어 아키텍처 : 시스템에 대한 기본 조직체계로 시스템을 이루는 구성요소 간 관계를 나타낸 지침과 원리를 포함하는 청사진

 

더보기

(4) 모듈화

1. 모듈화의 개념

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

 

 

2. 모듈화의 원리

  • 정보 은닉 : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐한다는 원리
  • 분할과 정복 : 복잡한 문제를 분해, 모듈 단위로 문제 해결한다는 원리
  • 데이터 추상화 : 각 모듈 자료 구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현내역을 은폐
  • 모듈 독립성 : 낮은 결합도와 높은 응집도 

 

 

더보기

(5) 결합도

 

1. 결합도 개념

- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성을 나타내는 정도

 

 

2. 결합도의 특징

  • 모듈 연관성 없음 : 서로 다른 상위 모듈에 의해 호출되어 처리상 연관성이 없는 다른 기능을 수행
  • 인터페이스 의존성 : 자료전달이 인터페이스를 통과하여 인터페이스 복잡성에 의존적
  • 복잡성 감소 : 낮은 결합도를 통해 복잡성을 감소
  • 파급효과 최소화 : 에러 발생 시 오류가 전파되어 다른 오류의 원인이 되는 파급효과를 최소화

 

3. 결합도의 유형

유형 설명
내용 결합도 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
공통 결합도 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
외부 결합도 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도
제어 결합도 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우의 결합도
스탬프 결합도 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도, 동일한 자료구조
자료 결합도 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 결합도

 

 

더보기

(6) 응집도

1. 응집도의 개념

- 응집도는 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도

- 하나의 모듈은 하나의 기능을 수행

 

 

2. 응집도의 특징

  • 유사기능 영역구성 : 클래스 목적에 부합하는 같은 기능영역의 함수들로 구성
  • 단일 책임할당 : 함수의 개수가 상대적으로 적고 오로지 자신만이 할 수 있는 책임을 할당받음
  • 함수 간 상호협력 : 하나의 함수에 많은 기능을 넣지 않고 다른 함수와 협력

 

3. 응집도의 유형

우연적 응집도 : 서로 간에 어떠한 의미 있는 연관 관계도 없는 기능 요소로 구성될 경우의 응집도

논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들이 한 모듈에서 처리되는 경우의 응집도

시간적 응집도 : 연관된 기능이라기볻는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도

절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도

통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도

순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도

기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

 

 

'정처기(필기) > 프로그래밍언어활용' 카테고리의 다른 글

프로세스 스케줄링  (0) 2022.06.10
운영체제, 메모리 관리  (0) 2022.06.09
언어특성 활용, 라이브러리  (0) 2022.06.08
기본문법  (0) 2022.06.08
서버 프로그램 구현  (0) 2022.06.07