본문 바로가기
Programming/정보처리기사

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

by AI_Wooah 2022. 5. 1.

서버 프로그램 구현

  1. 개발 환경 구축
    1. 프로그램 개발을 위한 도구
    빌드 도구, 구현 도구, 테스트 도구, 형상 관리 도구(산출물에 대한 버전 관리 도구다.)
    1. 서버 하드웨어 개발 환경
    • 웹 서버 : HTTP를 이용한 요청/응답 처리, 웹 상의 정적 콘텐츠 처리, Apache 웹 서버
    • 웹 애플리케이션 서버 : 동적 콘텐츠(Servlet, JSP)를 처리, Tomcat
    • 데이터베이스 서버
    • 파일 서버
    1. 형상 관리(Configuration Management)
    소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
    1. 형상 관리의 절차(식통감기)
    • 형상 식별 : 형상 관리 대상을 정의하고 식별한다.
    • 형상 통제 : 형상 항목 버전 관리를 위해 변경 여부와 변경 활동을 통제한다.
    • 형상 감사 : 소프트웨어 베이스라인의 무결성 평가, 베이스라인 변경 시 요구사항과 일치하는지 검토한다.
    • 형상 기록 : 형상 및 변경관리에 대한 각종 수행결과를 기록한다.
    1. 소프트웨어 형상 관리 도구
    • 공유 폴더 방식(RCS, SCCS) : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식이다.
    • 클라이언트/서버 방식(CVS, SVN) : 중앙에 버전 관리 시스템을 향시 동작시키는 방식이다.
    • 분산 저장소 방식(Git) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식이다.
      • CVS : 서버와 클라이언트로 구성, 다수의 인원이 동시에 운영체제로 접근이 가능하다.
      • SVN(Subversion) : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와준다
      • RCS : 소스 파이릐 수정을 한 사람 만으로 제한한다.
      • Bitkeeper : SVN과 비슷, 대규모 프로젝트에서 빠른 속도 내도록 개발된 형상 관리 도구다
  2. 모듈
    1. 모듈
    모듈화를 통해 분리된 시스템의 각 기능들로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용된다.
    1. 결합도
    결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미한다.결합도가 강하면 시스템 구현 및 유지보수 작업이 어렵다.
    • 자료 결합도어떤 모듈이 다른 모듈을 호출하면서 매개 변수나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 방식
    • 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
    • 스탬프 결합도
    • 모듈 간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
    • 제어 결합도
    • 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나 처리 기능이 두 모듈에 분리되어 설계된 경우 발생
    • 외부 결합도
    • 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
    • 공통 결합도
    • 모듈 간의 인터페이스로 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용하여 전역 변수를 갱신하는 방식으로 상호작용하는 때의 결합도
    • 내용 결합도
    • 모듈 간의 인터페이스로 데이터, 지역 변수 등을 직접 참조하거나 수정할 때의 결합도
    1. 응집도
    정보 은닉 개념을 확장한 것으로, 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미한다.
    • 기능적 응집도
    • 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
    • 순차적 응집도
    • 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
    • 교환적 응집도
    • 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도
    • 절차적 응집도
    • 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
    • 시간적 응집도
    • 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
    • 논리적 응집도
    • 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
    • 우연적 응집도
    • 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
    1. 팬인 / 팬아웃
    • 팬인은 어떤 모듈을 제어(호출)하는 모듈의 수를 나타낸다
    • 팬아웃은 어떤 모듈에 의해 제어(호출)되는 모듈의 수를 나타낸다.
    • 팬인과 팬아웃을 분석하여 시스템의 복잡도를 할 수 있다.
    • 팬인이 높다는 것은 재사용 측면에서 설계가 잘 돼있다고 볼 수 있으나, 단일 장애점이 발생할 수 있으므로 중점적인 관리 및 테스트가 필요하다.
    • 팬아웃이 높은 경우에는 불필요하게 다른 모듈을 호출하고 있는지 검토하고, 단순화시킬 수 있는지 여부에 대한 검토가 필요하다.
    • 시스템의 복잡도를 최적화 하려면 팬인은 높게 팬아웃은 낮게 설계해야 한다.
  3. 다양한 기준으로 모듈을 구성할 수 있으나 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮다.
  4. 결합도의 정도는 아래 약함에서 강함의 순서대로 나타난다.
  5. 다양한 결합으로 모듈을 구성할 수 있으나 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.
  6. 모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 한다.
  7. 서버 개발 과정
    1. DTO/VO
    • DTO/VO 구현은 데이터 교환을 위해 사용할 객체를 만드는 과정이다.
    • 변수 및 객체를 송/수신 할 때 데이터의 자료형에 알맞게 생성한다.
    • 알고리즘 등의 로직은 구현하지 않고, 변수와 데이터를 저장하고 반환하는 메소드만 구현한다.
    1. SQL 구현
    • SQL 구현은 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL 문을 생성하는 과정이다.
    • SQL문은 소스 코드 내에 직접 입력하거나, 별도의 XML 파일로 저장하여 관리한다.
    • XML 파일로 SQL문을 관리하는 경우 중복되는 SQL문을 최소화할 수 있고, 유지보수가 간편해진다.
    1. DAO 구현
    • DAO 구현은 데이터베이스에 접근하고 SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는 과정
    1. Service 구현
    • 사용자의 요청에 응답하기 위한 로직을 구현하는 과정
    1. Controller 구현
    • 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정
  8. 서버 개발은 DTO/VO, SQL, DAO, Service, Controller를 각각 구현하는 과정을 통해 이루어진다.
반응형

댓글