기술용어/소프트웨어공학

3R - 역공학(Reverse Engineering), 재공학(Reengineering), 재사용(Reuse)

아이티신비 2024. 6. 24. 09:00

소프트웨어의 생산성 향상을 위한, 3R

정의
  • 레포지토리(Repository)를 기반으로 역공학(Reverse Engineering), 재공학(Reengineering), 재사용(Reuse)을 통해 소프트웨어 생산성을 극대화하는 기법
  • 정보저장소(repository)는 3R을 구현하는 수단으로 사용됨
추진배경
  • 소프트웨어 위기 극복
  • 소프트웨어 개발 생산성 향상
  • 유지보수 비용의 절감
  • 소프트웨어 변경 요구사항의 신속한 대처
구성요소
  • 역공학(Reverse Engineering) : 자동화된 도구의 도움으로 물리적 수준의 소프트웨어 정보를 논리적인 소프트웨어 정보의 서술로 추출하는 프로세스
  • 재공학(Re-engineering) : 자동화된 도구를 현존하는 시스템을 점검 또는 수정하는 프로세스
  • 재사용(Reuse) : 이미 개발되어 그 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용
3 R 관련개념
  • 순공학 : 추상개념의 현실화, 요구분석 -> 설계 -> 구현
  • 재구조화 : 기능 변경 없이 소스코드의 재편성(표현의 변형)
  • 순환공학 : 순공학 후에 다시 역공학을 하는 과정
  • 동기 순환공학 : 순환공학 시에 설계와 코딩을 동시에 변환하는 과정
  • 비동기 순환공학 : 순환공학 시에 설계와 코딩을 따로 변환하는 과정
역공학 개요
  • 자동화된 도구(CASE)의 도움으로 물리적 수순의 소프트웨어 정보를 논리적인 소프트웨어 정보의 서술로 추출하는 프로세스
역공학 장점
  • 재문서화를 통하여 현존하는 시스템의 지식을 재 회득함.
  • 현존 시스템의 데이터와 논리에 효율적인 분석을 통하여 유지보수를 신속히 수행
  • 현존하는 시스템의 정보를 Repository에 펼칠 수 있음
  • 시스템 개발과 유지보수를 자동화
  • 현존 시스템 설계를 재 사용함
  • 구현 독립적인 논리적인 레벨에서 작업함
역공학 종류
  • 논리 역공학 : 원시코드로부터 정보를 뽑아내 물리적이고 논리적인 설계정보를 획득하는 Repository를 정의함, (원시코드 à 정보추출 à 물리적 설계정보)
  • 자료 역공학 : 물리적인 데이터 서술로부터 개념적, 논리적인 정보를 추출, 기존 파일시스템에서 데이터베이스의 전이 또는 기존 데이터 베이스에서 신규 데이터베이스로 전이 수행
재공학 개요
  • 자동화된 도구로 현전하는 시스템을 점검 또는 수정하는 프로세스
  • 시스템의 재설계, 교체를 CASE 도구가 사용하도록 순공학을 준비하는 과정
재공학의 목적
  • 현재 시스템의 유지보수 향상
  • 시스템의 이해와 변형을 용이하게 하며, 유지보수비용 및 시간 절감
  • 표준 준수
  • CASE의 사용 용이
재공학 종류 및 특징
  • 재구조화 : 소프트웨어 부품을 라이브러리에 모아놓고 새로운 소프트웨어 개발에 필요한 부품을 찾아내어 결합하는 방법
  • 재모듈화 : 시스템의 모듈 구조를 변화시키는 것으로 시스템 구성요소의 클러스터 분석 및 결합도와 관련(결합도, 응집도)
  • 의미론적 정보추출 : 코드수준이 아닌 문서 수준이 설계 재공학 기법
재사용 개요
  • 이미 개발되어 그 기능, 성능 및 품질을 인정 받았던 소프트웨어의 전체 또는 일부분을 다시 사용
  • 새롭게 개발되는 소프트웨어의 품질과 생산성 및 신뢰성을 높이고 개발기간과 비용을 감소시켜 소프트웨어 위기 극복
재사용 필요성
  • 소프트웨어 생산의 TCO (Total Cost Overhead) 절감
  • 높은 품질의 소프트웨어 생산을 위한 공유 및 활용 효과
재사용 기본원칙
  • 범용성
  • 모듈성
  • 하드웨어 독립성
  • 소프트웨어 독립성
  • 자기 문서화
재사용의 목표
  • Reliability : 신뢰성 향상 (기능, 안정, 속도 등의 사전 성능 검증됨)
  • Extensibility : 확장성 향상 (검증된 기능 기반으로 Upgrade 용이함)
  • Productivity : 생산성 향상 (비용,시간,위험 등 전체적 개발 프로세스 향상됨)
  • Usability : 사용성 향상 (독립된 컴포넌트로써의 조립성 제공됨)
  • Maintainability : 유지보수성 (품질개선,오류수정,운영,Upgrade이 용이함)
  • Adaptability : 적응성 향상 (독립된 컴포넌트로써의 새로운 Process 적용에 용이함)


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥

'기술용어 > 소프트웨어공학' 카테고리의 다른 글

OSS(Open Source Software)  (0) 2024.06.26
ISO 25000  (0) 2024.06.26
ISO 12207  (0) 2024.06.25
Function Point(ISO/IEC 14143)  (0) 2024.06.25
CMMi(Capability Maturity Model Integration)  (0) 2024.06.24