정보처리기사

[정보처리기사] 소프트웨어 구축 (4)

hminor 2023. 7. 5. 02:01

모듈 구현

  • 단위 모듈 구현
    • 개념
      • 소프트웨어를 기능 단위로 분해하여 구현하는 기법
      • 여기서 모듈이란?
        • 하나의 기능을 수행하는 단위
    • 효과적인 모듈화
      • 결합도는 낮추고 응집도를 높여 모듈의 독립성을 높임
      • FAN-OUT 최소화, FAN-IN 증가
    • 단위 모듈 설계의 원리
      • 단계적 분해
      • 추상화
      • 독립성
      • 정보은닉
      • 분할과 정복
  • 단위 모듈 작성
    • 원칙
      • 정확성
      • 명확성
      • 완전성
      • 일관성
      • 추적성
  • 결합도
    • 결합도 개념
      • 두 모듈 사이의 연관 관계
      • 결합도가 낮을수록 잘 설계된 모듈이다.
    • 결합도 유형
      • 내용 결합도
        • 변수 또는 기능이 여기저기 모두 얽혀서 사용하는 경우
      • 공통 결합도
        • 전역 변수를 참조하고 사용할 경우
      • 외부 결합도
        • 외부 변수를 사용할 경우
      • 제어 결합도
        • 자료 결합도로 자료가 넘어가는데, 해당 자료로 제어문 즉 조건문을 사용할 때
      • 스탬프 결합도
        • 자료 결합도에서 값이 아닌 주소값을 전달할 때
      • 자료 결합도
        • ex) funcA 내부에서 funcB를 호출하며 값만 전달할 경우
  • 응집도
    • 개념
      • 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
    • 응집도 유형
      • 우연 응집도
        • 각 요소간 연관이 없을 경우
      • 논리 응집도
        • 유사한 성격을 갖는 것을 분류
      • 시간 응집도
        • 같은 시간대에 처리하는 활동
      • 절차 응집도
        • 모듈 내부 기능을 순차적으로 수행할 경우
      • 통신 응집도
        • 동일한 입력과 출력을 사용(동기적으로 생각하자)
      • 순차 응집도
        • 하나의 함수에서 나온 결과값을 다음 로직의 입력값으로 사용될 때
      • 기능 응집도
        • 모듈 내부의 모든 기능이 단일한 목적을 위해 수행 될 경우
  • 공통 모듈 구현(개발시 순서를 생각하기)
    • 순서
      • DTO/VO 구현
      • SQL 문 구현
      • DAO 구현: 실질적 DB 접근하는 객체
      • Service 구현
      • Controller 구현 (실제 로직)
      • 필요시 화면 구현
    • Annotation
      • 개념
        • 주석이라는 의미를 가지며 주석처럼 달아 특수한 의미를 부여한다.
        • 컴파일 또는 런타임에 해석된다.

서버 프로그램 구현

  • DBMS 접속 기술
    • 종류
      • 소켓 통신
        • 응용프로그램과 DBMS가 주고받는 통신
      • Vender API
        • DBMS사에서 공개한 API를 이용해 DBMS와 통신
      • JDBC(Java DataBase Connectivity)
        • Java에서 DB에 접속하고 SQL문을 수행시 사용되는 표준 API
      • ODBC(Open DataBase Connectivity)
        • 데이터베이스에 접근하기 위한 표준 규격
        • MS사에서 만듦
  • ORM(Object-Relational Mapping)프레임워크
    • 개념
      • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주는 것
    • 매핑 기술 비교
      • SQL Mapper
        • SQL을 명시하여 단순히 필드를 매핑시키는 것이 목적
        • 종류
          • iBatis, Mybatis, jsbc Templetes 등
      • OR Mapping(=ORM)
        • 객체를 통해 간접적으로 데이터베이스를 다룬다.
        • 종류
          • JPA(Java Persistent API), Hibernate
  • 시큐어 코딩
    • OWASP(The Open Web Application Security Project)
      • 오픈소스 웹 애플리케이션 보안 프로젝트
      • OWASP Top 10
        • 웹 애플리케이션 취약점 중 빈도가 많이 발생하고, 보안상 영향을 줄 수 있는 10가지를 선정 후 발표
    • 시큐어 코딩 가이드
      • 개념
        • KISA에서 OWASP Top 10의 개발 취약점을 보완한 개발을 해야한다고 가이드를 내려주는 것
      • 입력 데이터 검증 및 표현
        • 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터 형식을 잘못 지정하여 발생하는 보안 약점
        • 보안 약점 종류
          • SQL Injection
          • XSS
          • 자원 삽입
          • 위험한 형식 파일 업로드
          • 명령 삽입
          • 메모리 버퍼 오버프로
      • 보안 기능
        • 보안 기능을 부적절하게 구현하는 경우 발생할 수 있는 보안 약점
        • 보안 약점 종류
          • 취약한 암호화 알고리즘 사용
          • 하드코딩된 패스워드
          • 패스워드 평문 저장
          • 취약한 패스워드 허용
      • 시간 및 상태
        • 동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점
        • 보안 약점 종류
          • 경쟁 조건
          • 종료되지 않은 반복문 또는 재귀 함수
      • 에러 처리
        • 에러를 처리하지 않거나 불충분하게 처리해 에러 정보에 중요 정보가 포함될 때 발생할 수 있는 보안 약점
        • 보안 약점 종류
          • 오류 메시지 정보 노출
          • 오류 상황 대응 부재
          • 부적절한 예외 처리

배치 프로그램 구현

  • 배치 프로그램
    • 개념
      • 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리 (동기적)
      • 배치 프로그램이란?
        • 대량의 데이터를 모아 정기적으로 반복 처리하는 프로그램.
    • 필수 요소
      • 대용량 데이터
      • 자동화
      • 견고함
      • 안정성
      • 성능
    • 스케줄 관리 종류
      • 크론탭
        • UNIX, LINUX 계열에서 사용
        • 형식
          • 분 시 일 월 요일 (명령어)
      • 쿼츠 잡 스케줄러
        • 형식
          • 초 분 시 일 월 요일 (명령어)