본문 바로가기
기본 지식

서버 프로그램 구현

by HJINHA 2021. 7. 3.

1. 개발환경 구축

- 개발 도구

1) 빌드 도구: Ant, Maven, Gradle

2) 구현 도구: Eclipse, IntelliJ, Spring Tool Suite, NetBeans, Visual Studio

3) 테스트 도구: xUnit, PMD, Findbugs, Cppcheck, Sonar

4) 형상 관리 도구: CVS, Subversion, Git

- 구성 요소

1) 하드웨어 개발환경

(1) 서버

- 웹 서버: HTTP를 이용한 요청/응답(정적 콘텐츠) 처리. WEB-WAS-DB 3계층 구조. Apache, Nginx

- 웹 애플리케이션 서버: 동적 콘텐츠 처리. Tomcat, Weblogic, Jeus, Resin

- 데이터베이스 서버: 데이터의 수집, 저장. MySql, Oracle

- 파일 서버: 물리 저장장치 활용. 대용량 HDD, SSD

(2) 클라이언트: 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹

2) 소프트웨어 개발환경

- 운영체제, 미들웨어, DBMS

3) 형상 관리 **

: 소프트웨어 개발을 위한 전체 과정에서 발생하는 변경 사항을 관리하기 위한 활동

- 형상 관리 도구 유형

1) 공유 폴더: 개발이 완료된 파일은 약속된 공유 폴더에 복사. 담당자 한 명이 확인. PCS, SCCS

2) 클라이언트/서버: 중앙에 버전 관리 시스템을 항시 동작. CVS, SVN

3) 분산 저장소: 로컬 저장소/원격 저장소로 분리. Git

 

2. 공통 모듈 구현

- 모듈: 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체

- 모듈의 독립성을 높이려면 결합도는 낮게, 응집도는 높게, 모듈의 크기는 작게 만들어야 한다.

1) 응집도

: 모듈 내부 구성요소 간 연관 정도.

- 우연적: 구성요소가 연관이 없음

- 논리적: 유사한 성격을 갖거나 특정 형태로 분류되는 요소들

- 시간적: 특정 시간에 처리되어야 할 활동들을 한 모듈에서 처리할 때

- 절차적: 구송요소들이 기능들을 순차적으로 수행할 때

- 교환적(통신적): 동일 입출력을 사용해 다른 기능을 수행하는 활동들

- 순차적: 모듈의 출력값을 다른 활동이 사용할 때

- 기능적: 모듈 내부틔 모든 기능이 단일 목적을 위해 수행될 때

2) 결합도

: 외부 모듈과의 연관도. 모듈 간의 상호의존성

- 자료: 파라미터를 통해서만 상호작용

- 스탬프: 배열, 객체, 구조 등이 전달

- 제어: 값뿐만 아니라 제어 요소가 전달

- 외부: 외부에서 도입된 데이터 포맷, 프로토콜, 디바이스 인터페이스를 공유

- 공통: 모듈 밖의 전역 변수를 참조, 갱신하며 상호작용

- 내용: 다른 모듈 내부의 변수나 기능을 사용

3) 공통 모듈 구현

- MVC 패턴을 사용

- DTO/VO -> SQL -> DAO -> Service -> Controller -> 화면 구현 순으로 진행

4) 팬인/팬아웃

(1) 팬인

- 어떤 모듈을 제어하는 모듈의 수. 자신을 기준으로 들어오는 것

- 팬인이 높으면 재사용 측면에서 설계가 잘 되었지만, 단일 장애점 발생 가능

- 팬인이 높으면 비용 증가

(2) 팬아웃

- 어떤 모듈에 의해 제어되는 모듈의 수. 자신을 기준으로 나가는 것

- 팬아웃이 높으면 불필요한 모듈 호출과 단순화 여부 검토 필요

 

'기본 지식' 카테고리의 다른 글

애플리케이션 테스트 관리  (0) 2021.07.06
소프트웨어 개발 보안 구축  (0) 2021.07.05
절차형 SQL  (0) 2021.07.03
데이터 분석 함수  (0) 2021.07.03
데이터베이스 기본  (0) 2021.07.03

댓글