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