소프트웨어의 영향
* 소프트웨어의 영향
– 기업의 경영과 시장, 학교 교육, 사무실의 작업환경
– 가정 생활과 여가 활동
– 미래의 경제와 우리 생활
* 소프트웨어의 개발
– 전문적인 기술을 가진 엔지니어가 필요
– 과거의 소프트웨어 : 개인의 특출한 솜씨로 게작 가능
* 소프트웨어 개발과 오케스트라
– 전체적인 하모니가 중요
– 그 집단의 엔지니어링 숙달정도에 크게 좌우
1.1 소프트웨어
* 소프트웨어
– 프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보 일체
– 프로그램 +(문서, 정보)
* SE 토픽 1.1 소프트웨어가 다른 점
– 다른 엔지니어링 결과물에 비해 개념적이고 무형적임
– 적은 비용으로 복제, 대량 생산 가능
– 노동 집약적 산업
– 초심자의 제품은 이해하기 어렵고, 수정하기 어려움
– SW는 쉽게 변경 가능
– SW는 닳아 없어지지 않음
* 소프트웨어 특징
– 품질 향상의 어려움
– 사용자 수준에 못 미치는 품질
* 소프트웨어 위기 현상(발생 원인)
– 납기 미 준수
– 예산 초과
– 결함으로 인한 부적합, 폐기, 수정의 필요
– 폭발적으로 늘어나는 수요
– 기하급수적으로 커지는 공급
– 느린 생산성 향상
– 품질 향상의 어려움
* 소프트웨어 위기 이유
– 소프트웨어의 복잡성
– 인간의 작업에 대한 예측의 어려움
* 소프트웨어 공학의 목적
– SW에 대한 공학적 접근 방법 습득
1.1.1 소프트웨어의 유형
* 주문형 소프트웨어
– 특정 고객의 수요를 만족하기 위하여 개발된 SW
– (예) 웹사이트, 대학의 종합정보시스템
* 패키지형 소프트웨어
– 공개된 시장에 내놓고 판매하기 위한 것
– (예) 워드프로세서, 웹브라우저, 운영체제
* 임베디드 소프트웨어
– 시장에서 판매되는 하드웨어 장치
– (예) 세탁기, VCR, 자동차 등에서 수행되는 소프트웨어
1.2 소프트웨어 공학
* 소프트웨어 개발 = 소프트웨어 공학(?)
* 집안 연못에 다리 구조물 설치 vs 한강 다리 건설
* 소프트웨어 엔지니어링이란?
– 고객의 문제를 해결해주기 위하여 대규모의 품질 좋은 소프트웨어 시스템을 정해진 시간과 비용으로 개발하거나 발전시키는 체계적인 프로세스.
1.2.1 고객의 문제를 해결
* SW ENG. 목표
– 고객의 문제 해결
* SW ENGer. 의 역할
– 현 시스템 그대로 사용, 새로 개발, 기성 제품 구입 판단 및 결정
1.2.2 체계적인 개발과 발전
* 소프트웨어 개발
– 엔지니어링 작업
– 개발자가 잘 이해하고 있는 기술을 조직된 원리와 방법으로 적용하는 과정
1.2.3 대규모 고품질 소프트웨어 시스템
* 소규모 시스템
– 프로그래머 홀로 성공적으로 개발 가능
* 대규모 시스템
– 매우 복잡함
– 엔지니어링 원리 적용이 필요
– 팀워크의 중요성
– 작업 분할 방법
1.2.4 비용, 시간 제약
* 엔지니어링 작업의 특징
– 경제적 제약 사항 고려
* 경제적인 제약이란?
– 시간, 인력 등의 자원에 대한 제한
– 비용 대비 이득이 있는가
* 소프트웨어 엔지니어 약할
– 정해진 예산과 시간 안에 완성
– 실현 가능한 계획 작성
– 시스템 개발 시 필요한 작업, 기간 예측 가능해야 함
Tags: Software Engineering, 소프트웨어 공학