경험

정보처리기사 실기 정리 2

NONAME DIALOG 2024. 10. 25. 14:44

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징 
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |

소프트웨어 개발

소프트웨어 개발 방법론

  • 소프트웨어 개발 방법론
    • 소프트웨어 개발, 유지보수 등에 필요한 수행방법과 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것
    • 목적은 소프트웨어의 생산성과 품질 향상
    • 주요 소프트웨어 개발 방법론
      • 구조적 방법론
      • 정보공학 방법론
      • 객체지향 방법론
      • 컴포넌트 기반(CBD) 방법론
      • 제품 계열 방법론
      • 애자일 방법론
  • 구조적 방법론 ⇒ 모듈화, 부품화
    • 사용자 요구사항을 파악하여 문서화하는 처리(Precess) 중심의 방법론
    • 쉬운 이해 및 검증이 가능한 프로그램 코드를 생성하는 것이 목적임
    • 분할과 정복(Divide and Conquer)원리를 적용함
    • 구조적 방법론의 개발 절차
  • 정보공학 방법론 ⇒ 실제 업무 위주로
    • 계획, 분석, 설계, 구축에 정형화된 기법들을 통합 및 적용하는 자료(Data) 중심의 방법론
    • 대규모 정보 시스템을 구축하는데 적합
    • 정보공학 방법론의 개발 절차
      • 계획
      • 분석
      • 설계
      • 구축
  • 객체지향 방법론
    • 현실 세계의 개체(Entity)를 하나의 객체(Object)로 만들어 객체들을 조립해서 필요한 소프트웨어 구현하는 방법론
    • 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
    • 구성요소
      • 객체
      • 클래스
      • 메시지
    • 기본 원칙
      • 캡슐화
      • 정보은닉
      • 추상화
      • 상속성
      • 다형성
    • 객체지향 방법론의 개발 절차
  • 컴포넌트 기반(CBD, Component Based Design) 방법론
    • 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
    • 컴포넌트의 재사용이 가능하기 때문에 시간과 노력을 절감할 수 있음
    • 새로운 기능을 추가하는 것이 간단하여 확장성이 보장됨
    • 유지 보수 비용을 최소화하고 생산성 및 품질을 향상 시킬 수 있음
    • 컴포넌트 기반 방법론의 개발 절차
  • 제품 계열 방법론
    • 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
    • 임베디드 소프트웨어를 만드는데 적합함
    • 영역공학과 응용공학으로 구분됨
      • 영약공학
        • 영역 분석
        • 영역 설계
        • 핵심 자산을 구현
      • 응용공학
        • 제품 요구 분석
        • 제품 설계
        • 제품 구현
    • 영역공학과 응용공학의 연계를 위한 제품의 요구사항, 아키텍처, 조립 생산이 필요

SW 공학의 발전적 추세

  • 소프트웨어 재사용(Software Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용
    • 품질과 생산성을 높이기 위한 방법
    • 기존 소프트웨어와 경험, 지식등을 새로운 소프트웨어에 적용
    • 소프트웨어 재사용 방법
      • 합성중심
        • 부품을 끼워 맞춰 소프트웨어를 완성시키는 방법
        • 블록 구성 방법 이라고도 함
      • 생성중심
        • 프로그램을 만드는 방법
        • 패턴 구성 방법 이라고도 함
  • 소프트웨어 재공학(Software Reenegineering)
    • 소스 → 문서 (역공학)
    • 문서 수정 → 소스 수정(재공학) == 리모델링
    • 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상을 통해 소프트웨어 위기를 해결하는 방법
    • 데이터와 기능들의 개조 및 개선을 통해 유지보수성과 품질을 향상시킴
    • 소프트웨어 재공학의 이점
      • 품질 향상
      • 생산성 증가
      • 수명 연장
      • 오류 감소
  • CASE(Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 전체 단계를 연결하고 자동화하는 통합된 도구 제공
    • 생산성 향상을 구현함
    • CASE의 주요 기능
      • 생명 주기 전 단계 연결
      • 소프트웨어 개발 모형 지원
      • 그래픽 지원

비용 산정 기법 - 하향식

  • 하향식 비용 산정 기법 (==전문가 상대로 비용 산정)
    • 전문 지식이 많은 개발자들이 참여한 회의를 통해서 비용산정하는 비과학적인 방법
    • 전체 비용 산정 후 비용 세분화
    • 하향식 비용 산정 기법
      • 전문가 감정 기법
      • 델파이 기법
  • 전문가 감정 기법
    • 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰
    • 가장 편리하고 신속하게 비용을 산정
    • 의뢰자로부터 믿음을 얻을 수 있음
    • 개인적이고 주관적일 수 있음
  • 델파이 기법
    • 전문가 감정 기법의 주관적인 편견을 보완하기 위해 많은 전문가의 의견 종합
    • 한 명의 조정자와 여러 전문가로 구성

비용 산정 기법 - 상향식

  • 상향식 비용 산정 기법
    • 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
    • 주요 상향식 비용 산정 기법
      • LOC(원시 코드 라인 수) 기법
      • 개발 단계별 인월수 기법
      • 수학적 산정 기법
  • LOC(원시 코드 라인 수, source Line Of Code) 기법
    • 각 기능의 라인 수의 비관치, 낙관치, 기대치 측정하여 예측치 구하고 비용 산정
    • 이해하기 쉬움
    • 예측치를 이용하여 생산성, 노력, 개발 기간 등의 비용을 산정
    • 예측치 공식 암기 필수
    • 산정 공식
    • LOC 산정 예시
      • ex) LOC 기법에 의하여 예측된 총 라인 수가 30,000라인, 개발에 참여할 프로그래머가 5명, 프로그래머들의 평균 생산성이 월간 300라인 때 개발에 소요되는 기간은?
  • 개발 단계별 인월수(Effort Per Task) 기법
    • LOC 기법을 보완하기 위한 기법
    • 기능 구현 시 필요한 노력을 생명 주기의 각 단계별로 산정함

수학적 산정 기법

  • 수학적 산정 기법
    • 상향식 비용 산정 기법, 경험척 추정 모형, 실험적 추정 모형이라고 함
    • 개발 비용 산정의 자동화를 목표로 함
    • 과거의 유사한 프로젝트를 기반으로 유도됨
    • 주요 수학적 산정 기법
      • COCOMO 모형
      • Putnam 모형
      • 기능 점수(FP) 모형
  • COCOMO(COnstructive COst Model) 모형
    • LOC에 의한 비용 산정 기법
    • LOC를 예측한 후 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입
    • 비용 산정 결과는 노력(Man-Month)으로 나타냄
    • 보헴이 제안함
  • COCOMO의 소프트웨어 개발 유형유형 특징
    조직형(Organic Mode) - 5만(50KDSI) 라인 이하의 소프트웨어를 개발하는 유형
    • 중,소 규모의 소프트웨어 | | 반분리형(Semi-Detached Mode) | 트랜잭션 처리 시스템이나 운영체제, 데이터베이스 관리 시스템 등의 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형 | | 내장형(Embeded Mode) | - 초대형 규모의 소프트웨어
    • 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형 |
  • COCOMO 모형의 종류종류 특징
    기본형 소프트웨어 크기와 개발 유형만을 이용하여 비용산정
    중간형 다음 네 가지 특성에 의해 비용 산정
    • 제품의 특성
    • 컴퓨터의 특성
    • 개발 요원의 특성
    • 프로젝트 특성 | | 발전형 | - 중간형을 보완하여 만들어진 모형
    • 자세하고 정확하게 노력을 산출하여 비용 산정
    • 소프트웨어 환경과 구성 요소가 사전에 정의 |
  • Putnam 모형
    • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
    • 푸트남이 제안함
    • 생명 주기 예측 모형이라고도 함
    • Rayleigh-Norden 곡선의 노력 분포도를 기초로 함
    • 대형 프로젝트의 노력 분포 산정에 사용함
  • 기능 모형(FP, Function Point) 모형
    • 소프트웨어 기능을 증대시키는 요인별로 가중치를 부여하고, 총 기능 점수와 영향도를 이용하여 기능 점수(FP)를 구한 후 비용을 산정하는 기법
    • 알브레히트가 제안함
    • 소프트웨어 기능 증대 요인
      • 자료 입력(입력 양식)
      • 정보 출력(출력 보고서)
      • 명령어(사용자 질의 수)
      • 데이터 파일
      • 필요한 외부 루틴과의 인터페이스
    • 비용 산정 자동화 추정 도구
      • SLIM
        • Putnam 예측 모델을 기초로 함
      • ESTIMACS
        • FP 모형을 기초로 함

프로젝트 일정 계획

  • 프로젝트 일정 계획
    • 프로젝트의 프로세스를 이루는 소작업을 파악하고 순서와 일정을 정하는 것
    • 프로젝트 일정 계획에 사용되는 기능
      • WBS
      • PERT/CPM
      • 간트 차트
  • PERT(프로그램 평가 및 검토 기술)
    • 전체 작업의 상호 관계를 표시하는 네트워크
    • 작업별로 종료시기를 결정함
      • 낙관적인 경우
      • 가능성이 있는 경우
      • 비관적인 경우
    • 소요 기간 예측이 어려운 프로젝트 일정 계획에 사용함
    • 노드와 간선으로 구성됨, 원 노드는 작업, 간선에는 낙관치, 기대치, 비관치를 표시
    • 결정 경로, 작업에 대한 경계 시간, 작업 간의 상호 관련성 등을 알 수 있음
  • 작업 예측치 계산 공식
  • CPM(Critical Path Method, 임계 경로 기법)
    • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    • 노드와 간선으로 구성된 네트워크는 노드는 작업을, 간선은 작업 사이의 전후 의존 관계를 나타냄
    • 원형 노드는 각각의 작업을 의미, 작업 이름과 소요 기간을 표시
    • 박스 노드는 이정표를 의미, 이정표 이름과 예상 완료 시간을 표시함
    • 간선을 나타내는 화살표의 흐름에 따라 각 작업이 진행되며, 전 작업이 완료되어야 다음 작업을 진행
  • 간트 차트
    • 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표
    • 시간선 차트라고도 함
    • 중간 목표 미달성 시 이유와 기간을 예측할 수 있게 함

소프트웨어 개발 방법론 결정

  • 소프트웨어 개발 방법론 결정
    • 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영하고 확정된 소프트웨어 생명 주기와 개발 방법론에 맞춰 소프트웨어 개발 단계, 활동, 작업, 절차 등을 정의하는 것
    • 소프트웨어 개발 방법론 결정 절차
      1. 프로젝트 관리와 재사용 현황을 소프트웨어 개발 방법론에 반영함
      2. 개발 단계별 작업 및 절차를 소프트웨어 생명 주기에 맞춰 수립함
      3. 활동 목적, 작업 내용, 산출물에 대한 매뉴얼 작성
  • 프로젝트 관리
    • 최소의 비용으로 시스템을 개발하기 위한 전반적인 활동
    관리 유형 주요 내용
    일정 관리 작업 순서, 작업 기간 산정, 일정 개발, 일정 통제
    비용 관리 비용 산정, 비용 예산 편성, 비용 통제
    인력 관리 프로젝트 팀 편성, 자원 산정, 프로젝트 조직 정의, 프로젝트 팀 개발, 자원 통제, 프로젝트 팀 관리
    위험 관리 위험 식별, 위험 평가, 위험 대처, 위험 통제
    품질 관리 품질 계획, 품질 보증 수행, 품질 통제 수행

소프트웨어 개발 표준

  • 소프트웨어 개발 표준
    • 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용하는 국제 표준
    • 주요 소프트웨어 개발 표준
      • ISO/IEC 12207
      • CMMI(능력 성숙도 통합 모델)
      • SPICE(소프트웨어 처리 개선 및 능력 평가 기준)
  • ISO/IFC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명 주기 프로세스
    • 개발, 운영, 유지보수 등을 관리하기 위한 표준 제공
    • ISO/IEC 12207 구분기본 생명 주기 프로세스 획득, 공급, 개발, 운영, 유지보수 프로세스
      지원 생명 주기 프로세스 품질 보증, 검증, 확인, 활동 검토, 감사, 문서화, 형성 관리, 문제 해결 프로세스
      조직 생명 주기 프로세스 관리, 기반 구조, 훈련, 개선 프로세스
  • CMMI(Capability Maturity Model Integartion)
    • 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
    • 소프트웨어 공학연구소(SEI)에서 개발함
    • 프로세스 성숙도단계 프로세스 특징
      초기(Initial) 정의된 프로세스 없음 작업자 능력에 따라 성공 여부 결정
      관리(Managed) 규칙화된 프로세스 특정한 프로젝트 내의 프로세스 정의 및 수행
      정의(Defined) 표준화된 프로세스 조직의 표준 프로세스를 활용하여 업무 수행
      정량적 관리 예측 가능한 프로세스 프로젝트를 정량적으로 관리 및 통제
      최적화 지속적 개선 프로세스 프로세스 역량 향상을 위해 지속적인 프로세스 개선
  • SPICE(Software Process Improvement and Capability dEtermination)
    • 소프트웨어 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준
    • ISO/ECC 15504가 공식명칭
  • SPICE 구성범주 특징
    고객-공급자 프로세스 고객에게 전달하는 것을 지원, 운용 및 사용을 위한 프로세스로 구성됨
    공학 프로세스 명세화, 구현, 유지보수를 하는데 사용되는 프로세스로 구성됨
    지원 프로세스 생명 주기에서 다른 프로세스에 의해 이용되는 프로세스로 구성됨
    관리 프로세스 프로젝트 관리자에 의해 사용되는 프로세스로 구성됨
    조직 프로세스 조직의 업무 목적 수립과 조직의 업무 목표 달성을 위한 프로세스로 구성 됨
  • SPICE의 프로세스 수행 능력 단계단계 특징
    불완전 구현되지 않았거나 목적을 달성하지 못한 단계
    수행 수행되고 목적이 달성된 단계
    관리 작업 산출물을 인도 하는 단계
    확립 정의된 프로세스가 수행되는 단계
    예측 양적인 측정을 통해서 일관되게 수행되는 단계
    최적화 최적화를 통해 업무 목적을 만족 시키는 단계

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

  • 소프트웨어 개발 방법론 테일러링
    • 프로젝트 상황 및 특성에 맞도록 정의된 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 테일러링 수행 절차
  • 테일러링 고려사항기준 내용
    내부적 기준 - 목표환경: 개발 환경과 유형이 서로다른 경우
    • 요구사항: 우선적으로 고려할 요구사항이 서로 다른 경우
    • 프로젝트 규모: 규모가 서로 다른 경우
    • 보유 기술: 기술이 다른 경우 | | 외부적 기준 | - 법적 제약사항: IT Compliance가 서로 다른 경우
    • 표준 품질 기준: 금융, 제도 등 분야별 기준이 서로 다른 경우 |

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

  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품 형태의 소프트웨어 시스템
    • 프레임워크의 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 메모리 공유
      • 데이터 소스 관리
      • 서비스 관리
      • 쿼리 서비스
      • 로깅 서비스
      • 사용자 인증 서비스
    • 프레임워크의 종류
      • 스프링 프레임워크
      • 전자정보 프레임워크
      • 닷넷 프레임워크
  • 스프링 프레임워크
    • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
    • 전자 정부 표준 프레임워크의 기반 기술
  • 전자 정부 프레임워크
    • 대한민국의 공공부문 정보화 사업 시 사용
  • 닷넷 프레임워크
    • Windows 프로그램의 개발 및 실행 환경을 제공
  • 프레임워크의 특성특성 내용
    모듈화 - 캡슐화를 통해 모듈화를 강화
    • 개발 표준에 의한 모듈화로 인해 유지보수 용이 | | 재사용성 | - 재사용 가능한 모듈들을 제공함으로 예산 절감, 생산성 향상, 품질 보증 | | 확장성 | - 다형성(Polymorphism)을 통한 인터페이스 확장이 가능함 | | 제어의 역 흐름 | - 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로 생산성 향상 |