-
소프트웨어 유지보수, 역공학, 재공학Topcit/소프트웨어 개발 2018. 6. 11. 15:16
- 소프트웨어 유지보수
- 소프트웨어 유지보수 정의
- SDLC의 마지막 단계
- 오류 수정, 원래 요구 정정, 기능, 수행력을 증진시키는 일련의 작업
- 소프트웨어 유지보수 목적
- 소프트웨어의 성능 개선, 하자보수, 새로운 환경에서 동작할 수 있도록 이식, 수정, 일련의 예방조치
- 소프트웨어 유지보수 종류
- 사유에 의한 유지보수
- 수정 유지보수 : 오류로 인한 유지보수, 처리, 수행, 구현, 오류 식별
- 적응 유지보수 : 데이터 환경과 인프라 환경 변화 적응을 위한 처리
- 완전화 유지보수 : 새로운 기능 추가, 변경, 품질을 위한 유지보수
- 시간에 의한 유지보수
- 계획 유지보수 : 주기적 유지보수
- 예방 유지보수 : 예방 차원의 유지보수
- 응급 유지보수 : 유지보수 사후 승인 필요 시
- 대상에 의한 유지보수
- 데이터, 프로그램 보수 : 데이터의 변환 등 필요 시 처리
- 문서화 보수 : 문서 표준의 변경이나 기타 필요 시 처리
- 시스템 유지보수 : 시스템의 유지보수
- 소프트웨어 유지보수 절차
- 절차
- 현행 소프트웨어 이해
- 프로그램 구조 분석, 변수, 자료구조, 응용분야, 업무지식
- 요구사항 분석
- 유지보수 유형, 전략 수립
- 변경 프로그램 등 대상 파악
- 영향범위 파악 및 수정
- 소프트웨어 변경으로 기존 기능 영향
- 프로그램 변경, 수정
- 테스트, 유지보수
- 문서 수정, 형상 관리, 유지 보수 수행
- 유지보수 용이성
- 소프트웨어 유지보수의 난이도를 나타낸다.
- 이용 용이성 : 어플리케이션, 프로그램이 얼마나 이해하기 용이한가
- 수정 용이성 : 어플리케이션, 프로그램을 수정하는데 얼마나 용이한가
- 시험 용이성 : 어플리케이션, 프로그램의 정확성을 보여주는 과정이 얼마나 용이한가
- 개선법
- 분석 활동 : 고객의 요구사항, 제약사항을 결정하고, 개발하려는 제품의 타당성을 밝힌다.
- 표준 및 지침 : 소프트웨어 유지 보수가 용이하도록 다양한 종류의 표준, 지침을 제정한다.
- 설계 활동 : 명확성, 모듈성, 변경 용이성을 강조하여 활용한다.
- 구현 활동 : 표준 구조와 코딩 스타일을 적용해야 한다.
- 보조 문서 : 유지 보수 활동에 필요한 지침서와 테스트 설명서가 필요하다.
- 소프트웨어 유지보수 조직 유형
- 소프트웨어 유지보수 활동 별 주체
- 요청
- MRF 작성
- CR 작성
- 분석
- 유지보수 유형 분류, 심각성 판단
- 유지보수 요청 내용 분석, 영향도 분석
- 유지보수 우선 순위 결정
- 승인
- 분석 내용에 따라 유지보수 진행 여부 승인
- 유지 보수 실행에 대한 승인
- 실행
- 유지보수 대상에 대한 유지보수 실행
- 소프트웨어 변경 보고서 작성
- 관련 문서 변경
- 소프트웨어 유지보수 조직 유형
- 작업의 형태에 따른 조직
- 사용자의 요구를 분석하고 시스템을 설계하고 구현하고 테스트
- 각 팀은 서로 분리된 책임과 역할 수행
- 프로그래밍 지식과 기술에 대해 전문화됨
- 어플리케이션 분야에 따른 조직
- 응용 어플리케이션에 따라서 조직을 분류
- 응용 지식의 개발에 대해 전문성을 가짐
- 생명주기에 따른 조직
- 개발과 유지보수로 조직을 구분
- 개발, 유지보수 기술의 전문화
- 개발, 유지보수 조직 간 조정 비용 필요
- 역공학, 재공학, 재사용
- 소프트웨어 3R
- 저장소(Repository)를 기반으로 역공학(Reverse Engineering), 재공학(Reengineering), 재사용(Reuse)을 통해 소프트웨어 생산성을 극대화하는 기법
- 3R의 필요성
- 유지보수 오류, 재사용으로 인한 비용 절감
- 소프트웨어 개발 생산성 향상
- 시스템의 이해, 변경, 테스트 용이
- 소프트웨어 변경 요구사항에 대한 신속한 대처
- 소프트웨어 3R의 개념도
- 3R의 구성
- 역공학
- 구현된 소프트웨어를 분석 -> 설계 -> 요구사항 분석
- 재공학
- 역공학으로 재 구조화된 소프트웨어를 기반으로 다시 추상개념으로 현실화 한 것
- 재사용
- 재공학을 통해 구현 및 사용중인 소프트웨어의 사용
- 역공학의 개요
- 역공학의 정의
- 이미 만들어진 시스템을 역으로 추적하여 처음의 문제나 설계 기법 등의 자료를 얻어내는 일
- 역공학이 필요한 경우
- 기존에 가동중인 시스템의 유지보수가 어려운 경우
- 변경이 빈번하여 시스템 효율이 저하된 경우
- 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축 하려는 경우
- 기본 메임 프레임을 다운사이징 하는 경우
- 장점
- 상용화 되거나 개발된 소프트웨어의 분석을 도와준다.
- 기존 시스템의 자료와 정보를 설게 수준에서 분석 할 수 있어 유지 보수성을 향상
- 기존 시스템 정보를 저장소에 보관하여 CASE의 사용을 용이하게 한다.
- 역공학의 입력, 출력
- 입력
- 원시코드
- 목적코드
- 작업절차
- 라이브러리
- 출력
- 구조도
- 자료 흐름도
- 제어 흐름 그래프
- 개체 관계도
- 역공학의 종류
- 논리 역공학
- 원시코드로부터 정보를 추출하여 물리적 설계 정보 저장소에 저장
- 물리적 설계 정보를 얻어내는 역할 수행
- 자료 역공학
- 기존 데이터베이스를 수정하거나 새로운 데이터베이스 관리 시스템으로 전이하는 역할 수행
- 재공학의 개요
- 재공학의 정의
- 기존 소프트웨어의 데이터, 기능들을 변경, 개선하여 유지보수의 용이성, 품질 개선, 유지보수 비용감소
- 기존 시스템을 프로그래밍 표준에 맞춤, 고수준 언어로 재구성, 타 하드웨어에 이식
- 재공학을 적용하는 목적
- 현재 시스템의 유지보수 향상
- 시스템 이해와 변경 용이
- 유지 보수 비용, 시간 절감
- 표준의 준수, CASE의 사용 용이
- 소프트웨어 재공학의 단계
- 원시코드로부터 정보 추출
- 역공학, 시스템 형상, 검증
- 순공학, 설계 최적화
- 원시코드 생성
- 재공학의 적용 방법
- 재구조화 방법 : 소프트웨어 부품을 라이브러리에 모아 놓고, 새로운 소프트웨어 개발 시 필요한 부품을 탐색 후 결합
- 재모듈화 방법 : 시스템의 모듈 구조를 변화, 시스템 구성요소의 클러스터 분석, 결합도와 관련됨
- 의미론적 정보추출 : 코드 수준이 아닌 문서 수준의 복구 방법
- 소프트웨어 재사용의개요
- 소프트웨어 재사용의 정의
- 사용 소프트웨어 개발 관련 지식을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법
- 소프트웨어 재사용의 이점
- 소프트웨어 생산의 TCO 절감
- 높은 품질의 소프트웨어 생산을 위한 공유 및 활용 효과
- 시스템 개발에 대한 정보공유 및 타 프로젝트의 산출물 공유
- 소프트웨어 재사용의 목적
- 신뢰성 : 기능, 안정, 속도 등의 사전 성능 검증됨
- 확장성 : 검증된 기능 기반으로 업그레이드 용이
- 생산성 : 비용, 시간, 위험 등 전체적 개발 프로세스 향상
- 사용성 : 독립된 컴포넌트 로서의 조립성 제공
- 유지보수성 : 품질 개선, 오류 수정, 업그레이드 용이
- 적응성 : 독립된 컴포넌트 로서 새로운 프로세스 적응 용이
'Topcit > 소프트웨어 개발' 카테고리의 다른 글
소프트웨어 형상 관리 (0) 2018.06.11 소프트웨어의 요구사항 관리 (0) 2018.06.11 소프트웨어 테스팅 (0) 2018.06.11 프로그래밍 언어, 코드 재사용, 리팩토링 (0) 2018.06.11 사용자 인터페이스 설계 원리 (0) 2018.06.11 댓글