ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. 소프트웨어 개발
    정보처리기사 개정 2021. 5. 26. 11:56

    2. 소프트웨어 개발.pdf
    3.39MB

    소프트웨어 개발

    데이터 입출력 구현

    논리 데이터 저장소 확인

    자료 구조

    개념 및 정의

    자료를 효율적으로 관리하고 구조화 시키기 위해 이용

    자료 구조의 영역과 종류

    자료구조의 영역

    • 알고리즘 분석 기법
    • 삽입, 삭제 알고리즘
    • 정렬
    • 검색
    • 해싱

    자료구조의 범위와 종류

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled.png

    데이터 사이 참조 관계에 따른 분류

    선형 구조

    연속적인 기억공간에 배정

    • 배열
    • 스택
    • 연결 리스트

    비선형 구조

    • 트리 구조
    • 망 구조

    정적 자료구조

    처리 중에 구조, 크기에 변화가 없는 경우

    • 배열
    • 레코드
    • 딕셔너리

    동적 자료구조

    처리 중에 구조나 크기에 변화가 있는 경우

    • 트리
    • 인덱스
    • 스택

    접근 방법

    효율성

    추상화

    재사용성

    자료 구조의 종류

    • 정렬
    • 배열
    • 선형 리스트
    • 단순 연결 리스트
    • 다중 연결 리스트
    • 단순 연결 원형 리스트
    • 이중 연결 원형 리스트
    • 스택
    • 원형 큐
    • 트리
    • 그래프
    • 검색
    • 해싱

    논리 데이터 저장소

    일반적인 시스템 개발 절차

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%201.png

    데이터 모델링

    데이터 모델링 정의

    정보 구조를 엔티티, 관계 중심으로 명확하고 체계적으로 표현하여 문서화하는 기법

    데이터 모델링 목적

    • 연관 조직의 정보 요구에 대한 정확한 이해
    • 효율적인 의사소통 수단 제공
    • 유지보수 비용 감소
    • 신규, 개선 시스템 개발 기초 제공

    데이터 모델링 특성

    • 데이터 중심 분석을 통한 업무 흐름 파악 용이
    • 데이터 무결성 보장

    데이터 모델링 절차

    개념 데이터 모델링

    • 주요 엔티티 타입, 기본 속성, 관계, 주요 업무 기능 등을 포함

    논리 데이터 모델링

    • 모든 업무 데이터를 정규화하여 모델링
    • 모든 업무 규칙과 관계를 완전하고 정확하게 표현

    물리 데이터 모델링

    • 데이터베이스 생성을 위한 물리 구조로 변환

    논리 데이터 모델링 개요

    논리 데이터 모델링 정의

    엔티티와 속성들의 관계를 구조적으로 정의하는 단계

    논리 데이터 모델링 특성

    • 논리적 데이터 모델링시 요구사항을 충분히 수집하지 않으면 요구사항 변경시 많은 비용 발생
    • 의사소통 보조 자료로 E-R 모델 활용

    물리 데이터 저장소 설계

    물리 데이터 저장소

    반정규화 개념

    성능에 중점을 두어 정규화하는 방법

    데이터 모델링 규칙에 얽매이지 않고 수행

    반정규화 유형

    • 중복 테이블 추가방법
      • 집계 테이블 추가
      • 진행 테이블 추가
      • 특정 부분만을 포함하는 테이블 추가
    • 특정 범위의 데이터만 자주 처리하는 경우 활용
    • 테이블 조합방법
      • 해당 테이블을 통합하여 설계
    • 대부분 처리가 두 개 이상의 테이블에 대해 항상 같이 일어나는 경우에 활용
    • 테이블 분할방법
      • 수직 분할
      • 수평 분할
    • 칼럼의 사용 빈도의 차이가 많은 경우 활용
    • 테이블 제거방법
      • 해당 테이블 삭제
    • 더 이상 액세스되지 않는 테이블이 발생할 경우 활용
    • 칼럼의 중복화방법
      • 필요한 해당 테이블이나 칼럼을 추가
    • 자주 사용되는 컬럼이 다른 테이블에 분산되어 있어 액세스 범위를 줄이지 못 하는 경우 활용

    물리 데이터 모델링

    1. 단위 엔티티를 테이블로 변환
    2. 속성을 칼럼으로 변환
    3. UID를 기본키로 변환
    4. UID : 고유 식별자
    5. 관계를 외래키로 변환
    6. 컬럼 유형, 길이 정의
    7. 반정규화 수행
      • 중복 테이블 추가
      • 테이블 조합
      • 테이블 분할
      • 테이블 제거
      • 컬럼 중복화

    물리 데이터 저장소 구성

    1. 테이블 제약조건
      • Cascade : 참조하는 개체 모두 삭제
      • Restricted : 참조하는 개체가 있을 경우 취소
      • Nullify : 참조값 Null로 설정
    2. 수정, 삭제 제약조건
    3. 인덱스 설계인덱스 컬럼의 분포도가 10 ~ 15% 이내일 경우분포도가 좋은 컬럼은 단독으로 생성하여 활용도 향상수정이 적은 컬럼 선정인덱스는 추가적인 저장공간 소모
    4. 설계 시 고려사항
    5. 자주 조합되어 사용되는 컬럼은 결합 인덱스로 생성하여 활용
    6. 인덱스 컬럼 선정
    7. 인덱스 적용기준
    8. 뷰 설계
      • REPLACE : 뷰가 이미 존재하는 경우 재생성
      • FORCE : 기본 테이블의 존재 여부에 관계 없이 뷰 생성
      • NOFORCE : 기본 테이블이 존재할 때 만 뷰 생성
      • WITH CHECK OPTION : 서브쿼리 내의 조건 컬럼값 변경 금지
      • WITH READ ONLY : 뷰를 통해 내용 수정 불가
    9. 뷰 속성
    10. 클러스터 설계분포도가 넓을수록 유리클러스터 설계 시 고려사항
    11. 검색 효율은 높여주나 입력, 수정, 삭제시 부하 증가
    12. 액세스 효율 향상을 위한 물리적 저장 방법
    13. 적용 기준
    14. 파티션 설계
      • 범위 분할 : 열 기준 분할
      • 해시 분할 : 해시 함수에 따라 데이터 분할
      • 조합 분할 : 범위 분할 이후 해시 함수 적용하여 분할
      • 장점
      • 데이터 액세스 범위를 줄여 성능 향상
      • 전체 데이터 훼손 가능성 감소, 데이터 가용성 향상
      • IO성능 향상
    15. 파티션 종류
    16. 디스크 구성 설계
      • 정확한 용량 산정으로 효율 높임
      • 업무량이 집중되어 있는 디스크 분리 설계

    객체 관계 매핑 프레임워크

    객체 관계 매핑(ORM)

    객체 지향에서 사용할 수 있는 가상 객체 데이터베이스를 구축하는 방법

    장점

    • 객체 지향적 코드로 더 직관적
    • 재사용, 유지보수 편의성 증가
    • DBMS 종속성 감소

    단점

    • 완벽한 ORM으로만 서비스를 구현하기 어렵다.
    • 프로시저가 많은 시스템에서는 ORM의 장점을 활용하기 어렵다.

    트랜잭션 인터페이스

    데이터베이스 설계 단계

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%202.png

    트랜잭션

    처리되는 특정한 업무, 특정한 거래에서 얻어지는 결과 데이터를 기록

    데이터 조작 프로시저 작성

    프로시저

    SQL 분류

    데이터 정의어 (DDL)

    테이블 등의 구조 생성, 변경

    명령어 수행 이후 이전 상태로 복귀할 수 없다.

    명령어

    • CREATE
    • DROP
    • RENAME
    • ALTER
    • TRUNCATE

    데이터 조작어 (DML)

    데이터 변경, 검색

    트랜잭션 제어어를 활용하여 실행 전 상태로 복귀할 수 있다.

    명령어

    • INSERT
    • UPDATE
    • DELETE

    데이터 제어어 (DCL)

    데이터베이스 접근 권한을 부여, 회수할 수 있다.

    명령어

    • ROLE
    • GRANT
    • REVOKE

    트랜잭션 제어어 (TCL)

    트랜잭선의 DML 작업 단위를 제어하는 명령어

    명령어

    • COMMIT
    • 트랜잭션을 완료하여 데이터 변경 사항을 최종 반영
    • ROLLBACK
    • 데이터 변경 사항을 이전 상태로 복구
    • SAVEPOINT

    절차형 데이터 조작 프로시저

    장점

    • 스크립트 생성, 변경 후 바로 실행할 수 있다.
    • 프로그램 개발의 모듈화가 가능하다.
    • 식별자를 선언할 수 있다.
    • 절차적 언어 구조로 된 프로그램을 작성할 수 있다.
    • ERROR 처리가 가능하다.
    • 성능 향상을 기대할 수 있다.

    PL/SQL 구조

    • 선언부 (DECLARE)
    • 실행부 (BEGIN/END)
    • 예외처리부 (Exception)

    PL/SQL 처리 절차

    1. PL/SQL 엔진이 SQL문과 Non SQL 문을 구분한다.
    2. Non SQL문은 클라이언트 환경에서 Procedural Statement Executor가,
      SQL문은 SQL Statement Executor가 처리한다.

    PL/SQL을 활용한 저장형 객체 활용

    Stored Function

    값을 계산하고 결과값을 반환하기 위해 사용

    문법

    CREATE [OR REPLACE] FUNCTION function_name 
    [(parameter_name [IN | OUT | IN OUT] type [, ...])] 
    RETURN return_datatype 
    {IS | AS}
    [변수 선언 부분] 
    BEGIN
    [PL/SQL Block]
    -- PL/SQL 블록에는 적어도 한 개의 RETURN 문이 있어야 한다.
    END [function_name];

    예제

    SELECT * FROM customers;
    /*
    +----+----------+-----+-----------+----------+ 
    | ID | NAME     | AGE | ADDRESS   | SALARY   | 
    +----+----------+-----+-----------+----------+ 
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
    |  2 | Khilan   |  25 | Delhi     |  1500.00 | 
    |  3 | kaushik  |  23 | Kota      |  2000.00 | 
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
    |  6 | Komal    |  22 | MP        |  4500.00 | 
    +----+----------+-----+-----------+----------+
    */
    
    CREATE OR REPLACE FUNCTION totalCustomers 
    RETURN number IS 
       total number(2) := 0; 
    BEGIN 
       SELECT count(*) into total 
       FROM customers; 
    
       RETURN total; 
    END; 
    /
    
    DECLARE 
       c number(2); 
    BEGIN 
       c := totalCustomers(); 
       dbms_output.put_line('Total no. of Customers: ' || c); 
    END; 
    /
    /*
    Total no. of Customers: 6  
    
    PL/SQL procedure successfully completed.
    */

    Stored Procedure

    연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL 블록을 DB에 저장하기 위해 생성

    문법

    CREATE [OR REPLACE] PROCEDURE procedure_name
    [(parameter_name [IN | OUT | IN OUT] type [, ...])] 
    {IS | AS}
    [변수의 선언] 
    BEGIN
    [PL/SQL Block]
    END procedure_name;

    예제

    CREATE OR REPLACE PROCEDURE greetings 
    AS 
    BEGIN 
       dbms_output.put_line('Hello World!'); 
    END; 
    /
    
    EXECUTE greetings;
    /*
    Hello World
    
    PL/SQL procedure successfully completed.
    */

    파라미터 타입

    • IN
    • OUT
    • INOUT

    Stored Package

    오라클 DB에 저장되어 있는 서로 관련 있는 PL/SQL 프로시저, 함수들의 집합

    구조

    • 패키지 선언부 : 패키지에 포함될 PL/SQL 프로시저, 함수, 커서, 변수 예외절 선언
    • 패키지 본문 : 실제 프로시저, 함수 내용으로 구성

    문법

    -- [패키지 선언부]
    
    CREATE [OR REPLACE] PACKAGE package_name 
    {IS | AS}
    [변수 선언절] [커서 선언절] [예외 선언절]
    [PROCEDURE 선언절] [FUNCTION 선언절]
    END 패키지명;
    /
    
    -- [패키지 본문]
    
    CREATE [OR REPLACE] PACKAGE BODY package_name 
    {IS | AS}
    [변수 선언절] [커서 선언절] [예외 선언절]
    [PROCEDURE 선언절] [FUNCTION 선언절]
    END 패키지명;
    /

    예제

    SELECT * FROM customers;  
    /*
    +----+----------+-----+-----------+----------+ 
    | ID | NAME     | AGE | ADDRESS   | SALARY   | 
    +----+----------+-----+-----------+----------+ 
    |  1 | Ramesh   |  32 | Ahmedabad |  3000.00 | 
    |  2 | Khilan   |  25 | Delhi     |  3000.00 | 
    |  3 | kaushik  |  23 | Kota      |  3000.00 | 
    |  4 | Chaitali |  25 | Mumbai    |  7500.00 | 
    |  5 | Hardik   |  27 | Bhopal    |  9500.00 | 
    |  6 | Komal    |  22 | MP        |  5500.00 | 
    +----+----------+-----+-----------+----------+
    */
    
    CREATE OR REPLACE PACKAGE c_package AS 
       -- Adds a customer 
       PROCEDURE addCustomer(c_id   customers.id%type, 
       c_name  customerS.No.ame%type, 
       c_age  customers.age%type, 
       c_addr customers.address%type,  
       c_sal  customers.salary%type); 
    
       -- Removes a customer 
       PROCEDURE delCustomer(c_id  customers.id%TYPE); 
       --Lists all customers 
       PROCEDURE listCustomer; 
    
    END c_package; 
    /
    
    CREATE OR REPLACE PACKAGE BODY c_package AS 
       PROCEDURE addCustomer(c_id  customers.id%type, 
          c_name customerS.No.ame%type, 
          c_age  customers.age%type, 
          c_addr  customers.address%type,  
          c_sal   customers.salary%type) 
       IS 
       BEGIN 
          INSERT INTO customers (id,name,age,address,salary) 
             VALUES(c_id, c_name, c_age, c_addr, c_sal); 
       END addCustomer; 
    
       PROCEDURE delCustomer(c_id   customers.id%type) IS 
       BEGIN 
          DELETE FROM customers 
          WHERE id = c_id; 
       END delCustomer;  
    
       PROCEDURE listCustomer IS 
       CURSOR c_customers is 
          SELECT  name FROM customers; 
       TYPE c_list is TABLE OF customers.Name%type; 
       name_list c_list := c_list(); 
       counter integer :=0; 
       BEGIN 
          FOR n IN c_customers LOOP 
          counter := counter +1; 
          name_list.extend; 
          name_list(counter) := n.name; 
          dbms_output.put_line('Customer(' ||counter|| ')'||name_list(counter)); 
          END LOOP; 
       END listCustomer;
    
    END c_package;
    
    DECLARE 
       code customers.id%type:= 8; 
    BEGIN 
       c_package.addcustomer(7, 'Rajnish', 25, 'Chennai', 3500); 
       c_package.addcustomer(8, 'Subham', 32, 'Delhi', 7500); 
       c_package.listcustomer; 
       c_package.delcustomer(code); 
       c_package.listcustomer; 
    END; 
    /
    /*
    Customer(1): Ramesh  
    Customer(2): Khilan  
    Customer(3): kaushik     
    Customer(4): Chaitali  
    Customer(5): Hardik  
    Customer(6): Komal 
    Customer(7): Rajnish 
    Customer(8): Subham 
    Customer(1): Ramesh  
    Customer(2): Khilan  
    Customer(3): kaushik     
    Customer(4): Chaitali  
    Customer(5): Hardik  
    Customer(6): Komal
    Customer(7): Rajnish 
    
    PL/SQL procedure successfully completed
    */

    Trigger

    INSERT, UPDATE, DELETE 문이 수행될 때 묵시적으로 수행되는 프로시저

    문법

    CREATE [OR REPLACE] TRIGGER trigger_name
    {BEFORE | AFTER | INSTEAD OF }  
    {INSERT [OR] | UPDATE [OR] | DELETE}  
    [OF col_name]
    ON table_name
    [REFERENCING OLD AS o NEW AS n]
    [FOR EACH ROW]
    [WHEN] (condition)
    DECLARE
    [변수 선언절]
    BEGIN
    [PL/SQL Block]
    END;
    /

    예제

    SELECT * FROM customers;  
    /*
    +----+----------+-----+-----------+----------+ 
    | ID | NAME     | AGE | ADDRESS   | SALARY   | 
    +----+----------+-----+-----------+----------+ 
    |  1 | Ramesh   |  32 | Ahmedabad |  2000.00 | 
    |  2 | Khilan   |  25 | Delhi     |  1500.00 | 
    |  3 | kaushik  |  23 | Kota      |  2000.00 | 
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 | 
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 | 
    |  6 | Komal    |  22 | MP        |  4500.00 | 
    +----+----------+-----+-----------+----------+
    */
    
    CREATE OR REPLACE TRIGGER display_salary_changes 
    BEFORE DELETE OR INSERT OR UPDATE ON customers 
    FOR EACH ROW 
    WHEN (NEW.ID > 0) 
    DECLARE 
       sal_diff number; 
    BEGIN 
       sal_diff := :NEW.salary  - :OLD.salary; 
       dbms_output.put_line('Old salary: ' || :OLD.salary); 
       dbms_output.put_line('New salary: ' || :NEW.salary); 
       dbms_output.put_line('Salary difference: ' || sal_diff); 
    END; 
    /
    
    INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
    VALUES (7, 'Kriti', 22, 'HP', 7500.00 );
    /*
    Old salary: 
    New salary: 7500 
    Salary difference:
    */

    시점

    • BEFORE
    • AFTER

    FOR EACH ROW

    FOR EACH ROW 옵션이 있으면 행 트리거가 된다.

    행 트리거 : 컬럼의 각각 행의 데이터 변화가 생길 때마다 실행

    문장 트리거 : 트리거 사건에 의해 단 한번 실행

    데이터 조작 프로시저 개발 수행 순서

    1. 데이터 저장소에 연결
    2. 데이터 저장소 정의
    3. 데이터 조작 프로시저 작성
    4. 데이터 검색 프로시저 작성
    5. 절차형 데이터 조작 프로시저 작성

    프로그램 디버깅

    SQL과 SQL*Plus 차이점

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%203.png

    SQL*Plus 명령어 유형별 처리 내용

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%204.png

    단위 테스트 도구

    PL/SQL 테스트를 위한 SQL*Plus 활용

    PL/SQL 테스트

    DBMS_OUTPUT 패키지 활용

    메세지를 버퍼에 저장하고 버퍼로부터 메세지를 읽어오는 인터페이스를 제공

    패키지 제공 메소드

    • DISABLE : 메시지 버퍼 내용 삭제
    • ENABLE : 메시지 버퍼 내용 할당
    • PUT : 메시지 버퍼에 저장되는 메시지의 마지막 라인 끝에 새로운 라인문자(EOL)가 추가되지 않음
    • PUT_LINE : PUT과 달리 메시지 끝에 새로운 라인문자가 추가됨
    • GET_LINE : 한 번 호출될 때마다 하나의 라인만을 읽어옴
    • GET_LINES : 지정된 라인을 읽어옴

    실행 방법

    SERVEROUTPUT ON 설정 이후 실행하고자 하는 PL/SQL 블록 또는 저장 객체명을 호출한다.

    오류 조치 및 확인

    PL/SQL 실행 중 오류 발생시 SHOW ERROR 명령어를 사용하여 오류 내용을 확인할 수 있다.

    저장 객체 테스트

    Stored Function

    1. 반환값을 저장할 변수 선언
    2. 함수 실행
    3. 변수의 출력은 PRINT를 사용하고 함수의 반환값 저장한 변수 값 확인

    Stored Procedure

    1. 프로시저 실행 후 변경될 이전 값 확인
    2. 프로시저 실행
    3. 데이터 수정 확인

    Stored Package

    1. SET SERVEROUTPUT ON 실행
    2. 수행결과 확인

    Trigger

    1. SET SERVEROUTPUT ON 실행
    2. 데이터 처리 결과 확인

    데이터 조작 프로시저 최적화

    Query 성능 측정 (데이터 조작 프로시저 성능 개선)

    SQL 처리 흐름

    SQL 처리 흐름도

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%205.png

    구문 분석 단계

    • SQL문이 정상적으로 작성되었는지 분석, SQL 내에 포함된 테이블, 뷰 등이 존재하는지 확인

    실행 단계

    • 해당 테이블의 데이터가 데이터 버퍼 캐시 영역에 존재하는지 확인
    • 데이터 버퍼 캐시영역에 존재한다면 캐시영역의 데이터를 그대로 추출
    • 존재하지 않는다면 테이블의 해당 데이터 파일로부터 테이블을 읽어서 데이터 버퍼 캐시 영역에 저장
    • DML 문장일 경우 데이터 버퍼 캐시 영역에서 새로운 데이터로 변경, 삭제, 입력

    추출 단계

    • 데이터 버퍼 캐시영역에서 관련 테이블 데이터를 읽어 사용자가 요청한 클라이언트로 전송
    • SELECT 문의 경우에만 추출 단계 실행

    SQL 성능 최적화를 위한 유틸리티 활용

    TKPROF 활용

    실행되는 SQL 문장 분석 정보를 제공

    Trace 결과로 파악할 수 있는 분석 정보 내용

    • Parse, Execute, Fetch수
    • CPU 시간/경과된 시간
    • 물리적/논리적 Reads
    • 처리된 로우수
    • 라이브러리 캐시 Misses
    • 파싱이 발생할 때의 사용자
    • 커밋(Commit)/롤백(Rollback)

    Trace 유형

    • Instance Level 추적 : 모든 SQL 수행에 대한 Trace 파일 생성
    • Session Level 추적 : 특정 프로세스별로 추적 파일 생성

    Trace 관련 파라미터

    • timed_statistics : CPU시간, 실행시간등 시간에 관련된 정보를 표시하기 위해 사용
    • max_dump_file_size : Trace 파일의 최대 크기(단위: OS블럭수)
    • user_dump_dest : Trace 파일이 생성될 디렉토리

    TKPROF 활용법

    SQL Trace가 생성한 Trace 파일을 사용자가 읽을 수 있는 형태로 변환시켜주는 도구

    적용 명령어

    tkprof tracefile_name outputfile_name [sort=options] [print=n]
    [explain=userid/passwd] [insert=filename] [sys=no] [aggregate=no]
    [record=filename] [table=schema.tablename]

    명령어 옵션

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%206.png

    TKPROF 결과 항목 의미

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%207.png

    EXPLAIN PLAN

    SQL문의 액세스 경로를 확인하여 성능개선을 할 수 있도록 SQL문을 분석하고 해석하여 실행 계획을 수립하고, 관련 테이블에 저장하도록 지원해 주는 도구

    PLAN_TABLE 결과 항목 의미

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%208.png

    데이터 조작 프로시저 성능 개선하기

    시스템 성능 개선 영역, 절차를 이해한다.

    성능 개선 대상 영역과 수행 주체

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%209.png

    SQL 성능개선 순서를 이해한다.

    • 문제 있는 SQL 식별
    • 옵티마이저 통계 확인
    • 실행 계획 검토
    • SQL문 재구성
      • WHERE = 을 많이 써 범위를 줄여 처리 속도가 빨라지도록 한다.
      • 부분 범위 처리의 경우 Sub-Query에 Exists를 사용하여 불필요한 검색을 하지 않도록 한다.
    • 인덱스 재구성
    • 실행 계획 유지관리

    소스코드 인스펙션

    소스코드 인스펙션 개요

    주기적으로 코드를 확인하고 개선점, 표준 위반, 보안 취약점 등에 대해 코드 인스펙션을 수행해야 한다.

    통상적인 소스코드 인스펙션과의 차이

    소스코드 내용만 보는 것이 아닌 소스코드와 관련된 각종 분석 툴들의 전체적인 사용현황, 적정성, 설정 내용, 배포 방식 등 프로젝트 전체의 다각적 관점을 통해 소스코드의 개선 사항을 도출, 시정하는 활동

    사용 툴

    • Subversion
    • PMD
    • Protex
    • Fortify SCA
    • Jenkins
    • Protex

    통합 구현

    모듈 구현

    단위 모듈 구현

    입출력 데이터 및 알고리즘 구현

    단위 기능

    시스템 소프트웨어 구현의 기본이 되는 한 가지 동작을 수행하는 작은 기능

    입출력 데이터

    하드웨어의 특징 및 기능별로 나누어 설계할 수 있으며 시스템의 에러율을 줄이기 위해 데이터를 표준화하여 설계

    RFC문서

    인터넷 기술에 적용 가능한 새로운 혁신, 연구, 기법 등을 모아 놓은 메모

    RFC 관리 방법

    • RFC 편집자는 문서에 일련번호를 부여하고 이 번호는 출판 이후 폐지되거나 수정되지 않는다.
    • RFC 문서는 TXT 파일 형태로 작성된다.

    UML 다이어그램

    소프트웨어 개발자 간의 의사소통을 쉽게 하기 위해 개발된 모델링 언어

    시스템 소프트웨어

    운영체제를 구현한 소프트웨어와 운영체제에서 사용되는 디바이스 드라이버 등이 포함되는 범위의 소프트웨어

    시스템 소프트웨어의 공통 기능

    • 프로세스 관리
      • 프로세스에 자원 할당
      • 프로세스 간 정보를 공유하고 교환
      • 자원 보호
      • 프로세스 간 작업 및 메모리의 동기화
      • 각 프로세스를 위한 자료 구조 관리
      • 프로세스 제어
    • 인터럽트
    • 메모리 관리
    • 파일 시스템
    • 장치 드라이버
    • 네트워킹
    • 보안
    • 입출력

    시스템 소프트웨어 구현 방식

    • GUI
    • CLI

    기능 플로에 따른 단위 모듈 구현

    단위 모듈

    시스템을 이루는 기능을 수행하기 위한 함수 및 자원 등의 전체 집합

    기능 플로 작성 도구

    순서도, 유스케이스 다이어그램, UML, 의사 코드 등의 도구를 사용하여 표현

    단위 모듈 구현 단계

    기본 및 상세 설계를 통해 산출 된 기능 및 코드 명세서를 구현

    단위 모듈 테스트

    단위 모듈 테스트의 개요

    명세서의 내용대로 개별 모듈이 제대로 구현되어 정해진 기능을 정확히 수행하는지 테스트

    사용자용 화면이 없는 경우 스텁, 드라이버를 사용하여 단위 모듈을 테스트

    단위 모듈 테스트를 수행하면 발견할 수 있는 오류

    • 잘못 사용한 자료형
    • 잘못된 논리 연산자
    • 알고리즘오류에 따른 원치 않는 결과
    • 틀린 계산 수식에 의한 잘못된 결과
    • 탈출구가 없는 반복문의 사용

    소프트웨어 테스트

    소프트웨어 테스트의 목적

    • 프로그램에 잠재된 오류 발견
    • 기술적인 기능 및 성능의 확인
    • 사용자 요구만족도 향상
    • 제품 신뢰도 향상

    소프트웨어 테스트 유형

    프로그램 실행 여부에 따른 분류

    • 정적 테스트 : 프로그램 실행 없이 소스코드의 구조를 분석하여 논리적으로 검증
    • 동적 테스트 : 프로그램의 실행을 요구하는 테스트, 화이트박스 테스트와 블랙박스 테스트가 있다.

    테스트 목적에 따른 분류

    • 회복 테스트 : 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지 테스트
    • 안전 테스트 : 보안 측면의 결함을 미리 점검
    • 강도 테스트 : 과부하 시에도 정상적으로 작동되는지 검증
    • 성능 테스트 : 응답시간, 업무량 등을 테스트
    • 구조 테스트 : 시스템 내부 논리 경로, 소스코드 복잡도를 평가
    • 회귀 테스트 : 변경, 수정 된 코드에 대해 결함 발견 여부 평가
    • 병행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터 입력 후 결과 비교

    테스트 기법에 따른 분류

    • 화이트박스 테스트
      • 구조적 기법 : 프로그램의 논리적 복잡도 측정 후 평가
      • 루프 기법 : 프로그램의 루프 구조에 국한하여 실시
    • 블랙박스 테스트
      • 동등 분할 기법 : 다양한 입력 조건의 테스트 사례 선정하여 테스트
      • 경계값 분석 기법 : 경계값을 기준으로 결과의 정확성 테스트
      • 원인 결과 그래프 기법 : 입력 값이 출력 값에 미치는영향을 그래프로 표현하여 오류 검출
      • 오류 예측 기법 : 간과할 수 있는 오류들을 감각, 경험으로 검출

    테스트 시각에 따른 분류

    • 검증 : 제품의 생산 과정을 테스트
    • 확인 : 생산된 제품의 결과를 테스트

    테스트 기반에 따른 분류

    • 명세 기반 테스트 : 주어진 명세를 빠짐 없이 테스트 케이스로 구현하고 있는지 확인
    • 구조 기반 테스트 : 소프트웨어 내부 논리 흐름에 따라 테스트 케이스 작성, 확인
    • 경험 기반 테스트 : 테스터의 경험을 토대로 수행하는 테스트

    통합 구현 관리(연계 데이터 구성하기)

    IDE 도구

    통합 개발 환경

    개발자가 소프트웨어를 개발하는 과정에 필요한 모든 툴을 하나의 인터페이스로 통합하여 제공하는 것

    협업 도구

    협업 도구의 기능 및 필요성

    하나의 소프트웨어 개발 프로젝트에 참여하는 개발자들이 서로 다른 작업 환경에서도 원활하게 프로젝트를 수행할 수 있도록 도와주는 협업을 위한 도구

    협업 도구의 기능 및 필요성

    • 개발자 간 커뮤니케이션
    • 일정 및 이슈 공유
    • 개발자 간 집단 지성 활용

    협업 도구의 종류

    • 프로젝트 및 일정 관리
    • 전체 프로젝트와 개별 업무들의 진행 상태, 일정 등을 공유하는 기능을 제공
    • 마인드 매핑
    • 온라인 공동 마인드 매핑 도구, 공동 브레인 스토밍, 정보간 관계망 그리기 수행
    • 디자인 공유
    • 웹 디자인 전문가들이 사용하는 도구, 디자이너가 설계한 UI, 이미지 정보들을 코드화하여 개발자에게 전달하는 기능 제공
    • 아이디어 공유
    • 아이디어나 업무와 관련된 기사 스크랩 기능 제공
    • 소스 공유
    • 오픈소스를 공유하는 공동 작업 공간
    • 문서 공유
    • 문서를 공유하거나 공동 작업을 할 수 있는 기능 젝오

    형상 관리 도구

    형상 관리 개념

    소프트웨어의 변경 사항을 체계적으로 추적, 통제하는 것

    형상 관리 도구

    소스를 버전별로 관리할 수 있어 개발 중 실수로 인한 소스 삭제나 이전으로 돌아가야 되는 경우 유용하게 사용

    형상 관리 도구 기능

    • check-out
    • 최신 소프트웨어 형상을 개발자 PC로 가져오는 기능
    • check-in
    • 개발자가 수정한 소스를 형상 관리 도구 저장소로 업로드하는 기능
    • commit
    • 개발자가 소스를 형상 관리 도구 저장소에 업로드 한 후 최종적으로 형상 관리 서버에 반영하는 기능
    • update
    • 변경 사항이 있는 경우 서버 형상을 로컬 형상으로 가져오는 기능
    • import
    • 아무것도 들어있지 않는 저장소에 처음 소스를 넣는 기능
    • export
    • 버전 관리 파일을 뺀 순수한 소스코드를 받아올 수 있다.

    형상 관리 도구 종류

    • CVS
    • SVN
    • Git
    • Perforce

    제품 소프트웨어 패키징

    제품 소프트웨어 패키징

    애플리케이션 패키징

    제품 소프트웨어 패키징 개요

    개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성하며, 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전 관리를 수행하는 것

    제품 소프트웨어 패키징을 위한 모듈 빌드

    제품 소프트웨어의 모듈 및 패키징

    모듈의 개념을 정확히 이입하고, 이에 맞는 기능 단위로 패키징 하는 것이 필요

    소프트웨어 빌드

    빌드 결과물에 대한 상세 확인 필요

    제품 소프트웨어를 위한 빌드 기법

    Ant, Make, Maven,Gradle 등의 빌드 도구 사용

    사용자 중심의 패키징 작업 이해

    사용자 환경의이해

    사용자 실행 환경을 우선 고려하여 패키징 진행

    여러 가지 실행 환경이 나오게 될 경우 각 환경에 맞는 배포본을 분류하여 패키징 작업을 여러 번 수행

    사용자 관점에서의 패키징 고려사항

    사용자 환경을 확인하여 여러 케이스를 사전에 고려

    사용자의 시스템 환경 (OS, CPU, 메모리) 수행 최소 환경을 정의

    사용자가 직관적으로 확인할 수 있는 UI를 제공하고, 매뉴얼과 일치시켜 패키징 작업

    사용자 중심의 모듈 패키징 작업 수행 순서

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2010.png

    1. 신규 개발 소스의 목적 및 기능 식별
    2. 모듈단위 분류 및 모듈화 진행
    3. 빌드 도구를 활요해 단위별 빌드 진행
    4. 고객 편의성을 위한 사용자의 요구사항, 사용 환경을 사전에 분석
    5. 최종 패키징에 대해 사용자 입장에서의 불편사항 체크
    6. 사용자 입장을 반영하여 패키징에서 변경 및 개선 진행

    애플리케이션 배포 도구

    제품 패키징 릴리즈 노트

    릴리즈 노트는 고객과 릴리즈 정보를 공유하는 문서이다.

    릴리즈 노트에는 테스트 결과와 정보가 포함된다.

    릴리즈 노트 작성 시 고려사항

    릴리즈 노트는 개발팀에서 소유권을 가지고 직접 작성하여야 한다.

    신규 소스, 빌드 등 배포 시부터 이력을 정확하게 관리하여 진행한다.

    초기 버전 릴리즈 노트 작성 항목

    릴리즈 노트 작성 항목

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2011.png

    릴리즈 노트 추가 작성 및 개선 사항 발생의 예외 케이스

    • 테스트 단계에서의 베타 버전 출시
    • 긴급 버그 수정
    • 자체 기능 향상을 포함한 모든 추가 기능의 향상
    • 사용자 요청에 따른 특이한 케이스 발생

    버전을 고려한 제품 릴리즈 노트 작성 순서

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2012.png

    1. 신규 패키징 제품의 모듈, 빌드 내용 식별
    2. 패키징된 릴리즈 정보 확인
    3. 빌드 내용에 따라 릴리즈 노트의 개요 작성
    4. 이슈 버그 및 추가 영향도를 체크하여 기술
    5. 학습한 항목에 따른 내용을 포함하여 정식 릴리즈 노트 작성
    6. 추가 개선에 따른 추가 항목을 식별하여 릴리즈 노트 작성

    제품 소프트웨어의 패키징 도구

    제품 소프트웨어 패키징 도구의 개념

    배포를 위한 패키징 시에 디지털 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공, 안전한 유통과 배포를 보장하는 도구

    패키징 도구 활용 시 고려사항

    패키징시 반드시 내부 콘텐츠에 대한 암호화, 보안을 고려한다.

    패키징 도구를 활용하여 이기종 콘텐츠 및 단말기 간 DRM연동을 고려한다.

    애플리케이션 모니터링 도구

    애플리케이션 성능 관리 모니터링 도구 개요

    애플리케이션 성능 관리

    응용 소프트웨어의 성능, 서비스 이용성을 감시하고 관리하는데 초점을 둔 시스템 관리 원칙

    운영 중인 시스템에 대한 성능, 처리량, 가용성, 기능적 무결성, 신뢰성 등의 확보를 통해 안정적인 시스템 운영을 돕기위한 도구

    응용 프로그램 성능 관리

    최종 사용자 관리, 실제 사용자 관리와 관련되어 있다.

    이종 응용 프로그램 모니터링을 위한 단일 콘솔

    모든 서버 및 응용 프로그램 모니터링 요구에 부합하는 단일 통합 응용 프로그램 성능 모니터링 도구

    APM

    웹 애플리케이션, 서버 시스템 등의 성능을 관리하는 솔루션

    APM의 3세대 분류

    1세대 : 통신 프로토콜을 확인하여 애플리케이션의 성능을 모니터링

    2세대 : Agent를 사용하여 데이터를 수집

    3세대 : 오토 스케일링 지원, 에이전트 자동 삽입, AI등의 기술 사용

    주요 특징

    • 애플리케이션 성능 관리
    • 웹 애플리케이션에 대한 실시간 모니터링 및 응답 지연 시 상세 추적을 위한 프로파일링 데이터 제공
    • 다양한 분석 & 통계 정보
    • 웹 애플리케이션 서버(WAS)에 대한 문제 분석을 위한 다양한 유틸리티와 성능 데이터에 대한 통계 데이터 제공
    • 반응형 웹 & 전용 클라이언트
    • 수집 서버 통합 기능을 통해 다수의 분산된 시스템을 단일 뷰로 모니터링 가능
    • 인프라 통합 모니터링
    • 오픈소스 소프트웨어 및 레거시 영역에서의 가상화, 시스템, 미들웨어, 데이터 베이스에 대한 통합 모니터링 환경 제공

    스택 빈도 분석

    프로파일링 기능을 통해 지연 원인을 찾을 수 없는 경우, 독자적인 통계 기법을 적용한 SFA 기능을 활용하면 코드 호출 빈도 분석 결과를 얻을 수 있어 문제를 쉽게 파익할 수 있다.

    활용방안

    • 실시간 트랜잭션 분석
    • 다각도 분석을 위한 Y축 변환
    • 프로파일링 Step by Step 상세 분석
    • 방문자 상세 분석

    디지털 권리 관리 (DRM)

    디지털 권리 관리

    저작권자가 배포한 디지털 자료나 하드웨어의 사용을 제어하고 이를 의도한 용도로만 사용하도록 제한하는 데 사용되는 모든 기술

    제품 소프트웨어 저작권 보호의 이해와 필요성

    저작권 보호 기술

    • 복제는 허용하나 사용자 확인을 거쳐 과금
    • 종량제 BM을 갖는 제품 소프트웨어의 경우 Clearing House를 통해 과금
    • 패키징 도구는 암호화, 보안 등의 기능을 고려한다.

    저작권 보호 측면의 패키징 도구 활용

    패키징 수행과 디지털 저작권 관리의 절차 및 흐름

    콘텐츠 제공자, 분배자, 소비자 간 패키징 배포 및 관리의 주체인 클리어링 하우스에서 키 관리, 라이선스 발급을 관리한다.

    저작권 관리 흐름도

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2013.png

    저작권 관리 구성 요소

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2014.png

    암호화, 보안 기능 중심의 패키징 도구 기술 및 활용

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2015.png

    제품 소프트웨어 메뉴얼 작성

    제품 소프트웨어 매뉴얼

    제품 소프트웨어 설치 매뉴얼의 작성 항목

    • 목차 및 개요
    • 서문
    • 기본 사항
    • %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2016.png

    제품 소프트웨어 설치 매뉴얼 작성 방법

    • 설치 매뉴얼 내용
      • 설치 화면 및 UI
      • 설치 이상 시 메시지 설명
      • 설치 완료 및 결과
      • FAQ
      • 설치 시 점검 사항
      • 네트워크 환경 및 보안
    • 고객 지원 방법
      • 유선, Email, 홈페이지 URL
      • 고객 안내 문구
    • 준수 정보 & 제한 보증

    제품 소프트웨어 설치 매뉴얼 작성 순서

    설치 매뉴얼 수행 순서

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2017.png

    1. 제품 소프트웨어의 개요 및 기능 식별
    2. 화면 단위로 UI 분류
    3. 설치 파일 및 백업 파일 등 관련 파일 확인
    4. 추후 삭제를 위한 절차 확인
    5. 설치 진행 시 이상 메세지 등에 대한 케이스 확인
    6. 최종 설치 완료 시 결과 캡처 후 매뉴얼에 적용

    제품 소프트웨어 사용자 매뉴얼 개요

    사용자 매뉴얼 작성 기본 사항

    사용자 매뉴얼 작성 단계

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2018.png

    사용자 매뉴얼 작성 절차

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2019.png

    제품 소프트웨어 사용자 매뉴얼 작성 항목

    • 목차 및 개요
    • 서문
      %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2020.png
    • 사용자 매뉴얼 기록 항목
    • 기본 사항
    • %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2021.png

    제품 소프트웨어 사용자 매뉴얼 작성 방법

    사용자 매뉴얼 내용

    • 사용자 화면 및 UI
    • 주요 기능 분류
    • 응용 프로그램
    • 장치 연동
    • 네트워크 환경
    • 프로파일 설명

    액세서리

    • SW 툴킷
    • 디바이스

    고객 지원 방법

    • 유선, Email, 홈페이지 URL
    • 고객 안내 문구

    준수 정보 & 제한 보증

    제품 소프트웨어 사용자 매뉴얼 작성 순서

    사용자 매뉴얼 작성 순서

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2022.png

    1. 제품 소프트웨어의 개요 및 기능 식별
    2. 화면 단위로 UI 분류
    3. 사용자 로그 및 백업 파일 등 관련 파일 확인
    4. 사용 초기화를 위한 절차 확인
    5. 사용시 이상 메세지 등에 대한 케이스 확인
    6. 사용자 대응을 위한 결과 및 코드를 캡처 후 매뉴얼에 적용

    국제 표준 제품 품질 특성

    소프트웨어 품질 평가 국제 표준화 현황

    ISO

    소프트웨어 품질의 관점

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2023.png

    • ISO/IEC 9001
    • 설계, 개발, 생산, 설치, 서비스 과정에 대한 품질 보증 모델
    • ISO/IEC 15504
    • 소프트웨어 프로세스를 평가, 개선함으로써 품질 및 생산성을 높이고자 하는 표준
    • ISO/IEC 9126
    • 고객 관점에서의 소프트웨어 품질 특성, 품질 부특성을 정의
    • ISO/IEC 12119
      • 품질 특성 요구사항을 규정
    • ISO/IEC 14598
      • 제품 품질 측정, 평가 방법과 절차 정의

    IEEE

    소프트웨어공학기술위원회내에 소프트웨어공학표준위원회를 설치해 소프트웨어공학 표준화 업무를 담당한다.

    제품 소프트웨어 버전 관리

    소프트웨어 버전 관리 도구

    제품 소프트웨어 버전 등록

    제품 소프트웨어 패키징의 형상 관리

    형상 관리를 통해 이전 리비전, 버전에 대한 정보에 언제든지 접근 가능해 배포본 관리에 유용하다.

    재품 소프트웨어의 버전 등록 상세 기법

    버전 관리 항목

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2024.png

    작업 단계별 버전 등록 기법

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2025.png

    제품 소프트웨어 버전 관리 도구의 유형별 특징

    방식에 따른 버전 관리 도구

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2026.png

    구분에 따른 버전 관리 도구

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2027.png

    현업에서 쓰이는 다양한 버전 관리 도구별 특징

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2028.png

    형상 관리 지침과 연계한 버전 관리 도구 사용 방법

    버전 관리 도구 도입 사용 사례

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2029.png

    제품 소프트웨어 버전 관리 도구 활용

    버전 현황 관리 기법 및 백업, 장애 복구

    자료 백업 정책 및 방법

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2030.png

    빌드 자동화 도구

    빌드 자동화 도구

    • C, C++ : Makefile
    • Java : Ant, Maven
    • Scala : sbt

    빌드 자동화를 위한 관리 툴의 종류

    • Eclipse
    • Maven, Gradle
      %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2031.png
    • Gradle의 장점

    애플리케이션 테스트 관리

    애플리케이션 테스트 케이스 설계

    응용 소프트웨어의 유형 및 특성 이해

    상용 소프트웨어의 특성 및 유형

    • 산업 범용 소프트웨어
      • 시스템 소프트웨어
        • 운영체제
        • DBMS
        • 데이터 통합
        • 프로그래밍 언어
        • 스토리지 소프트웨어
        • 소프트웨어 공학 도구
        • 가상화 소프트웨어
        • 시스템 보안 소프트웨어
      • 미들웨어
        • WAS
        • 실시간 데이터 처리
        • 연계 통합 솔루션
        • 분산 병렬 처리
        • 네트워크 관리
        • 시스템 관리
        • 클라우드 서비스
        • 접근 제어 소프트웨어
      • 응용 소프트웨어
        • 영상 인식/분석
        • 영상 코덱/스트리밍
        • 영상 저작/편집/합성
        • 3D 스캐닝/프린팅
        • 가상 시뮬레이션
        • 콘텐츠 보호/관리/유통
        • 정보 검색
        • 음성 처리
        • 오피스 소프트웨어
    • 산업 특화 소프트웨어

    서비스 제공 소프트웨어의 특성 및 유형

    특정한 사용자의 요구사항만 구현함을 목적으로 생산

    • 신규 개발 소프트웨어
    • 기능 개선 소프트웨어
    • 추가 개발 소프트웨어
    • 시스템 통합 소프트웨어

    소프트웨어 테스트의 이해

    소프트웨어 테스트의 필요성

    • 오류 발견 관점
    • 오류 예방 관점
    • 품질 향상 관점

    소프트웨어 테스트의 기본 원칙

    소프트웨어 테스트 원리

    • 테스팅은 결함이 존재함을 밝히는 활동이다.
    • 완벽한 테스팅은 불가능하다
    • 테스팅은 개발 초기에 시작해야 한다
    • 결함 집중
    • 살충제 패러독스
    • 테스팅은 정황에 의존한다
    • 오류-부재의 궤변

    소프트웨어 테스트 프로세스

    테스트 프로세스

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2032.png

    테스트 계획서

    테스트 목적과 범위 정의, 대상 시스템 구조 파악, 테스트 수행 절차, 테스트 일정, 조직의 역할 및 책임 정의, 종료 조건 정의 등 테스트 수행을 계획한 문서

    테스트 케이스

    테스트를 위한 설계 산출물

    테스트 시나리오

    테스트 수행을 위한 여러 개의 테스트 케이스 집합

    테스트 결과서

    테스트 결과를 정리한 문서

    소프트웨어 테스트의 유형

    프로그램 실행 여부에 따른 테스트

    • 정적 테스트 : 프로그램 실행 없이 소스코드의 구조를 분석하여 논리적으로 검증
    • 동적 테스트 : 프로그램의 실행을 요구하는 테스트, 화이트박스 테스트와 블랙박스 테스트가 있다.

    기법에 따른 테스트

    • 화이트박스 테스트
      • 구조적 기법 : 프로그램의 논리적 복잡도 측정 후 평가
      • 루프 기법 : 프로그램의 루프 구조에 국한하여 실시
    • 블랙박스 테스트
      • 동등 분할 기법 : 다양한 입력 조건의 테스트 사례 선정하여 테스트
      • 경계값 분석 기법 : 경계값을 기준으로 결과의 정확성 테스트
      • 원인 결과 그래프 기법 : 입력 값이 출력 값에 미치는 영향을 그래프로 표현하여 오류 검출
      • 오류 예측 기법 : 간과할 수 있는 오류들을 감각, 경험으로 검출

    시각에 따른 테스트

    • 검증 : 제품의 생산 과정을 테스트
    • 확인 : 생산된 제품의 결과를 테스트

    목적에 따른 테스트

    • 회복 테스트 : 고의로 실패를 유도하고 시스템이 정상적으로 복귀하는지 테스트
    • 안전 테스트 : 보안 측면의 결함을 미리 점검
    • 강도 테스트 : 과부하 시에도 정상적으로 작동되는지 검증
    • 성능 테스트 : 응답시간, 업무량 등을 테스트
    • 구조 테스트 : 시스템 내부 논리 경로, 소스코드 복잡도를 평가
    • 회귀 테스트 : 변경, 수정 된 코드에 대해 결함 발견 여부 평가
    • 병행 테스트 : 변경된 시스템과 기존 시스템에 동일한 데이터 입력 후 결과 비교

    종류에 따른 테스트

    • 명세 기반 테스트 : 주어진 명세를 빠짐 없이 테스트 케이스로 구현하고 있는지 확인
    • 구조 기반 테스트 : 소프트웨어 내부 논리 흐름에 따라 테스트 케이스 작성, 확인
    • 경험 기반 테스트 : 테스터의 경험을 토대로 수행하는 테스트

    테스트 케이스와 테스트 오라클의 이해

    테스트 케이스의 개념

    명세 기반 테스트의 설계 산출물

    테스트 케이스 작성

    1. 테스트 계획 검토 및 자료 확보
    2. 위험 평가 및 우선순위 결정
    3. 테스트 요구사항 정의
    4. 테스트 구조 설계 및 테스트 방법 결정
    5. 테스트 케이스 정의
    6. 테스트 케이스 타당성 확인 및 유지보수

    테스트 오라클

    테스트 오라클 정의

    테스트의 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참 값을 입력하여 비교하는 기법

    테스트 오라클 유형

    • 참 오라클
    • 샘플링 오라클
    • 휴리스틱 오라클
    • 일관성 검사 오라클 (= 회귀 테스트)

    오라클 적용 방안

    참 오라클은 미션 크리티컬한 업무에 적용하고, 샘플링/추정 오라클은 일반적인 업무에 적용한다.

    테스트 레벨

    V-모델과 테스트 단계

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2033.png

    단위 테스트

    소프트웨어 설계의 최소 단위인 모듈, 컴포넌트를 테스트

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2034.png

    통합 테스트

    단위 테스트 후 모듈들의 조합을 위한 인터페이스 오류 발견을 테스트

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2035.png

    시스템 테스트

    개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는지 테스트

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2036.png

    인수 테스트

    사용자 측면에서 소프트웨어가 요구사항을 충족시키는지 테스트

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2037.png

    설치 테스트

    사용자 환경에 설치하는 과정 중에 나타날 수 있는 결함을 발견할 목적으로 수행

    테스트 시나리오

    테스트 시나리오의 이해

    테스트 시나리오의 정의

    테스트 수행을 위한 여러 테스트 케이스의 집합

    테스트 케이스의 동작 순서를 기술, 테스트를 위한 절차를 명세화

    테스트 시나리오의 필요성

    테스트 수행 절차를 미리 정함으로써 설계단계에서의 요구사항, 대안 흐름과 같은 테스트 항목을 빠짐 없이 테스트하기 위함

    테스트 시나리오 작성 시 유의점

    시스템별, 모듈별, 항목별 테스트 시나리오를 분리하여 작성

    고객의 요구사항, 설계 문서 등을 토대로 테스트 시나리오 작성

    각 테스트 항목은 식별자 번호, 순서 번호, 테스트 데이터, 테스트 케이스, 예상 결과, 확인 등의 항목을 포함하여 작성

    테스트 시나리오 작성 및 테스트 환경 구축 순서

    1. 기존에 수립된 테스트 계획 검토
    2. 테스트 조직 및 역할 정의
    3. 통합 테스트를 위한 테스트 데이터, 시작 및 종료 조건 준비
    4. 테스트 방식, 대상, 범위를 반영한 테스트 시나리오 작성
    5. 작성된 테스트 시나리오를 수행하기 위한 테스트 환경 준비

    애플리케이션 통합 테스트

    결함관리 도구

    테스트 결함 관리

    각 단계별 테스트 수행 후 발생한 결함의 재발을 방지하고,
    유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 활동

    결함 관리 프로세스

    1. 에러 발견
    2. 에러 등록
    3. 에러 분석
    4. 결함 확정
    5. 결함 할당
    6. 결함 조치
    7. 결함 조치 검토 및 승인

    결함 추이 분석

    테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈, 컴포넌트에서 결함이 발생할지를 추정하는 과정

    결함 관리 측정 지표

    • 결함 분포
    • 결함 추세
    • 결함 에이징

    단계별 결함 유입 분류

    • 기획 시 유입되는 결함
    • 설계 시 유입되는 결함
    • 코딩 시 유입되는 결함
    • 테스트 부족으로 유입되는 결함

    결함 심각도별 분류

    결함 심각도 분류 사례

    • 치명적 결함
    • 주요 결함
    • 보통 결함
    • 경미한 결함
    • 단순 결함

    결함 심각도 관리

    결함 관리의 정확성, 신뢰성 향상을 위해 결함 심각도의 각 단계별로 표준화 된 용어를 사용해 정의해야 하며, 프로젝트 및 조직 차원에서 결함 관리 활동을 수행해야 한다.

    결함 우선순위

    결함 우선순위 표현 사례 : 결정적, 높음, 보통, 낮음, 즉시해결, 주의 요망, 대기, 개선 권고 등

    결함 관리 항목

    테스트 수행 후 발견된 결함은 결함 관리 시스템에 등록해 관리해야 한다.

    결함 관리 항목

    • 결함 내용
    • 결함 ID
    • 결함 유형
    • 발견일
    • 심각도
    • 우선순위
    • 시정 조치 예정일
    • 수정 담당자
    • 재테스트 결과
    • 종료일

    결함 관리 도구

    Mantis, Trac, Redmine, Bugzilla, QC, Clear Quest, JIRA

    테스트 자동화 도구

    테스트 자동화의 개념

    테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써, 테스트 시간 단축과 인력 투입 비용을 최소화하고, 쉽고 효율적인 테스트를 수행하는 방법

    테스트 자동화 도구의 장단점

    • 장점
      • 반복되는 테스트 데이터 재입력 작업의 자동화
      • 사용자 요구 기능의 일관성 검증에 유리
      • 테스트 결과 값에 대한 객관적 평가 기준 제공
      • 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
      • UI가 없는 서비스의 경우에도 정밀한 테스트 가능
    • 단점
      • 도구 도입 후 도구 사용 방법에 대한 교육 및 학습이 필요
      • 도구를 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
      • 상용 도구의 경우 고가이고, 유지 관리 비용이 높다.

    테스트 자동화 도구 유형

    정적 분석 도구

    소스코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용

    테스트 실행 도구

    테스트를 위해 작성된 스크립트를 실행한다.

    • 데이터 주도 접근 방식다양한 테스트 데이터를 이용하여 동일한 테스트 케이스를 반복하여 실행할 수 있으며 스크립트 언어에 익숙하지 않은 테스터도 쉽게 테스트를 수행할 수 있다.
    • 테스트 데이터를 스프레드시트에 저장하고, 이 데이터를 읽고 실행할 수 있도록 한다.
    • 키워드 주도 접근 방식키워드를 이용하여 테스트 수행 동작을 정의할 수 있으며, 테스트 대상 애플리케이션의 특성에 맞추어 키워드에 대해 테일러링을 수행할 수 있다.
    • 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 스프레드시트에 저장한다.

    성능 테스트 도구

    애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지 확인한다.

    테스트 통제 도구

    테스트 관리 도구, 형상 관리 도구, 결함 추적/관리 도구 등이 있다.

    테스트 장치 도구

    테스트를 지원하기 위한 코드와 데이터

    구성 요소

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2038.png

    테스트 자동화 도구

    휴먼 에러를 줄이고 테스트에 소요되는 비용과 시간을 절감하며, 테스트 품질을 향상할 수 있는 도구

    테스트 단계별 테스트 자동화 도구

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2039.png

    소프트웨어 테스팅 자동화 툴

    • Selenium
    • TestingWhiz
    • HPE Unified Functional Testing
    • TestComplete
    • Ranorex
    • Sahi
    • Watir
    • Tosca Testsuite
    • Telerik TestStudio
    • WatiN

    통합 테스트

    통합 테스트

    소프트웨어 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적인 테스트 기법

    통합 테스트 방식

    • 비점증적 방식 : 모든 컴포넌트를 사전에 통합하여 전체 프로그램을 한번에 테스트하는 것
    • 점증적 방식 : 상향식 통합과 하향식 통합 방식으로 구분할 수 있다.

    하향식 통합

    Top Down 방식

    메인 제어 모듈로부터 아래 방향으로 제어 경로를 따라 이동하면서 하향식으로 통합 테스트를 진행

    수행 단계

    메인 제어 모듈은 작성된 프로그램을 사용하고, 아직 작성되지 않은 하위 제어 모듈 및 모든 하위 컴포넌트들을 대신하여 스텁을 개발한다.

    하향식 방식의 통합 테스트

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2040.png

    상향식 통합

    Bottom Up 방식

    애플리케이션 구조에서 최하위 레벨의 모듈 또는 컴포넌트로부터 위쪽 방향으로 제어 경로를 따라 이동하면서 구축, 테스트를 수행

    수행 단계

    최하위 레벨의 모듈 또는 컴포넌트들이 하위 모듈의 기능을 수행하는 클러스터로 결합된다.

    상위 모듈에서 데이터의 입출력을 확인하기 위한 더미 모듈인 드라이버를 작성한다.

    각 통합된 클러스터 단위를 테스트한다.

    테스트가 완료되면 각 클러스터들은 프로그램의 위쪽으로 결합되며, 드라이버는 실제 모듈 또는 컴포넌트로 대체된다.

    상향식 방식의 통합 테스트

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2041.png

    회귀 테스팅

    통합 테스트가 완료된 후에 변경된 모듈이나 컴포넌트가 있다면 새로운 오류 여부를 확인하기 위해 회귀 테스트를 수행할 수 있다.

    회귀 테스트 케이스 선정 방법

    모든 애플리케이션의 기능을 수행할 테스트 케이스의 대표적 샘플 도출

    변경에 의한 영향도가 가장 높은 애플리케이션 기능에 집중한 추가적인 테스트 케이스 도출

    실제 수정이 발생한 모듈 또는 컴포넌트에서부터 시행하는 테스트 케이스를 도출한다.

    통합 테스트 수행 순서

    1. 통합 테스트 계획서 검토통합 테스트 수행 방안에 대해 검토 후 테스트 방법 결정
      %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2042.png
    2. 통합 테스트 수행 방법 분류
    3. 통합 테스트에 투입될 일정, 인력을 확정
    4. 통합 테스트 테스트 환경 준비
    5. 통합 테스트 케이스 및 시나리오 검토
    6. 통합 테스트 수행
    7. 통합 테스트 결과 기록

    애플리케이션 성능 개선

    알고리즘

    알고리즘의 조건

    • 입력 : 0 또는 그 이상의 외부 제공 자료가 존재한다.
    • 출력 : 최소 1개 이상의 결과를 가진다.
    • 명확성 : 각 단계는 명확하고 애매함이 없어야 한다.
    • 유한성 : 각 단계들을 유한한 횟수 거친 후 문제를 해결하고 종료해야 한다.
    • 효과성 : 모든 연산들은 충분히 단순해야 한다.

    알고리즘 개발 절차

    1. 문제 정의
    2. 모델 고안
    3. 명세 작성
    4. 설계
    5. 검증
    6. 분석
    7. 구현
    8. 테스트
    9. 문서화

    알고리즘의 평가

    • 시간 복잡도
    • 공간 복잡도

    알고리즘의 특징

    • 정밀성 : 변하지 않는 명확한 작업 단계를 가져야 한다.
    • 유일성 : 각 단계마다 명확한 다음 단계를 가져야 한다.
    • 타당성 : 구현할 수 있고 실용적이어야 한다.
    • 입력 : 정의된 입력을 받아들일 수 있어야 한다.
    • 출력 : 답으로 출력을 내보낼 수 있어야 한다.
    • 유한성 : 특정 수의 작업 이후에 정지해야 한다.
    • 일반성 : 정의된 입력들에 대해 일반적으로 적용할 수 있어야 한다.

    애플리케이션 성능 분석

    애플리케이션 성능 분석

    애플리케이션 성능 측정 지표

    • 처리량
    • 응답 시간, 경과 시간
    • 자원 사용률

    유형별 성능 분석 도구

    • 성능, 부하, 스트레스 점검 도구
    • 모니터링 도구

    애플리케이션 성능 저하 원인 분석

    • 데이터베이스 연결 및 쿼리 실행 시 발생되는 성능 저하
      • 데이터베이스 락
      • 불필요한 데이터베이스 인출
      • 연결 누수
      • 부적절한 커넥션 풀 크기
    • 내부 로직으로 인한 성능 저하
      • 웹 애플리케이션의 인터넷 접속 불량
      • 특정 파일 업로드 다운로드로 인한 성능 저하
      • 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
    • 외부 호출로 인한 성능 저하
    • 잘못된 환경 설정, 네트워크 문제로 인한 성능 저하 원인
      • 환경 설정으로 인한 성능 저하
      • 네트워크 장비로 인한 성능 저하

    애플리케이션 성능 분석 순서

    1. 애플리케이션 성능 점검 도구 유형 정리
      • 성능 테스트 도구
      • 시스템 모니터링 도구
    2. 애플리케이션 성능 점검 계획서 작성
    3. 애플리케이션 성능 테스트 수행
    4. 성능 테스트 결과 분석을 통한 성능 저하 요인 발견

    애플리케이션 성능 개선

    소스코드 최적화

    클린 코드

    클린 코드 작성 원칙

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2043.png

    소스코드 품질 분석 도구

    • 정적 분석 도구
    • 동적 분석 도구

    애플리케이션 성능 개선 순서

    1. 애플리케이션 성능 개선 방안 검토
    2. 코드 최적화를 통한 성능 개선 방안 작성
    3. 아키텍처 조정을 통한 성능 개선 방안 작성
    4. 프로그램 호출 순서 조정을 통한 성능 개선 방안 작성
    5. 소스코드 품질 분석 도구를 활용하여 애플리케이션 성능 개선
    6. 애플리케이션 성능 현황 관리

    인터페이스 구현

    인터페이스 설계 확인

    인터페이스 설계서

    인터페이스 설계서

    시스템 인터페이스 정의서

    시스템이 갖는 인터페이스 목록과 인터페이스 명세를 보여주는 설계 문서

    상세 기능별 인터페이스 정의서

    인터페이스를 통해 각 세부 기능의 개요, 세부 기능이 동작하기 전에 필요한 사전 조건, 사후 조건 및 인터페이스 파라미터, 호출 이후 결과를 확인하기 위한 반환값 등을 정리한 문서

    정적/동적 모형, 데이터 포맷 형태에 따른 인터페이스 설계서

    정적, 동적 모형을 통한 인터페이스 설계서

    시스템을 구성하는 주요 구성 요소 간 트랜잭션을 보여 준다.

    데이터 정의를 통한 인터페이스 설계서

    제공하는 인터페이스 서비스에 대한 상세 명세를 표현하는 산출물

    개발 수준에서 인터페이스를 어떻게 구현해야 할지 명시하고 있다.

    내부, 외부 모듈 간 공통 기능 및 데이터 인터페이스 확인 순서

    인터페이스 설계서의 외부 및 내부 모듈의 기능을 확인한다.

    인터페이스 정의서를 통해 외부 및 내부 모듈의 기능을 확인한다.

    정적, 동적 모형을 통해 외부 및 내부 모듈의 기능을 확인한다.

    인터페이스 설계서의 외부 및 내부 모듈을 기반으로
    공통적으로 제공되는 기능과 각 데이터의 인터페이스를 확인한다.

    인터페이스 설계서의 외부 및 내부 모듈을 기반으로 공통적으로 제공되는 기능을 확인한다.

    인터페이스 설계서의 외부 및 내부 모듈을 기반으로 각 데이터의 인터페이스를 확인한다.

    외부 및 내부 모듈 연계를 위한 인터페이스 기능 식별

    외부/내부 모듈 연계 방법

    EAI

    기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보 전달, 연계, 통합을 가능하게 해 주는 솔루션

    EAI의 구축 유형

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2044.png

    ESB

    서비스 중심으로 통합을 지향하는 아키텍처

    관리 및 보안이 쉽고 높은 수준의 품질 지원이 가능하지만, 표준화가 미비하고 특정 업체 종속, 성능 문제에서 개선점이 있다.

    ESB 구성 예시

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2045.png

    외부 및 내부 모듈 연계를 위한 인터페이스 기능 식별 순서

    1. 개발하고자 하는 응용 소프트웨어와 관련된 외부 및 내부 모듈간 연계된 기능을 식별한다.
    2. 외부 및 내부 모듈 간 연계된 기능에 따른 인터페이스 기능을 식별한다.

    데이터 표준 확인

    인터페이스 데이터 표준의 개요

    인터페이스 데이터 표준의 개요

    인터페이스를 위해 인터페이스가 되어야 할 범위의 데이터들의 형식과 표준을 정의하는 것

    표준 데이터 정의에 따른 인터페이스 데이터 변환 방식

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2046.png

    인터페이스 데이터 표준 확인 순서

    1. 식별된 데이터 인터페이스를 통해 인터페이스 데이터 표준을 확인한다.
    2. 식별된 인터페이스 기능을 통해 인터페이스 데이터 표준을 확인한다.
    3. 데이터 인터페이스 및 식별된 인터페이스 기능을 통해 데이터 표준을 확인한다.

    인터페이스 기능 구현

    모듈 세부 설계서

    모듈 세부 설계서

    모듈의 구성 요소와 세부적인 동작을 정의한 설계서

    • 컴포넌트 명세서
    • 컴포넌트의 개요 및 내부 클래스의 동작, 인터페이스를 통해 외부와 통신하는 명세 정의
    • 인터페이스 명세서
    • 컴포넌트 명세서에 명시된 인터페이스 클래스의 세부적인 조건 및 기능을 명시한 명세서

    인터페이스 구현

    데이터 통신을 통한 인터페이스 구현

    애플리케이션 영역에서 인터페이스 형식에 맞춘 데이터 포맷을 인터페이스 대상으로 전송하고 이를 수신측에서 파싱하여 해석하는 방식

    인터페이스 엔티티를 통한 인터페이스 구현

    인터페이스가 필요한 시스템 사이에 별도의 인터페이스 엔티티를 두어 상호 연계

    인터페이스 테이블을 사용한 인터페이스 구현

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2047.png

    송신 시스템에서 전달할 내역을 송신 인터페이스 테이블에 쓰면 트리거, 잡, 프로시저 등을 사용하여 데이터를 수신 인터페이스 테이블에 전달한다.

    이후 수신 시스템은 전달된 데이터를 활용한다.

    인터페이스 구현 순서

    1. 사전에 정의된 기능 구현을 분석
    2. 인터페이스를 구현

    인터페이스 예외 처리

    인터페이스 예외 처리 방안 정의 순서

    1. 데이터 통신을 사용하는 인터페이스 동작 간 실패 시 예외 처리 방안 정의
    2. 인터페이스 엔티티를 사용하는 인터페이스 동작 간 실패 시 예외 처리 방안 정의

    인터페이스 보안

    인터페이스 보안 기능 적용

    시큐어 코딩

    보안 취약점에 대한 시큐어 코딩 항목

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2048.png

    데이터베이스 암호화

    • 대칭 키 암호 알고리즘
      • ARIA
      • SEED
    • 해시 알고리즘
      • SHA
      • HAS
    • 비대칭 키 알고리즘
      • RSA
      • ECDSA

    데이터베이스 암호화 기법

    주요 데이터베이스 암호화 기법

    %E1%84%89%E1%85%A9%E1%84%91%E1%85%B3%E1%84%90%E1%85%B3%E1%84%8B%E1%85%B0%E1%84%8B%E1%85%A5%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%201f9bab2c171a4c6b928849bb6c62f838/Untitled%2049.png

    인터페이스 보안 기능 적용 순서

    1. 인터페이스의 보안 취약점 분석
      • 인터페이스 송수신부의 구현 현황 분석
      • 인터페이스 각 구간의 보안 취약점 분석
    2. 분석된 보안 취약점을 근거로 인터페이스 보안 기능 적용
      • 네트워크 구간에 보안 기능 적용
      • 애플리케이션에 보안 기능 적용
      • 데이터베이스에 보안 기능 적용

    소프트웨어 연계 테스트

    연계 테스트 케이스

    송수신 시스템 각각에서 연계 응용 프로그램의 단위 테스트 케이스와 연계 테스트 케이스를 작성

    연계 테스트 분류

    소프트웨어 연게 구간 테스트

    송신 시스템에서 연계/중계 서버를 거치고 수신 시스템까지 데이터가 전달되는가를 테스트한다.

    소프트웨어 연계 단위 테스트

    연계 자체만을 테스트 한다.

    소프트웨어 연계 통합 테스트

    연계 테스트보다 큰 통합 기능 테스트의 일부로서 연계 통합 테스트를 수행한다.

    연계 테스트 수행 순서

    1. 연계 테스트 케이스 작성
    2. 연계 테스트 환경 구축
    3. 연계 테스트 수행
    4. 연계 테스트 수행 결과 검증

    인터페이스 구현 검증

    설계 산출물

    인터페이스 구현 검증

    인터페이스 구현 검증 도구

    인터페이스 구현을 검증하기 위해서는 인터페이스 단위 기능 및 시나리오에 기반한 통합 테스트가 필요하다.

    테스트 자동화 도구를 이용해 단위 및 통합 테스트의 효율성을 높일 수 있다.

    인터페이스 감시 도구

    애플리케이션 모니터링 툴(APM) 을 사용하여 동작 상태를 감시할 수 있다.

    인터페이스 구현 검증 순서

    구현된 인터페이스 명세서를 참조하여 구현 검증에 필요한 감시 및 검증도구를 준비한다.

    인터페이스 구현 검증을 위해 외부 시스템과의 연계 모듈 상태를 확인한다.

    인터페이스 명세서

    인터페이스 오류 처리 방법 및 오류 처리 보고서

    인터페이스 오류 처리 방법

    • 사용자 화면에서 오류 발생
    • 인터페이스 오류 로그 생성
    • 인터페이스 관련 테이블에 오류 사항 기록

    인터페이스 오류 처리 확인 및 보고서 작성 순서

    1. 인터페이스 오류 사항 확인
    2. 인터페이스 오류 처리 보고서 작성

    '정보처리기사 개정' 카테고리의 다른 글

    5. 정보시스템 구축 관리  (0) 2021.05.26
    4. 프로그래밍 언어 활용  (0) 2021.05.26
    3. 데이터베이스 구축  (0) 2021.05.26
    1. 소프트웨어 설계  (0) 2021.05.26

    댓글