소프트웨어 공학의 발전적 추세
1. 소프트웨어 재사용 (Software Reuse)
- 개념: 기존에 개발된 소프트웨어의 코드, 모듈, 기능 등을 새로운 소프트웨어 개발 시 재활용하여 사용하는 방법.
- 목적:
- 개발 시간 단축
- 비용 절감
- 실패 위험성 감소
- 프로그램 복잡도 완화
- 신뢰성, 성능, 효율성 향상
재사용 방법
- 합성 중심:
- 기존의 모듈, 블록(부품)을 조립하여 새로운 소프트웨어를 완성.
- 예: 블록 구성 방식.
- 생성 중심:
- 추상화된 명세를 구체화하여 새로운 프로그램을 생성.
- 예: 패턴 구성 방식.
2. 소프트웨어 제공하기 (Software Reengineering)
- 개념: 기존 소프트웨어의 구조, 성능, 품질을 개선하여 새로운 요구사항에 맞추는 과정.
- 목적:
- 유지보수 생산성 향상
- 품질 및 성능 개선
- 시스템 수명 연장
특징
- 기존 시스템을 완전히 폐기하지 않고 개조 및 개선.
- 새로운 기능 추가 및 성능 향상.
장점
- 품질 향상
- 생산성 증가
- 수명 연장
- 오류 감소
예시
- 기존 소프트웨어의 문서화 부족으로 인한 유지보수 어려움을 해결하기 위해 소스 코드 분석 후 문서를 생성(역공학).
- 기존 소프트웨어의 개선 후 재구축.
3. 케이스 (CASE: Computer-Aided Software Engineering)
- 개념: 소프트웨어 개발의 전 과정(요구 분석, 설계, 구현, 검사 등)을 컴퓨터와 전용 도구를 통해 자동화.
- 목적:
특징
- 자동화 범위:
- 부분 자동화: 특정 단계만 자동화.
- 전체 자동화: 생명주기 전체를 자동화.
- 지원 기능:
- 생명주기 전 단계 연결
- 다양한 개발 모형 지원
- 그래픽 기반 설계 도구 제공
4. 소프트웨어 발전의 주요 이점
- 개발 효율성:
- 기존 소프트웨어의 재활용(재사용, 제공하기)으로 시간과 비용 절감.
- CASE 도구로 개발 과정 자동화.
- 품질 및 신뢰성:
- 검증된 모듈 사용으로 오류 감소.
- 제공하기를 통해 기존 시스템 품질 개선.
- 생산성 증가:
- 반복적인 작업 최소화.
- 효율적인 개발 환경 제공.
- 유지보수 비용 절감:
- 제공하기를 통해 유지보수 성과 향상.
- 문서화를 통해 유지보수의 용이성 확보.
정리
- 소프트웨어 재사용: 기존 소프트웨어의 일부를 활용해 새로운 소프트웨어 개발.
- 소프트웨어 제공하기: 기존 소프트웨어를 개선하여 성능 및 품질을 향상.
- CASE 도구: 소프트웨어 개발의 자동화를 통해 효율성과 품질을 향상.
소프트웨어 개발 과정에서 이러한 방법론과 도구를 활용하면 개발 비용과 시간을 줄이고 품질을 높이는 효과를 얻을 수 있습니다.