개발 환경 구축
개발환경 구축의 개요
- 개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미
하드웨어 환경
- 하드웨어 환경은 사용자와의 인터페이스 역할을 하는 클라이언트(Client) 그리고 클라이언트와 통신하여 서비스를 제공하는 서버(Server)로 구성된다.
- 클라이언트에는 PC, 스마트폰 등이 있다.
- 서버는 사용 목적에 따라 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 나뉜다.
- 웹 서버(Web Server) : 클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적파일 들을 제공
- Apache HTTP Server, Microsoft Internet Information Service, Google Web Server 등
- 웹 애플리케이션 서버(Web Application Server) : 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버사이에서 인터페이스 역할을 수행하는 서버이다.
- Apache Tomcat, IBM WebSqhere, Oracle WebLogic등
- 데이터베이스 서버(DB Server) : 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버이다
- MySQL Server, Oracle Server, Microsoft SQL Server등
- 파일 서버(File Server) : 데이터베이스에 저장하기에는 비효율적이거나, 서비스 지공을 목적으로 유지하는 파일들을 저장하는 서버
- AWS S3등
- 웹 서버(Web Server) : 클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적파일 들을 제공
소프트웨어 환경
- 소프트웨어 환경은 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성
- 시스템 소프트웨어에는 운영체제(OS), 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS등이 있다.
- 개발 소프트웨어에는 요구사항 관리도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상관리 도구 등이 있다.
- 요구사항 관리 도구
- 요구사항의 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
- JIRA, Trello등
- 요구사항의 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
- 설계/모델링 도구
- UML(통합 모델링 언어)을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
- DB Designer,PlantUML, ArgoUML 등
- UML(통합 모델링 언어)을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
- 구현 도구
- 개발언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어
- Eclipse, IntelliJ IDEA, Visual Studio, Netbeans, Node.js등
- 개발언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어
- 빌드 도구
- 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
- Ant, Gradel, Maven, Jenkins 등
- 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
- 테스트 도구
- 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
- CppUnit,JUnit, HttpUnit, NUnit, Spring Test등
- 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
- 형상 관리 도구
- 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어
- GIT,CVS,SVN 등
- 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어
- 요구사항 관리 도구
개발 언어의 선정 기준
- 적정성 : 개발하려는 소프트웨어의 목적에 적합해야 합니다.
- 효율성 : 코드의 작성 및 구현이 효율적이여야 합니다.
- 이식성 : 다양한 시스템 및 환경에 적용이 가능해야 합니다
- 친밀성 : 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야합니다.
- 범용성 : 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 합니다.
모듈(Module)의 개요 !기출
- 모듈은 모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용
- 모듈은 단독으로 컴파일이 가능하며, 재사용 할 수 있다.
- 모듈의 독립성은 결합도(Coupling)와 응집도(Cohesion)에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야한다
결합도(Coupling)
- 결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.
- 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.
- 결합도가 강하면 시스템 구현 및 유지보수 작업이 어렵다.
- 결합도의 종류
- 자료 결합도, 스탬프 결합도, 제어 결합도, 외부 결합도, 공통 결합도, 내용 결합도 (약>강) 순서
응집도(Cohesion)
- 응집도는 정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의도어 있는 정도를 의미한다.
- 응집도는 강할 수록 품질이 높고, 약할수록 품질이 낮다.
- 응집도의 종류
- 기능적 응집도, 순차적 응집도, 교환적 응집도, 절차적 응집도, 시간적 응집도, 논리적 응집도, 우연적 응집도(강>약)순서
팬인(Fan-In) / 팬아웃(Fan-out) !기출
- 팬인은 어떤 모듈을 제어(호출)하는 모듈의 수를 나타낸다
- 팬아웃은 어떤 모듈에 의해 제어(호출)되는 모듈의 수를 나타낸다
- 팬인과 팬아웃을 분석하여 시스템의 복잡도를 알 수 있다.
- 팬인이 높다는 것은 재사용 측면에서 설계가 잘 되어 있다고 볼 수 있으나, 단일 장애점이 발생할 수 있으므로 중점적인 관리 및 테스트가 필요하다
- 팬아웃이 높은 경우 불필요하게 다른 모듈을 호출하고 있는지 검토하고, 단순화시킬 수 있는지 여부에 대한 검토가 필요하다.
- 시스템의 복잡도를 최적화하려면 팬인은 높게, 팬아웃은 낮게 설계해야한다.
DBMS 접속의 개요
- DBMS 접속은 사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것을 의미한다
- 응용 시스템은 사용자로부터 매개 변수를 전달받아 SQL을 실행하고 DBMS로 부터 전달받은 결과를 사용자에게 전달하는 매개체 역할을 수행한다.
- 인터넷을 통해 구동되는 웹 응용프로그램은 웹 응용 시스템을 통해 DBMS에 접근한다
- 웹 응용 시스템은 웹 서버와 웹 애플리케이션 서버(WAS)로 구성되며, 서비스 규모가 작은 경우 웹 서버와 웹 애플리케이션 서버를 통합하여 하나의 서버만으로 운용할 수 있다.
DMBS 접속 기술
JDBC(Java DataBase Connectitity)
- JDBC는 Java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL문을 수행할 때 사용되는 표준 API이다.
ODBC(Open DataBase Connectivity)
- ODBC는 데이터베이스에 접근하기 위한 표준 개방형 API로, 개발 언어에 관계없이 사용가능하다
동적 SQL(Dynamic SQL)
- 동적 SQL은 다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리 방식이다.
- 동적 SQL은 SQL문을 문자열 변수에 넣어 처리한다
서버 개발 과정
서버 개발
- 서버 개발은 DTO/VO , SQL, DAO, Service, Controller를 각각 구현하는 과정을 통해 이루어진다
- 구현 순서는 개발자가 임의로 변경할 수 있다.
- 개발하려는 서버 프로그램의 목적, 개발 언어, 규모 드으이 이유로 통합되거나 세분화 될 수 있다.
- 모든 과정에서 보안 약점이 발생하지 않도록 소프트웨어 개발 보안 가이드를 참고한다
DTO(Data Transfer Object)/VO(Value Object) 구현
- DTO/VO 구현은 데이터 교환을 위해 사용할 객체를 만드는 과정이다,
- 변수 및 객체를 송수신할 데이터의 자료혀에 알맞게 생성한다
- 알고리즘 등의 로직은 구현하지 않고, 변수와 데이터를 저장하고 반환하는 메소드만 구현한다.
SQL 구현
- SQL 구현은 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL문을 생성하는 과정이다.
- SQL문은 소스 코드 내에 직접 입력하거나 , 별도의 XML 파일로 저장하여 관리한다.
- XML 파일로 SQL문을 관리하는 경우 중복되는 SQL문을 최소화할 수 있고, 유지보수가 간편해진다.
DAO(Data Access Object) 구현
- DAO 구현은 데이터베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는 과정
Service 구현
- Service 구현은 사용자의 요청에 응답하기 위한 로직을 구현하는 과정
Controller 구현
- Controller 구현은 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정
배치 프로그램의 개요
- 배치 프로그램은 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미한다.
- 배치 프로그램이 자동으로 수행되는 주기에 따라 정기 배치, 이벤트성 배치, On-Demand배치로 구분된다
- 정기 배치 : 일, 주, 월과 같이 정해진 기간에 정기적으로 수행된다.
- 이벤트성 배치 : 특정 조건을 설정해두고 조건이 충족될 때만 수행된다.
- On-Demand 배치 : 사용자 요청 시 수행된다.
- 배치 프로그램이 갖추어야하는 필수 요소는 다음과 같다.
- 대용량 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야한다
- 자동화 : 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 한다.
- 견고성 : 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 한다.
- 안정성/신뢰성 : 오류가 발생하면 오류의 발생위치, 시간 등을 추적할 수 있어야 한다.
- 성능 : 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리가 완료되어야 한다.
- 배치 프로그램이 자동으로 수행되는 주기에 따라 정기 배치, 이벤트성 배치, On-Demand배치로 구분된다
배치 (Batch Scheduler)
- 배치 스케줄러는 일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구이다.
- 배치 스케줄러는 특정 업무(Job)를 원하는 시간에 처리할 수 있도록 지원한다는 특성 때문에 잡 스케줄러(Job Scheduller)라고도 불린다.
- 주로 사용되는 배치 스케줄러에는 스프링 배치, Quartz 등이 있다.
스프링 배치(Spring Batch)
- 스프링 배치는 Spring Source 사와 Accenture 사가 2007년 공동 개발한 오픈소스 프레임워크이다.
- 스프링 프레임워크 특성을 그대로 가져와 스프링이 가지고 있는 다양한 기능들을 모두 사용 할 수 있다
- 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공한다.
- 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능을 제공한다.
- 스프링 배치의 주요 구성 요소와 역할
- Job : 수행할 작업 정의
- Job Launcher : 실행을 위한 인터페이스
- Step : Job 처리를 위한 제어 정보
- Job Repository : Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
Quartz
- Quartz는 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리다.
- 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 이로갈 처리 작업에 유연성을 제공
- Quartz의 주요 구성요소와 역할
- Scheduler : 실행 환경 관리
- Job : 수행할 작업의 정의
- JobDetail : Job의 상세 정보
- Trigger : Job의 실행 스케줄 정의
Cron
- Cron은 리눅스의 스케줄러 도구로 crontab 명령어를 통해 작업을 예약할 수 있다.
- 편집기에서 요일, 월, 일, 시, 분을 기준으로 수행할 명령어를 지정한다
- 옵션
- -e : 편집기(editor)를 호출하여 작업 추가 및 수정
- -l : 작업 목록(List) 출력
- -r : 작업 삭제(Remove)
- 작업 예약 형식
- [분][시][일][월][요일][명령어
- 분,시,일,월,요일에 "*"를 입력하면 매시기마다 수행한다
*****/root/com\_1.sh
> 매월 매일 매시 매분마다 com_1.sh를 실행
- 분,시,일,월,요일에 "*"를 입력하면 매시기마다 수행한다
- [분][시][일][월][요일][명령어
'기타 > 정처기' 카테고리의 다른 글
정보처리기사 실기 시나공 7장 애플리케이션 테스트관리 (0) | 2020.12.31 |
---|---|
정보처리기사 실기 시나공 6장 화면 설계 (0) | 2020.12.31 |
정보처리기사 실기 시나공 4장 통합구현 (0) | 2020.12.31 |
정보처리기사 실기 시나공 3장 데이터 입출력 구현 (0) | 2020.12.31 |
정보처리기사 실기 수제비 12과목 제품 소프트웨어 패키징 (0) | 2020.12.31 |