• 소프트웨어 생명주기
    • 폭포수 모형
    • 프로토타입 모형
    • 나선형 모형
    • 애자일 모형
  • XP
    • 핵심 가치 : 의사소통, 단순성, 용기, 존중, 피드백
    • 주요 실천 방법
      • 짝 프로그래밍
      • 공동 코드 소유
      • 테스트 주도 개발
      • 전체 팀
      • 계속적인 통합
      • 리팩토링
      • 소규모 릴리즈
  • 요구사항
    • 유형
      • 기능 요구사항 : 기능이나 수행과 관련된 요구사항
      • 비기능 요구사항 : 품질이나 제약사항과 관련된 요구사항
      • 사용자 요구사항 : 사용자 관점에서 본 시스템이 제공해야할 요구사항
      • 시스템 요구사항 : 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항
    • 개발 프로세스
      • 도출 → 분석 → 명세 → 확인
    • 요구사항 분석
      • 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화하는 활동
      • 구조적 분석 기법 : 자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법
        • 자료흐름도
        • 자료사전
      • CASE (자동화도구)
        • SADT, SREM, PSL/PSA, TAGS
      • HIPO : 시스템 실행 과정인 입력 처리 출력의 기능을 표현하는 기법
  • UML : 시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
    • 구성 요소
      • 사물
        • 구조 사물
        • 행동 사물
        • 그룹 사물
        • 주해 사물
      • 관계
        • 연관, 집합, 포함, 일반화, 의존, 실체화 관계
      • 다이어그램
        • 구조적 다이어그램
          • 클래스 다이어그램 : 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현
            • 구성요소 : 클래스, 제약조건, 관계
          • 객체 다이어그램 : 클래스에 속한 사물들을 특정 시점의 객체와 객체 사이의 관계로 표현
          • 컴포넌트 다이어그램 : 컴포넌트 간의 관계나 인터페이스 표현
          • 배치 다이어그램 : 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
          • 복합체 구조 다이어그램 : 복합구조를 갖는 경우 내부구조 표현
          • 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
            • 구성요소 : 패키지, 객체, 의존 관계
        • 행위 다이어그램
          • 유스케이스 다이어그램 : 사용자의 요구 분석, 기능 모델링 작업에 사용
            • 구성요소 : 액터, 유스케이스, 시스템, 관계
          • 시퀀스 다이어그램 : 상호작용하는 시스템이나 객체들이 주고받는 메시지 표현
            • 구성요소 : 액터, 객체, 생명선, 실행 상자, 메시지, 객체 소멸, 프레임
          • 커뮤니케이션 다이어그램 : 객체들이 주고받는 메시지와 객체들 간의 연관관계 표현
            • 구성요소 : 액터, 객체, 링크, 메시지
          • 상태 다이어그램 : 객체가 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현
            • 구성 요소 : 상태, 시작 상태, 종료 상태, 상태 전환, 이벤트, 프레임
          • 활동 다이어그램 : 사용자 관점으로 시스템이 어떤 기능을 수행하는지를 순서에 따라 표현
            • 구성요소 : 액션, 노드, 스윔 레인
          • 상호작용 개요 다이어그램 : 상호작용 다이어그램간의 제어 흐름을 표현
          • 타이밍 다이어그램 : 객체 상태 변화와 시간제약을 명시적으로 표현
  • 소프트웨어 개발 방법론
    • 주요 방법론
      • 구조적 방법론 : 요구사항을 문서화하는 처리 중심의 방법론
      • 정보공학 방법론 : 정형화된 기법들을 통합 및 적용하는 자료 중심의 방법론
      • 객체지향 방법론 : 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
      • 컴포넌트 기반 방법론 : 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
      • 제품 계열 방법론 : 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
  • SW공학의 발전적 추세
    • 소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
    • 소프트웨어 재공학 : 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
    • CASE : 소프트웨어 개발 과정 전체 또는 일부를 자동화하는 것
  • 비용 산정 기법
    • 하향식 비용 산정 기법 : 과거의 유사한 경험을 바탕으로 전문지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정
      • 전문가 감정 기법 : 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
      • 델파이 기법 : 많은 전문가의 의견을 종합하여 산정하는 기법
    • 상향식 비용 산정 기법 : 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
      • LOC기법 : 원시코드 라인 수의 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
      • 개발 단계별 인월수 기법 : 각 기능을 구현시키는데 필요한 노력을 생명주기의 각 단계별로 산정
      • 수학적 산정 기법
        • COCOMO 모형 : LOC에 의한 비용산정 기법
          • 조직형 : 5만 라인 이하
          • 반분리형 : 30만 라인 이하
          • 내장형 : 30만 라인 이상
        • Putnam 모형 : 소프트웨어 생명주기의 전 과정 동안에 사용될 노력의 분포를 예상
        • FP 모형 : 총 기능 점수와 영향도를 이용해 기능 점수를 구한 후 비용을 산정
        • 비용 산정 자동화 추정 도구 : SLIM, ESTIMACS
  • 프로젝트 일정 계획
  • 소프트웨어 개발 표준
  • 소프트웨어 개발 프레임 워크