1. 개발환경 구축
1. 개발환경 구축의 개념
- 개발 환경 구성 시 구현될 요구사항의 명확한 이해가 필요
- 개발 도구와 서버의 선정이 이루어져야 한다. 또한 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스 등에 대한 내용도 파악해야 한다.
2. 개발 도구의 분류
1. 빌드 도구
- 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원하는 도구
2. 구현 도구
- 코드의 작성과 디버깅, 빌드 및 배포를 수행하는 도구
- 프로그램을 개발할 때 가장 많이 사용되는 도구
3. 테스트 도구
- 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 수행
4. 형상 관리 도구
- 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
- 프로젝트 진행 시 필수로 포함되는 도구
3. 개발환경 구성요소
1. 하드웨어 개발환경
가. 프로젝트 구성에 따라 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버로 구분
웹 서버
- HTTP를 이용한 요청/응답을 처리
- 웹 상의 정적 콘텐츠(CSS,Javascript,Image)를 처리
- WEB-WAS-DB의 3계층 구조를 실무에서 활용
웹 애플리케이션 서버(WAS; Web Application Server)
- 동적 콘텐츠를 처리하고 제공하기 위해 사용
- WAS 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
데이터베이스 서버
- 데이터의 수집, 저장을 위한 용도로 사용
- DB 제품으로 MySql, Oracle, MS-SQL 등 존재
파일 서버
- 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버
- 대용량 HDD, SSD 등의 장치가 존재
cf : WAS(Web Application Server) : 사용자 요청 스레드를 처리하고, 데이터베이스에 접속하여 SQL 쿼리문에 대한 결과 값을 반환하는 역할을 수행하는 서버
나. 클라이언트 하드웨어 개발환경
- 서버 개발환경에서 제공된 서비스를 사용하기 위해 UI(User Interface)를 제공한다.
- 클라이언트 서버, 웹 브라우저, 모바일 앱, 모바일 웹으로 구분한다.
클라이언트 프로그램
- 설치를 통해 사용자와 커뮤니케이션하는 프로그램
- Visual Basic, C#, Delphi 등으로 개발되어 사용
웹 브라우저
- 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
- 일반적인 형태의 웹 사이트가 해당
모바일 앱
- 모바일 디바이스에 설치되어 활용되는 애플리케이션
- App Store, Android Market 등을 통해 다운로드 가능
모바일 웹
- 웹 브라우저와 동일한 형태로 모바일 상 웹 브라우저를 통해 서비스를 제공
- 모바일에 최적화 되어 제공되는 웹 사이트가 해당
2. 소프트웨어 개발환경
- 개발을 위한 기본적인 소프트웨어 개발환경을 선택 및 구성
- 프로젝트 요구사항에 부합한 운영체제, 미들웨어, DBMS를 선정
운영체제
- 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
- 프로젝트의 성격에 따른 운영체제 사용
미들웨어
- 웹 서버, JVM과 같은 개발 환경의 구성요소로 활용
- 웹 서비스는 웹 서버를 설치하여 사용자 요구사항에 적합한 웹 서비스를 제공
- 자바(JAVA) 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 이용
DBMS
- 데이터의 저장 및 활용을 위해 DBMS를 설치
- 사용자 요청에 따라 DBMS 제품을선택
cf : JVM(Java Virtual Machine) : Java Byte Code를 Os에 맞게 해석 해주는 역할을 수행한다. Java Byte Code는 JVM 위에서 OS 상관없이 실행된다. 이식성, 호환성이 장점
cf : 컨테이너(Container) : JSP와 서블릿을 실행시킬 수 있는 소프트웨어
3. 형상관리
가. 형상관리의 개념
- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동이다.
나. 형상 관리의 목적
- 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할 수 있다.
- 프로젝트 변경이 발생 되었을 때 처리하는 메커니즘을 제공한다.
- 대표적인 메커니즘으로 형상 관리 대상파악, 베이스라인 지정, 버전관리, 접근제어 등이 있다.
다. 형상 관리의 절차
- 형상 관리는 식별, 통제, 감사, 기록의 절차를 통해 품질 보증의 목적으로 수행된다.
형상 식별
- 형상 관리 대상을 정의 및 식별하는 활동
- 추적성 부여를 위해 ID와 관리번호를 부여
- 변경 관련 이슈(Issue) 발생 시 ID와 관리번호를 이용하여 추적
형상 통제
- 형상항목의 버전 관리를 위한 형상통제위원회 운영
- 변경요구 관리, 변경제아, 형상 관리 등 통제 지원
- 베이스라인에 대한 관리 및 형상 통제 수행 가능
형상 감사
- 소프트웨어 베이스라인의 무결성 평가
- 베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록
- 소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록
- 형상결과 보고서 작성
cf: 베이스라인(Baseline) : 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준이다.
4. 개발환경 구축 절차
- 개발환경을 구축하기 위한 절차는 요구사항 분석, 설계, 개발언어 선정, 개발 도구 선정, 테스트 및 빌드 도구 선정이 있다.
1. 프로젝트 요구사항 분석
- 대상이 되는 시스템의 요구사항을 분석하여 어떠한 도구들이 필요할지 준비하는 과정
- 시스템의 환경을 분석하여 개발환경 구축에 필요한 도구에 대해 파악
2. 필요 도구 설계
- 구현 도구, 빌드 도구, 테스트 도구, 형상 관리 도구 등 요구사항에 맞는 시스템을 구축하기 위한 환경을 설계
3. 개발언어 선정
- 특성을 고려하여 개발언어의 기준을 선정
- 개발 대상 업무의 성격에 적합한 특성을 확인하고 적합한 언어를 선정
4. 구현도구
- 선정된 개발언어에 따라 적합한 구현 도구를 선정
5. 빌드, 테스트 도구 선정
- 프로젝트 팀원의 빌드 도구의 숙련도를 고려
- 통합 개발환경(IDE; Integrated Development Environment)과 호환이 가능한 도구를 선정
- 테스트 도구는 MTP(Master Test Plan)에 적합하게 계획에 따라 필요한 도구를 선정
2. 서버 개발 프레임워크
1. 프레임워크(Framework)의 개념
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀이다.
- 재사용이 가능하도록 소프트웨어 구성에 필요한 기본을 제공
- 정보 시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함한다.
2. 프레임워크(Framework)의 특징
- 프레임워크는 모듈화, 재사용성, 확장성, 젱어의 역행(IoC; Inversion Of Control) 이라는 대표 4가지 특징을 보유
1. 모듈화(Modulity)
- 프레임워크는 구현을 인터페이스 뒤에 감춰 모듈화 강화
- 설계와 구현 변경에 따르는 영향을 최소화
2. 재사용성(Reusability)
- 인터페이스를 통해 여러 애플리케이션에서 반복적으로 사용하는 일반적 컴포넌트를 정의하여 재사용성을 높임
3. 확장성(Extensibility)
- 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장
cf: 다형성(Polymorphism) : 한 타입의 참조 변수로 여러 타입의 객체를 참조 할 수 있도록 하는 것이며, 여러 가지 형태를 가질 수 있는 능력을 의미
4. 제어의 역행(Inversion of Control)
- 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어
- 외부의 이벤트에 대해 애플리케이션이 어떤 메서드를 수행해야할지 결정
3. 프레임워크의 구성요소
- 프레임워크의 구성요소로는 개발환경, 실행환경, 운영환경, 관리환경이 있다.
1. 개발 환경
- 설계, 구현, 테스트 등 개발에 필요한 지원도구 모음
2. 실행환경
- 자바 기반 응용시스템 개발 시 필수적 기능을 패턴화해 미리 구현해두 라이브러리 코드 모음
3. 운영환경
- 표준 프레임워크 기반 개발 시스템에 대한 운영 시 필요한 의사소통 및 모니터링 도구 모음
4. 관리환경
- 표준 프레임워크에 대한 기술 지워느 업그레이드 등 관리하기 위한 내부 업무 시스템
4. 프레임워크의 사례 - 전자정부 프레임워크
개념
- 전자정부 프레임워크는 전자정부 서비스 품질향상, 정보화 투자 효율을 위하여 범정부적 개발 프레임워크 표준을 정립, 응용 SW에 대한 구성기반과 서비스를 공유하는 프레임워크
구성요소
- 공통 컴포넌트: 보안, 사용자 디렉터리/통합인증, 시스템관리, 통계/리포팅, 협업, 시스템/서비스 연계, 사용자 지원, 요소 기술로 구성
- 표준 프레임워크: 개발환경, 실행환경, 관리환경, 운영환경으로 구성
버전
- 2015년 6월 V3.5 이후 2019년 2월 버전 3.8이 발표
- 실행환경 내 서버환경 파일 암/복호화 기능 탑재, 공통 컴포넌트 기능 개선,MyBatis, Jenkins 신규 지원 등이 보강됨