1과목. 소프트웨어 구축
📒 01. 소프트웨어 공학 개념
1. 소프트웨어 공학
(1) 소프트웨어 공학의 정의 ⭐
- 소프트웨어 위기를 극복하고 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문
- 품질 좋은 소프트웨어를 빠른 시간 안에 만드는 것
(2) 위기의 원인
- 특성에 대한 이해 부족
- 올바른 설계 등한시함
- 개발에 대한 전문적 교육 부족
(3) 위기 결과
- 성능 및 신뢰성 부족
- 개발 기간 및 비용의 증가
- 생산성 저하
2. 소프트웨어 공학의 3R
- 역공학, 재공학, 재사용을 통해 생산성을 극대화하는 기법
(1) 역공학(Reverse Engineering)
- 이미 개발된 시스템을 분석하여 문서를 추출하는 작업
- 개발 단계를 역순으로 거슬러 올라가면서 기존의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 과정
(2) 재공학(Re-Engineering)
- 유지보수의 생산성을 통해 소프트웨어의 위기를 극복하기 위한 방법
- 기존 소프트웨어를 폐기하지 않고, 기능을 개선하거나 새로운 소프트웨어로 재활용하는 공법
- ex) 건물이 있으면 전부 다 보수하는 게 아니라 특정 부분만 보수
- 재공학 과정 : 분석 → 재구성 → 역공학 → 이관
(3) 재사용(Reuse)
- 이미 개발된 소프트웨어의 전체 또는 일부를 다시 사용하는 것
- 재사용 범위 : 함수와 객체, 컴포넌트, 애플리케이션
- 재사용 방법 : 합성 중심(끼워맞추는 것), 생성 중심(추상화)
3. 소프트웨어 개발 단계
(1) 계획(Planning)
- 개발할 내용의 명확한 정의
- 비용 및 기간 예측
(2) 요구사항 분석(Requirements Analysis)
- 소프트웨어의 기능, 제약조건, 목표 정의
- 요구사항의 정확한 이해 및 유도
(3) 소프트웨어 설계(Design)
- 시스템의 동작 방식 정의
- 요구사항 분석을 바탕으로 입력자료, 처리내용, 출력자료 등 정의
- 분석한 것을 그림으로 그리는 것 (=모델링)
- 시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계
(4) 구현(Development)
- 프로그래밍 언어를 사용하여 실제 프로그램 작성
- 코딩, 디버깅, 단위 테스트 진행
(5) 테스트(Test)
- 구현된 소프트웨어가 요구사항을 만족하는지 검사
- 실행 결과의 정확성 검증 및 평가
(6) 유지보수(Maintenance)
- 사용 중 발견된 문제 수정, 새로운 기능 추가
- 소프트웨어의 지속적 개선
SI - 개발에 특화된 집단
에이전시 - 디자인에 특화된 집단
SM - 유지보수에 특화된 집단
참고자료
흥달쌤, '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
댓글