일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- compare
- 온라인처리
- ANSI-SPARC
- 멀티미디어DB
- 프로그래밍 언어 기술 동향
- 네트워크형DB
- 메인 메모리 DB
- 개발프레임워크의 기술 동향
- 객체관계형DB
- 정렬
- 백트래킹
- aws winscp
- 소프트웨어 개발도구
- 클라우드기반 IDE
- TOPCIT
- 프로그래밍 언어
- 시간초과
- boj 11659
- Backtracking
- c++
- BOJ
- 객체 지향형 DB
- 소프트웨어아키텍처 기술 동향
- compare구조체
- 공간DB
- 개발프레임워크
- sync_with_stdio(0)
- Flutter
- vector unique erase
- 계층형DB
옐그's 코딩라이프
[TOPCIT][01] II. 소프트웨어 재사용 (에센스 정리 요약) 본문
학습 목표
1. 소프트웨어 재사용의 개념, 목적, 대상, 현실 적용방안, 효과, 고려사항 등을 이해한다.
2. 역공학의 개념, 필요한 이유, 장점, 고려사항에 대해 이해한다.
핵심 키워드
- 재사용, 역공학
- 코드 재사용, 소프트웨어 표준화
- 소프트웨어 유지보수
01 소프트웨어 재사용
소프트웨어 재사용(Reuse) 개요
소프트웨어 재사용은 기존의 소프트웨어 또는 소프트웨어 지식을 활용해, 새로운 소프트웨어를 구축하는 일임.
소프트웨어 재사용 배경
- 소프트웨어 위기로 인한 품질 및 생산성 저하
- 소프트웨어 개발의 자동화 기술 발달로 CASE 도구 사용 확대
- 소프트웨어 개발 표준화 준수 및 품질확보 노력
소프트웨어 재사용 정의
- 소프트웨어 재사용이란 사용 소프트웨어 개발관련 지식(기능, 모듈, 구성 등)을 표준화하여 개발 생산성을 높이기 위하여 반복적으로 사용하기에 적합하도록 구성하는 방법
- 기존 개발 기능, 성능 및 품질을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하여 신규 개발되는 소프트웨어의 품질과 생산성 및 신뢰성을 높이고 개발 일정 및 비용을 감소시켜 주는 대응방안
- 기존 개발 모듈이나 프로그램, 산출물 등을 동일한 응용 분야, 서로 다른 응용업무, 혹은 서로 다른 기업 간에 다시 사용하거나 일부 수정 후 재사용할 수 있는 개념
소프트웨어 재사용의 목적
- 신뢰성 : 기능, 안정, 속도 등의 사전 성능 검증됨
- 확장성 : 검증된 기능 기반으로 upgrade 용이
- 생산성 : 비용, 시간 위험 등 전체적 개발 프로세스 향상
소프트웨어 재사용의 대상
일반적인 지식, 설계 정보, 데이터 정보, 프로그램 코드, 기타 등등
소프트웨어 재사용의 원칙
1. 범용성 : 특정 응용분야만이 아닌 일반적으로 활용될 수 있는 정도여야 함
2. 모듈성 : 정보은닉과 추상화의 원칙으로 최소한의 결합도 및 최대한의 응집력을 갖도록 하는 특성이 있어야 함
3. 하드웨어 독립성 : 가능한 실행 하드웨어 기종과 무관해야 함
4. 소프트웨어 독립성 : OS 또는 DBMS와는 무관하게 운영해야 함
5. 자기문서화 : 모듈의 정확한 기능, 용법, 인터페이스를 기술함
6. 일반성 : 많은 개발자들에게 공통적으로 필요하고 사용 가능해야 함
7. 신뢰성: 품질을 믿고 사용할 수 있어야 함
실무에서 재사용 구현의 문제점
- 공통으로 사용할 수 있는 소프트웨어 모듈 발견 어려움
- 소프트웨어의 표준화 부족
- 소프트웨어 모듈의 내부 인터페이스 요구사항의 이해 곤란
- 변경으로 인한 부차적 영향으로 이해 곤란
- 재사용을 위한 소프트웨어 부품은 개발비가 더 들 수 있음
- 재사용의 효익은 오랜 시간이 경과 후 나타남
- 현존하는 소프트웨어 부품에서 재사용 부품의 추출이 비현실적임
소프트웨어 재사용의 장애요인
- 관리자와 개발 담당자들의 거부 반응
- 재사용 기술적용의 동기 결여
- 소프트웨어 표준화의 부재
- 사회적 또는 법적 장애
소프트웨어 재사용의 장애요인 제거 대책
- 새로운 설계 및 개발 방법론의 활용
- 재사용 소프트웨어 라이브러리의 구축
- 자동화 도구(CASE)의 활용
- 보상제도의 확립 등
소프트웨어 재사용의 효과
- 소프트웨어 생산의 TCO 절감
- 높은 품질의 소프트웨어 생산을 위한 공유 및 활용효과
- 시스템 개발에 대한 정보공유 및 타 프로젝트의 산출물 공유
- 시스템 구조와 좋은 시스템 구축방법에 대한 교육적 효과
02 역공학
역공학의 정의
역공학이란 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일. 시스템을 이해하여 수정하는 소프트웨어 유지보수 단계에 수행하는 일련의 활동
역공학의 Input과 Output
Input : 원시코드, 목적콛, 작업철차, 라이브러리 등 입출력 형태의 자료, 문서
Output : 구조도, 자료 흐름도, 제어 흐름 그래프, 개체 관계도
역공학이 필요한 경우
- 기 가동중인 시스템의 유지보수가 어려운 경우
- 변경이 빈번하여 시스템 효율이 저하된 경우
- 파일 시스템으로 개발된 업무를 관계형 데이터베이스로 재구축하려는 경우
- 기본 메인 프레임을 다운사이징 하는 경우
역공학의 장점
- 상용화되거나 기 개발된 소프트웨어의 분석을 도와줌
- 기존 시스템의 자료와 정보를 설계 수준에서 분석할 수 있어 유지 보수성을 향상
- 기존 시스템 정보를 Repository에 보관하여 CASE의 사용을 용이하게 함
역공학의 종류
논리역공학 : 원시코드로부터 정보를 추출하여 물리적 설계 정보저장소에 저장, 물리적 설계정보를 얻어내는 역할 수행
자료역공학 : 기존 데이터베이스를 수정하거나 새로운 데이터베이스 관리시스템으로 전이하는 역할 수행
'TOPCIT' 카테고리의 다른 글
[TOPCIT][01] V. 소프트웨어 아키텍처 설계 (에센스 정리 요약) (0) | 2022.12.27 |
---|---|
[TOPCIT][01] IV. 소프트웨어 설계 원리와 구조적 설계 (에센스 정리 요약) (0) | 2022.12.27 |
[TOPCIT][01] III. 자료구조와 알고리즘 (에센스 정리 요약) (0) | 2022.11.27 |
[TOPCIT][01] I. 소프트웨어 공학 개요 (에센스 정리 요약) (0) | 2022.11.14 |
[TOPCIT] 00. 탑싯 시작하기 (탑싯에 대해서, 공부방법) (0) | 2022.11.14 |