1. 소프트웨어공학의 정의
가. 소프트웨어의 위기(Software Crisis)
1960년대 소프트웨어의 폭발적인 수요에 공급이 따라가지 못하면서 많은 수의 프로젝트가 실패함.
1968년 NATO 컨퍼런스에서 의장이었던 프리드리히 바우어에 의해 "Software Engineering"이라는 용어가 처음 제시됨.
https://ko.wikipedia.org/wiki/소프트웨어_위기
소프트웨어 위기 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 소프트웨어 위기(영어: software crisis)란 소프트웨어 공학 초기에 사용되던 용어로 정돈된 주제가 되기 이전에 사용되었다. 이 용어는 급격한 컴퓨터 계산 용량과
ko.wikipedia.org
나. 소프트웨어공학의 정의
1) 바우어
기계에서 효율적으로 작동하는 신뢰성 있는 소프트웨어를 경제적으로 획득하기 위해 적절한 공학적 원리를 수립하여 활용하는 것.
2) IEEE
소프트웨어의 개발과 운용, 유지보수에 대한 체계적(Systematic)이며, 훈련된(Disciplined) 계량적(Quantifiable) 접근 방식의 적용
다. 소프트웨어의 구성요소
1) 솜머빌(Sommervile)
단순한 프로그램 뿐만 아니라 프로그램이 올바르게 작동하도록 하는데 필요한 관련된 문서 및 설치 데이터를 의미
2) 프레스만(Pressman)
실행되면서 원하는 기능이나 함수, 성능을 제공해주는 명령어들(컴퓨터 프로그램)
프로그램이 데이터를 적절하게 처리할 수 있게 해주는 자료구조
프로그램의 사용이나 운영을 나타내는 하드카피나 가상의 형태의 문서
라. 소프트웨어의 특징
1) 비가시성
완성되기 전까지 전체를 파악하기 힘듦.
2) 변경성
완성되기 전까지 계속 바뀌며, 완성된 이후에도 변경됨.
3)복제성
무한 복제 가능, 닳거나 없어지지 않음.
4) 복잡성
개발과정이 대단히 복잡함.
마. 소프트웨어의 분류
1) 시스템 소프트웨어
다른 프로그램의 수행을 지원해주기 위해 만들어진 소프트웨어
2) 애플리케이션 소프트웨어
특수한 업무상의 요구를 해결해주며, 비지니스 처리 또는 관리/기술 측면에서의 의사결정을 쉽게 할 수 있도록 사업상 또는 기술적 데이터를 처리하는 소프트웨어
3) 공학/과학 소프트웨어
"수 처리" 알고리즘이 특징이며, 공학 및 과학적 연구를 위해, 실시간 처리가 가능한 소프트웨어
4) 임베디드 소프트웨어
생산품이나 시스템에 내장되어 있으면서 사용자나 시스템 자체를 위한 특징이나 기능을 구현하는데 사용
5) 웹 응용시스템 소프트웨어
인터넷을 위해 개발된 하이퍼텍스트이거나, 웹으로 가동되는 응용시스템을 위한 소프트웨어
6) 인공지능 소프트웨어
계산이나 일반적인 알고리즘으로 분석할 수 없는 복잡한 문제를 해결하기 위해 비수치적 알고리즘을 사용
7) 생산라인 소프트웨어
제조공정과정에 필요한 소프트웨어
2. 소프트웨어의 탄생과 폐기
가. 프로젝트 관리
소프트웨어를 개발하기 위한 아이디어 구상 및 팀 구성 등
목적(필요성), 예산, 기간, 팀원 및 역할 등
나. 소프트웨어 개발
소프트웨어 개발 라이프사이클(SDLC)에 따라 진행
https://ko.wikipedia.org/wiki/소프트웨어_개발_수명_주기
소프트웨어 개발 수명 주기 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 소프트웨어 개발 수명 주기(Software Development Life Cycle, SDLC)란 시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 계획, 개발, 시험, 채용
ko.wikipedia.org
다. 유지보수
실제적으로 소프트웨어가 전기를 먹고 사람들의 도움을 받으며 살아 움직이는 과정, 폐기에 의해 세상을 하직
1) 완전 유지보수
새로운 요구사항을 추가하거나 시스템의 구조와 성능을 개선하여 시스템을 완전하게 만드는 목적으로 수행
2) 수정 유지보수
요구사항의 오류나 설계 및 구현 상의 오류를 개선할 목적으로 수행
3) 적응 유지보수
시스템의 플랫폼 변경과 같은 새로운 환경으로의 적응을 목적으로 수행
4) 예방 유지보수
시스템의 잠재적인 결함을 사전에 방지하기 위한 목적으로 수행
3. 다양한 소프트웨어 도입 프로젝트
가. 인하우스 개발 프로젝트
조직 내부 자체 인력으로 소프트웨어를 개발
나. SI(System Integration) 프로젝트
대규모 프로젝트 혹은 위험한 프로젝트의 경우 외부 전문 SI업체에 맡겨 프로젝트 수행
제안요청서(RFP) 제시, 업체 선정을 위한 과정, 프로젝트에 대한 계약 필요
다. 패키지 도입
이미 만들어진 기능을 대부분 활용하거나 커스터마이징을 통해 기능을 보완
전혀 변경 없이 활동하기도 함.