[CS] 소프트웨어 공학(Software Engineering)

happyhye·2024년 5월 27일

소프트웨어 구축

목록 보기
1/1
post-thumbnail

소프트웨어 공학의 정의


소프트웨어 위기를 극복하고, 품질 높은 소프트웨어를 효율적으로 개발하기 위한 학문


3R


역공학, 재공학, 재사용을 통해 소프트웨어 생산성을 극대화함

1. 역공학 Reverse Engineering


  • 개발 단계를 역순으로 거슬러 올라감
  • 이미 개발된 시스템을 분석 → 요구 분석서, 설계서 등의 문서를 추출

2. 재공학 Re-Engineering


  • 유지보수의 생산성을 통해 소프트웨어 위기를 해결하기 위한 한 방법
  • 예방 유지보수(Preventive Maintenance)를 통한 소프트웨어 위기 해결

재공학 과정

분석(Analysis) → 재구성(Restructuring) → 역공학(Reverse Engineering) → 이관(Migration)


3. 재사용 Reuse


  • 이미 개발된 소프트웨어의 전체 or 일부를 다시 사용
  • 비용 절감, 실패 위험률 감소

재사용의 범위

  • 함수와 객체
  • 컴포넌트
  • 애플리케이션

재사용 방법 2가지

  1. 합성 중심(Composition Based, 블록 구성): 모듈 조합
  2. 생성 중심(Generation Based, 패턴 구성): 추상화

소프트웨어 개발 단계


계. 분. 설. 구. 테. 유

  • 계획
    • 비용 및 기간(일정) 예측
  • 요구사항 분석
    • 사용자의 요구사항을 정확하게 이해하고 유도
  • 설계
    • 시스템 구조 설계
    • 프로그램 설계
    • 사용자 인터페이스 설계
  • 구현
    • 실제로 개발
  • 테스트
    • 구현된 소프트웨어가 요구사항을 만족하는지 검사
  • 유지보수
    • 문제점 수정, 새로운 기능 추가
    • 가장 많은 비용 발생
profile
ㄱㄱㄱ

0개의 댓글