1. 개발환경 구축
(1) 개발환경 구축
- 개발환경 구성시 구현될 시스템 요구사항의 명확한 이해 필요
- 개발 도구와 서버의 선정, 개발 도구의 사용 편의성과 성능, 라이선스 확인
- 개발 도구 분류: 빌드 도구, 구현 도구, 테스트 도구, 형상 관리 도구 (빌구테형)
빌드 도구 | 작성한 코드의 빌드 및 배포를 수행 | Ant, Maven, Gradle |
구현 도구 | 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원 | Eclipse, IntelliJ, Spring Tool Suite |
테스트 도구 | 코드의 기능 검증과 전체의 품질을 높이기 위해 사용 | xUnit, PMD, Findbugs, Cppcheck |
형상 관리 도구 | 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리 | CVS, SVN, Git |
(2) 개발환경 구성요소
- 서버 하드웨어 개발환경: 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버
- 웹 서버: HTTP를 이용한 요청/응답을 처리, 웹 상의 정적 콘텐츠(CSS, Javascript, Image) 처리, WEB-WAS-DB의 3계층 구조를 실무에서 활용
- 웹 애플리케이션 서버(WAS): 동적 콘텐츠(Servlet, JSP) 처리
- 데이터베이스 서버: 데이터의 수집, 저장을 위한 용도(MySQL, Oracle, MS-SQL)
- 파일 서버: 파일 저장 하드웨어(대용량 HDD, SSD)
- 클라이언트 하드웨어 개발환경(UI): 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹
- 클라이언트 프로그램: 설치를 통해 사용자와 커뮤니케이션하는 프로그램
- 웹 브라우저: 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답시 브라우저를 통해 사용자와 커뮤니케이션
- 모바일 앱: 모바일 디바이스에 설치되어 활용되는 애플리케이션
- 모바일 웹: 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스 제공
- 소프트웨어 개발환경: 운영체제, 미들웨어, 데이터베이스 시스템
운영체제 | 서버의 하드웨어를 편리하게 사용하기 위한 소프트웨어 | Windows, Unix, Linux |
미들웨어 | 컴퓨터와 컴퓨터 간 연결을 쉽고 안전하게 하기 위한 소프트웨어 | Weblogic, Jeus, Tomcat |
DBMS | 데이터의 저장 및 활용을 위한 소프트웨어 | MySQL, Oracle, MS-SQL |
- 형상 관리(Configuration Management)
- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동
- 프로젝트 생명주기 동안 제품의 무결성, 변경에 대한 추적성 확보
- 베이스라인(Baseline): 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준
- 형상 관리 절차: 형상 식별, 형상 통제, 형상 감사, 형상 기록 (식통감기)
- 형상통제위원회(CCB; Configuration Control Board): 형상 관리에 대한 주요 방침을 정하고 산출물을 검토하며, 단계별 의사결정을 수행하는 조직
- 소프트웨어 형상 관리 도구 유형: 공유 폴더 방식(RCS, SCCS), 클라이언트/서버 방식(CVS, SVN), 분산 저장소 방식(Git) (공클분)
- 소프트웨어 형상 관리 도구 특징: CVS, SVN, RCS, Bitkeeper, Git, Clear Case
- Git의 커밋(Commit) 동작으로 로컬 저장소 저장, 푸시(Push) 동작으로 원격 저장소에 반영
2. 공통 모듈 구현
(1) 재사용(Reuse)
- 이미 개발되어 그 기능, 성능 및 품절을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 기법
- 재사용 종류: 재공학(Re-Engineering), 재개발(Re-Development)
- 재사용 규모에 따른 분류: 함수/객체 재사용, 컴포넌트 재사용, 애플리케이션 재사용
(2) 모듈(Module)
- 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 모듈화: 소프트웨어 성능 향상과 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
- 모듈화 기법: 루틴, 메인 루틴, 서브 루틴
- 공통 모듈 구현: 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법
- 응집도(Cohesion): 모듈 내부 구성요소 간 연관도, 응집도가 높을수록 좋은 품질
- 응집도 유형: 우연적, 논리적, 시간적, 절차적, 통신적(교환적), 순차적, 기능적 응집도 (우논시절 통순기)
우연적 응집도 (응집도 낮음) | Coincidental Cohesion | 모듈 내 구성요소가 연관이 없을 경우 |
논리적 응집도 | Logical Cohesion | 유사한 성격을 갖거나 특정 형태로 분류하여 처리 |
시간적 응집도 | Temporal Cohesion | 연관된 기능이라기보다 특정 시간에 처리 |
절차적 응집도 | Procedural Cohesion | 다수의 관련된 기능을 순차적으로 수행 |
통신적 응집도 | Communication Cohesion | 동일한 입력과 출력을 사용하여 다른 기능을 수행 |
순차적 응집도 | Sequential Cohesion | 모듈 내 한 활동으로부터 나온 출력값을 다른 활동이 사용 |
기능적 응집도 (응집도 높음/좋음) | Functional Cohesion | 모듈 내 모든 기능이 단일한 목적을 위해 수행 |
- 결합도(Coupling): 외부 모듈 간 연관도 또는 상호의존성, 결합도가 낮을수록 좋은 품질
- 결합도 유형: 내용, 공통, 외부, 제어, 스탬프, 자료 결합도 (내공 외제 스자)
내용 결합도 (결합도 높음) | Content Coupling | 하나의 모듈이 직접적으로 다른 모듈의 변수나 기능 참조 |
공통 결합도 | Common Coupling | 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수 참조 |
외부 결합도 | External Coupling | 외부 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스 공유 |
제어 결합도 | Control Coupling | 다른 모듈의 내부 논리 조직 제어하기 위한 목적으로 통신 |
스탬프 결합도 | Stamp Coupling | 모듈 간 인터페이스로 배열이나 객체, 구조 등이 전달 |
자료 결합도 (결합도 낮음/좋음) | Data Coupling | 모듈 간 인터페이스로 전달되는 파라미터를 통해서만 상호작용 |
- 팬인/팬아웃: 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해서 활용하여 시스템 복잡도 측정 가능
- 팬인(Fan-In): 어떤 모듈을 제어(호출)하는 모듈의 수, 자신을 기준으로 들어오는 모듈의 수로 높을수록 좋음
- 팬아웃(Fan-Out): 어떤 모듈에 의해 제어(호출)되는 모듈의 수, 자신을 기준으로 나가는 모듈의 수로 낮을수록 좋음
(3) 공통 모듈 테스트
- IDE(Integrated Development Environment) 도구 활용하여 개별 공통 모듈에 대한 디버깅 수행
- 화이트 기법 활용: 프로그램의 로직을 이해하고, 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식
- 공통 모듈 단위 테스트 도구(xUnit): jUnit, CppUnit, HttpUnit
3. 배치 프로그램 구현
(1) 배치 프로그램(Batch Program)
- 사용자와 상호작용 없이, 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나, 정해진 규칙에 따라 일괄 처리하는 방법
- 유형: 이벤트 배치(조건 충족), 온디맨드 배치(사용자 명시적 요구), 정기 배치 (이온정)
- 배치 스케줄러: 일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 배치 스케줄러 종류: 스프링 배치(대용량 배치 처리), 쿼츠 스케줄러(다양한 스케줄 기능)
- Cron 표현식: 리눅스/유닉스 크론, 쿼츠 크론 (초분시일 월요연)
'정보처리기사' 카테고리의 다른 글
애플리케이션 테스트 관리 (0) | 2023.04.23 |
---|---|
소프트웨어 개발 보안 구축 (0) | 2023.04.22 |
SQL 응용 (0) | 2023.04.20 |
프로그래밍 언어 활용(파이썬) (0) | 2023.04.17 |
프로그래밍 언어 활용(자바) (0) | 2023.04.14 |