본문 바로가기

Study/Concepts

소프트웨어 공학 3R

 

완성된 소프트웨어를 기반으로 3R을 통해 소프트웨어의 생산성을 극대화 하는 기법

 

 

1. 역공학(Reverse Engineering)

- 이미 개발된 시스템을 CASE 도구의 도움을 받아서 사양서, 설계서 등의 문서로 추출하는 작업

- 역공학 하는 이유는 이미 운영되고 있는 시스템이 오래되서 문서가 없을 경우, 시스템을 버리기 보다 소스코드를 분석하면서 어떤 설계서가 있었겠고, 어떤 요구사항이 있었겠다 등 문서를 추출한다.

- 즉, 유지 운영을 위해서 사용한다.

- ex. 은행 시스템

- 상용화되거나 이미 개발된 소프트웨어의 분석을 도와준다.

 

더보기

* 차세대?

-> 기존에 있는 시스템을 재개발(새롭게 만든다.)하면서 기존에 있던 것을 재사용 한다.

-> 재개발 + 재사용

 

* 고도화?

-> 기존에 있는 시스템에 살을 붙여서 다듬는다.

-> 재공학

 

2. 재공학(Re-engineering)

- "낡은 부분만 리모델링해서 다시 사용하자"는 개념.

- 현 시스템(레거시)의 유지보수성을 향상시켜서 소프트웨어의 생산성을 높이는 기법

 

 

3. 재사용(Reuse)

- 예전에 잘 개발된 것을 다음 프로젝트에서 다시 사용하자.

- 기능, 성능, 품질을 인정받았던 이미 개발된 소프트웨어의 전체 또는 일부분을 다시 사용한다.

- 비용을 절감할 수 있다.

- ex. 게시판 만들기 모듈 재사용

- 함수, 객체 재사용 < 컴포넌트 재사용  < 애플리케이션 재사용

- 기존 모듈 사용하면서 새로운 요구사항에 맞춰 커스터마이징한다.

 

[재사용 방법]

 

1) 합성 중심(Composition Based)

- 부품을 끼워맞추듯이, 모듈을 부품화 시켜 놓음으로써, 모듈을 조립하면서 소프트웨어를 완성하는 방법

 

2) 생성중심(Generation Based)

- 추상화된 명세를 구체화해서 프로그램을 만든다.

- 추상화 해놓은 것을 하위 클래스에서 구현해서 사용한다.

 

 

'Study > Concepts' 카테고리의 다른 글

DAY 76. DB - 물리적 모델링  (0) 2021.11.02
DAY 75. DB - 논리적 모델링  (0) 2021.11.01
DAY 74. DB - 개념적 모델링  (0) 2021.10.31
DAY 72. DB - DB 모델링  (0) 2021.10.29
DAY 71. UML - 시퀀스 다이어그램  (0) 2021.10.28