정보처리기사 단골주제 정리
소프트웨어 공학
초코너무조코
2025. 4. 23. 17:44
728x90
1. 소프트웨어 공학 개요
1.1 소프트웨어 공학의 정의
소프트웨어 공학(Software Engineering)은 효율적인 비용으로 높은 품질의 소프트웨어를 개발하기 위한 학문이다. 단순한 프로그래밍이 아닌, 소프트웨어의 계획, 분석, 설계, 구현, 테스트, 유지보수 등 전체 생명주기를 체계적으로 다룬다.
궁극적으로는 개발 생산성을 높이고, 유지보수가 쉬운 품질 좋은 소프트웨어를 만드는 것이 목표다.
1.2 소프트웨어 공학의 3R
소프트웨어의 생산성을 극대화하고, 개발 비용을 절감하며, 유지보수를 효율적으로 하기 위한 세 가지 핵심 전략은 다음과 같다.
- Reverse Engineering (역공학)
이미 개발된 시스템으로부터 설계나 구조를 추출하는 과정이다.
문서화가 부족한 기존 시스템을 분석하여 문서를 생성하거나 새로운 시스템 개발에 활용한다. - Re-Engineering (재공학)
기존 시스템을 분석하여 문제점을 보완하고, 성능이나 유지보수성을 개선하는 작업이다.
전체 시스템을 새로 만드는 것보다 비용과 시간이 적게 든다. - Reuse (재사용)
이미 검증된 모듈, 라이브러리, 컴포넌트 등을 반복적으로 사용하는 방법이다.
생산성과 신뢰성을 높이는 데 크게 기여한다.
1.3 소프트웨어 개발 단계
소프트웨어 개발은 일련의 단계적 절차를 통해 이루어진다. 이 과정을 소프트웨어 생명주기(Software Life Cycle)라고 한다.
- 계획(Planning)
프로젝트의 목표, 일정, 자원 등을 계획하고 범위를 정의한다. - 요구사항 분석(Requirements Analysis)
사용자 요구사항을 수집하고, 이를 명세화하여 정확하게 정의한다. - 설계(Design)
요구사항을 기반으로 시스템 구조, 데이터베이스, 모듈 등을 설계한다. - 구현(Implementation)
설계된 내용을 바탕으로 실제 소프트웨어를 코딩한다. - 테스트(Testing)
구현한 소프트웨어의 오류를 발견하고 수정한다. - 유지보수(Maintenance)
운영 중 발생하는 오류를 수정하고, 기능 개선이나 변경 요구에 대응한다.
728x90