01 소프트웨어 재사용

 

 

가) 소프트웨어 재사용(Reuse) 개요

  • 소프트웨어 재사용은 기존의 소프트웨어 또는 소프트웨어 지식을 활용해, new 소프트웨어를 구축하는 일이다.
  • 재사용가능한 소프트웨어나 소프트웨어 지식은 재사용가능한 자신이다.
  • 자신 - 설계, 요구명세, 검사, 아키텍처 등 포함

 

 

1. 소프트웨어 재사용 배경

 

 

 

2. 소프트웨어 재사용 정의

 

  • 소프트웨어 재사용이란 사용 소프트웨어 개발 관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법
  • 기존 개발 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하여 신규 개발되는 소프트웨어의 품질과 생산성 및 신뢰성을 높이고 개발 일정 및 비용을 감소시켜 주는 대응방안
  • 기존 개발 모듈이나 프로그램, 산출물 등을 동일한 응용 분야, 서로 다른 응용업무, 혹은 서로 다른 기업 간에 다시 사용하거나 일부 수정 후 재사용할 수 있는 개념

 

 

3. 소프트웨어 재사용의 목적

 

신뢰성, 확장성, 생산성

 

신뢰성 - 기능, 안정, 속도 등의 사전 성능 검증됨.

확장성 - 검증된 기능 기반으로 upgrade 용어

생산성 - 비용, 시간 위험 등 전체적 개발 프로세스 향상

 

 

 

 

나) 소프트웨어 재사용의 대상

 

 

 

 

 

다) 소프트웨어 재사용의 원칙

 

  • 범용성 (Generality)
    - 특정 응용 분야만이 아닌 일반적으로 활용될 수 있는 정도여야 한다.
  • 모듈성 (Modularity)
    - 정보은닉과 추상화의 원칙으로 최소한의 결합도 및 최대한의 응집력을 갖도록 하는 특성
  • 하드웨어 독립성
    - 가능한 실행 하드웨어 기종과 무관해야 한다.
  • 소프트웨어 독립성
    - OS 또는 DBMS와는 무관하게 운영해야 한다.
  • 자기문서화 (Self Documentation)
    - 모듈의 정확한 기능, 용법, 인터페이스를 기술한다.
  • 일반성 (Commonality)
    - 많은 개발자들에게 공통적으로 필요하고 사용 가능해야 한다.
  • 신뢰성 (Reliability)
    - 품질을 믿고 사용할 수 있어야 한다.

 

 

 

라) 실무에서 재사용 구현의 문제점

 

 

 

마) 소프트웨어 재사용의 장애요인 및 대책

 

 

바) 재사용 적용 시 고려사항

 

 

 

사) 소프트웨어 재사용의 효과

 

 

 

 

02 역공학

 

가) 역공학의 정의

  • 역공학이란 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다.
  • 유지보수 단계에 수행하는 활동
  • 순공학에 상대되는 개념
  • input과 output의 흐름을 통해 이해할 수 있다.

 

 

 

나) 역공학이 필요한 경우

  • 기 가동중인 시스템의 유지보수가 어려운 경우
  • 변경이 빈번하여 시스템 효율이 저하된 경우
  • 파일 시스템으로 개발된 업무를 광계형 데이터베이스로 재구축 하려는 경우
  • 기본 메인 프레임을 다운사이징하는 경우 

 

 

다) 역공학의 장점

상용화되거나 기 개발된 소프트웨어의 분석을 도와줌.

기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지 보수성을 향상

기존 시스템 정보를 Repository에 보관하여 CASE의 사용을 용이하게 함

 

 

 

라) 역공학의 종류

 

 

논리역공학 (Logical Reverse Engineering)

  • 목적: 소프트웨어나 시스템의 논리적 구조동작 방식을 분석하는 데 초점을 맞춥니다. 즉, 소프트웨어의 작동 원리, 알고리즘, 논리적 흐름을 이해하는 것이 목적입니다.
  • 적용 분야: 주로 시스템의 기능을 분석하여 소스 코드를 재구성하거나, 시스템의 동작 원리를 복원하는 데 사용됩니다. 예를 들어, 프로그래밍 언어로 작성된 코드가 기계어로 컴파일된 후, 이 기계어를 역으로 분석하여 원래의 고수준 소스 코드를 추론하는 것이 논리역공학입니다.
  • 활용: 소프트웨어 개선, 오류 수정, 보안 취약점 분석 등에서 많이 사용됩니다. 또한, 기존 시스템을 분석하여 새로운 시스템을 설계하는 데에도 쓰입니다.

자료역공학 (Data Reverse Engineering)

  • 목적: 데이터 구조와 형식을 분석하는 데 초점을 둡니다. 특정 파일 형식이나 데이터베이스의 저장 방식을 분석하여 데이터의 구조를 복원하거나, 데이터가 어떻게 처리되고 저장되는지 파악하는 것이 목적입니다.
  • 적용 분야: 데이터 파일을 분석하여 데이터베이스나 파일 형식의 구조를 파악하거나, 암호화된 데이터를 해석하는 데 사용됩니다. 예를 들어, 데이터베이스에서 저장된 데이터가 어떻게 인코딩되고, 저장되는지 파악하여 데이터를 추출하거나 복원하는 과정에서 자료역공학이 사용됩니다.
  • 활용: 주로 데이터 복구, 호환성 문제 해결, 파일 형식 분석 등에서 많이 사용됩니다.

주요 차이점:

  • 논리역공학은 소프트웨어나 시스템의 논리적 흐름과 작동 원리를 분석하는 데 중점을 두고,
  • 자료역공학은 데이터 구조 및 형식을 분석하여 데이터를 추출하거나 변환하는 데 중점을 둡니다.

+ Recent posts