본문 바로가기

정보처리기사_실기

정보처리기사 20 ~ 30 (소프트웨어 개발 방법론 ~ 개발 프레임워크)

  • 소프트웨어 개발 방법론
    • 소프트웨어의 개발, 유지보수 등에 필요한 일의 수행방법과 각종 기법 및 도구들을 표준화한 것
    • 소프트웨어의 생산성과 품질 향상
    • 구조적 방법론
      • 정형화된 분석 절차에 따라 요구사항을 파악하고 문서화하는 처리(Process)중심의 방법론
      • 분할과 정복 (Divide & Conquer) 원리 적용
    • 정보공학 방법론
      • 정형화된 기법들을 통합 및 적용하는 자료(Data)중심의 방법론
      • 대규모 정보시스템 구축에 용이
    • 객체지향 방법론
      • 현실 세계의 개체를 객체로 만들고 조립하여 소프트웨어를 구현하는 방법론
      • 구성 요소 : 객체, 클래스, 메시지
      • 기본 원칙 : 캡슐화, 정보은닉, 추상화, 상속성, 다형성 ..
    • 컴포넌트 기반 방법론 (CBD)
      • 컴포넌트를 조합하여 새로운 애플리케이션을 만드는 방법론
        • 컴포넌트 : 문서, 파일 등과 같은 모듈화된 자원
      • 재사용 가능
      • 확장성 보장, 생산성 및 품질 향상
    • 제품계열 방법론
      • 공통된 기능을 정의하여 개발
      • 임베디드 소프트웨어 구축에 적합
      • 영역공학과 응용공학으로 구분
  • 소프트웨어 재사용 (Reuse)
    • 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어의 개발이나 유지에 사용
    • 개발의 품질과 생산성 증가
    • 재사용 방법
      • 합성 중심 : 부품을 끼워 맞춰 완성, 블록 구성 방법
      • 생성 중심 : 추상화 형태로 써진 명세를 구체화, 패턴 구성 방법
  • 소프트웨어 재공학 (Reengineering)
    • 기존의 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가
    • 소프트웨어 성능을 향상
    • 유지보수의 생산성 향상
    • 장점
      • 품질 향상, 생산성 증가, 수명 연장, 오류 감소
  • CASE (Computer Aided Software Engineering)
    • 소프트웨어 개발 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
    • 자동화 도구
    • 주요 기능
      • 소프트웨어 생면주기 전 단계의 연결
      • 다양한 소프트웨어 개발 모형 지원
      • 그래픽 지원
  • 소프트웨어 비용 산정
    • 인원, 자원, 기간 등으로 규모를 확인하여 비용을 산정하는 것
    • 비용 결정 요소
      • 프로젝트 요소 : 제품 복잡도, 시스템 크기 ..
      • 자원 요소 : 인적 자원, 하드웨어 자원, 소프트웨어 자원 ..
      • 생산성 요소 : 개발자 능력, 개발 기간 ..
    • 하향식 비용 산정 기법
      • 과거의 유사한 경험을 바탕으로 비용 산정
      • 전문가 감정 기법
        • 경험이 많은 두 명 이상의 전문가에게 비용산정을 의뢰
        • 개인적이고 주관적
      • 델파이 기법
        • 다수의 전문가와 조정자가 비용을 산정
        • 전문가 감정 기법의 주관적인 편견 보완
    • 상향식 비용 산정 비법
      • 세부적인 작업 단위 별로 비용을 산정한 후 집계하여 전체 비용을 산정
      • LOC (원시 코드 라인 수) 기법
        • 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고, 비용 산정
        • 측정이 용이하고 쉬움
        • 예측치 = (낙관치 + 4기대치 + 비관치) / 6
        • 산정 공식
          • 노력 = 개발기간 * 투입인원
          • 비용 = 노력 * 단위비용
          • 기간 = 노력 * 투입인원
          • 생산성 = 코드 수 / 노력
      • 개발 단계별 인월수 기법
        • LOC기법을 보완
        • 필요한 노력을 생명 주기의 각 단계별로 산정
      • 수학적 산정 기법
        • 경험적 추정 모형, 실험적 추정 모형 이라고도 함
        • 개발 비용 산정의 자동화 목표
        • COCOMO 모형
          • LOC에 의한 비용 산정 기법
          • 필요한 노력 (Man-Month)로 나타냄
          • Bohem이 제안
          • 개발 유형
            • 조직형(Organic) : 중.소 규모의 소프트웨어, 5만 라인 이하
            • 반분리형(Semi-Detached) : 중간형 소프트웨어, 30만 라인 이하
            • 내장형(Embedded) : 초대형 규모의 소프트웨어, 30만 라인 이상
          • 모형 종류
            • 기본형(Basic) : 소프트웨어의 크기와 개발유형만을 이용
            • 중간형(Intermediate) : 기본형 공식 + 제품의 특성, 컴퓨터 특성, 개발요원 특성, 프로젝트 특성
            • 발전형(Detailed) : 개발 공정별로 노력을 산출, 개발과정의 후반부에 주로 적용
        • Putnam 모형
          • 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상
          • 생명 주기 예측 모형 이라고도 함
          • Rayleigh-Norden 곡선을 기초로 함
        • 기능점수(FP) 모형
          • 기능을 증대시크는 요인별로 가중치를 부여하여 기능점수를 구한 후 집계하여 비용 산정
          • Albrecht가 제안
          • 기능 증대 요인
            • 자료 입력, 정보 출력, 명령어, 데이터 파일, 외부 루틴과의 인터페이스
        • 비용 산정 자동화 도구
          • SLIM
            • Rayleigh-Norden곡선과 Putnam 모형을 기초로 하여 개발된 자동화 추정 도구
          • ESTIMACS
            • FP모형을 기초로 하여 개발된 자동화 추정 도구
  • 프로젝트 일정 계획
    • PERT 
      • 전체 작업의 상호관계를 표시하는 네트워크
      • 낙관적인 경우, 비관적인 경우, 가능성이 있는 경우로 나누어 종료시기를 결정
      • 노드와 간선으로 구성
    • CPM (임계 경로 기법)
      • 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
      • 노드와 간선으로 구성
      • 임계경로 = 최장 경로
    • 간트차트
      • 작업 일정을 막대 도표를 이용하여 표시
      • 시간선 차트 라고도 함
  • 프로젝트 관리
    • 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동
    • 관리 유형
      • 일정 관리, 비용 관리, 인력 관리, 위험 관리, 품질 관리
  • 소프트웨어 개발 표중
    • 개발단계에서 수행하는 품질 관리에 사용되는 국제 표준
    • ISO/IEC 12207
      • ISO에서 만든 표준 소프트웨어 생명주기 프로세스
      • 구분
        • 기본 생명 주기 프로세스
        • 지원 생명 주기 프로세스
        • 조직 생명 주기 프로세스
    • CMMI (Capability Maturity Model Integration)
      • 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
      • SEI 에서 개발
      • 프로세스 성숙도 단계_ 5단게
        • 초기(Initial) : 정의된 프로세스 없음
        • 관리(Managed) : 규칙화된 프로세스
        • 정의(Defined) : 표준화된 프로세스
        • 정량적 관리(Quantitatively Managed) : 예측 가능한 프로세스
        • 최적화(Optimizaing) : 지속적 개선 프로세스
    • SPICE(Software Process Improvement and Capability dEtermination)
      • 소프트웨어의 품질 및 생산성 향상을 위해 프로세스를 평가 및 개선하는 국제 표준
      • ISO 15504
      • 구성
        • 고객-공급자 프로세스 : 인수, 공급, 요구 도출, 운영 ..
        • 공학 프로세스 : 개발, 유지보수 ..
        • 지원 프로세스 : 문서화, 형상, 품질보증 ..
        • 관리 프로세스 : 관리, 프로젝트 관리 ..
        • 조직 프로세스 : 조직 배치, 인력 관리 ..
      • 수행 능력 단계_ 6단게
        • 불완전(Incomplete) : 프로세스가 구현되지 않음
        • 수행(Performed) : 프로세스가 수행되고 목적을 달성
        • 관리(Managed) : 프로세스가 작업 산출물을 인도
        • 확립(Established) : 정의된 프로세스가 수행
        • 예측(Predictable) : 일관되게 수행
        • 최적화(Optimizing) : 지속적인 개선
  • 소프트웨어 개발 방법론 테일러링
    • 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
    • 고려사항
      • 내부적 기준
        • 목표 환경
        • 요구사항
        • 프로젝트 규모
        • 보유 기술
      • 외부적 기준
        • 법적 제약사항
        • 표준 품질 기준
  • 소프트웨어 개발 프레임워크
    • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 제공하는 반제품 형태의 소프트웨어 시스템
    • 주요 기능
      • 예외 처리
      • 트랜잭션 처리
      • 로깅 서비스
      • 사용자 인증 서비스 ..
    • 스프링 프레임워크 (Spring)
      • 자바 플랫폼을 위한 오픈 소스 경량형 애플리케이션 프레임워크
      • 동적인 웹 사이트 개발
      • 전자정부 표준 프레임워크의 기반 기술
    • 전자정부 프레임워크
      • 대한민국의 공공부문 정보화 사업에 활용
      • 오픈 소스 기반의 범용화 가능
      • 표준화, 품질 및 재사용성 향상이 목적
    • 닷넷 프레임워크 (.NET)
      • Windows 프로그램의 개발 및 실행 환경을 제공
      • MicroSoft사에서 개발
      • CLR이라는 가상머신 상에서 작동
    • 프레임워크의 특성
      • 모듈화 (Modularity) : 캡슐화를 통한 모듈화 강화, 유지보수 용이
      • 재사용성 (Reusability) : 재사용 가능한 모듈들을 재공, 품질 보증
      • 확장성 (Extensibility) : 다형성을 통한 인터페이스 확장 가능
      • 제어의 역흐름 (Inversion of Control) : 객체들의 제어를 프레임워크에 넘김, 생산성 향상