Computers/SW Engineering

day 5. 소프트웨어 공학의 추세

emzei 2016. 3. 22. 00:49
  • Software Reuse /  소프트웨어 재사용
    • 이미 개발된 소프트웨어의 전체 혹은 일부를 다른 소프트웨어 개발이나 유지보수에서 사용
    • 클래스, 객체와 같은 소프트웨어 요소가 재사용성 향상

    • 장점
      • 개발 시간 및 비용 단축
      • 명세, 설계, 코드 등의 문서 공유
      • 실패 위험 감소
      • 구축 방법에 대한 정보 공유
      • 개발 생산성 향상
      • 개발 품질 향상

    • 재사용 도입 문제점
      • 재사용할 대상 선정
      • 시스템에서 공통적으로 사용되는 요소 파악
      • 프로그램의 표준화 부족
      • 새로운 개발방법론 도입 어려움
      • 재사용을 위한 인력 부족
      • 기존 소프트웨어 재사용 도입이 어려움
      • 프로그램 언어에 종속적

    • 재사용 방법
      • 합성 중심 (=블록 구성 방법)
      • 생성 중심 (=패턴 구성 방법)


  • 소프트웨어 재공학 (Software Reengineering)
    • 목표 
      • 새로운 요구에 맞추기 위해, 기존 시스템을 개선하고, 새로운 기능을 추가하여 소프트웨어 성능 향상
      • 유지보수성과 품질을 향상을 통해 소프트웨어의 위기 해결
      • 소프트웨어의 수명 연장 및 기술 향상
      • --> 위와 같은 목표를 정보 저장소(개발동안 모아진 정보를 보관하여관리하는 곳)에 저장
        • 복잡한 시스템을 다루는 방법 구현
        • 다른 뷰 생성
        • 일어버린 정보 복구 및 제거
    • 주요 활동
      • 분석
      • 개조(재구조, 재구성)
      • 역공학
      • 이식


  • 클라이언트/서버 시스템
    • 분산 시스템의 대표적 모델
    • 애플리케이션 요소 / 데이터베이스 요소 . 프레젠테이션(상호작용) 요소
    • 미들웨어
      • 클라이언트와 서버 사이에서 처리하는 과정을 효율적으로 수행하도록 도와주는 것


  • CASE (Computer Aided Software Engineering)
    • 개요
      • 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
      • 생명 주기 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해 주는 기술
      • 모든 단계에 걸쳐 일관된 방법론을 제공하는 자동화 도구(CASE Tool)들을 지원
      • 개발도구 + 방법론 --> 정형화된 구조 및 방법을 개발에 적용하여 생산성 향상
    • 장점
      • 개발 기간 단축, 비용 절감
      • 자동화된 기법을 통한 품질 향상
      • 간편한 유지보수
      • 모든 단계에서 표준 확립
      • 재사용성 향상
    • 분류
      • 상위(Upper) CASE
        • 생명주기 전반부에서 사용
        • 문제를 기술하고 계획하며 요구 분석, 설계
        • 명세와 문서 작성
        • [예] SREM, PSL/PSA, SERA, FOUNDATION 등
      • 하위(Lower) CASE
        • 생명주기 하반부
        • 코드 작성, 테스트, 문서화 과정 지원
        • [예] 구문 중심 편집기, 코드 생성기
      • 통합(Integrate) CASE   
        • 생명 주기 전 과정 지원
        • 공통의 정보 저장장소와 통일된 사용자 인터페이스를 사용하여 도구 통합
        • [예] IEF, POWERTOOLS, TAGS/IORL, TEAMWORK 등


    • 정보 저장소 (Repository)
      • (= CASE 정보 저장소, CASE 데이터베이스, 요구사항 사전, 저장소)
      • 소프트웨어 개발 과정 동안 모아진 정보를 보관하고 관리
      • 이점
        • 도구 <-> 생명주기 활동, 사용자, 응용 소프트웨어 사이의 통신 및 소프트웨어 시스템의 정보 공유 향상
        • 유지 보수성 향상
        • 도구 간 정보 교환 용이, 새로운 도구 추가 쉬움
        • 중복된 공통 정보 통합하여 불필요 정보 제거
        • 생명 주기 정보 재사용
        • 시스템의 이식과 변환 용이