[컴퓨터공학/소프트웨어공학] 소프트웨어 공학 개요
[컴퓨터공학/소프트웨어공학] 소프트웨어 공학 개요
1. 소프트웨어의 정의
포괄적/소프트웨어 공학 관점의 소프트웨어 정의 :
👉 좁은 의미의 소프트웨어(프로그램과 관련 데이터의 묶음)에 더하여 관련 문서들을 포함한 개념
2. 소프트웨어의 분류
- 기능에 따른 분류
- 시스템 소프트웨어
- 응용 소프트웨어
- 사용자에 따른 분류
- 일반(Generic) 소프트웨어 : = 패키지 소프트웨어 = 범용 소프트웨어
- 맞춤형(Custom) 소프트웨어 : = 비스포크 소프트웨어
3. 소프트웨어의 성질
- 무형의 인공물 - 물질적인 성질 없음
- (H/W에 비해) 컴포넌트들의 조립을 통해 만들기 어려움
- 설계 과정의 품질 보증 활동 중요 (cf. H/W : 구현/제작 과정이 중요)
- 개발 비용 ≒ 인건비
- (H/W에 비해) 변경 용이 - 소프트웨어의 유연성 / 순응성
- 마모되지 않음
- 하드웨어 신뢰성의 욕조 곡선(bathtub curve)와 비교
(좌) 하드웨어는 초기 고장률이 높고 안정기를 거쳐 마모되며 고장률이 다시 증가하는 반면 (우) 소프트웨어는 시간이 지남에 따라 안정됨
4. 소프트웨어 응용 분야
- 시스템 소프트웨어
- 실시간 소프트웨어 : 자동 제어 시스템, 은행 시스템, 좌석 예약 시스템
- 내장형 소프트웨어 : 장비 제어 목적으로 주로 사용
- 비즈니스 소프트웨어 : 회계 업무 패키지, 급여 관리/재고 관리 패키지, MIS(경영 정보 시스템)
- 개인용 소프트웨어
- 인공지능 소프트웨어 : 로보틱스, 전문가 시스템, 화상/음성 인식 소프트웨어
- 웹 기반 소프트웨어
- 공학용/과학용 소프트웨어 : CAD, 기상 분석 소프트웨어, 유전자 분석 소프트웨어
5. 소프트웨어 위기 현상
- 1968년 NATO 소프트웨어 공학 컨퍼런스에서 첫 용어 등장
- 하드웨어에 비해 소프트웨어의 기술 발전이 더딤을 일컬음
- 소프트웨어 공학이라는 학문 분야가 등장하게된 배경
6. 소프트웨어 위기 현상의 원인과 사례(결과)
원인 | 사례(결과) |
소프트웨어 엔지니어의 부족 경영층의 인식 부족 방법론과 도구의 부재 -> 개발 생산성의 저하 소프트웨어 자체의 복잡성 증가 |
개발 일정의 지연 초과 비용 발생 제품 신뢰도 결여 명세를 충족하지 못하는 제품 유지보수가 어려워짐 |
7. 소프트웨어 개발 시 고려 사항
- 소프트웨어 개발은 단순한 코드의 생성이 아님
- 요구사항 명세, 설계, 프로젝트 관리 등을 포함한 통합적 문제 인식 필요
- 개발 프로세스와 프로젝트 관리가 중요함
- 비용을 줄이고 제품의 품질을 높이기 위한 방법
- 문서화를 통한 프로젝트 관리
- 초기 요구사항 명세화 작업
- 소프트웨어의 변경/재사용성을 염두해서 개발
8. 소프트웨어 공학 환경의 구성
- 소프트웨어 공학 원리 : 소프트웨어 공학의 기본 철학, 원리
- 예) 추상화, 분할정복, 계층적 조직의 원리, ...
- 방법과 기술 : 체계적이고 일반적인 가이드라인
- 방법론 : 소프트웨어 개발 프로세스(what)와 개발 방법(how)를 결합한 개념
계층적 구조 👉 소프트웨어 공학 원리에 기초하여 방법과 기술이, 방법과 기술에 의해 방법론이, 방법론에 기초하여 도구가 만들어짐
'기타 정보 > 소프트웨어 공학' 카테고리의 다른 글
소프트웨어 개발 프로세스 - 반복적 모델의 종류와 차이점 (0) | 2021.04.21 |
---|---|
소프트웨어 개발 프로세스 모델 - 폭포수 모델(Waterfall Model) (0) | 2021.04.21 |
[컴퓨터보안] 암호의 개념과 대칭키 암호, 공개키 암호 (0) | 2021.04.21 |
[컴퓨터보안] 정보보호의 목표 - 기밀성, 무결성, 가용성 (0) | 2021.04.21 |
[자료구조] 단순 연결 리스트(singly linked list) - 정리 및 연습문제 (0) | 2021.04.21 |
[자료구조] 큐 - 정리 및 연습문제 (0) | 2021.04.21 |
[자료구조] 스택 - 정리 및 연습문제 (0) | 2021.04.21 |
[자료구조] 배열 - 정리 및 연습문제 (0) | 2021.04.21 |