정보처리기사

[정보처리기사]서버 프로그램 구현

아놀드금자 2022. 7. 15. 04:59
728x90

개발 환경 구축 - 하드웨어 환경
개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미한다.
하드웨어환경은 사용자와의 인터페이스 역할을 하는 클라이언트, 그리고 클라이언트와 통신하여 서비스를 제공하는 서버로 구성된다.
서버는 사용 목적에 따라 웹 서버, 웹애플리케이션 서버, 데이터베이스서버, 파일서버 등으로 나뉜다.
웹서버: 클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공
웹애플리케이션서버: 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버
데이터베이스서버: 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
파일서버: 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버

모듈
모듈화를 통해 분리된 시스템의 각 기능들로 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업단위 등과 같은 의미로 사용된다
모듈화: 소프트웨어의 성능을 향상 시키거나 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스테의 기능들을 모듈 단위로 분해하는 것으로 모듈 간 결합도의 최소화, 응집도의 최대화가 목표임
모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는 것으로, 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호 작용을 배제함으로써 이루어진다.
독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈들에게는 거의 영향을 미치지 않으며, 오류가 발생해도 쉽게 발견하고 해결할 수 있다.
모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 크기는 작게 만들어야 한다.

결합도
모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미
다양한 결합으로 모듈의 구성할 수 있으나 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.
결합도가 강하면 시스템 구현 및 유지보수 작업이 어렵다.
자료결합도: 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
스탬프결합도: 모듈간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
제어결합도:어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어요소를 전달하는 결합도
외부결합도: 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
공통(공유)결합도: 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
내용결합도: 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

응집도
정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미한다.
다양한 기준으로 모듈을 구성할 수 있으나 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮다.
기능적응집도: 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
순차적응집도: 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
교환(통신)적응집도: 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도
절차적응집도: 도뮬이 다수의 관련기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
시간적응집도: 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
논리적응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
우연적응집도: 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

팬인: 어떤 모듈을 제어(호출)하는 모듈의 수를 나타냄
팬아웃: 어떤 모듈에 의해 제어(호출)되는 모듈의 수

공통 모듈의 명세 기법
정확성: 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성
명확성: 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성
완전성: 시스템 구현을 위해 필요한 모든 것을 기술
일관성: 공통 기능들 간 상호 충돌이 발생하지 않도록 작성
추적성: 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

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

서버 개발 과정
DTO구현: 데이터 교환을 위해 사용할 객체를 만드는 과정. 변수 및 객체를 송, 수신할 데이터의 자료형에 알맞게 생성함. 알고리즘 등의 로직은 구현하지 않고, 변수와 데이터를 저장하고 반환하는 메소드만 구현함.
SQL 구현: 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL 문을 생성하는 과정
DAO구현: 데이터베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는 과정
service 구현: 사용자의 요청에 응답하기 위한 로직을 구현하는 과정
controller 구현: 사용자의 요청에 적절한 서비스를 호출하여 그 결과를 사용자에게 반환하는 코드를 구현하는 과정

배치 프로그램
사용자와의 상호작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미
주요배치스케줄러
스프링배치: 로그고나리, 추적, 트랜잭션관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능을 제공함
Quartz: 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리
cron: 리눅스의 스케줄러 도구로 cronlab 명령어를 통해 작업을 예약할 수 있음

 

6장 화면설계
사용자 인터페이스
사용자와 시스템 간의 상호작용이 원활하게 이뤄짇록 도와주는 장치나 소프트웨어를 의미한다.
cli
gui
nui

사용자 인터페이스의 기본 원칙
직관성: 누구나 쉽게 이해하고 사용할 수 있어야 함
유효성: 사용자의 목적을 정확하고 완벽하게 달성해야 함
학습성: 누구나 쉽게 배우고 익힐 수 있어야 함
유연성: 사용자의 요구사항을 최대한 수용하고 실수를 최소화 해야함

ui 설계도구
와이어프레임
목업
스토리보드
프로토타입
유스케이스

728x90