서버 프로그램 구현에 대해

제로코딩

·

2022. 7. 8. 13:26

반응형

서버 프로그램 구현에 대해 

 

서버 프로그램 구현 개념

 

 

⚡️ 개발 환경 구축

 

 

*구축에 쓰이는개발 도구 (4가지)

 

  1. 구현 도구: 코드 작성과 디버깅 및 수정 작업하는 도구
  2. 테스트 도구: 코드의 기능과 품질 향상 (xUnit, PMD, Findbugs, Cppcheck, Sonar)
  3. 형상관리 도구: 코드와 산출물에 대한 버전 관리 (Git, Subversion)
  4. 빌드 도구: 코드의 빌드와 배포를 수행 ( Gradle, Maven, Ant)

 

 

📌 서버 HW 개발 환경

 

Web Server : 웹상의 정적 콘텐츠 HTTP를 이용한 요청 및 응답

 

WAS : 동적 콘텐츠

 

DB : 데이터 수집 및 관리

 

 

 

📌 SW 개발 환경

 

운영체제: 하드웨어와 사용자 인터페이스

 

미들웨어: 컴퓨터와 컴퓨터를 연결하는 중간 매개체 역할

 

DBMS: 사용자와 DB사이의 상호작용 역할

 

JVM: 시스템 메모리를 관리하고 자바 기반의 Application을 위한 실행 환경을 제공함

 

 

 

📌 형상 관리(Software Configuration Management)

 

 

개발 작업 중 SW의 변경 사항을 관리하기 위한 일련의 활동입니다.

소프트웨어 개발의 전 단계에 해당하며, 유지보수 단계에서도 수행이 되고 SW 개발 전체 비용을 줄이기 가능합니다.

 

 

 

*형상 관리 기능 종류

 

 

1) 형상 식별

형상 관리 대상에 이름과 관리 번호를 부여하고, 계층 구조로 구분하여 수정 및 추적 용이

 

2) 버전 제어

소프트웨어 업글 및 유지 보수 중 생성된 다른 버전 형상을 관리하고, 이를 특정 절차와 도구를 결합시키는 작업

 

3) 형상 통제(변경 관리)

식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업

 

4) 형상 감사

기준선의 무결성 평가가 목적으로 확인, 검증, 검열을 통해 공식적으로 승인

 

5) 형상 기록(상태 보고)

형상 식별, 통제, 감사 작업 결과를 기록하고 보고서 작성

 

 

※현재의 기준선: 개발 과정의 각 단계에서 나온 산출물들의 변화를 통제하는 기준 시점입니다.

 

 

 

📌 모듈 (Module)

 

 

*모듈

SW설계에서 기능 단위로 분해 및 추상화하여 재사용 및 공유가 가능하게 한 단위

 

 

*공통 모듈

성능 향상 및 유지보수를 목적으로 공통 컴포넌트 구현 기법

→ 모듈 개수가 많다면 인프라 구축으로 인해 개발 비용은 낮아지지만 통합적 비용은 늘어날 수 있습니다. 모듈 개수가 적다면 각 모듈의 개발 비용은 늘어날 것입니다.

 

 

*모듈화

모듈을 통해 SW성능 향상 및 디버깅, 수정, 통합 용이하게 하는 설계 기법

 

 

*모듈화 기법

루틴(SW 특정 동작을 반복적으로 수행하는 코드), 메인 루틴, 서브 루틴

 

 

 

*결합도

모듈간의 상호의존도로 결합도가 낮으면 품질이 상승됩니다.

 

(결합도 약함)

  • data (데이터)
  • stamp (자료구조)
  • control (다른 모듈에서 흐름 파악)
  • external (외부 - 참조)
  • common (공통 - 공유)
  • content (직접 참조하고 다른 모듈에서 사용함)

(결합도 강함)

 

 

 

1) data

어떤 모듈이 다른 모듈을 호출하면서 매개 변수나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 방식

 

2) stamp

두 모듈이 동일한 자료 구조를 조회하는 경우

 

3) control

한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나 처리 기능이 두 모듈에 분리 되어 설계된 경우

 

4) external

어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때

 

5) common

공유되는 공통 데이터 영역을 여러 모듈에서 참조할 때

 

6) content

한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때

 

*응집도

정보은닉 개념의 확장, 응집도가 강할수록 품질이 높습니다.

 

(응집도가 강함)

  • functional
  • sequential
  • communication
  • procedural
  • temporal
  • logical
  • coincidental

(응집도 약함)

 

 

 

기능 - 단일

순차 - 나온것 입력으로

통신 - 동일한입출력 다른기능수행

절차 - 다수의 관련기능 순차수행

시간 - 특정시간

논리 - 유사한 성격

우연 - 서로 관련 없는 요소

 

 

 

📌 디자인 패턴의 행위패턴 

 

 

디자인 패턴에는 총 3가지의 패턴으로 분류할 수 있습니다. 생성 패턴, 구조 패턴, 행위 패턴

그 중 행위 패턴에 속한 디자인 패턴을 설명드리겠습니다.

 

 

생성 패턴

  • 객체의 생성과 관련된 패턴

구조 패턴

  • 클래스나 객체들을 조합하여 더 큰 구조로 만들 수 있게 해주는 패턴

행위 패턴

  • 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴

 

 

 

1) 커맨드

  • 명령어를 각각 구현하는 것보다는 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행하는 것
  • 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴

 

 

2) Observer 패턴

  • 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것
  • 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 패턴

 

 

3) 템플릿 메소드

  • 상위 클래스에서는 추상적으로 표현하고, 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
  • 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
반응형

'Computer Science' 카테고리의 다른 글

HashMap, HashSet에 대하여  (0) 2022.07.05
데이터 모델링 절차에 관하여  (0) 2022.07.04
C언어 왜 공부해야 하는가?  (0) 2022.07.03
TCP / IP 란?  (0) 2022.06.29
TCP와 UDP의 개념, 특징, 차이  (0) 2022.06.29