1. 개발환경 구축
1) 개발환경 도구 분류
- 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구/의존성 관리
- 구현 도구 : 디버깅, 코드 작성, 수정 지원
- 테스트 도구 : 코드의 테스트, 품질을 높이기 위해, 계획 수행
- 형상 도구 : 산출물의 버전관리 코드와 리소스
2) 하드웨어 개발환경
- 웹서버 : HTTP 요청/응답처리, 정적콘텐츠 처리, WEB-WAS-DB계층
- 웹 애플리케이션 서버 : 동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용한다.
Tomcat, Weblogic, Jeus, Resin 등 존재
- 데이터 베이스 서버 : DBMS, Mysql, Oracle
- 파일 서버 : 파일 저장 하드웨어로 물리저장 장치를 활용한 서버이다.
대용량 HDD, SSD 장치가 있다.
3) 소프트웨어 개발환경
- 운영체제 : Windows, Unix, Linux (편리하고 유용하게 사용하기위한 소프트웨어)
- 미들웨어 : Weblogic, Websphere, Jeus, Tomcat (컴퓨터와 컴퓨터간 연결을 쉽고 안전하게)
- DBMS : Oracle, MySql, MS-SQL (데베 저장 및 활용)
2. 형상 관리 (식통감기)
모든 항목의 변경 사항을 관리하기 위한 활동이다. 형상관리대상 파악 베이스라인 지정, 형상관리
- 식별 : 대상을 정의 및 식별, ID와 관리번호
- 통제 : 변경요구 관리, 변경 제어, 형상관리 등 통제 지원
- 감사 : 소프트웨어 베이스라인 무결성 평가, 요구사항 일치여부 검토
- 기록 : 각종 수행결과 기록
1) 형상관리 도구 유형
- 공유폴더 방식(RCS, SCCS) : 개발이 완료된 파일은 약속된 위치의 공유폴더에 복사하는 방식
정상 동작 여부 확인
- 클라이언트/서버 방식(CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작 시키는 방식 이전 작업 내용 추적이 용이하다.
- 분산저장소 방식 (Git 등) : 로컬, 원격 저장소로 분리되어 분산 저장하는 방식 커밋, 원격 저장소에 반영된다.
2) 소프트웨어 형상관리 도구별 특징
- CVS : 서버-클라이언트 / 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상관리도구
- SVN : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구 및 저장소이다. (클라이언트 / 서버 방식)
- RCS : 수정한사람 제한 다수의 사람이 파일의 수정을 동시에 할 수 없도록 잠금방식으로 형상관리
- Bitkeeper : SVN과 비슷한 중앙통제 방식. 대규모프로젝트 빠른 속도를 내도록 개발된 형상관리 도구
- Git : 분산저장
- Clear Case : 복수 서버, 복스 클라이언트 구조, 서버가 부족할때 필요한 서버를 하나씩 추가하여 확장성을 높인다.
3. 공통 모듈 구현
1) 재사용
목표시스템의 개발 시간 및 비용 절감을 위해 검증된 기능 파악 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 것이다.
- 재공학 : 기존 소프트웨어를 버리지 않고 기능을 개선한다.
- 재개발 : 기존 시스템을 참조해서 새로운 시스템을 개발
2) 모듈
하나의 완전한 기능을 수행 할 수 있는 독립된 실체 프로그램 작업 단위 독립성, 재사용이 가능하다.
- 모듈화 : 재사용 가능 -> 모듈로 분해 하는 설계 및 구현 유지관리가 용이하도록 한다.
- 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임(명령코드)
- 메인루틴 : 주요부분 -> 서브루틴 호출한다.
- 서브루틴 : 메인에 의해 필요할 때마다 호출되는 루틴
3) 소프트웨어 모듈 응집도
- 응집도 : 모듈의 독립성을 나타내는 정도이다. 모듈 내부 구성요소 간 연관정도
응집도가 높을수록 품질이 좋다.
- 우연적 응집도 : 모듈내부 각 구성요소가 연관이 없을 경우의 응집도
- 논리적 응집도 : 유사한 성격을 갖거나 한 모듈에서 처리되는 경우의 응집도
- 시간적 응집도 : 연관된 기능이라기 보다 특정 시간에 처리되어야 하는 활동을 한 모듈에서 처리할 경우
- 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
- 통신적 응집도 : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동이 모여 있을 경우
- 순차적 응집도 : 한 활동으로 부터 나온 출력 값을 다른 활동이 사용할 경우의 응집도
- 기능적 응집도 : 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
4) 소프트웨어 모듈 결합도
- 결합도의 개념
모듈 내부가 아닌 외부의 모듈과 연관도 또는 모듈 간 상호의존성이다.
소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.
결합도가 높을수록 품질이 좋다.
내용>공통>외부>제어>스탬프>자료
- 결합도의 유형
내용, 공통, 외부, 제어, 스탬프, 자료 결합도 순으로 결합도가 낮아진다.
- 내용 결합도 : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다.
- 공통 결합도 : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도, 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
- 외부 결합도 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 경우의 결합도
- 제어 결합도 :
- 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이다.
- 자료 결합도 : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도이다. 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장 바람직한 결합도이다.
5) 공통 모듈 테스트
화이트박스 기법을 활용한다.
- 공통 모듈 테스트 종류
- jUnit : 자바 프로그래밍 언어용 단위 테스트 도구 JAVA단위 테스트 프레임워크이다.
- CppUnit : 자바의 jUnit을 C++로 구현한 단위 테스트 도구이다.
- HttpUnit : 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구
3. 배치 프로그램 구현
1) 배치 프로그램 유형
- 이벤트 배치 : 사전에 정의해 둔 조건 충족 시 자동으로 실행
- 온디맨드 배치 : 사용자의 명시적 요구가 있을 때마다 실행한다.
- 정기 배치 : 정해진 시점(주로 야간)에 정기적으로 실행