🧩 BE
home

5. 서버 프로그램 구현

1. 개발 환경 구축

개발 도구 분류

빌드 도구 : 코드의 빌드 및 배포, 의존성 관리
구현 도구 : 코드 작성과 디버깅 및 수정 작업
테스트 도구 : 코드의 기능 검증과 품질 향상
형상 관리 도구 : 코드와 리소스 등 산출물 버전 관리

개발환경 구성요소

서버 하드웨어 개발 환경
웹 서버 : HTTP 요청/응답 처리
웹 애플리케이션 서버 : 동적 콘텐츠(Servlet, JSP) 처리
DB 서버 : 데이터 수집 및 관리
파일 서버 : HDD, SSD 등 물리 저장 장치
소프트웨어 개발 환경
운영체제 : 하드웨어와 사용자 간의 인터페이스 소프트웨어 - Windows, Linux, Unix
미들웨어 : 컴퓨터와 컴퓨터간 연결 소프트웨어 - Weblogic, Jeus, Tomcat
DBMS : 사용자의 원활한 DB 관리 소프트웨어 - Oracle, MySQL, PostgreSQL

형상 관리(SCM; Software Configuratioin Management)

소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동.
소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 담당자에게 통보.
형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행
베이스라인(Baseline)
개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준

형상 관리 기법

(식통감기)
형상 식별
형상 관리 대상에 이름과 관리 번호를 부여하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 함
형상 통제(변경 관리)
식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정
형상 감사
기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
형상 기록
형상의 식별, 통제 감사 작업의 결과를 기록 관리하고 보고서를 작성하는 작업

2. 공통 모듈 구현

모듈

소프트웨어 설계에서 기능 단위로 분해하여 추상화되어 재사용 및 공유가 가능한 단위

모듈화

시스템 기능을 모듈 단위로 분류하여 성능을 향상시키고 재사용, 유지 관리 등이 용이하게 하는 설계 및 구현 기법
모듈화 기법
루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드
메인 루틴
서브 루틴

공통 모듈

기능을 분할하고 추상화하여 성능 향상 및 유지 보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법
모듈 개수  → 통합 비용
모듈 개수  → 개발 비용
→ 공장에서 모듈 생산할 때 모듈 개수가 많다면 인프라 구축으로 인해 통합적인 비용이 많아진다. 반대로 공장에서 적은 모듈을 생산한다면 각 모듈에 대한 개발 비용이 올라간다.

결합도와 응집도

결합도(Coupling) : 개별 모듈 간 상호 의존하는 정도 / 결합도 → 품질
결합도 낮음 결합도 높음
자료 - 스탬프 - 제어 - 외부 - 공통 - 내용
자스(잤으)니까 합격제외 부는 나(내)처럼
내용 (Content)
한 모듈이 다른 모듈의 내부 기능 및 자료를 직접 참조/수정
공통 (Common)
공유되는 공통 데이터를 여러 모듈이 사용 (전역 변수 참조)
외부 (External)
한 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조
제어 (Control)
한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우
스탬프 (Stamp)
두 모듈이 동일한 자료 구조(배열, 오브젝트)를 조회
자료 (Data)
모듈 간의 인터페이스가 자료 요소로만 구성
응집도(Cohesion) : 개별 모듈이 독립적인 기능으로 정의되어 있는 정도 / 응집도 → 품질
응집도 낮음 응집도 높음
우연적 - 논리적 -

5. 소프트웨어 구현

소프트웨어 개발 프레임워크

개발해야할 애플리케이션 일부분이 이미 내장된 클래스 라이브러리에 구현
→ 모듈화 / 재사용성 / 확장성 / 제어의 역흐름

팬 인 / 팬 아웃

팬 인 (Fan-in) : 자신을 사용하는 모듈의 수 → 팬 인이 높으면 재사용 측면 설계 우수
팬 아웃 (Fan-out) : 자신이 사용하는 모듈의 수 → 불필요한 호출 가능성 (단순화 필요)
소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
개발 효율성, 유지보수성, 운용성 향상