본문 바로가기
자격증

서버 프로그램 구현/ 인터페이스 구현/ 화면설계 / 애플리케이션 테스트 관리

by 천뱅 2024. 10. 15.

4. 서버프로그램 구현 출제기준

- 개발 환경구축

- 공통 모듈 구현

- 서버 프로그램 구현

- 배치 프로그램 구현

 

서버의 종류 

웹서버, 웹애플리케이션서버(WAS), 데이터베이스 서버, 파일서버

 

웹서버 : 웹 상의 정적 콘텐츠를 처리하고, HTTP의 요청과 응답을 처리 

웹애플리케이션서버 : 동적 콘텐츠와 데이터베이스와의 연결등을 처리 

 

모듈을 개발했을 때 응집도와 결합도 

응집도(강할 수록 좋음) 코드간 응집도  (기순교절시논우) 기능이 젤 강함 ////강한 순서대로

:  기능적 응집도 -> 순차적응집도 -> 교환적응집도 -> 절차적응집도 -> 시간적 응집도 -> 논리적 응집도 -> 우연적 응집도 

 

결합도 (강할수록 안좋음) 모듈간 결합 (내공외제스자 : 내공이 좋은건 외제, 쓰자) /// 강한 순서대로

: 내용 결합도 -> 공통 결합도 -> 외부 결합도 -> 제어 결합도 -> 스탬프 결합도 -> 자료 결합도 

 

 

순차적 응집도 : 모듈의 출력이 다른 모듈의 입력으로 들어감 (리턴값이 파라미터로 들어감)

절차적 응집도 : 관련된 기능이 특정 순서로 실행 

 

공통 모듈 구현 절차 

DTO/VO -> SQL -> DAO -> Service -> Controller -> View 

DTO/VO : 데이터를 전송하고 저장을 위한 객체를 설계한다. 

SQL : 데이터베이스 접근을 위한 쿼리를 작성

DAO : 데이터베이스와의 상호작용을 담당하는 객체를 설계한다. 

서비스 : DAO를 호출하여 데이터 처리 후에 DTO/VO를 사용하여 데이터를 주고 받는다. 

컨트롤러 : View와 서비스의 중간단계의 다리 역할을 한다. (HTTP요청 /응답 등)

뷰 : 사용자에게 보이는 화면을 구현한다. 

 

서버프로그램 관련 용어

배치 프로그램 : 정기적으로 반복 수행하거나, 규칙에 의해 일괄적으로 수행되는 것

미들웨어 : 서로 다른 소프트웨어 응용프로그램이나 구성 요소를 연결하는 소프트웨어 (JDBC, RabbitMQ, Apache Tomcat)

 

객체지향 설계원칙 5개 

1. SRP (Single Responsibility Principle) 단일 책임 원칙

2. OCP (Open /Closed Principle) 개방 - 폐쇠 원칙 

3. LSP (Liskov Substitution Principle)  리스코프 치환 원칙

4. ISP (Interface Segregation Principle) 인터페이스 분리 원칙 

5. DIP (Dependency Inversion Principle) 의존 역전 원칙

 

 

5. 인터페이스 구현 출제 기준

인터페이스 설계서 확인

인터페이스 기능 구현

인터페이스 구현 검증 

 

인터페이스 설계 방법 

데이터를 주고 받을 때, 어떤 식으로 노트를 구성할 것인가 ?

EAI (Enterprise Application Integration)  큰 규모의 회사에서 사용하는 방법

1. Point to Point : 각 애플리케이션이 다른 애플리케이션과 연결되어 데이터와 서비스를 주고받는 방식. 

2. Hub-and-Spoke : 중앙 허브가 모든 데이터와 요청을 중계하는 방식. 

3. MessageBus : 공통 메시지 버스를 사용하여 애플리케이션 간의 통신을 관리하는 방식

4. Hybrid : 두 가지 이상의 방법을 섞어서 활용하는 방법 (내부: H&S 외부 : MB)

 

ESB(Enterprise Service Bus) 

기업 애플리케이션 통합을 위한 아키텍처 패턴으로, 서비스 지향 아키텍처(SOA)를 지원. 

다양한 시스템 간의 통신을 효율적으로 관리하고 조정하기 위해 설계된 중간 계층 소프트웨어 

웹서비스가 설명된 WSDL과 SOAP프로토콜을 이용한 시스템을 연계한다. 

 

WSDL : 웹서비스명, 제공위치, 등 웹 서비스에 대한 상세 정보가 기술된 XML로 구현되어 있는 언어 

UDDI : WSDL 을 등록하고 검색하기 위한 저장소 

SOAP HTTP, HTTPS, SMTP등을 이용하여 XML 기반의 메시지를 네트워크 상태에서 교환하는 프로토콜 

 

 

인터페이스 관련 용어 

JSON : 데이터를 저장하고 전송하기 위한 경량의 데이터 교환 형식 key-value

REST : HTTP프로토콜을 기반으로 하며 자원을 URI로 표현하고 CRUD연산을 HTTP메서드 (GET,POST,PUT,DELETE)로 매핑

직렬화/역직렬화 : 직렬화는 객체의 상태를 저장하거나 전송할 수 있는 형식으로 변환하는 과정이고 역직렬화는 직렬화된 데이터를 원래 객체로 복원하는 과정 

AJAX : 웹페이지를 동적으로 갱신할 수 있게 해주는 비동기 기술 

XML : 데이터를 구조적으로 표현하기 위한 마크업 언어 

API : 소프트웨어 애플리케이션간의 상호작용을 정의하는 인터페이스이다. 

 

6. 화면설계

UI설계 원칙과 UML 

UI 유형 : CLI, GUI, NUI, OUI

UI설계 원칙

: 직관성, 유효성, 학습성, 유연성 (직유학유)

직관성 : 누구나 쉽게 이해하고 사용할 수 있어야한다는 원칙

유효성 : 정확하고 완벽하게 사용자의 목표가 달성되어야 한다는 원칙

학습성 : 모두가 쉽게 배우고 사용할 수 있어야 한다는 원칙

유연성 : 사용자의 인터랙션을 최대한 포용하고, 실수를 방지해야 한다는 원칙 

 

UML다이어그램 종류

: 구조적 다이어그램, 행위적 다이어그램

 

구조적 다이어그램 : 클래스다이어그램, 객체 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램, 복합체 다이어그램, 패키지 다이어그램 

객체 다이어그램 : 객체와 객체 사이의 관계 표현 

클래스 다이어그램 : 클래스 간의 관계와 클래스 내의 속성을 보여줌 

더보기

사진

 

행위 다이어그램 : 유스케이스 다이어그램, 시퀀스  다이어그램, 커뮤니케이션  다이어그램, 상태  다이어그램, 활동  다이어그램, 시간(타이밍)  다이어그램

유스케이스 : 사용자 관점에서 시스템 활동 표현

시퀀스 다이어그램 : 객체 간 상호작용을 메시지 흐름을 통해 시간적 순서를 알 수 있음 

커뮤니케이션 다이어그램 : 객체들이 주고 받는 메시지와 연관 관계

상태 다이어그램 : 객체가 자신이 속한 클래스와 상태 변화, 다른 객체와 상호작용에 따른 변화를 표기 

더보기

사진

 

 

 

 

7.애플리케이션 테스트 

 

테스트를 두개로 나누면 ? 정적 테스트, 동적 테스트 

정적 테스트

프로그램을 실행하지 않고 명세서나 소스코드를 대상으로 분석하는 도구 

워크스루, 인스펙션, 코드검사 

 

워크스루 : 코드를 작성한 프로그래머가 테스터나 다른 프로그래머한테 형식을 갖춰 발표 

인스펙션 : 개발팀에서 작성한 결과물을 분석하여 개발 표준 위배 여부 판단, 잘못 작성된 부분을 수정하는 작업 

 

동적 테스트  

화이트 박스 : 모듈의 코드를 오픈한 상태에서 논리적인 모든 경로를 테스트 

기초경로 검사(Basis Path Testing) : 모든 독립적인 실행 경로를 테스트 

제어 구조 검사 : 조건검사, 루프 검사, 데이터 흐름 검사 

 

    cf) 위 검사를 할 때 어느 부분을 얼마나 잘 테스트했는지 평가 지표가 있음 

    구문 커버리지 : 프로그램 모든 구문 한 번씩 실행될 수 있게 테스트 데이터 선정 

    결정 커버리지 : 전체 결정문(조건문)을 테스트 하는 방법

    조건 커버리지 : 조건문 내에 참, 거짓을 적어도 한번 씩 결과가 나오도록 수행

    조건/결정 커버리지 : 전체 조건식과 개별 조건식도 참/거짓 한번씩 나오게. 모든 결과를 다 테스트

    변경조건/결정 커버리지 : 각 개별 조건식이 다른 개별 조건식의 영향 없이 독릭적으로 영향을 주도록 테스트 케이스 수       립 

    다중조건 / 결정 커버리지 : 결정 포인트 내에 모든 개별식 조건 모든 조합 다 커버리지 

 

 

 

블랙박스 : 요구사항 명세서를 보면서 구현된 기능을 작동해보면서 테스트 

동등 분할 (Equivalence Partitioning) : 입력 데이터를 유사한 특성을 가진 그룹으로 나누고, 각 그룹에서 대표 값을 선택하여 테스트

ex) 나이를 기준으로 10대 20대 30대 나누고 15, 25, 35를 선택하여 테스트 

 

경계 값 분석 (Boundary Value Analysis) : 입력 값의 경계 영역을 집중적으로 테스트, 경계 값 주변의 최소, 최대, 바로 앞, 바로뒤 값을 

ex) 1~100중 50을 선택한다면 49, 50, 51 1, 100을 테스트 

 

결정테이블 테스트(Decision Table Testing) : 시스템이 특정 입력에 따라 상태가 어떻게 변하는지 테스트, 상태와 상태 간의 전이를 기반으로 테스트 케이스 설계 

 

상태 전이 테스트 (State Transition Testing) : 시스템이 특정 입력에 따라 상태가 어떻게 변하는지 테스트, 상태와 상태 간의 전이를 기반으로 테스트 케이스 설계 

 

유스케이스 테스트 (Use Case Testing) : 사용자의 특정 행위(유스케이스)에 따른 시스템의 동작을 테스트

오류 추정 (Error Guessing) : 테스터의 경험과 직관을 바탕으로 발생할 수 있는 오류를 추정하여 테스트 

 

애플리케이션 테스트 기본원리

파레토의 법칙 : 애플리케이션의 20%에 해당하는 코드에서 전체의 80% 결함이 발견됨

살충제 패러독스 : 동일한 테스트 케이스를 반복하면 더 이상 결함이 발견되지 않음 

오류-부재의 궤변 : 오류와 결함이 없다고 하더라도 요구사항을 만족하지 않으면 소프트웨어의 품질은 높지 않은 것이다

완벽한 테스트 불가능 : 테스트는 결함을 완전히 없애는 것이 아니라, 결함이 존재하는 것을 발견하는 데에 의의가 있음 

 

테스트 하네스의 구성요소

테스트 하네스 : 애플리케이션의 컴포넌트와 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위해 생성된 코드나 데이터 

 

1. 테스트 드라이버 : 테스트 대상 모듈을 호출하는 더미 프로그램 (상향식 테스트시, 하위 모듈을 개발하고 임시로 만든 상위 모듈 )

 

2. 테스트 스텁 : 테스트 대상 모듈이 호출하는 프로그램 (하향식 테스트 시, 상위 모듈을 개발한 이후에 하위 모듈처럼 흉내내는 임시모듈) 

 

그 외에 로그, 테스트 보고서, 테스트 데이터, 테스트 실행기, 모의 객체 등이 있다. 

 

단계별 테스트

단위 테스트 : 자신이 개발한 것만 테스트 -> 통합 테스트 : 모듈간 상호작용 테스트 -> 시스템 테스트 : 시스템 전체적인 테스트 -> 사용자 테스트(알파테스트 : 보통 비공개, 내부테스트팀이 수행 /  베타 테스트 : 사용자 공개적으로 모집 후 테스트 ) 

 

 

'자격증' 카테고리의 다른 글

AWS SAA-C03 Dump 1-50  (1) 2026.01.28
리눅스마스터 - 사용자 관리  (0) 2025.04.13
정렬 알고리즘  (0) 2024.10.17
소프트웨어 보안 구축  (9) 2024.10.16
SQL응용  (4) 2024.10.16