소프트 웨어의 발달
소프트 웨어의 발달의 추이
- IT 발전(상품에서 소프트웨어가 차지하는 비중 커짐)
- 웹 환경의 SW 수요 급증(E-commerce, Mobile network)
- 복잡한 기능을 요구하는 SW
- 임베디드 SW 수요 증가
소프트 웨어 공학이란?
Human based activity, but art, craft X
과학
- 아카데믹 - 이상적인
- 원자적인 크기
- 완벽함에 대해 고민
- SW 생산에 영향을 주는 현상 연구
엔지니어링
- 실용적인 - 현실세계
- 반복적인 일
- 불완전에 대한 고민
- 품질 좋은 SW를 효율적이며 경제적으로 개발
문제해결에 도움을 주는 요소
- 방법/기술(Method)
- 가이드 라인
- 도구(Tools)
- 자동화 시스템
- 절차(Process)
- 도움을 주는 미리 선택한 방법, 도구
소프트웨어 개발이 어려운 이유
- 응용문제 자체의 어려움
- 효과적인 의사교환 필요
- 개발 과정이 순차적
- 여러가지 제약 조건
- 변경이 쉽지 X
- 요구 품질의 상충
품질 좋은 소프트웨어 만들기
- 도구와 기술을 사용하여 좋은 SW 개발하는 능력 향상(SW studio, Mentoring)
- SW 엔지니어는 SW가 일정한 품질 수준을 만족한다는 것을 보일 수 있어야함 (Customer satisfaction)
- SW 품질을 잘 이해하여야 함(Quality Assurance, Software Process)
소프트웨어 공학의 핵심
- 대규모 프로그래밍을 다룸(Programming-in-large)
- 문제와 솔루션이 복잡하여 팀 개발(Maturity Level)
- 복잡도 다루기(Control Complexity)
- 계속되는 진화
- 개발 프로세스의 효율
- 직, 간접 사용자를 효과적으로 지원
물리적 공학과 소프트웨어공학
- 제품 생산의 비용이 주로 개발 과정에 소요
- 한 번 개발하면 쉽게 대량 생산
- SW는 물리적 부품 X
- 제품 신뢰도 ⇒ 설계 과정에 의해 결정
- 결함을 발견해 내는 테스트도 설계 과정에 집중
- 가시성이 낮음
- 제품 구조가 쉽게 드러나지 X
- 설계와 구현이 연쇄적 X
- 작은 오류 ⇒ 심각한 영향