응용SW기초기술활용 - 프로세스 스케줄링

응용SW기초기술활용

프로세스의 개념

  • 처리기, CPU에 의해 처리되는 사용자 프로그램
  • 정의
    • PCB(Process Controll Block)을 가지는 프로그램
    • 실기억장치에 저장된 프로그램
    • 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
    • 프로시저가 활동 중인 것
    • 서로 규칙적이거나 연속적이지 않고 독립적으로 실행되므로 비동기적 행위를 일으키는 주체
    • 지정된 결과를 얻기 위한 일련의 계통적 동작
    • 목적 또는 결과에 따라 발생되는 사건들의 과정
    • 운영체제가 관리하는 실행 단위

PCB; Process Control Block, 프로세스 제어 블록

  • 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
  • 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됨
  • PCB에 저장되는 정보의 종류
    • 프로세스의 현재 상태
    • 포인터
      • 부모 프로세스의 주소 기억
      • 자식 프로세스의 주소 기억
      • 현재 프로세스가 위치한 주소 기억
      • 프로세스에 할당된 각 자원에 대한 주소 기억
    • 프로세스 고유 식별자
    • 스케줄링 및 프로세스의 우선순위
    • CPU 레지스터 정보
    • 주기억장치 관리 정보
    • 입출력 상대 정보
    • 계정 정보

Thread 스레드

  • 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당 받아 실행하는 프로그램 단위
  • 하나의 프로세스에 하나의 스레드가 존재하는 경우는 단일 스레드, 하나 이상의 스레드가 존재하는 경우는 다중스레드
  • 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고 함
  • 스레드 기반 시스템에서는 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할 담당
  • 장점
    • 하드웨어, 운영체제의 성능과 응용 프로그램 처리율 향상
    • 응용 프로그램의 응답 시간 단축
    • 실행 환경을 공유 시켜 기억장소의 낭비를 줄임
    • 프로세스들 간의 통신 향상
  • 프로세스 내부의 작업 단위

Scheduling 스케줄링의 개념

  • CPU나 자원을 효율적으로 사용하기 위한 정책
  • 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
  • 프로세스가 생성되어 완료될 때 까지 프로세스는 여러 종류의 스케줄링 과정을 거침

스케줄링의 목적

  • 모든 프로세스에게 공정하게 할당
  • 단위 시간당 프로세스를 처리하는 비율 증가
  • CPU가 순수하게 프로세를 실행하는데 사용되는 시간 비율 증가
  • 우선 순위가 높은 프로세를 먼저 실행
  • 오버헤드를 최소화
    • 오버헤드
      • 시스템에서 목적으로 하는 효과를 얻기 위해 본질적인 것은 아니지만 요구되는 작동, 또는 그 때문에 필요한 자원
  • 작업을 지시하고 반응하는 응답시간 최소화
  • 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 반환시간을 최소화
  • 프로세스가 준비상태 큐에서 대기하는 시간을 최소화
  • 메모리, 입력장치 등의 자원을 균형 있게 사용
  • 자원을 사용하기 위해 무한정 연기되는 상태를 회피
  • 프로세스에게 CPU를 할당하고 문맥 교환을 하는 프로세스 관리기능

Non-Preemptive 비선점 스케줄링

  • 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
  • 프로세스가 CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU를 사용
  • 모든 프로세스에 대한 요구를 공정하게 처리
  • 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합
  • 짧은 작업이 긴 작업을 기다리는 경우 발생할 수 있음
  • 종류
    • FIFO(FCFS)
    • SJF
    • HRN
    • Priority

Preemptive 선점 스케줄링

  • 하나의 프로세스가 CPU를 할당 받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
  • 우선순위가 높은 프로세를 빠르게 처리
  • 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용됨
  • 많은 오버헤드를 초래
  • 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록 필요
  • 종류
    • RR
    • SRT
    • Preemptive
    • Priority
    • MLQ
    • MFQ

프로세스 스케줄링 종류 및 특징

프로세스 스케줄링 종류 및 특징

응용SW기초기술활용 - 메모리관리

응용SW기초기술활용

메모리 관리 개념

  • 프로그램의 실행이 종료될 때 까지 메로리를 가용한 상태로 유지 및 관리하는 것
  • 다수의 프로그램 실행 중 메모리가 꽉 차게 되면 시스템의 속도가 느려지고 멈추는 현상이 발생
  • CPU와 지속적으로 데이터를 송수신하는 상황에서 어떤 부분의 메모리가 현재 사용되는지 어떤 순서로 메모리에 입출력되어야 하는지, 메모리 공간이 필요할 경우 어떻게 확보 및 제거 할지에 대한 종합적인 관리

기억장치 계층 구조의 특징

기억장치계층구조의 특징

  • 기억장치 계층 구조의 상위 장치일 수 록 접근속도와 접근 시간이 빠르지만 기억용량이 적고 고가
  • 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며 주소를 이용하여 액세스 가능
  • 보조기억장치의 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 가능

기억장치 관리 전략

  • 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정도니 주기억장치의 공간을 효율적으로 사용하기 위한 것
  • 종류
    • 반입(Fetch) 전략 : 언제 적재?
    • 배치(Placement) 전략 : 어디에 위치?
    • 교체(Replacement) 전략 : 어느 영역 교체?

1. Fetch 전략

  • 보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억 장치로 적재할 것인지를 결정
  • Demand Fetch 요구 반입
    • 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재
  • Anticipatory Fetch 예상 반입
    • 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재

2. Placement 전략

  • 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정
  • First Fit 최초 적합
    • 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫번째 분할 영역에 배치
  • Best Fit 최적 적합
    • 프로그램이나 데이터가 들어갈 수 있는 크기의 빈영역 중에서 빈 기억공간을 가장 작게 남기는 분할 영역에 배치
  • Worst Fit 최악 적합
    • 프로그램이나 데이터가 들어갈 수 있는 크기의 빈영역 중에서 빈 기억공간을 가장 많게 남기는 분할 영역에 배치

3. Replacement 전략

  • Swapping 스와핑 기법
    • 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고할 때 사용중인 어느 영역을 교체하여 사용할 것인지 결정
    • Swap Out
      • 주기억장치의 프로그램이 보조기억장치로 이동
    • Swap In
      • 보조기억장치에서 주기억장치로 이동
  • 스와핑 기법은 가상 기억장치의 페이징 기법으로 발전
    • FIFO; First In First Out, 선입선출
    • OPT; OPTimeal replacement, 최적교체
    • LRU; Least Recently Used, 최근 오래 사용 않은 페이지 교체
    • LFU; Least Frequently Used, 사용 빈도가 가장 작은 페이지
    • NUR; Not Used Recently, 최근 사용 않은 페이지 교체
    • SCR; Second Chance Replacement, 2차 기회 교체

주기억장치 할당 기법의 개념

  • 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용

주기억장치 할당 기법의 종류

  • 연속 할당 기법
    • 프로그램을 주기억장치에 연속적으로 할당하는 기법
    • 단일 분할 할당 기법
      • 운영체제영역과 단일 사용자 영역으로 분할
      • 오버레이
        • 주기억장치보다 큰 프로그램 실행 기법
      • 스와핑
        • 주기억장치 프로그램을 보조기억장치 이동
    • 다중 분할 할당 기법
      • 사용자 영역을 여러 개의 고정된 크기로 분할
      • 고정 분할(정적) 할당
        • 사용자 영역을 여러 개의 고정된 크기로 분할
      • 가변 분할(동적) 할당
        • 프로그램의 필요한 크기로 영역 분할, 고정 분할 할당 기법의 영역 내의 단편화 해결
  • 분산 할당 기법
    • 가상기억장치의 내용을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
    • 페이징 기법
    • 세그먼트 기법

가상기억장치의 개념

  • VMU; Virtual Memory Unit 보조기억장치의 일부를 주기억장치처럼 사용하는 것
  • 주기억장치의 용량 보다 큰 프로그램을 실행하기 위해 사용
  • 주기억장칭의 이용률과 다중 프로그래밍의 효율성 제고
  • 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 기억장치의 주소로 바꾸는 주소 변환 작업이 필요
  • 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있음
  • 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해놓고, 프로그램 실행시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리

1. Paging 페이징 기법

  • 가상기억장치에 보관되어있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 가상기억장치의 프로그램을 주기억장치의 영역인 페이지 프레임에 적재시켜 실행하는 기법
    • 페이지 크기
      • 1 ~ 4KB
  • 외부 단편화는 발생하지 않으나 내부 단편화 발생
    • 내부 단편화
      • 사용할 프로그램이 16KB일 때 페이지 크기를 4KB씩 나누면 2KB 단편화 발생
  • 주소 변환을 위해서는 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요
  • 페이징에서 가상주소는 (p,d)로 표현하며, p는 참조하는 항목이 잇는 가상메모리의 페이지, d는 페이지 안에서 참조하는 항목이 위치한 변위
  • 실제 주소 변환은 페이지 프레임 크기가 ps일 때 p`*ps+d

2. Segmentation 세그멘테이션 기법

  • 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 방법
  • 내부 단편화는 발생하지 않으나 외부 단편화가 발생
  • 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치보호키가 필요
  • 주소 변환을 위해서는 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블 이 필요
  • 세그먼테이션 가상주소는 (s,d)로 표현하며, s는 참조하는 항목이 있는 가상메모리의 세그먼트 번호, d느 세그먼트 s에서 참조하는 항목부터 있는 곳까지의 변위
  • 실제 주소 변환은 세그먼트 번호의 주기억장치 시작주소가 s`일 때 s` +d

페이지 교체 알고리즘 개념

  • CPU가 액세스한 가상 페이지가 주기억장치에 없는 페이지 부재 Page Fault가 발생했을 때, 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 함
  • 주기억장치의 모든 페이지 프레임이 사용 중 이라면 어떤 페이지 프레임을 선택하여 교체할 것인지 결정

페이지 교체 알고리즘 종류

1. FIFO; First In First Out, 선입선출

  • 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법
  • ex) 2개의 프레임을 수용할 수 있는 주기억장치에서 FIFO 알고리즘을 사용할 경우 페이지 결함의 발생횟수는?
    페이지 참조 순서 : 1, 2, 1, 3, 2, 4
    답 : 4
    해설
    - 2개의 프레임에는 1, 2 가 들어가면서 결함 발생 합 2회 (1, 2)
    - 1은 그대로 (1, 2, 1)
    - 가장 오래된 것은 첫 번째 프레임이므로 여기에 3이 들어가면서 결함 발생 3회 (1, 2, 1, 3)
    - 2는 그대로 (1, 2, 1, 3, 2)
    - 2가 3보다 오래 있었으므로 여기에 4가 들어가면서 결함 발생 4회 (1, 2, 1, 3, 2, 4)
    - FIFO해설

2. LRU(Least Recently Used)

  • 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
  • 각 페이지마다 계수기 counter 나 스택 stack 을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체
  • ex) 2개의 프레임을 수용할 수 있는 주기억장치에서 LRU 알고리즘을 사용할 경우 페이지 결함의 발생횟수는?
    페이지 참조 순서 : 1, 2, 1, 3, 2, 4
    답 : 5
    해설
    - 2개의 프레임에 1, 2 가 들어가면서 결함 발생 합 2회 (1, 2)
    - 1 그대로 (1, 2, 1)
    - 1은 최근에 들어왔으므로 3은 두 번째 프레임에 들어가면서 결함 발생 3회 (1, 2, 1, 3)
    - 3은 최근에 들어왔으므로 2는 첫 번째 프레임에 들어가면서 결함 발생 4회 (1, 2, 1, 3, 2)
    - 2는 최근에 들어왔으므로 4는 두 번 째 프레임에 들어가면서 결함 발생 5회 (1, 2, 1, 3, 2, 4)
    - LRU해설

3. NUR(Not Used Recently)

  • 최근에 사용하지 않은 페이지를 교체하는 기법
  • 최근에 사용 여부를 확인하기 위해서 각 페이지마다 참조 비트와 변형 비트 2개의 비트를 사용
    • Reference Bit : 페이지 호출될 때1, 호출되지 않을 때 0 지정
    • Modified Bit : 페이지 내용 변경될 때1, 변경되지 않을 때 0 지정
  • 참조비트와 변경비트의 값에 따른 교체될 페이지 순서가 결정됨
  • ![NUR]](/images/정보처리기사/0504_11.png)

4. OPT; OPTimal Replacement, 최적 교체

  • 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
  • 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘

5. LFU; Least Frequently Used

  • 사용 빈도가 가장 적은 페이지를 교체하는 기법
  • 활발하게 사용되는 페이지는 사용 횟수가 많아 교체하지 않고 사용

6. SCR; Second Chance Replacement

  • 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하면 FIFO 기법의 단점을 보완하는 기법

가상기억장치의 기타 관리

1. Locality 지역성, 구역성

  • 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부페이지만 집중적으로 참조하는 성질
  • Temporal Locality 시간 구역성
    • 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
    • 기억장소
      • Loop
      • Stack
      • Sub
      • Routine
      • Counting
  • Spatial Locality 공간 구역성
    • 프로세스 실행시 일정 위치의 페이지를 집중적으로 액세스하는 현상
    • 차몾한 페이지의 근처에 있는 페이지를 참조할 가능성이 높음
    • 기억장소
      • Array
      • Traversal
      • 순차적 코드의 실행

2. Working Set 워킹 셋

  • 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
  • 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어듦
  • 시간이 지남에 따라 자주 참조하는 페이지의 집합이 변화하기 때문에 워킹 셋도 시간에 따라 변경됨

3. Thrashing 스래싱

  • 프로세스의 처리 시간 보다 페이지 교체에 소요되는 시간이 더 많아 지는 현상
  • 프로세스들 간의 메모리 경쟁으로 지나치게 페이지 폴트가 발생하여 전체 시스템의 성능이 저하되는 현상
  • 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로써 나타나는 현상으로, 전체 시스템의 성능이 저하됨
  • 스래싱 현상 방지 방법
    • 다중 프로그래밍 정도를 적정 수준으로 유지
    • 페이지 부재 빈도를 조절하여 사용
    • 워킹 셋을 유지
    • 부족한 자원을 증설하고, 일부 프로세스를 중단시킴
    • CPU 성능에 대한 자료의 지속적인 관리 및 분석으로 임계치를 예상하여 운영

응용SW기초기술활용 - 운영체제

응용SW기초기술활용

  • 응용소프트웨어를 개발하기 위하여 다양한 운영체제의 특징 이해
  • CLI 및 GUI 환경에서 운영체제의 기본 명령어를 활용
  • 운영체제에서 제공하는 작업 우선순위 설정 방법을 이용하여 애플리케이션의 작업 우선순위 조정

용어사전

  • 메모리 관리
    • 프로그램의 실행이 종료될 때까지 메모리를 가용한 상태로 유지 및 관리하는 것
  • 환경변수
    • 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임

운영체제의 개념

  • 컴퓨터 시스템의 자원들(CPU, 주기억장치, 보조기억장치, 파일 등)을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 인터페이스를 제공하는 시스템 소프트웨어

운영체제의 역할

  • 사용자와 시스템 간의 편리한 인터페이스 제공
  • 시스템의 각종 하드웨어와 네트워크를 관리하고 제어
  • 자원을 효율적으로 관리하기 위해 자원의 스케쥴링 기능 제공
  • 데이터를 관리하고 데이터 및 자원의 공유 기능 제공
  • 입출력에 대한 보조 기능을 제공
  • 시스템의 오류를 검사하고 복구
  • 원시프로그램을 목적프로그램으로 변환하는 것은 번역 프로그램임

운영체제의 목적

  • 목적
    • 컴퓨터 시스템의 처리 능력 향상
    • 사용 가능도 향상
    • 반환 시간 단축
  • 운영체제 성능 평가 기준
    • 처리 능력
    • 반환 시간
    • 사용 가능도
    • 신뢰도

운영체제의 종류

1. Windows

  • 마이크로소프트사가 개발한 운영체제
  • 특징
    • GUI
      • 키보드로 명령어를 직접 수행하지 않고 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행
    • 선점형 멀티태스킹
      • 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 시행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
    • PnP; Plug and Play
      • 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능
    • OLE; Object Linking Embedding
      • 다른 응용 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능

2. UNIX

  • AT&T 벨 연구소, MIT, General Electric이 공동 개발한 운영체제

  • 특징

    • C언어로 작성되어 이식성 높음
    • 장치와 프로세스 간의 호환성 높음
    • 시분할 시스템으로 설계된 대화식 운영 체제
    • 소스가 공개된 개방형 시스템
    • 다중 사용자가 다중 작업을 지원
    • 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합
  • 구성

    • Kernel 커널

      • 프로세스 관리
      • 기억장치 관리
      • 입출력 관리
      • 파일 관리
      • 컴퓨터가 부팅될 때 주기억장치에 적재되어 상주하면서 실행
    • Shell 쉘

      • 사용자의 명령을 인식하는 명령어 해석기
      • 시스템과 사용자 간의 인터페이스
      • 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서도 교체처리가 가능
      • 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신인 파이프 라인 기능을 지원

3. LINUX

  • 리누스 토발즈가 개발한 운영체제
  • 특징
    • 프로그램 소스 코드가 무료로 공개되어 프로그래머가 원하는 기능 추가
    • 다양한 플랫폼에 설치하여 사용 가능
    • 재배포가 가능
    • UNIX와 완벽하게 호환

4. MacOS

  • Apple에서 UNIX 기반으로 개발한 운영체제
  • 특징
    • 아이맥과 맥북 등 애플 사 제품에만 사용이 가능
    • 드라이버 설치 및 install 과정이 단순함

5. MS-DOS

  • Windows 이전 운영체제, CLI

SW개발 방법론 활용 - 핵심정리

SW개발방법론 테일러링

1. 소프트웨어 개발 표준

  • 소프트웨어 개발 단계의 품질 관리에 사용되는 국제 표준
  • ISO/IEC 12207
    • 국제 표준화 기구에서 제공하는 소프트웨어 생명주기 프로세스 표준
    • 기본 생명 주기, 지원 생명 주기, 조직 생명 주기 프로세스
  • CMMI
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도 평가 모델
    • 성숙도 5단계
      • 초기, 관리, 정의, 정량적 관리, 최적화
  • SPICE
    • 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • 수행 능력 6단계
      • 불완전, 수행, 관리, 확립, 예측, 최적화

2. 테일러링 기준

  • 소프트웨어 개발 방법론 테일러링은 프로젝트 상황 및 특성에 맞도록 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
  • 소프트웨어 개발 방법론 테일러링 고려사항
    • 내부적 기준 : 목표환경, 요구사항, 프로젝트 규모, 보유기술
    • 외부적 기준 : 법적 제약사항, 표준 품질기준
  • 소프트웨어 개발 방법론 테일러링 기법
    • 프로젝트 규모와 복잡도, 프로젝트 구성원, 팀내 방법론 지원, 자동화에 따른 테일러링

3. 소프트웨어 개발 프레임워크

  • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해 주는 반제품 형태의 소프트웨어 시스템
  • 소프트웨어 개발 프레임워크
    • 스프링 프레임워크
    • 전자정부 표준 프레임워크
    • 스트럿츠 프레임워크
    • 닷넷 프레임워크
    • 앵귤러 JS
    • 장고 프레임워크

SW개발 방법론 활용 - 소프트웨어 개발 프레임워크

SW개발방법론 테일러링

소프트웨어 개발 프레임워크

소프트웨어 개발 프레임워크의 개념

  • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해 주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크
      • 사전적으로 뼈대, 골조를 의미하며 소프트웨어에서는 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체
  • 프레임워크의 주요 기능에는 예외 처리, 트랜잭션 처리, 메모리 공유, 데이터 소스 관리, 쿼리 서비스, 로깅 서비스, 인증 서비스 등

프레임워크 특징

  • 특정 개념들의 추상화를 제공하는 여러 클래스와 컴포넌트로 구성
  • 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법 정의
  • 컴포넌트들의 재사용이 가능
  • 높은 수준에서 패턴들을 조작

종류

1. 스프링 프레임워크(Spring Framework)

  • JAVA 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
  • J2EE에서 제공하는 대부분의 지능을 지원
  • DB처리를 위한 JDBC, iBatis, Hibernate, JPA 등 라이브러리와 연동 지원
  • 전자정부 표준 프레임워크의 기반이 되는 기술

2. 전자정부 표준 프레임워크

  • 우리나라의 공공부분 정보화 사업 시 효율적인 정보시스템 구축을 지원하기 위해 필요한 기능 및 아키텍처를 제공하는 프레임워크
  • 개발 프레임워크의 표준 정립으로 응용 소프트웨어의 표준화, 품질 및 재사용성의 향상을 목적으로 함
  • 오픈 소스 기반의 범용화가 되고 공개된 기술으 활용함으로써 특정 업체의 종속성을 배제하고 사업별 공통 컴포넌트의 중복 개발 방지

3. 스트럿츠 프레임워크 STRUTS Framework

  • JAVA기반의 JSP만을 위한 프레임워크
  • 다양한 운영체제에서 활용 가능
  • 오픈소스이기 때문에 개발에 필요한 부분을 수정하여 사용
  • UI기반의 프레임워크

4. 닷넷프레임워크(.NET Framework)

  • Windows 프로그램 개발 및 실행 환경을 제공하는 프레임워크
  • Microsoft 사에서 통합 인터넷 전략을 위해 개발
  • 코드 실행을 관리하는 CLR(Common Language Runtime)이라는 가상머신 상에서 작동
  • 메모리 관리, 유형 및 메모리 안전성, 보안, 네트워크 작업 등 여러가지 서비스를 제공

5. 앵귤러 JS(Angular JS)

  • 자바스크립트 기반의 프레임워크
  • 앵귤러 JS의 데이터 모델은 단순 자바스크립트 객체로 재사용이 쉬운 정적인 UI컴포넌트로 구성
  • 코드의 길이를 더욱 단순화
  • HTML, CSS 개발자와 자바스크립트 개발자를 명확하게 분리

6. 장고 프레임워크(Django Framework)

  • Python으로 작성된 오픈 소스 웹 애플리케이션 프레임워크
  • MVC(Model-View-Controller)패턴 기반 프레임워크
  • ORM(Object Relational Mapping)기능 지원
  • 수윈 DB관리를 위해 프로젝트를 생성하면서 관리자 기능을 제공
  • 쉬운 URL 파싱 기능 지원

SW개발 방법론 활용 - 테일러링 기준

SW개발방법론 테일러링

테일러링 기준

소프트웨어 개발 방법론 테일러링의 개념

  • 소프트웨어 개발 방법론 테일러링은 프로젝트 상황 및 특성에 맞도록 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업

소프트웨어 개발 방법론 테일러링 수행절차

  1. 프로젝트 특징 정의
  2. 표준프로세스 선정 및 검증
  3. 상위 수준의 커스터마이징
  4. 세부 커스터마이징
  5. 테일러링 문서화

소프트웨어 개발 방법론 테일러링 고려사항

  • 내부적 기준
    • 목표환경
      • 시스템의 개발 환경과 유형이 서로 다른 경우 테일러링 필요
    • 요구사항
      • 프로젝트의 생명 주기 활동에서 개발, 운영, 유지보수 등 프로젝트에서 우선적으로 고려할 요구사항이 서로 다른 경우 필요
    • 프로젝트 규모
      • 비용, 인력, 개발 기간 등 프로젝트 규모가 서로 다른 경우
    • 보유 기술
      • 프로세스, 개발 방법론, 산출물, 인력의 숙련도 등이 다른 경우
  • 외부적 기준
    • 법적 제약사항
      • 프로젝트별로 적용될 IT Compliance가 서로 다른 경우
        • IT Compliance
          • IT분야에서 내/외 부적으로 반드시 지켜야 하는 법칙 규제사항이나 지침
    • 표준 품질기준
      • 금융, 제도, 의료 등 업종별 표준 품질 기준이 서로 다른 경우 테일러링이 필요

소프트웨어 개발 방법론 테일러링 기번

  • 프로젝트 규모와 복잡도에 따른 테일러링
    • 프로젝트 규모를 프로젝트 기간, 작업범위, 참여 인원 등에 따라 대/중/소로 구분하고, 프로젝트 업무 난이도에 따라 복잡도를 상/중/하로 구분하는 기법
  • 프로젝트 구성원에 따른 테일러링
    • 프로젝트에 참여하는 구성원들의 기술적 숙련도와 방법론의 이해 정도를 확인하여 테일러링 수준을 결정하는 기법
  • 팀내 방법론 지원에 따른 테일러링
    • 프로젝트 수행 시 각 팀 별로 방법론 담당 인력을 배정하여 팀의 방법론 교육과 프로젝트 전체의 방법론 운영을 위한 의사소통을 담당하도록 인력을 구성하는 기법
  • 자동화에 따른 테일러링
    • 프로젝트 수행 시 작업 부하를 줄이기 위해 중간 단계에서의 산출물을 자동화 도구를 사용하여 산출할 수 있도록 지원하는 기법

SW개발 방법론 활용 - SW 개발 표준

SW개발방법론 테일러링

  • 응용 소프트웨어 개발에 사용할 표준으로 활동 및 절차 수행에 필요한 기법과 표준, 산출물 표준 양식 및 작성 기법, 적용 도구를 정립
  • 테일러링된 적용 개발 방법론에 따른 작성 산출물 유형 확정
  • 소프트웨어 개발 프레임워크의 개념과 종류별 특징을 이해

용어사전

  • Tailoring 테일러링
    • ‘재단, 양복업’ 으로 표준을 기반으로 실제 업무에서 여건에 맞게 수정/보완 하는 것

SW 개발 표준의 개념

  • 소프트웨어 개발 단계의 품질 관리에 사용되는 국제 표준
  • 대표적인 국제표준
    • ISO/IEC 12207
    • CMMI
    • SPICE

종류

1. ISO/IEC 12207

  • ISO; International Organization for Standardiztaion, 국제표준화기구에서 소프트웨어 개발, 운영, 유지보수 등을 체계적으로 관리하기 위한 소프트웨어 생명주기 프로세스 표준을 제공
  • 소프트웨어와 관련된 조직과 사람, 소프트웨어 획득자, 공급자, 개발자, 운영자, 유지보수자, 품질보증관리자, 사용자 등의 이해관계자들이 각자의 입장에서 수행해야 할 일을 정의하고 지속적으로 개선시키기 위한 활동
  • 기본 생명 주기 프로세스
    • 획득 프로세스
    • 공급 프로세스
    • 개발 프로세스
    • 운영 프로세스
    • 유지보수 프로세스
  • 지원 생명 주기 프로세스
    • 문서화 프로세스
    • 품질보증 프로세스
    • 형상관리 프로세스
    • 검증 프로세스
    • 확인 프로세스
    • 문제해결 프로세스
    • 활동 검토 프로세스
    • 유지보수 프로세스
  • 조직 생명 주기 프로세스
    • 기반구조 프로세스
    • 관리 프로세스
    • 개선 프로세스
    • 훈련 프로세스

2. CMMI; Capability Maturity Model Integration

  • 능력 성숙도 모델 통합
  • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도 평가 모델
  • CMMI 성숙도 5단계
    단계 프로세스 특징
    초기 - 작업자 능력에 따라 성공 여부 결정
    관리 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
    정의 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
    정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
    최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선

3. SPICE; Software Process Improvement and Capability dEtermination

  • 소프트웨어 처리 개선 및 능력 평가 기준
  • 소프트웨어 프로세스를 평가 및 개선하는 국제표준
  • ISO/IEC 15504
  • 목적
    • 프로세스 개선을 위해 개발 기관이 스스로 평가하는 것
    • 요구조건의 만족여부를 개발 조직이 스스로 평가하는 것
    • 계약 체결을 위해 수탁 기관의 프로세스를 평가하는 것
  • 5개의 프로세스 범주와 40개의 세부 프로세스로 구성
    • 고객- 공급자 프로세스
      • 소프트웨어를 개발하여 고객에게 전달하는 것을 지원
      • 소프트웨어의 정확한 운용 및 사용을 위한 프로세스로 구성
      • 인수, 공급, 요구 도출, 운영
      • 프로세스 수 : 10개
    • 공학 프로세스
      • 시스템과 소프트웨어 제품의 명세화, 구현, 유지보수하는 프로세스로 구성
      • 개발, 소프트웨어 유지보수
      • 프로세스 수 : 9개
    • 지원 프로세스
      • 소프트웨어 생명 주기에 다른 프로세스에 의해 이용되는 프로세스로 구성
      • 문서화, 형상, 품질 보증, 검증, 확인, 리뷰, 감사, 품질문제해결
      • 프로세스 수 : 8개
    • 관리 프로세스
      • 소프트웨어 생명 주기에서 프로젝트 관리자에 의해 사용되는 프로세스로 구성
      • 관리, 프로젝트 관리, 품질 및 위험 관리
      • 프로세스 수 : 4개
    • 조직 프로세스
      • 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성
      • 조직배치, 개선 활동 프로세스, 인력 관리, 기반 관리, 측정도구, 재사용
      • 프로세스 수 : 9개
  • 프로세스 수행 능력 6개
    • 불완전 Incomplete
      • 프로세스가 구현되지 않았거나 목적을 달성핮지 못한 단계
    • 수행 Performed
      • 프로세스가 수행되고 목적이 달성된 단계
    • 관리 Managed
      • 정의된 자원의 한도 내에서 그 프로세스가 작업 산출물을 인도하는 단계
    • 확립 Established
      • 소프트웨어 공학 원칙에 기반하여 정의된 프로세스가 수행되는 단계
    • 예측 Predictable
      • 프로세스가 목적 달성을 위해 통제되고, 양적인 측정을 통해 일관되게 수행되는 단계
    • 최적화 Optimizing
      • 프로세스 수행을 최적화하고, 지속적인 개선을 통해 업무 목적을 만족시키는 단계

SW개발 방법론 활용 - 핵심정리

SW개발방법론선정

1. 소프트웨어 생명주기 모델

  • 소프트웨어를 어떻게 개발할 것인가에 대한 추상적 표현으로 순차적 또는 병렬적 단계로 나눈 것
  • 소프트웨어 개발 생명주기
    • 타당성검토 -> 분석 -> 설계 -> 개발 -> 테스트 -> 운영 -> 유지보수 -> 폐기
  • 소프트웨어 생명주기 모델 종류
    • 폭포수 모델
    • 프로토타입 모델
    • 나선형 모델
    • 애자일 모델

2. 소프트웨어 개발 방법론

  • 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서 필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
  • 개발 방법론의 종류
    • 구조적 방법론
    • 정보공학 방법론
    • 객체지향 방법론
    • 컴포넌트 기반 방법론
    • 애자일 방법론
    • 제품 계열 방법론

3. 요구공학 방법론

  • 요구사항의 지속적인 중요성 증대채계적인 관리의 필요성이 대두되어 시스템의 요구사항을 정의하고, 문서화하고, 관리하는 프로세스
  • 요구공학 프로세스
    • 도출
    • 분석
    • 명세
    • 확인/검증

4. 비용산정 모델

  • 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 예측하는 과학적이고 합리적인 활동
  • 산정기법 종류
    • 하향식 산정기법
      • 전문가 감정 기법
      • 델파이 기법
    • 상향식 산정기법
      • LOC 기법
      • Effort Per Task 기법
    • 수학적 산정기법
      • COCOMO 모형
      • Putnam 모형
      • FP 모형

SW개발 방법론 활용 - 비용 산정 모델

SW개발방법론선정

소프트웨어 비용 산정의 개념

  • 소프트웨어의 개발 규모를 소요되는 인원, 자원, 기간 등으로 확인하여 실행 가능한 계획을 수립하기 위해 필요한 비용을 예측하는 과학적이고 합리적인 활동
  • 비용산정을 통해 발주자는 소프트웨어의 합리적인 가격을 확인할 수 있고 개발자는 개발에 필요한 정당한 비용 요구 가능
  • 산정기법 종류
    • 하향식 산정기법
    • 상향식 산정기법

소프트웨어 비용 결정 요소

  • 프로젝트 요소
    • 제품 복잡도
    • 시스템 크기
    • 요구되는 신뢰도
      • 일정기간 내 주어진 조건하에서 프로그램이 필요한 기능을 수행하는 척도
  • 자원 요소
    • 인적자원
    • 하드웨어 / 소프트웨어 자원
  • 생산성 요소
    • 개발자 능력
      • 개발자 전문지식과 경험, 이해도, 창의력
    • 개발 기간

산정기법의 종류

1. 하향식 산정기법

  • 과거의 유사 경험을 바탕으로 회의를 통해 산정하는 비과학적인 기법
  • 종류
    • 전문가 감정 기법
      • 조직 내 경험이 있는 2명 이상의 전문가에게 비용 산정을 의뢰하는 산정기법으로 개인적이고 주관적
    • 델파이 기법
      • 전문가들의 편견이나 분위기에 지배되지 않도록 한 명의 조정자와 여러 전문가의 의견을 종합하여 비용을 산정

2. 상향식 산정기법

  • 세부적인 작업 단위별로 비용을 산정한 후 합산
  • LOC 기법 : Line Of Code
    • 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치 구함
    • 공식
      • 노력 = 개발기간 x 투입인원
        = LOC/1인당 월평균 코드 라인 수
      • 개발 비용 = 노력 x 1인당 월평균 인건비
      • 생산성 = LOC/노력
  • Effort Per Task 기법
    • 각 기능을 구현시키는데 필요한 노력을 생명 주기의 각 단계별로 선정하며, LOC보다 더 정확함

3. 수학식 산정기법

  • 경험적 추정 기법 또는 실험적 추정 기법, 개발 비용 산정의 자동화가 목표
  • 비용을 자동으로 산정하기 위해서 사용되는 공식은 과거 유사한 프로젝트를 기반으로 경험적으로 유도된 것
  • 수학적 산정기법 종류
    • COCOMO 모형
    • Putnam 모형
    • 기능 점수 FP : Function Point
1. COCOMO; COnstructive COst MOdel 모형
  • 보헴이 제안한 것으로 원시 프로그램의 규모인 LOC(원시 코드 라인수)에 의한 비용 산정 기법
  • 규모와, 소프트웨어 종류에 따라 조직형, 반분리형, 내장형으로 분류
    • Organic Model 조직형
      • 5만라인의 소프트웨어로 사무처리용, 업무용, 과학용 응용 소프트웨어에 적합
      • 노력(MM) = 2.4 X (KDSI)^1.05
      • 개발기간(TDEV) = 2.5 X (MM)^0.38
    • Semi-Detached Model 반분리형
      • 조직형과 내장형의 중간형
      • 트랜잭션 처리시스템, 운영체제, DBMS등 30만 라인 이하에 적합
    • Embedded Model 내장형
      • 초대형 규모로 30만 라인 이상
      • MM = 3.6 X (KDSI)^1.20
      • TDEV = 2.5 X (MM)^0.32
    • KSDI : Kilo Delivered Source Intruction
      • 전체 라인수를 1,000 단위로 묶은 것

2. Putnam 모형

  • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 가정해주는 모형
  • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로함
  • Rayleigh-Norden곡선
  • 대형 프로젝트의 노력 분포 산정에 이용되는 기법
  • 개발 기간이 늘어날수록 프로젝트 적용 인원의 노력이 감소함
  • 개발 노력

3. 기능 점수 FP 모형

  • 알브레히트가 제안한 것으로, 소프트웨어 기능을 증대 시키는 요인(입력, 출력, 질의, 파일, 인터페이스의 개수)별로 단순, 보통, 복잡 가중치 부여
  • 요인별 가중치를 합산하여 총 기능 점수를 산출하며 총 기능 점수와 영향도를 이용하여 기능 점수를 구한 후 이를 이용해서 비용을 산정하는 기법
  • 기능점수 = 총 기능 점수 x [0.65 + (0.1 x 총 영향도)]

자동화 추정 도구

  • 비용 산정의 자동화를 위해 개발된 도구로는 SLIM 과 ESTIMACS가 있음
  • SLIM
    • Payleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
  • ESTIMACS
    • 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로 하여 개발된 자옹화 추정 도구

SW개발 방법론 활용 - 요구공학 방법론

SW개발방법론선정

요구공학의 개념

  • 시스템의 요구사항을 정의하고, 문서화하고, 관리하는 프로세스
  • 요구사항의 지속적인 중요성 증대
  • 요구사항에 관한 체계적인 관리의 필요성 대두

요구공학의 목적

  • 이해관계자 사이에 효과적인 의사소통 수단을 제공하고 요구사항에 대한 공통 이해를 설정
  • 요구사항 손실 방지 및 에러 감지로 불필요한 비용을 절감하고 요구사항 변경 추적을 가능하게 함

요구공학 프로세스

요구공학프로세스

  • 기능없음

1. Requirement Elicitation 요구사항 도출

  • 소프트웨어 가 해결해야할 문제를 이해하고 요구사항이 어디에 있고, 어떻게 수집할 것인가와 관련
  • 활용기법
    • 인터뷰
    • 시나리오
    • 작업분석
    • BRP : Business Process Reengineering
    • RFP : Request for Proposla
    • 벤치마킹

2. Requirement Aanlysis 요구사항 분석

  • 요구사항들 간의 상충을 해결하고, 소프트웨어의 범위를 파악하면 소프트웨어가 환경과 어떻게 상호작용하는지 이해
  • 활용기법
    • 구조적 분석
      • DFD : Data Flow Diagram
      • Data Dictionary
      • ERD : Entity Relationship Diagram
    • Use Case 기반 분석
      • UML
      • 모델링

3. Requirement Specification 요구사항 명세

  • 체계적으로 검토, 평가, 승인될 수 있는 문서 작성
  • 시스템 정의, 시스템 요구사항, 소프트웨어 요구사항 작성
  • 활용기법
    • ER 모델링
    • FSM : Finite State Machine, 유한 상태 기계
    • SADT : Structered Analysis and Design Technique, 구조화 해석 설계 기법

4. Validation/Verification 요구사항 확인/검증

  • 분석가가 요구사항을 이해 했는지 확인(Validation)
  • 요구사항 문서가 일관성 있고 완전한지 검증(Verification)
    • 베이스라인으로 설정하는 활동
  • 이해관계자들이 문서 검토 및 형상 관리 수행
  • 리소스가 요구사항에 할당되기 전에 문제 파악을 위한 검증 수행
  • 활용기법
    • 검토
    • 프로토타이핑
    • 모델 검증
    • 인수테스트
API API오용 Anaconda Beacon Bluetooth CRUD분석 Camera ChatBot DB관련신기술 DB관리기능 DB서버 DB표준화 ER다이어그램 ER모델 ETL Flask HW관련신기술 IDE도구 IP IoT Machine_Translation NLP배경 ORM프레임워크 Package Recurrent Neural Network SDLC SW개발방법론 SW개발방법론선정 SW개발보안정책 SW개발표준 SW관련신기술 Sequence_Tagging ShellScript TCP_UDP Vector WordCloud c 자료형 class embedding konlpy python python 자료형 가설검증 개발환경구축 객체지향프로그래밍언어 관계데이터베이스모델 관계데이터언어 국제표준제품품질특성 네트워크7계층 네트워크관련신기술 네트워크장비 네트워크침해공격용어 논리데이터모델개요 논리데이터모델품질검증 논리적데이터모델링 논문 단위모듈구현 단위모듈테스트 데이터검증 데이터모델개념 데이터베이스무결성 데이터베이스백업 데이터베이스암호화 데이터베이스용량설계 데이터베이스이중화구성 데이터베이스정규화 데이터분석 데이터분석 - 순열 - 조합 데이터분석 - 정규분포 데이터분석 - 통계기초 데이터사이언스개념 데이터입출력 데이터전환수행계획 데이터정제 데이터조작프로시저작성 데이터조작프로시저최적화 데이터조작프로시저테스트 데이터지역화 데이터타입 데이터표준확인 데이터품질분석 라이브러리 로그분석 메모리관리 모델화 몬테카를로 물리데이터모델설계 물리데이터모델품질기준 물리데이터저장소구성 물리요소조사분석 반정규화 배치프로그램 변수 보안기능 보안솔루션 보안아키텍처 보안취약성식별 분산데이터베이스 분산분석 비용산정모델 빌드자동화도구 사용자정의함수 상관분석 서버개발프레임워크 서버인증 서버장비운영 서버접근통제 서비스공격유형 선언형언어 세션통제 소스코드인스펙션 소프트스킬 소프트웨어개발프레임워크 소프트웨어버전관리도구 소프트웨어연계테스트 슈퍼디엠지 스크립트언어 시스템카탈로그와뷰 암호알고리즘 애플리케이션모니터링도구 애플리케이션배포도구 애플리케이션성능개선 애플리케이션테스트결과분석 애플리케이션테스트시나리오작성 애플리케이션테스트케이스작성 애플리케이션통합테스트수행 애플리케이션패키징 연산자 예외처리 오답노트 오류데이터측정 오류처리 오류처리확인및보고서작성 요구공학방법론 운영체제 웹서버 이벤트 인터넷구성의개념 인터페이스구현검증 인터페이스기능확인 인터페이스보안 입력데이터검증및표현 자료구조 자연어처리 재사용 절차적프로그래밍언어 정보보안침해공격용어 정보처리기사 제품소프트웨어매뉴얼작성 집계성DCL작성 체크리스트 초기데이터구축 취약점분석 칼럼속성 캡슐화 코드오류 클러스터링 키종류 테일러링기준 트랜잭션인터페이스 트리거 파일처리기술 파티셔닝 패키지 포트포워딩 프로세스스케줄링 프로토타입 한국어임베딩 핵심정리 현업도구 형상관리도구 환경변수 회귀분석
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×