소프트웨어
- 프로그램과 이의 개발, 운용, 수정, 기능확장을 위한 모든 정보
- 프로그램의 동적인 의미
특징
- 비가시성
- 구조가 외부에 보이지 않고 코드에 내재되어 있다.
- 복잡성
- 순응성
- 사용자 요구나 환경변화에 적절히 변형 가능하다.
- 복제 가능성
- 테스팅 어려움
- 변경 가능성
소프트웨어 개발과정의 문제
- 예산 초과
- 개발 일정 지연
- 성능 불충분
- 품질 신뢰 어려움
- 유지 보수 어려움
- 유지 보수 비용 비쌈
소프트웨어 위기
- 소프트웨어 수요는 급증하였으나 생산성과 생산기술은 이에 미치지 못함
소프트웨어 공학
- 품질 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발하기 위해,
여러 공학적 원리와 방법을 체계적으로 적용하는 것
Planning >> Analyze >> Design >> Implementation
여러가지 소프트웨어 개발 프로세스들
Waterfall
Parallel
- Waterfall의 단점 보완
- 여러 팀이 필요하다.
Phased Development-based
- 우선순위에 따라 단계발 개발, 이후 리팩터링 필요함.
- 처음 개발 방향과 달라질수 있음
- 스타트업
Protoyping / Throwaway
- 요구사항이 구체적이지 않거나 없을때 시제품을 만들어가며 보완
- 시제품이 완료되면 그제서야 개발 시작
- 스타트업