초코너무조코 2025. 4. 23. 17:44
728x90

 


1. 소프트웨어 공학 개요

1.1 소프트웨어 공학의 정의

소프트웨어 공학(Software Engineering)은 효율적인 비용으로 높은 품질의 소프트웨어를 개발하기 위한 학문이다. 단순한 프로그래밍이 아닌, 소프트웨어의 계획, 분석, 설계, 구현, 테스트, 유지보수 등 전체 생명주기를 체계적으로 다룬다.
궁극적으로는 개발 생산성을 높이고, 유지보수가 쉬운 품질 좋은 소프트웨어를 만드는 것이 목표다.


1.2 소프트웨어 공학의 3R

소프트웨어의 생산성을 극대화하고, 개발 비용을 절감하며, 유지보수를 효율적으로 하기 위한 세 가지 핵심 전략은 다음과 같다.

  • Reverse Engineering (역공학)
    이미 개발된 시스템으로부터 설계나 구조를 추출하는 과정이다.
    문서화가 부족한 기존 시스템을 분석하여 문서를 생성하거나 새로운 시스템 개발에 활용한다.
  • Re-Engineering (재공학)
    기존 시스템을 분석하여 문제점을 보완하고, 성능이나 유지보수성을 개선하는 작업이다.
    전체 시스템을 새로 만드는 것보다 비용과 시간이 적게 든다.
  • Reuse (재사용)
    이미 검증된 모듈, 라이브러리, 컴포넌트 등을 반복적으로 사용하는 방법이다.
    생산성과 신뢰성을 높이는 데 크게 기여한다.

1.3 소프트웨어 개발 단계

소프트웨어 개발은 일련의 단계적 절차를 통해 이루어진다. 이 과정을 소프트웨어 생명주기(Software Life Cycle)라고 한다.

  1. 계획(Planning)
    프로젝트의 목표, 일정, 자원 등을 계획하고 범위를 정의한다.
  2. 요구사항 분석(Requirements Analysis)
    사용자 요구사항을 수집하고, 이를 명세화하여 정확하게 정의한다.
  3. 설계(Design)
    요구사항을 기반으로 시스템 구조, 데이터베이스, 모듈 등을 설계한다.
  4. 구현(Implementation)
    설계된 내용을 바탕으로 실제 소프트웨어를 코딩한다.
  5. 테스트(Testing)
    구현한 소프트웨어의 오류를 발견하고 수정한다.
  6. 유지보수(Maintenance)
    운영 중 발생하는 오류를 수정하고, 기능 개선이나 변경 요구에 대응한다.
728x90