반응형

     정보

    • 업무명     : 정보처리기사 실기 : 10강 서버 프로그램 구현 (서버 프로그램 구현하기)

    • 작성자     : 이상호

    • 작성일     : 2020-05-10

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [업무 프로세스 확인]

    [1] 프로세스의 이해
    • 1. 프로세스의 개념 

       

      • 프로세스란 개인이나 조직이 한 개 이상의 정보 자원의 입력을 통해 가치 있는 산출물을 제공하는 모든 관련 활동들의 집합이다

     

     

    • 2. 프로세스의 구성 요소 

       

      • 프로세스의 필수 구성 요소에는 프로세스 책임자(Owner), 프로세스 맵(Map), 프로세스 Task, 프로세스 성과 지표, 프로세스 조직, 경영자의 리더십(Leadership) 등이 있다.

     

    [2] 프로세스의 맵(Map)
    • 프로세스의 Map은 상위 프로세스에서 하위 프로세스로의 흐름 체계를 도식화한 청사진으로 다양한 형태로 표현할 수 있다.

     

    • 2. 객체 지향 분석 기법에서의 사용 사례 다이어그램

     

    [수행]

    [1] 상세 설계를 기반으로 담당 업무를 확인한다.
    • 업무 프로세스를 확인하기 위해서는 애플리케이션 설계 단계에서 작성한 프로그램 관리 대장을 통해 작성해야 할 업무 프로그램들을 확인하고 프로그램 설계서와 업무 프로세스맵을 확인한다. 

       

    • 1. 프로그램 관리 대장을 확인한다. 프로그램 관리 대장은 설계 단계에서 작성된 구현해야 할 전체 시스템의 프로그램 목록 산출물이다. 아래 예시는 이순신 담당자가 구현해야 할 우편번호 조회 기능을 확인한 예시이다

     

    • 2. 업무 프로세스 맵을 확인한다

      • 프로그램 관리 대장에서 확인한 프로세스에 대한 업무 프로세스 체계를 확인한다. 

     

    [2] 세부 업무 프로세스를 확인한다.
    • 1. 프로그램 설계서를 확인한다. 

       

      • 프로그램 관리 대장 산출물에서의 ID와 일치하는 프로그램 설계서 산출물에서의 프로그램 ID를 확인한다.

     

    • 2. 화면 설계서를 확인한다. 

       

      • 프로그램 관리 대장 산출물에서의 ID와 일치하는 화면 설계서 산출물에서의 프로그램 ID 를 확인한다. 화면 설계서는 화면에서 동작하는 이벤트 및 변수들을 설계한 산출물이다

     

     

    • 3. 화면 레이아웃을 확인한다. 

       

      • 애플리케이션 설계 단계에서 작성된 화면 레이아웃을 확인하여 공통 모듈의 화면을 구현 한다

     

     

    [서버 프로그램 구현]

    [1] 프레임워크(Framework)에 대한 이해
    • 1. 소프트웨어 프레임워크의 정의 

      • (1) 효율적인 정보 시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스 (Application Interface), 설정 정보 등의 집합으로서 재사용이 가능하도록 소프트웨어 구성에 필요한 기본 뼈대를 제공한다. 

         

      • (2) 광의적으로 정보 시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함한다. 

    • 2. 프레임워크의 특징

       

      • 모듈화 (modularity) 

         

        • 프레임워크는 인터페이스에 의한 캡슐화를 통해서 모듈화를 강화 하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어 의 품질을 향상시킨다. 

           

      • 재사용성 (reusability) 

         

        • 프레임워크가 제공하는 인터페이스는 반복적으로 사용할 수 있는 컴포넌트를 정의할 수 있게 하여 재사용성을 높여 준다. 프레임워크 컴포넌트를 재사용하는 것은 소프트웨어의 품질을 향상시킬 뿐만 아니라 개발자의 생산성도 높여 준다. 

      • 확장성 (extensibility)

         

        • 프레임워크는 다형성(polymorphism)을 통해 애플리케이션이 프레임 워크의 인터페이스를 확장할 수 있게 한다. 프레임워크 확장성은 애플리케이션 서비스와 특성을 변경하고 프레임워크를 애플리케이션의 가변성으로부터 분리함으로써 재사 용성의 이점을 얻게 한다. 

           

      • 제어의 역흐름 (inversion of control) 

         

        • 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성(Polymorphism)을 통해 애플리케 이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 한다.

           

     

    [2] 데이터 저장 계층 또는 영속 계층(Persistence Layer)에 대한 이해
    • DAO/DTO/VO란 영속 계층(Persistence Layer)에서 사용되는 특정 패턴을 통해 구현되는 Java Bean이다. 

       

    • DAO (Data Access Object) 

       

      • 특정 타입의 데이터베이스나 다른 지속적인 메커니즘(Persistence Mechanism)에 추상 인터페이스를 제공하는 객체이다. 애플리케이션 호출을 데이터 저장 부분(Persistence Layer)에 매핑함으 로써 DAO는 데이터베이스의 세부 내용을 노출하지 않고 특정 데이터 조작 기능을 제공한다. 

         

    • DTO (Data Transfer Object) 

       

      • DTO는 프로세스 사이에서 데이터를 전송하는 객체를 의미한다. 많은 프로세스 간의 커뮤니케이션이 원격 인터페이스(예: 웹 서비스) 에 의해 이루어지기 때문에 전송될 데이터를 모으는 DTO를 이용해서 한 번만 호출하게 하는 것이다. DTO는 스스로의 데이터를 저장 및 회수하는 기능을 제외하고 아무 기능도 가지고 있지 않다는 것이 DAO와의 차이이다. 

         

    • VO (Value Object) 

       

      • VO는 간단한 독립체(Entity)를 의미하는 작은 객체를 의미한다. 가변 클래스인 DTO와 다르게 getter기능만 제공하는 불변 클래스를 만들어서 사용한다.

     

    [3] 소프트웨어(SW) 개발 보안
    • 1. 소프트웨어 개발 보안의 개념 

       

      • SW 개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해 SW에 내포될 수 있는 보안 취약점(vulnerability)의 원인, 즉 보안 취약점(weakness)을 최소화하고, 사이버 보안 위협에 대응할 수 있는 안전한 SW를 개발하기 위한 일련의 보안 활동이다.

     

    • 2. 소프트웨어 개발 보안 가이드의 구성

     

     

    • Java 시큐어코딩 가이드에 의한 보안 취약성을 제거하는 코드를 구현한다. 서버 프로그램은 다양한 보안 취약점에 존재하기 때문에 소프트웨어 개발 보안 가이드에 의해 알려진 보안 취약점을 대응해야 한다. 아래 예시는 크로스 사이트 스크립트에 대응하는 안전한 코드 예시이다.

     

    [서버 프로그램 테스트]

    [1] 소프트웨어 테스트의 이해
    • 1. 소프트웨어 테스트의 개념 

       

      • 소프트웨어 테스트란 구현된 애플리케이션이나 시스템을 사용자의 요구 사항이 만족되었는지 확인하기 위하여 기능 및 비기능 요소의 결함을 찾아내는 활동이다. 

         

     

    • 2. 소프트웨어 테스트의 원칙 

       

      • (1) 개발자가 자신이 개발한 프로그램 및 소스코드를 테스팅하지 않는다. 

         

        • 일반적으로 개발자가 자신이 개발한 소스코드에 대해서는 자신이 테스팅을 할 경우 결함을 발견하는 것이 쉬운 일이 아니다. 

           

      • (2) 효율적인 결함 제거 법칙 사용(낚시의 법칙, 파레토의 법칙) 

         

        • 효율적으로 결함을 발견, 가시화, 제거, 예방의 순서로 하여 정량적으로 관리할 수 있어야 한다. 

           

        • (가) 낚시의 법칙 

           

          • 낚시를 즐겨하는 사람들은 특정 자리에서 물고기가 잘 잡힌다는 사실을 경험적으 로 알고 있다. 소프트웨어 제품의 결함도 특정 기능, 모듈, 라이브러리에서 결함이 많이 발견된다는 것이 소프트웨어 테스트에서의 낚시의 법칙이다. 

             

        • (나) 파레토의 법칙 

           

          • 소프트웨어 제품에서 발견되는 전체 결함의 80%는 소프트웨어 제품의 전체 기능 중 20%에 집중되어 있다.

      • (3) 완벽한 소프트웨어 테스팅은 불가능하다. 

         

        • 단순한 애플리케이션이라도 테스트 케이스의 수는 무한대로 발생되기 때문에 완벽한 테스트는 불가능하다. 

           

      • (4) 테스트는 계획 단계부터 해야 한다. 

         

        • 소프트웨어 테스트는 결함의 발견이 목적이긴 하지만 개발 초기 이전인 계획 단계에서부터 할 수 있다면 결함을 예방할 수 있다.

           

      • (5) 살충제 패러독스(Pesticide Paradox) 

         

        • 동일한 테스트 케이스로 반복 실행하면 더 이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 점검하고 개선해야 한다. 

           

      • (6) 오류-부재의 궤변(Absence of Errors Fallacy) 

         

        • 사용자의 요구 사항을 만족하지 못한다면 오류를 발견하고 제거해도 품질이 높다고 말할 수 없다

     

    [2] 소프트웨어 테스트의 명세
    • 1. 테스트 결과 정리 

       

      • 테스트가 완료되면 테스트 계획과 테스트 케이스 설계부터 단계별 테스트 시나리오, 테스 트 결과까지 모두 포함된 문서를 일관성 있게 작성한다. 

         

    • 2. 테스트 요약 문서 

       

      • 테스트 계획, 소요 비용, 테스트 결과에 의해 판단 가능한 대상 소프트웨어의 품질 상태를 포함한 요약 문서를 작성한다. 

         

    • 3. 품질 상태 

       

      • 품질 상태는 품질 지표인 테스트 성공률, 발생한 결함의 수와 결함의 중요도, 테스트 커버 리지 등이 포함된다. 

         

    • 4. 테스트 결과서 

       

      • 테스트 결과서는 결함에 관련된 내용을 중점적으로 기록하며, 결함의 내용, 결함의 재현 순서를 상세하게 기록한다. 

         

    • 5. 테스트 실행 절차 및 평가 

       

      • 단계별 테스트 종료 시 테스트 실행 절차를 리뷰하고 결과에 대한 평가를 수행하며, 그 결과에 따라 실행 절차를 최적화하여 다음 테스트에 적용한다.

     

    [수행]

    [1] 단위 테스트 케이스를 작성한다.
    • 1. 단위 테스트 방식을 결정한다. 

       

    • 2. 단위 테스트의 범위를 결정한다. 

       

      • (1) 공통 모듈의 범위 및 상위 요구 사항의 범위에 따라 테스트 범위를 판단한다. 

         

      • (2) 테스트 수행 횟수를 결정한다. 

         

      • (3) 테스트의 결과를 검증하기 위한 결괏값 산출 방식을 결정한다. 

         

    • 3. 단위 테스트의 방식과 범위에 따라 테스트 케이스를 작성한다. 

       

    • 4. 작성된 단위 테스트 케이스를 내부 검토한다. 

       

    • 5. 작성된 단위 테스트 케이스를 고객에게 승인을 획득한다.

     

    [2] 테스트를 명세하기 위한 테스트 도구를 설정한다.
    • 1. 단위 테스트 도구를 실행한 후 테스트 케이스(Test Case)를 생성한다.

     

    • 2. 테스트를 수행할 함수를 선택하고 Finish를 클릭한다. 

     

    • 3. 테스트 구문을 작성한다.

     

    • 4. 테스트 도구를 실행한다

     

    [3] 테스트 결과를 명세화한다.
    • 테스트의 결과를 확인하여 테스트 케이스에 성공/실패 결과 및 필요 항목을 기록한다

     

    [연습문제]

    • 프로세스의 필수구성 요소가  아닌 것은?

       

      • 프로세스 책임자(Owner), 

         

      • 프로세스 맵(Map), 

         

      • 경영자의 리더십(Leadership)

         

      • 테스트케이스 

    •  

     

    • 프레임워크의 특징 중 잘못 된 것은?

       

      • 모듈화 (modularity)

         

      • 재사용성 (reusability) 

         

      • 확장성 (extensibility)

         

      • 제어의 흐름 (inversion of control) 

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기