본문 바로가기

CERTIFICATION/IEIP

[2-2] 프로그램 구현

069 개발 환경 구축


하드웨어 환경

  • 웹 서버(Web Server)
    • 클라이언트로부터 직접 요청을 받아 처리하는 서버
    • 저용량의 정적 파일들을 제공
  • 웹 애플리케이션 서버(WAS; Web Application Server)
    • 사용자에게 동적 서비스를 제공
    • 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행
    • 웹 서버와 데이터베이스 서버 or 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버
  • 데이터베이스 서버(DB Server)
    • 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
  • 파일 서버(File Server)
    • 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버

070 서버 개발


대표적인 서버 개발 프레임워크

  • Spring
    • JAVA 기반 프레임워크
    • 전자정부 표준 프레임워크의 기반 기술로 사용
  • Node.js
    • JavaScript 기반 프레임워크
    • 비동기 입출력 처리와 이벤트 위주의 높은 처리 성능
    • 실시간 입출력이 빈번한 애플리케이션에 적함
  • Django
    • Python 기반 프레임워크
    • 컴포넌트의 재사용과 플러그인화 강조 → 신속한 개발 가능
  • Codeigniter
    • PHP 기반 프레임워크
    • 인터페이스 간편
    • 서버 자원을 적게 사용
  • Ruby on Rails
    • Ruby 기반 프레임워크
    • 테스트를 위한 웹 서버 지원
    • 데이터베이스 작업을 단순화, 자동화 → 개발 코드의 길이 짧아짐 → 신속한 개발 가능

모듈화(Modularity)

  • 프레임워크는 캡슐화를 통해 모듈화를 강화
  • 설계 및 구현의 변경에 따른 영향 최소화 → 소프트웨어 품질 향상
  • 프레임워크는 개발표준에 의한 모듈화로 인해 유지보수 용이

재사용성(Reusability)

  • 프레임워크는 재사용 가능한 모듈들을 제공 → 예산 절감, 생산성 향상, 품질 보증 가능

확장성(Extensibility)

  • 프레임워크는 다형성(Polymorphism)을 통한 인터페이스 확장 가능 → 다양한 형태와 기능을 가진 애플리케이션 개발 가능

제어의 역흐름(Inversion of Control)

  • 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김 → 생산성 향상

071 모듈


모듈(Module)

  • 모듈화를 통해 분리된 시스템의 각 기능들
    • 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용
  • 단독으로 컴파일 및 재사용 가능
  • 다른 모듈에서의 접근 가능

결합도(Coupling)의 종류(결합도의 정도가 약함 → 강함 순서)

  • 자료(Data) 결합도
    • 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
  • 스탬프(Stamp) 결합도
    • 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
  • 제어(Control) 결합도
    • 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어 요소를 전달하는 결합도
  • 외부(External) 결합도
    • 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
  • 공통(Common) 결합도
    • 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
  • 내용(Content) 결합도
    • 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

응집도(Cohesion)

  • 명령어나 호출문 등 모듈 내부 요소들의 서로 관련되어있는 정도
  • 모듈이 독립적인 기능으로 정의되어 있는 정도

응집도의 종류(응집도의 정도가 강함 → 약함 순서)

  • 기능적(Functional) 응집도
    • 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우 응집도
  • 순차적(Sequential) 응집도
    • 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
  • 교환적(Communication) 응집도
    • 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
  • 절차적(Procedural) 응집도
    • 모듈이 다수인 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 시간적(Temporal) 응집도
    • 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
  • 논리적(Logical) 응집도
    • 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
  • 우연적(Coincidental) 응집도
    • 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

팬인(Fan-In) / 팬아웃(Fan-Out)

  • 팬인 : 어떤 모듈을 제어(호출)하는 모듈의 수(모듈에 들어옴)
  • 팬아웃 : 어떤 모듈에 의해 제어(호출)되는 모듈의 수(모듈에서 나감)

072 공통 모듈


재사용(Reuse)

  • 비용과 개발 시간을 절약하기 위해 이미 개발된 기능들을 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화시키는 작업
  • 재사용 규모에 따른 분류
    • 함수와 객체
    • 컴포넌트
    • 애플리케이션

효과적인 모듈 설계 방안

  • 결합도는 줄이고 응집도는 높여서 모듈의 독립성과 재사용성을 높임
  • 복잡도와 중복성을 줄이고 일관성을 유지시킴
  • 유지보수가 용이해야 함
  • 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 분해

073 보안 및 API


소프트웨어 개발 보안의 개요

  • 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동
  • 보안 취약점(Security Vulnerability)
    • 시스템 기능이나 설계, 구현 단계에서의 문제점 등으로 인해 시스템이 가지게 되는 약점

보안 3대 요소

  • 기밀성
    • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
    • 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
  • 무결성
    • 시스템 내의 정보는 오직 인가된 사용자만 수정 가능
  • 가용성
    • 인가받은 사용자는 언제라도 사용 가능

API

  • 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해놓은 인터페이스

Open API

  • 누구나 무료로 사용할 수 있게 공개된 API

'CERTIFICATION > IEIP' 카테고리의 다른 글

[3-2] SQL 활용  (0) 2024.05.18
[3-1] 데이터베이스 이해  (0) 2024.05.18
[2-1] 프로그래밍 언어 활용  (0) 2024.05.18
[1-4] 정보시스템 기반 기술 용어  (0) 2024.05.17
[1-3] 테스트 및 배포  (0) 2024.05.17