• 개발환경 구축
    • 개발환경 구추기란?
      • 해당 프로젝트의 목적과 구축 설계에 대해 명확하게 이해하고 이에 맞는 하드웨어 및 소프트웨어를 선정하는 과정
    • 하드웨어 환경
      • 클라이언트 (Client) 환경
        • 서버 시스템에서 제공하는 서비스를 활용하기 위해 사용자와의 인터페이스 (Interface)를 제공하는 하드웨어 환경
      • 서버 (Server) 환경
        • 사용자에게 서비스를 제공하는 하드웨어 환경
        • 서버 활용 목적에 따라 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 분류
    • 소프트웨어 환경
      • 구현도구
        • 소프트웨어를 실제 구현하기 위해 사용되는 도구로 코드의 작성 및 편집, 디버깅 등의 작업이 가능
        • 예) Eclipse, Visual Studio Code, IntelliJ, NetBeans 등
      • 테스트 도구
        • 개발자가 작성한 코드를 테스트하기 위한 도구로 소프트웨어의 품질을 높이기 위해 사용
        • 예) xUnit, Spring Test 등
      • 형상관리 도구
        • 소프트웨어 프로젝트에서 나오는 결과물을 관리하는 소프트웨어
        • 예) CVS, Subversino, Git 등
      • 빌드 도구
        • 개발자가 작성된 코드를 컴파일, 빌드, 배포하기 위한 도구
        • 예) Ant, Maven, Gradie 등
  • 서버 개발 프레임워크
    • 서버 개발 프레임워크(Framework)란?
      • 소프트웨어 개발에 필요한 기본 뼈대로 서버 개발을 위해 필요한 코드 라이브러리, 애플리케이션 인터페이스 (Application Interface), 설정 정보 등의 집합
      • 넓은 의미로는 서버 개발의 개발과 운영을 지원하는 도구 및 가이드 등을 포함
    • 프레임워크의 특징
      • 모듈화 (modularity): 캡슐화를 통한 모듈화를 강화하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상
      • 재사용성 (reusability): 프레임워크는 반복적으로 사용할 수 있는 컴포넌트를 정의할 수 있게 하여 재사용성을 높여주며, 재사용을 통해 소프트웨어의 품질을 향상시키고 개발자의 생산성을 높여줌
      • 확장성 (extensibility): 다형성(polymorphism)을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 함
      • 제어의 역흐름 (inversion of control): 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에게 넘김으로써 생산성을 향상
    • 서버 개발 프레임워크의 종류
      • Spring, Node.js, Diango, Codeigniter, Ruby on Rails 등이 있음
  • 공통 모듈 구현
    • 공통 모듈이란?
      • 각각의 서브 시스템에서 자주 사용하는 기능들을 묶어 독립된 모듈로 개발하여 제공
      • 동일한 기능을 재사용함으로써 중복 개발을 방지하고 유지 보수 단계에서도 시스템 변경을 용이하게 함
    • 재사용 (Reuse)
      • 목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
      • 재사용의 분류
        • 함수와 객체: 클래스 (Class) 나 함수 (Function) 단위로 구현한 소스 코드를 재사용
        • 컴포넌트: 컴포넌트 (Component) 단위로 재사용
        • 애플리케이션: 공통된 기능을 제공하도록 구현된 애플리케이션과의 통신으로 기능을 공유하여 재사용
  • 결합도와 응집도
    • 결합도란?
      • 모듈과 모듈 간의 관련성 정도로 관련이 적을수록 모듈의 독립성이 높아 좋은 결합
      • 결합도의 유형: 자료 결합도, 스탬프 결합도, 제어 결합도, 외부 결합도, 공통 결합도, 내용 결합도
      • 품질 측면에서 자료 결합도가 가장 품질이 높고, 내용 결합도가 가장 낮음
    • 응집도란?
      • 모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있는 정도로 응집도가 높을수록 필요한 요소들로 구성되어 있음
      • 응집도의 유형: 기능적 응집도, 순차적 응집도, 통신적 응집도, 절차적 응집도, 시간적 응집도, 논리적 응집도, 우연적 응집도
      • 품질 측면에서 기능적 응집도가 가장 품질이 높고, 우연적 응집도가 가장 낮음
  • 보안 취약성 식별
    • 소프트웨어 개발 보안이란?
      • 소프트웨어 개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해 발생할 수 있는 보안 취약점 (weakness)을 최소화하고, 사이버 보안 위협에 대응할 수 있는 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동
    • API (Application Programming Interface)
      • 응용 프로그래밍 인터페이스라는 의미로 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
      • API를 사용하면 구현 방식을 알지 못해도 제품이나 서비스가 서로 커뮤니케이션 할 수 있으며, 애플리케이션 개발을 간소화하고 시간과 비용을 절약할 수 있음
      • 누구나 무료로 사용할 수 있도록 공개된 API를 Open API라고 함
  • 배치 프로그램 구현
    • 배치 프로그램이란?
      • 사용자와의 상호 작용 없이 일련의 작업들을 하나의 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리 할 수 있는 프로그램
      • 업무의 효율성을 높이고 비효율적인 시스템의 과부하를 줄일 수 있음
      • 배치 프로그램의 필수 요소: 대용량 데이터, 자동화, 견고성, 안정성, 성능
    • 배치 스케줄러 (Scheduler)
      • 일괄처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
      • 배치 스케줄러의 종류로는 스프링 배치, Quartz 스케줄러 등이 있음
      • 스프링 배치 (Spring Batch)
        • 2007년 Spring Source사와 Accenture 사의 공동 작업으로 탄생한 배치 기반 오픈소스 프레임워크
        • 스프링 기반의 프레임워크로 스프링의 DI(Dependency Injectino), AOP(Aspect Oriented Programming), 서비스 추상화 등을 모두 사용할 수 있음
        • 컴포넌트: Job, Job Launcher, Job Repository, Step, Item, Chunk 등으로 구성
      • 쿼츠 스케줄러 (Quartz Scheduler)
        • 스프링 프레임워크에 플러그인(Plug-in)되어 수행하는 Job과 실행 스케줄을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈소스 스케줄러

WRITTEN BY
ppdha82

,