1968년 독일 Garmisch에서 열린 첫 번째 NATO Software Engineering Conference에서 처음 사용 소프트웨어 규모의 대규모화, 복잡화에 따른 개발비용 증가 소프트웨어 가격 상승폭 증가 유지보수의 어려움과 개발 적체 현상 발생 대응방안 다양한 소프트웨어 공학 기법을 적극적으로 활용하는 것이 해결책이 될 수 있다. 객체 지향 프로그래밍 구조적 프로그래밍 통합 개발 환경 소프트웨어 콤포넌트화 소프트웨어 프로토타이핑 애자일(Agile) 개발 프로세스 버그 / 이슈 관리 시스템, 버전 관리 시스템 디자인 패턴 가비지 콜렉션 멀티스레드 프로그래밍 구조적 프로그래밍 (structured programming) * 구조적 프로그래밍의 단점 처리동작에 중점을 프로그램을 작성하였고 자료와 ..