소프트웨어공학
[소프트웨어공학] 1. An Introduction to Software Engineering
leziwn.cs
2023. 9. 7. 04:51
소프트웨어란 무엇인가?
: 프로그램 자체뿐만 아니라, 모든 관련 문서들, 라이브러리, 지원 웹사이트, 이 프로그램을 유용하게 쓰는 데에 필요한 환경 설정 데이터도 포함한다.
▶ 소프트웨어 제품 유형
- 일반 제품(Generic product)
- 맞춤식 소프트웨어(Customized product)
Cf) 임베디드 소프트웨어: 일반 제품(Generic product)
--> 새로운 소프트웨어의 개발은 완전히 새롭게 개발을 하거나, 소프트웨어 시스템을 구성하거나, 기존 소프트웨어를 재사용하여 만들 수 있다.
좋은 소프트웨어의 필수적인 특성
- 유지보수성(maintainability): 고객의 변화하는 요구를 충족시킬 수 있도록
- 확실성과 보안성(dependability and security): 신뢰성, 보안성, 안전
- 효율성(efficiency): 메모리, 프로세서 사이클과 같은 시스템 자원을 낭비해서 사용하지 않도록
- 수용성(acceptability): 사용자가 사용하기 편리하도록
소프트웨어 공학이란?
- 'software crisis' 에서 처음 시작
: 한가한 교차로(신호등이 오히려 운전자에게 불편함) --> 통행량의 증가(신호등이 없으므로 불편하고, 정체가 심해짐) --> 복잡한 도로(신호등 없이는 교통 흐름 제어 불가능)
- 소프트웨어 공학
: 시스템 명세화의 초기 단계부터 시스템 사용 이후 발생하는 유지보수에 이르기가지 소프트웨어 생산의 모든 측면과 관련된 공학적 학문 분야 - 소프트웨어 엔지니어는 작업에 대해 체계적이고 조직적인 접근 방식을 채택하고, 해결해야 할 문제, 개발 제약 조건 및 사용 가능한 리소스에 따라 적절한 도구, 기술을 사용해야 한다.
- 소프트웨어 공학은 고품질 소프트웨어 시스템의 비용 효율적인 개발에 중점을 둔 학문 분야이다.
소프트웨어 개발 프로젝트가 실패하는 원인
- 소프트웨어 규모의 대형화/복잡화 --> 개발 비용 증대
- 하드웨어 기술의 급진적 발전에 비해, 소프트웨어 개발 기술의 상대적 부진
- 하드웨어 비용 대비 소프트웨어 가격 상승 폭 증가
- 소프트웨어 유지보수의 어려움, 개발 정체 현상
- 소프트웨어 개발 프로젝트 기간, 소요 예산에 대한 정확한 예측의 어려움
- 신기술에 대한 교육, 훈련의 부족
- 사용자의 소프트웨어에 대한 기대치 증가
- 소프트웨어에 대한 사용자 요구사항의 빈번한 변경, 반영
인공지능 시대의 소프트웨어 위기
- 지능 소프트웨어 개발의 남발
- 지능 소프트웨어 사고 위험
소프트웨어 공학 vs. 컴퓨터 과학
- 컴퓨터 과학: 컴퓨터와 소프트웨어 시스템이 가지고 있는 이론, 방법에 대해 다룬다.
- 소프트웨어 공학: 유용한 소프트웨어를 만드는데 필요한 실제적 문제를 다룬다.
소프트웨어 공학 vs. 시스템 공학
- 시스템 공학: 컴퓨터 기반 시스템 개발의 모든 관점을 다루므로, 소프트웨어 뿐 아니라 하드웨어 개발, 정책, 프로세스 설계 및 시스템 설치 등을 모두 다룬다.
- 소프트웨어 공학: 시스템에 포함된 소프트웨어 인프라, 제어, 응용 프로그램 및 데이터베이스 개발과 관련되어 있다.
소프트웨어 공학에서의 비용(cost)
: 개발 + 테스트 비용
- 소프트웨어는 개발보다 유지 관리에 더 많은 비용이 들어간다.
최선의 소프트웨어 공학 기법과 방법 (소프트웨어 다양성)
: 소프트웨어 시스템은 매우 다양한 유형이 존재한다. 하지만 다양한 유형의 소프트웨어에 모두 적용할 수 있는 보편적인 소프트웨어 기법은 존재하지 않는다.
애플리케이션 유형
- 독립적 애플리케이션
: PC, 모바일 기기와 같은 개별 환경에서 동작하는 애플리케이션
- 필요한 기능을 모두 가지고 있으며, 네트워크 연결이 필요하지 않다.
- 예) 계산기, 워드 - 대화형 트랜잭션 기반 애플리케이션
: 원격 컴퓨터에서 실행하는 애플리케이션으로, 사용자의 컴퓨터, 모바일 기기 등을 이용해서 접근한다. (웹 브라우저에 접속)
- 예) 전자상거래 애플리케이션(웹 애플리케이션) - 임베디드 제어 시스템
: 하드웨어 기기를 제어/관리하는 소프트웨어 제어 시스템
- 예) 차량 제어 시스템 - 일괄 처리 시스템
: 대규모로 데이터를 처리하도록 설계된 비즈니스 시스템
- 많은 수의 개별 입력을 가공하여 각각에 해당하는 출력을 만들어낸다.
- 예) 공장 - 엔터테인먼트 시스템
- 예) 유튜브, 멜론 - 모델링 및 시뮬레이션 시스템
: 물리적 진행, 상황을 모델링하기 위해 과학자와 엔지니어가 개발한 시스템 - 데이터 수집 및 분석 시스템
: 환경으로부터 데이터를 수집한 후, 처리를 위해 다른 시스템으로 전달하는 시스템 - 복합 시스템(SoS; Systems of System)
: 여러 다른 소프트웨어 시스템으로 구성된 시스템
- 예) 학교 수강신청 시스템, 학교 학생 정보 관리 시스템
소프트웨어 공학에 관한 FAQ