Software in nowadays
소프트웨어의 정의
프로그램
소프트웨어
- 프로그램 + (사람이 만든) SW 개발에 사용되는 산출물들
- 데이터 구조, 데이터베이스, 데이터베이스 구조, 테스트 결과물, 각 개발 과정 문서, 사용자 매뉴얼 등 모든 과정에서의 산출물
⇒ 소프트웨어는 프로그램 이상의 것을 포함하는 복합적 & 종합적인 것
소프트웨어의 특징
소프트웨어란?
: 소프트웨어 개발의 생산성에 영향을 줄 수 있는 개인(개발자)의 능력치
제작 X
개발 O
Quality Degradation, but not consumed ( 품질 저하, 소비 X ..?)
Software problems to solve
소프트웨어 비용
소프트웨어 위기
SW *project 실패의 2가지 주요 이유
*project : 일정 시간 안에 무언가를 개발
시스템 복잡도의 증가
새로운 SW engineering 기술 등장
→ 복집해진 시스템 → 변화 요구
시스템은 더 빠르게 빌드하고 전달되어야 함
→ 크고 더 복잡한 시스템이 요구 된다.
시스템은 이전에 불가능하다고 여겨졌던 새로운 기능이 있어야 함
소공을 잘못 사용하는 경우 (SW engineering을 사용하지 X)
소프트웨어 공학의 방법론과 기술 없이 컴퓨터 프로그램을 작성하는 것은 쉬움
대다수가 개발에 집중 & 관리 및 보수에 신경 X
모든 일에 소공을 사용하진 X
개발 수정할 때 설계 문서도 수정해야 하는데 그러지 X 경우가 多
→ 체계적 관리 X
⇒ 결과적으로, 소프트웨어가 자주 더 비싸지고 신뢰도가 떨어지게 됨.
What is engineering? 공학이란 무엇인가?
Software Engineering
Software + Engineering(과학적 수학적 원리) = 다양한 공학적 원리를 접목
소공 사용 장점
Software Engineering
: 시스템 사양의 초기 단계에서 시스템이 사용된 후 유지 관리에 이르기까지 소프트웨어 생산의 모든 측면과 관련된 공학 분야(engineering discipline)
Engineering discipline
: 조직 및 재정적 제약을 염두에 두고 문제를 해결하기 위해 적절한 이론과 방법을 사용하는 것
소프트웨어 생산의 모든 측면
개인 프로그래밍 프로젝트인 것처럼 프로그램을 작성하는 것보다 소프트웨어 시스템에 소프트웨어 엔지니어링 방법과 기술을 사용하는 것이 장기적으로 일반적으로 더 저렴하다.
대부분의 시스템 유형에서 대부분의 비용은 소프트웨어를 사용한 후 변경하는 비용이다.
⇒ 개발 비용 감소 노력
소프트웨어 프로세스 활동
명세화 (SW specification)
: 어떤 SW를 개발할지 문서화
개발 (SW development)
: 설계 & 코딩 (실제 개발)
검증 (SW validation)
: 명세화한 내용을 제대로 구현했는지 확인
: 고객이 요구한 내용이 잘 들어갔는지
진화 (SW evolution)
: 변화하는 고객 및 시장 요구 사항을 반영하도록 소프트웨어를 수정
General issues that affect SW
이질성 (Heterogeneity)
사업 및 사회 변화 (Business and social change)
보안과 신뢰
규모
소프트웨어 공학을 이해하기 위한 질문
소프트웨어란?
좋은 소프트웨어란?
소프트웨어 공학이란?
기본적인 소프트웨어 엔지니어링 활동은 무엇인가?
SE (SW 공학) vs CS (컴퓨터 과학)
⇒ CS가 더 넓은 의미. SE를 포함하고 있음
System engineering (시스템 공학)
: 하드웨어, 소프트웨어 및 프로세스 엔지니어링을 포함한 컴퓨터 기반 시스템 개발의 모든 측면과 관련이 있다.
Software engineering (소프트웨어 공학)
: 시스템 공학보다 일반적인 프로세스의 일부이다.