인생이 쓰다!인생쓰

공부/정보처리기사

정보처리기사 실기 5일차(서버 프로그램 구현)

Johnal 2021. 3. 25. 17:57
반응형

 

*정리는 2020시나공 문제집을 참고했습니다.*

 

 

개발환경 구축 

*하드웨어 환경*

개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미합니다.

하드웨어 환경은 사용자와의 인터페이스 역할을 하는 클라이언트 그리고 클라이언트와 통신하여 서비ㄹ스를 제공하는 서버로 구성됨

 

웹서버 - 클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공

 

웹 애플리케이션 서버(WAS) - 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공작업을 수행하거나 ,

웹서버와 데이터 베이스 서버 또는 웹서버와 파일서버 사이에서 인터페이스 역할을 수행하는 서버입니다. 

 

데이터 베이스 서버 - 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버입니다. 

 

파일 서버 - 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버입니다.

 

*소프트웨어 환경*

소프트웨어 환경은 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성됩니다.

 

시스템 소프트웨어 - 운영체재 , 웹 서버 , WAS 운용을 위한 서버 프로그램 , DBMS 등이 있다.

 

개발 소프트웨어 

요구사항 관리도구 요구 사항의 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
설계/모델링 도구 UML(통합 모델링 언어)를 지원하며 ,개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
구현 도구 개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어
빌드 도구 구현 도구를 통해 작성된 소스의 빌드 및 배포 라이브러리 관리를 지원하는 소프트웨어
테스트 도구 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
형상 관리 도구 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어

 

모듈( Module )

모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템 , 소프트웨어 내의 프로그램 , 작업 단위등과 같은 의미로 사용된다.

 

모듈화 -소프트웨어의 성능 향상,시스템의 수정 및 재사용 , 유지관리 등이 용이하도록

           시스템의 기능들을 모듈 단위로 분해 하는것으로 모듈 간 결합도의 최소화 , 응집도의 최대화가 목표입니다.

 

모듈의 독립성을 높이려면 모듈의 결합도는 약하게 ,응집도는 강하게, 모듈의 크기는 작게 만들어야합니다.

 

*결합도 ( Coupling )*

모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미하고 결합도가 약할수록 품질이 높고 강할수록 품질이 낮습니다.

 

 

결합도

 

자료 결합도 (Data) 모듈간의 인터페이스가 자료 요소로만 구성될때의 결합도
스탬프 결합도 (Stamp) 모듈간의 인터페이스가 배열이나 레코드 등의 자료구조가 전달될때의 결합도
제어 결합도 (Control) 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해,
제어신호를 이용하여 통신하거나 제어요소를 전달하는 결합도
외부 결합도 (External) 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
공통 결합도 (Common) 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
내용 결합도 (Content) 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

 

 

*응집도( Cohesion )*

정보 은닉 개념을 확장한 것으로 모듈의 내부 요소들의 서로 관련되어 있는정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미합니다. 다양한 기준으로 모듈을 구성할 수 있으나 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮습니다.

 

 

응집도

 

기능적 (Functional) 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
순차적 (Sequential) 모듈 내 활동으로 나온 출력 데이터를 그 다음 활동의 입력데이터로 사용할 경우의 응집도
교환적 (Communication) 동일한 입력과 출력을 사용하여 서로 다른기능을 수행하는 구성요소들이 모였을 경우의 응집도
절차적 (Procedural) 모듈이 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 기능을 순차적으로 수행할때 응집도
시간적 (Temporal) 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
논리적 (Logical) 유사한 성격을 갖거나 특정 형태로 분류 되는 처리 요소들로 하나의 모듈이 형성될 때의 응집도
우연적 (Coincidental) 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

 

 

*팬 인 (Fan - IN)) / 팬 아웃 (Fan - Out)*

팬인은 어떤 모듈을 제어(호출)하는 모듈의 수를 나타냅니다. 

팬아웃은 어떤 모듈에 의해 제어(호출) 되는 모듈의 수를 나타낼수있습니다.

 

팬 인/팬 아웃

위 사진을 보시면 F모듈의 팬인 팬아웃을 보시면 B,C,D의 들어오는 선 3개가 팬인 이라고 생각하시면됩니다.

그리고 팬아웃은 G,H 두개가 되겠죠.

 

공통 모듈

여러 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미합니다. 

공통 모듈을 구현할 때는 다른 개발자들이 해당 기능을 명확히 이해할 수 있도록 다음의 명세 기법을 준수해야 합니다.

 

정확성 - 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성

명확성 - 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성

완정성 - 시스템 구현을 위해 필요한 모든 것을 기술

일관성 - 공통 기능들 간 상호 충돌이 발생하지 않도록 작성

추적성 - 기능에 대한 요구사항의 출처 , 관련 시스템 등의 관계를 파악할 수 있도록 작성

 

재사용(Reuse)

비용과 개발 시간을 절약하기 위해 이미 개발된 기능들을 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화 시키는 작업이다. 재사용되는 대상은 외부 모듈의 결합도는 낮고 , 응집도는 높아야합니다.

 

함수와 객체 - 클래스나 메소드 단위으 소스 코드를 재사용함

컴포넌트 - 컴포넌트 자체에 대한 수정 없이 인터페이스를 통해 통신하는 방식으로 재사용함

애플리케이션 - 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용함

 

DBMS 접속(Connection)

 

사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것을 의미한다.

응용 시스템은 사용자로부터 매개 변수를 전달받아 SQL을 실행하고 DBMS로부터 전달받은 결과를 사용자에게 전달하는 매개체 역할을 수행합니다. 

 

DBMS 접속 기술 : DBMS에 접근하기 위해 사용하는 API 또는 API의 사용을 편리하게 도와주는 프레임워크 등을 의미

JDBC( Java DataBase Connectivity ) Java 언어로 다양한 종류의 데이터베이스에 접속하고
SQL문을 수행할 때 사용되는 표준 API
ODBC( Open Database Connectivity ) 데이터베이스에 접근하기 위한 표준 개방형 API로, 개발 언어에 관계없이 사용 가능
MyBatis JDBC 코드를 단순화하여 사용 할 수 있는
SQL Mapping 기반 오픈 소스 접속 프레임워크 

 

동적 SQL( Dynamic SQL )

다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리방식입니다. 또한 사용자로부터 SQL문의 일부 또는 전부를 입력받아 실행 할 수 있습니다. 정적에 비해 속도는 느리지만 , 상황에 따라 다양한 조건을 첨가하는 등 유연한 개발이 가능합니다.

 

정적 SQL

SQL 코드를 변수에 담지 않고 코드사이에 직접 기술한 SQL문

 

 

서버 개발

 

웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것을 의미합니다.

웹 애플리케이션 서버에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할을 수행합니다.

 

개발에 사용되는 프로그래밍 언어

Java, JavaScript, Python , PHP , Ruby 등

 

 

*프레임워크(FrameWork)*

본래 "뼈대"를 의미하는 용어로 소프트웨어에서는 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체

ex):서버 개발 프레임워크 - spring , Node.js , Django , Laravel , Ruby on Rails등..

 

 

특징

모듈화 프레임워크는 캡슐화를 통해 모듈화를 강화하고
설계 및 구현의 변경에 따른 영향을 최소화함으로서 소프트웨어의 품질을 향상 시킵니다.
재사용성 프레임워크는 재사용 가능한 모듈들을 제공함으로써 개발자의 생산성을 향상 시킵니다.
확장성 프레임워크는 다형성을 통한 인터페이스 확장이 가능하여
다양한 형태와 기능을 가진 애플리케이션 개발이 가능합니다.
제어의 역흐름 개발자가 관리하고 통제해야 하는 객체들의 제어 권한을 프레임워크에 넘김으로써 생산성을 향상시킨다.

 

 

*서버개발과정*

 

DTO/VO 구현 -> SQL 구현 -> DAO 구현 -> Service 구현 - > Controller 구현 

 

 

배치 프로그램( Batch Program )

사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미합니다.

 

배치 프로그램의 필수 요소 - 대용량 데이터 ,자동화 , 견고성, 안전성/신뢰성, 성능

 

배치 스케줄러 - 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되오록 지원해주는 도구

->스프링 배치 , Quatz , Cron

728x90
반응형