[소프트웨어 공학] 1.소프트웨어 공학

이번에는 정보처리기사 필기 과목인 소프트웨어 공학에서 소프트웨어와 공학에 대해 알아보기로 해요.

컴퓨터 소프트웨어
컴퓨터 하드웨어에서 목적하는 작업을 수행할 수 있게 만들어진 것

컴퓨터 시스템
특정 목적을 수행하기 위한 요소들의 집합
입력(Input): 처리할 데이터와 조건을 시스템에 입력
처리(Process): 입력 데이터를 처리 방법과 조건에 따라 처리
출력(Output):처리한 결과를 산출
제어(Control): 입력=>처리=>출력 과정이 올바르게 진행하는지 감독
피드백(Feed Back): 출력 결과가 예정 목표에 도달하지 못할 때 반복 처리

소프트웨어 위기
컴퓨터의 발달 과정에서 소프트웨어 개발 속도가 하드웨어 개발 속도를 따라가지 못해 사용자 요구사항을 감당할 수 없는 문제가 발생한 것을 소프트웨어 위기라고 말한다.

소프트웨어 위기의 원인
프로젝트 개발 일정과 예산 측정이 어렵다.
유지보수 비용이 증가
소프트웨어 개발 적체
소프트웨어 규모 증가와 복잡도에 따른 개발 비용 증가
프로젝트 관리 기술의 부재
소프트웨어 개발 기술에 대한 훈련 부족

소프트웨어 공학(Software Engineering)
소프트웨어 개발을 위한 개발 방법론과 도구 및 관리 기법
소프트웨어 위기를 극복하기 위해 품질과 생산성 향상을 목적으로 연구하는 학문
가장 경제적으로 신뢰도 높은 소프트웨어를 만들기 위한 방법, 도구와 절차들의 체계

소프트웨어 공학의 기본 원칙
현대적인 프로그래밍 기술 적용
지속적인 검증 시행
결과에 관한 명확한 기록 유지

소프트웨어 공학이 탄생 배경
소프트웨어 비용 증가
유지보수 비용 증가
소프트웨어 품질과 생산성의 재고
특정 개인에 의존한 시스템 개발

좋은 소프트웨어의 특징
신뢰성과 효율이 높다.
사용자가 원하는 대로 동작
잠재적 에러가 적고 유지보수가 쉽다.
이해하기 쉬워야 한다.
경제적이어야 한다

소프트웨어 생명 주기
프로젝트 비용 산정과 개발 계획을 수립할 수 있는 기본 골격
용어 및 표준화
프로젝트 관리를 위한 문서화

*소프트웨어의 생명 주기 중에 유지보수 단계가 가장 많은 비용이 들기 때문에 유지보수 비용을 줄일 수 있게 만드는 것이 전체 개발 비용을 줄이는 데 크게 기여한다.