소프트웨어란?
컴퓨터 프로그램과 관련된 문서들 - 관련 문서, 라이브러리, 지원 웹사이트, 환경설정 데이터 포함
소프트웨어 제품: 특정 고객을 위해 개발되거나 범용으로 개발
- 제품 유형(제공방식 측면에서의 분류): 일반 제품 / 맞춤식 소프트웨어
좋은 소프트웨어의 특성은?
- 유지보수성
- 고객의 변화하는 요구 충족하도록 진화
- 확실성, 보안성
- 신뢰성, 보안성, 안전성 포함 - 장애 발생해도 물리적,경제적 피해X
- 복구가능, 악의적 사용자 차단
- 효율성
- 시스템 자원 효율적으로 사용 - 응답성, 처리시간, 자원활용
- 수용성
- 설계목적의 사용자 유형이 수용가능해야 - 직관적 이해, 매뉴얼
‼️소프트웨어 공학이란?
시스템 명세화의 초기 단계부터 시스템 사용 이후 발생하는 유지보수까지 포함하는
소프트웨어 생산의 모든 관점과 관련한 공학적인 학문 분야1968 ‘software crisis’에서 첫 등장
1830s 컴퓨터라는 개념 등장 by 찰스 베비지. 계산기 → 해석기관
최초의 프로그래머가 알고리즘 작성
2차 세계대전 애니그마 - 해석 위한 기기
애니악(범용화)
⇒ 초반 소프트웨어는 하드웨어에 있는 번들수준으로, 개인 개발만 이뤄짐
⇒ 하드웨어 발달하며 개발 협업 필요해짐
NATO 컨퍼런스
채택 + 해결할 문제, 개발 제약 조건&사용가능 리소스에 따라
적절한 도구와 기술이용 ⇒
비용효율&고품질너무 간단한 프로그램에서는 배보다 배꼽이 커지기도
- 제품 life cycle(신제품 출시 주기)단축
- 급격한 가격 하락
⇒ 사용자 요구 증가.. 소프트웨어공학 기법 이용해서 효율적으로
소프트웨어공학 기본 활동에는 어떤 것이 있는가?
소프트웨어 명세화, 소프트웨어 개발, 소프트웨어 검증, 소프트웨어 진화
→ L3
소프트웨어공학과 컴퓨터과학의 차이
: 일반적, 이상적 이론&방법에 집중
소프트웨어공학: 유용한 SW 개발에 필요한 실제적(실용적) 문제
소프트웨어공학과 시스템공학의 차이
: 하드웨어, 소프트웨어, 정책, 프로세스 설계 모두 포함한 컴퓨터 기반 시스템 개발의 모든 관점 - 포괄적
소프트웨어공학: 일반적인 프로세스의 일부에 속함
소프트웨어공학이 직면한 주요 도전 과제
증가하는 다양성, 빠른 인도(유지보수), 신뢰할 수 있는 솦웨 개발
소프트웨어공학의 비용
60% 가까이 개발비용, 40%이상 테스트비용
유지관리에 더 많은 비용들어간다- 거의 80%
성능, 시스템 안정성, 시스템 유형 등 시스템 속성의 요구사항따라 다름
e.g. 속도가 중요 - 초기비용⬇️, 유지보수⬆️
안정성이 중요 - 초기비용⬆️ , 유지보수⬇️
최선의 소프트웨어 공학 기법과 방법
다양한 유형의 시스템 - 서로 다른 기법
보편적인 소프트웨어 기법은 존재하지 않는다
어플리케이션 유형 (내용 측면에서의 구분)
- 독립형 어플리케이션 : 네트워크연결 불필요
- 대화형 트랜잭션 기반 어플리케이션 : 원격 컴퓨터에서 실행 - 인터넷사이트, 전자상거래
- 임베디드 제어 시스템 : 하드웨어 제어 관리 - 우주선, 항공모함, 세탁기 등
- 일괄처리 시스템 : 대규모 데이터 처리 - 리눅스터미널
- 엔터테인먼트 시스템 : 사용자의 즐거움 - 동영상, 음악, 책
- 모델링 및 시뮬레이션 시스템 : 물리적 진행/상황 모델링 - UML, 블루스택?, 기상날씨예측
- 데이터 수집, 분석 시스템 : 환경에서 데이터 수집, 처리 이해 다른 시스템으로 전달
- 복합 시스템: 여러 다른 소프트웨어 시스템으로 구성 - ERD, 유레카(이화) 등
웹이 소프트웨어 공학에 가져온 변화
- 소프트웨어 재사용 증가 기존 컴포넌트 및 시스템을 어떻게 재사용&업그레이드 할 것인가 고려
- 점진적 애자일 개발 점진적 - 미리 요구사항 정의하는거 비실용적
- 서비스지향 시스템 서비스 제공이 목적
- 풍부한 인터페이스 AJAX, HTML5 등 다양한 언어 등장
대규모의 고도로 분산된 서비스 기반 시스템 개발
소프트웨어 산업에 변화를 준 모바일 기기용 앱 산업 탄생