소프트웨어 개발의 어려움
- 다른 엔지니어링 결과물보다 실체를 감지하기 어려움
- 다수의 사용자를 대상으로 다양한 기능의 개발이 요구됨
- 다수의 전문가들이 협업 : 협업방법의 문제도 존재
- 계속 수정하면 설계 구조가 약화될 수 있다.
소프트웨어의 위기
: SW 개발 속도가 하드웨어 개발 속도를 따라가지 못해 사용자 요구사항을 감당할 수 없는 문제가 발생
- 하드웨어의 발달 → SW 수요, 규모 ↑
- SW 생산성 향상이 더디다.
- 개발이 완료된 SW에 결함이 많아서 수정,폐기
- 경제 원리를 적용하기 어렵고, 인간의 작업을 예측하기 힘들다.
소프트웨어 공학
: 고객의 문제를 해결해주기 위해 품질 좋은 대규모 소프트웨어 시스템을 정해진 시간과 비용으로 개발하거나 발전시키는 체계적인 절차/방법론
소프트웨어 프로젝트 작업
- 분석 : 고객의 비즈니스 환경과 문제, 필요 기술, 우선순위 파악
- 설계 : 요구사항을 어떻게 달성할 것인지 계획/결정
- 모델링 : SW에 대해 심볼, 수식 등의 표현을 만들어 나가는 과정
- 구현 : 높은 수준의 설계를 정해진 프로그래밍 언어로 옮기는 작업
- 테스트 : 목표 품질 달성을 위한 개별 코드 테스트 및 검증
- 관리 : SW 개발시 적용되는 모든 프로세스를 통합하여 관리
분석과 설계의 필요성
- 최적의 비용으로 여러 사람과 협력해서 목표하는 발르 성공적으로 이루려면 정교한 분석과 설계가 필요함
- 잘못되면 비용초과, 프로젝트 실패, 인적 피해등을 야기
- 소프트웨어도 규모가 커지고 여러 사람이 협력하는 만큼 분석과 설계가 필수적