티스토리 뷰
개발환경 구축
개발 도구의 분류
💡 암기 TIP
빌드, 구현, 테스트, 형상 관리 → 빌구 테형 (잘못을 빌구 태형을 당하다)
구분 | 설명 |
빌드 도구 | 작성한 코드의 빌드 및 배포를 수행 |
구현 도구 | 개발자의 코드 작성, 디버깅, 수정 등을 지원 |
테스트 도구 | 코드의 기능 검증과 전체 품질을 높이기 위해 사용 |
형상 관리 도구 | 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리 |
서버 하드웨어 개발환경
통상적으로 WEB-WAS-DB의 3계층 구조를 실무에서 활용
용어 | 설명 |
웹 서버 | HTTP를 이용한 요청/응답 처리 웹 상의 정적 콘텐츠(CSS, Javascript, Image) 처리 주로 Apache 웹 서버를 사용 |
웹 애플리케이션 서버(WAS) | 사용자 요청 스레드를 처리, DB에 접속해 SQL 결괏값 반환 동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용 주로 Tomcat 등 사용 |
데이터베이스 서버 | 데이터의 수집, 저장을 위한 용도로 사용 MySql, Oracle, MS-SQL, DB2 등 존재 |
파일 서버 | 파일 저장 하드웨어로 물리 저장장치를 활용(대용량의 HDD, SSD) |
미들웨어(Middleware)
컴퓨터와 컴퓨터 간 연결을 쉽고 안전하게 할 수 있도록 해주고, 이에 대한 관리를 도와주는 소프트웨어
자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용
- JVM(Java Virtual Machine): 시스템 메모리를 관리하면서 자바 기반 프로그램을 위해 이식 가능한 실행 환경 제공
- 컨테이너(Container): JSP와 서블릿을 실행시킬 수 있는 소프트웨어
형상 관리(Configuration Management)
소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
형상 관리의 절차
💡 암기 TIP
식별, 통제, 감사, 기록 → 식후 통증 감기
절차 | 설명 |
형상 식별 | 형상 관리 대상 정의 및 식별 |
형상 통제 | 형상 항목 버전 관리를 위해 변경 요구 관리, 변경 제어 |
형상 감사 | 소프트웨어 베이스라인의 무결성 평가 |
형상 기록 | 소프트웨어 형상 및 변경관리에 대한 수행결과 기록 |
소프트웨어 형상 관리 도구
초기에는 공유 폴더 방식을 많이 사용하였으나, 현재는 클라이언트/서버 방식과 분산 저장소 방식이 많이 활용
💡 암기 TIP
공유폴더, 클라이언트/서버, 분산 → 공클분(공이 클수록 불리하다)
형상 관리 도구 유형 | 설명 |
공유 폴더 방식(RCS, SCCS) | 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사 |
클라이언트/서버 방식(CVS, SVN) | 중앙에 버전 관리 시스템을 항시 동작 |
분산 저장소 방식(Git) | 로컬 저장소와 원격 저장소로 분리되어 분산 저장 |
형상 관리 도구 | 설명 |
CVS(Concurrent Version System) | 서버와 클라이언트로 구성, 다수의 인원이 동시에 접근 가능 |
SVN(Subversion) | 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구 |
RCS(Revision Control System) | CVS와 달리 파일의 수정을 한 사람만으로 제한 |
Bitkeeper | SVN과 비슷한 중앙 통제 방식으로, 대규모 프로젝트에서 빠른 속도를 내도록 개발 |
Git | 속도에 중점을 둔 분산형 버전 관리 시스템, 대형 프로젝트에 효과적이고 유용 |
공통 모듈 구현
모듈(Module)
그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체로, 모듈 간 결합도는 줄이고 응집도는 높인 공통 모듈 구현을 권장
모듈화(Modularity)
소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하여 설계 및 구현하는 기법
모듈화 기법 | 설명 |
루틴(Routine) | 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임 |
메인 루틴(Main Routine) | 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시 |
서브 루틴(Subroutine) | 메인 루틴에 의해 필요할 때마다 호출되는 루틴 |
응집도(Cohesion)
모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도
💡 암기 TIP
우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적 → 우 논 시절 통 순기(우리가 논 시절의 통은 순기다.)
응집도 유형 | 설명 |
우연적(Coincidental) 응집도 (⬇) | 내부 구성요소가 각 연관이 없을 경우 |
논리적(Logical) 응집도 | 유사한 성격, 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리 |
시간적(Temporal) 응집도 | 특정 시간에 처리되어야 하는 활동들 |
절차적(Procedural) 응집도 | 다수의 관련 기능을 갖고, 순차적으로 수행 |
통신적(Communication) 응집도 | 동일한 입력과 출력을 사용해 다른 기능을 수행하는 활동들이 모임 |
순차적(Sequential) 응집도 | 모듈 내 한 활동으로부터 나온 출력값을 다른 활동이 사용 |
기능적(Functional) 응집도 (⬆) | 모듈 내부의 모든 기능이 단일한 목적을 위해 수행 |
결합도(Coupling)
모듈 내부가 아닌 외부의 모듈과의 연관도 또는 상호의존성
💡 암기 TIP
내용, 공통, 외부, 제어, 스탬프, 자료 → 내 공 외제 스자 (내 공사는 외제를 쓰자!)
용어 | 설명 |
내용(Content) 결합도 (⬆) | 다른 모듈 내부에 있는 변수나 기능을 사용 |
공통(Common) 결합도 | 모듈 밖에 선언된 전역 변수를 참조하고 갱신하는 식으로 상호작용 |
외부(External) 결합도 | 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 등을 공유 |
제어(Control) 결합도 | 처리 대상만 전달되는게 아닌 어떻게 처리 해야 한다는 제어 요소가 전달되는 경우 |
스탬프(Stamp) 결합도 | 모듈 간의 인터페이스로 배열, 객체, 구조 등이 전달 |
자료(Data) 결합도 (⬇) | 모듈 간에 전달되는 파라미터만을 통해 모듈 간의 상호작용이 일어나는 경우 |
공통 모듈 구현 절차
💡 암기 TIP
DTO/VO, SQL, DAO, Service, Controller, 화면 → DS DSC 화면
DTO/VO → SQL → DAO → Service → Controller → 화면 구현
- DTO(Data Transfer Object): 프로세스 사이에서 데이터를 전송하는 객체
- VO(Value Object): 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가지는 객체
- DAO(Data Access Object): 특정 타입의 DB에 추상 인터페이스를 제공
팬인(Fan-In) 및 팬아웃(Fan-Out)
모듈을 계층적으로 분석하기 위해 팬인과 팬아웃을 활용
용어 | 설명 | 그림 |
팬인(Fan-In) | 자신을 기준으로 모듈에 들어오면 팬인(in) | |
팬아웃(Fan-Out) | 자신을 기준으로 모듈에서 나가면 팬아웃(out) |
배치 프로그램 구현
배치 프로그램(Batch Program)
사용자와 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리
💡 암기 TIP
이벤트, 온디맨드, 정기 → 이온 정수기
배치 프로그램 유형 | 설명 |
이벤트 배치 | 사전에 정의해 둔 조건 충족 시 자동으로 실행 |
온디맨드 배치 | 사용자의 명시적 요구가 있을 때 실행 |
정기 배치 | 정해진 시점(주로 야간)에 정기적으로 실행 |
배치 스케줄러(Scheduler)
일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
스케줄러 종류 | 설명 |
스프링 배치(Spring Batch) | 스프링 프레임워크의 3대 요소를 모두 사용 가능 |
쿼츠 스케줄러(Quartz Scheduler) | 오픈소스 기반 스케줄러 |
출처: https://die-romantische-schule.tistory.com/50?category=867377 [낭만주의 학교:티스토리]
'시험 > 정보처리기사' 카테고리의 다른 글
[정처기 실기] 10. 애플리케이션 테스트 관리 (0) | 2022.08.01 |
---|---|
[정처기 실기] 9. 소프트웨어 개발 보안 구축 - 소프트웨어 개발 보안 설계 (0) | 2022.07.28 |
[정처기 실기] 12. 제품 소프트웨어 패키징 (0) | 2022.07.21 |
[정처기 실기] 11. 응용 SW 기초 기술 활용 - 기본 개발환경 구축하기 (0) | 2022.07.21 |
[정처기 실기] 11. 응용 SW 기초 기술 활용 - 네트워크 기초 활용 (0) | 2022.07.21 |