객체지향 패러다임에서의 코드 재사용을 위한 응집도 레벨 식별 모범 사례

Slides:



Advertisements
Similar presentations
온누리교회 일대일 사역팀. CONTENTS 1. 예수님의 공생애 사역 2. 죄의 기원과 죄의 결과 3. 죄 문제의 해결 I. 예수님의 부활은 그리스도의 죽음과 함께 기독교 II. 인간은 하나님 앞에 모두 죄인이다. III. 따라서 나도 죄인이라는 사실을 깨달아야 한다.
Advertisements

윤준혁 (12), 이주연 (13), 박혜원 (14), 안혜경 (15) 허니버터칩으로 알아본 SNS 의 영향 력.
사회복지현장실습 2012 학년도 동계실습 실습기관잠실종합사회복지관실습기간 2012 년 1 월 3 일 ~ 2012 년 2 월 1 일 실습생추연일.
2009 년 행정안전부 공직설명회 년 행정안전부 공직설명회 2 목 차 I. 개 요 II. 기능직 개편원칙 III. 정보통신현업 개편방안 IV. 주요 이슈.
1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
2013 년 조사연구위원회 위촉식 및 활동 설명회 2013 년 조사연구위원회 위촉식 및 활동 설명회
일 시 : (목) 장 소 : 문산종합사회복지관장) 파주시문산종합사회복지관 기관안내.
건강새마을 조성사업 주민 참여 모니터링 강 민 정.
2009 개정 교육과정에 따른 예술(음악/미술)교과 교육과정 개정의 주요 내용
목 차 I 방위산업의 정의 II 방위산업의 특성 III 방위산업의 현황.
상품권 개발 계획서.
홍보출판 위원회 출판국 2010년 사역 계획서 발표자 : 출판국 국장 / 박수만권사 일시: 2010년 01월 17일(일) 1.
영호남 공동발전을 위한 학술문화 교류사업 보고
서울특별시 중구 통일로 10 연세재단세브란스빌딩
역대 정부개편의 교훈과 새로운 정부조직개편의 방향
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
1636 쇼핑몰.
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
제3장 사회 복지 발달사.
문헌정보학과, 사서만 있는 줄 아니? 10. Mushroom
『대기업-중소협력업체 안전보건 공생협력 프로그램』 추진 사업
김종찬 김정석 이상미 임성규 담당 교수님 최병수 교수님
체위변경과 이동 요양보호 강사 : 이윤희.
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
2016학년도 2학기 수강바구니(수강신청) 안내 매뉴얼
2016학년도 1학기 수강바구니(수강신청) 안내 매뉴얼
쌓지 말고 해소하자 이 주휘 이 진영 전 민석 전 혜림.
2015년 하반기 소방교육 자 유 전 공 학 부 (금) 안녕하십니까 자유전공학부 행정실 입니다.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
소프트웨어 공학 (Software Engineering)
Power Java 제4장 자바 프로그래밍 기초.
아동복지 제9장.
SK 4Front KM 방법론 SK C&C.
2011년 하반기 VIP투자자문 인재채용 안내
올바른 이메일 사용법
해양생태계 이상현상 대응관리 남이현.
제13장 장애인 복지.
보상사업 제안서 반룡일반산업단지 사업시행자 성창아이엔디㈜ 대표 정연교님 귀하 주 식 회 사 한 국 보 상 원.
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
물류단지 총량제 폐지 이후 물류시설 공급정책 방향 국 토 교 통 부.
신 윤 호 ㈜엘림에듀 초등사업본부장, 중앙대학교 체육학박사
객체 지향 프로그램(C++)을 위장한 절차식(C) 패러다임 자동 식별화 구축 (Constructing an Automatic system for identifying the facked Procedural-Oriented Paradigm(C) within Object-Oriented.
Database 중고차 매매 DB 비즈니스IT 윤동섭.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
정치학원론 5주차 제 4장 정치체계론 행정학과 구경완, 김정은, 박하륜, 양민지, 이환규.
대박콜 전국화물 퀵서비스 회사소개서 (기업 퀵서비스,택배,문서수발).
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
2019학년도 1학기 수강바구니(수강신청) 안내 매뉴얼
실버 요양 사업 소개서
SQL INJECTION MADE BY 김 현중.
Chapter 02. 소프트웨어와 자료구조.
치료 레크레이션 프로그램 (지적 장애 대상) 과 목: 학 과: 학 번: 이 름: 제 출 일 자 담 당 교 수:
광고 모델의 영향력.
3조 권기태 윤주영 은화령 이형찬 이송민 김동욱 한승묵
노년기 발달 장안대 행정법률과 세류반 정 오 손
정보 INFRA 구축 RF카드를 이용한 고객관리시스템 구축 에클라트소프트.
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
원격교육활용론 11. 원격교육 컨텐츠 설계 : 실습 패키지 박소연 (광주대학교).
세일즈의 원칙과 기술.
평생 저축해도 강남 아파트 못산다 학 과 : 회계학과 1학년 B반 과 목 : 회계학원론 담당교수: 박성환 교수님
C언어 개요 프로그래밍이란 프로그래밍 언어란 컴퓨터와의 의사소통을 위한 표현 방법 세대별 언어의 발전을 거듭함
존 듀이의 경험교육론에 기초한 초등학교 체험활동 특징에 관한 연구
제9주 예산 수립과 집행.
양초 한 자루의 과학 과학영재교육 전공 김 연 주 류 은 희 이 상 희.
경영학의 상황학파에 대해서… 경제학과 3학년 최준용 회계학과 4학년 진현빈
워밍업 실뭉치 전달게임.
음파성명학 최종욱.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Presentation transcript:

객체지향 패러다임에서의 코드 재사용을 위한 응집도 레벨 식별 모범 사례 2017. 11. 05. (Best Practice on identifying the level of cohesion for reusing source code in object-oriented paradigm) 2017. 11. 05. 홍익대학교 소프트웨어공학 연구실 변 은 영 지도교수 : 김영철

Table of Contents I. 연구 배경 II. 관련 연구 III. 응집도 추출 가시화 Tool-Chain IV. 객체 지향 패러다임에서 응집도 재정의 V. 소스 코드 가시화 Ⅵ. 결론 & 향후 연구

출처 : accenture와 함께 하는 PLM 글로벌 트렌드 이해 1. 연구 배경 이전 제품 산업 현재 제품 산업 why? 출처 : accenture와 함께 하는 PLM 글로벌 트렌드 이해

(소프트웨어 제품 인증, 소프트웨어 프로세스 인증, 도구 사용 등등..) 1. 연구 배경 SW 중요성 다양한 기능에 대한 소비자 요구 증가 SW 기술의 급속한 발전 기존 기능보다 다양한 기능을 가진 소프트웨어 개발 규모가 크고 복잡한 소프트웨어 시스템의 지속적인 증가 개발 / 유지보수에 많은 시간과 비용 소비 해결 방법 (소프트웨어 제품 인증, 소프트웨어 프로세스 인증, 도구 사용 등등..) 소스 코드의 모듈화 를 통한 재사용

<소프트웨어 재사용 적용 범위> 2. 관련 연구 – 재사용 재사용 기존에 개발한 소프트웨어의 여러 요소들을 새로운 소프트웨어 개발 / 유지보수 에 재적용 소프트웨어 품질과 생산성을 높임 소프트웨어의 중요성이 커짐에 따라 소프트웨어 재사용의 적용 범위가 넓어짐 <소프트웨어 재사용 적용 범위>

2. 관련 연구 – 코드 복잡도 코드 복잡도 본질적 복잡성 돌발적 복잡성 요구 사항 자체가 복잡하기 때문에 소프트웨어가 복잡해짐 소프트웨어는 요구 사항에 의해 설계되기 때문에 줄이기 어려움 돌발적 복잡성 여러 이유로 개발자가 스스로 초래한 돌발적 복잡성 레거시 코드, 플랫폼 버그, 툴의 사용성 등 다양한 원인 가장 직접적인 원인은 레거시 코드 레커시 코드의 복잡도 지표 : 순환 복잡도(Cuclomatic Complexity), 결합도(Coupling), 응집도(Cohesion) 등

코드 내부 가시화 2. 관련 연구 – 응집도 코드 구조 복잡도 파악 재사용 모듈 식별 응집도 모듈 내부가 얼마나 단단히 뭉쳐져 있는가를 나타내는 품질지표 코드 내부 가시화 코드 구조 복잡도 파악 재사용 모듈 식별 < 응집도가 낮은 경우 > < 응집도가 높은 경우 >

2. 관련 연구 – 응집도 응집도 응집도 정의 Functional Cohesion 모듈 내 모든 구성요소들이 한 가지 기능과 연관이 있는 경우 Sequential Cohesion 모듈 내 한 구성요소의 출력이 다른 구성 요소의 입력이 되는 경우 Communicational Cohesion 모듈이 여러 가지 기능을 수행하며 모듈 내 구성 요소들이 같은 입력 자료를 이용하거나 동일한 출력 데이터를 만들어 내는 경우 Procedural Cohesion 모듈 내 구성 요소들이 연관되어 있고 특정 순서에 의해 수행되어야 하는 경우 Temporal Cohesion 모듈 내 구성 요소들이 서로 다른 기능을 같은 시간대에 실행하는 경우 Logical Cohesion 모듈 내 구성 요소들이 논리적으로 연관된 임무나 비슷한 기능을 수행하는 경우 Coincidental Cohesion 모듈 내 구성 요소들이 서로 관련이 없는 경우

3. 응집도 추출 가시화 Tool-Chain (추상화 구문 트리)

Step 1 – 코드 입력 Java xCodeParser Source code 입력된 소스 코드 정보를 분석한 결과로 ASTM을 추출 기존 연구에서 사용하던 파서 Source Navigator에 비해 응집도 추출에 적합 Java Source code xCodeParser

Step 1 – 코드 입력 Source Navigator xCodeParser

Step 2 – 소스 분석 ASTM project class xCodeParser members variable member

Step 3 – DB 저장 Database(SQLite) ASTM Component Link step 2에서 분석한 정보인 ASTM 데이터를 원하는 구조로 구조화하여 저장 SQLite 사용 Database(SQLite) ASTM Component Link

Step 4 – 구조 분석 구조 분석 단계는 미리 정의된 응집도 정의에 따라서 데이터베이스에 저장된 정보를 DOT 문법에 맞게 재해석 데이터베이스 정보를 재해석하기 위해 Query 문을 사용 Query – 메소드를 노드로 가시화 하기 위해 component 들 중 method만 조회 : Select distinct file_name, class_name from ASTM_contents where mem_type = ‘function’

Step 5 – 가시화 가시화 단계는 Step 4에서 재해석한 정보를 DOT Gen(Graphviz)를 이용해 가시화

4. 객체 지향 패러다임에서 응집도 재정의 Functional Cohesion 모듈 안의 모든 요소들이 한 가지 기능과 관련 → 높은 응집도 이런 모듈은 오직 하나의 기능을 수행함으로써 이해하기 쉽고 수정하기 쉬움 따라서 Method 관점에서 모든 Statement에서 대입되는 변수가 공통적으로 사용되는 경우 Method 호출이 한 번 이루어진 경우 대입 되는 변수가 공통적으로 사용되는 경우 Method 호출이 한번 이루어진 경우

4. 객체 지향 패러다임에서 응집도 재정의 Sequential Cohesion 모듈 내 한 구성요소의 출력이 다른 구성요소의 입력이 되는 경우 따라서 Method 관점에서 Method의 Return 된 결과가 다음 Method의 Input Parameter로 쓰이는 경우로 정의

4. 객체 지향 패러다임에서 응집도 재정의 Communicational Cohesion 모듈의 모든 요소들이 공통된 데이터에 의해 작업 공통된 데이터에 의해서 관련 없는 기능들 수행 따라서 Method 관점에서 여러 Method Call에 들어가는 Parameter가 동일한 경우 Compute_Matrix메소드에서 호출하는 trans와 inverse 메소드의 파라미터가 aMatrix로 같음

4. 객체 지향 패러다임에서 응집도 재정의 Procedural Cohesion 모듈 내 요소들이 연관성 있고 특정 순서에 의해 수행되는 경우 따라서 Method 관점에서 하나의 클래스에 있는 메소드들 여러 개를 호출하는 경우로 정의

4. 객체 지향 패러다임에서 응집도 재정의 Temporal Cohesion 모듈 내 요소들이 서로 다른 기능을 같은 순간에 실행 초기화 모듈은 흔히 볼 수 있는 시간적 응집도 모듈 따라서 Method 관점에서 메소드 호출이 일어나지 않고 변수의 초기화만 실행되는 경우로 정의

4. 객체 지향 패러다임에서 응집도 재정의 Logical Cohesion 모듈 내 요소들이 논리적으로 연관된 임무나 비슷한 기능 수행 서로 다른 기능이지만 많은 부분 중복 따라서 Method 관점에서 case에 따라 비슷한 기능을 수행하는 switch문이 쓰인 경우 solve-equation 메소드는 switch 문에 의해 수행되는 작업이 세가지로 나누어짐 세가지 업무는 연관된 업무로 비슷한 기능 수행 넘어 오는 no_equ 파라미터에 의해 수행될 작업 선택

4. 객체 지향 패러다임에서 응집도 재정의 응집도(Grade) 가중치 정의 Functional Cohesion = [7] 1.45 대입 되는 변수가 공통적으로 사용되는 경우로 정의 메소드 콜이 한번 이루어 지는 경우로 정의 Sequential Cohesion = [6] 1.34 메소드의 리턴된 결과가 다음 메소드의 입력 파라미터로 쓰이는 경우로 정의 Communicational Cohesion = [5] 1.2 여러 메소드 호출에 들어가는 파라미터가 동일한 경우로 정의 Procedural Cohesion = [4] 1.1 하나의 클래스에 있는 메소드들을 여러 개 호출하는 경우로 정의 Temporal Cohesion = [3] 1 메소드 호출이 일어나지 않고 변수의 초기화만 실행된 경우로 정의 Logical Cohesion = [2] case에 따라 비슷한 기능을 수행하는 switch문에 쓰인 경우로 정의 Coincidental Cohesion = [1] 위의 경우가 모두 아닌 경우로 정의

5. 소스 코드 가시화 : package : method( 재사용 적합 ) : class : method( 재사용 부적합 ) 설정 : 재사용 모듈 응집도 >5

5. 소스 코드 가시화 functional cohesion 7 * 1.45 = 10.15 > 5

communication cohesion 5. 소스 코드 가시화 6 * 1.34 + 4 * 1.1 = 12.44 > 5 5 * 1.2 + 4 * 1.1 = 10.4 > 5 sequential cohesion procedural cohesion communication cohesion procedural cohesion

coincidental cohesion 5. 소스 코드 가시화 4 * 1.1 = 4.4 < 5 2 * 1.0 = 2.0 < 5 procedural cohesion logical cohesion 3 * 1.0 = 3.0 < 5 1 * 1.0 = 1.0 < 5 temporal cohesion coincidental cohesion

𝑖=0 𝑛 𝑐𝑒=𝑐𝑒𝑓+𝑐𝑒𝑠+𝑐𝑒𝑚+𝑐𝑒𝑝+𝑐𝑒𝑡+𝑐𝑒𝑙+𝑐𝑒𝑐 5. 소스 코드 가시화 A A’ B B’ < 재사용화 성숙도 메트릭 > A (operator – jj_consume-token) R = 1 2 ( 4.4+4.4 2 + 11 3 ) = 1 2 (4.4+3.7) = 4 부적합 A’ (jjCheckNAddTwoStates - jjCheckNAdd) R = 1 2 ( 4.4+3.0 2 + 11 3 ) = 1 2 (3.7+3.7) = 3.7 부적합 B (sum - element) R = 1 2 ( 10+10 2 + 7+7 2 ) = 1 2 (5.0+7.0) = 6.0 적합 B’ (jjMoveStringLiteral - jjStopAtPos) R = 1 2 ( 6.4+6.4 2 + 9 2 ) = 1 2 (6.4+4.5) = 5.45 적합 𝑖=0 𝑛 𝑐𝑒=𝑐𝑒𝑓+𝑐𝑒𝑠+𝑐𝑒𝑚+𝑐𝑒𝑝+𝑐𝑒𝑡+𝑐𝑒𝑙+𝑐𝑒𝑐 … ① 응집도의 총합 𝑗=0 𝑚 𝑐𝑜=𝑐𝑜𝑑+𝑐𝑜𝑠+𝑐𝑜𝑐+𝑐𝑜𝑒+𝑐𝑜𝑚+𝑐𝑜𝑛 … ② 결합도의 총합 R = 1 2 ( 𝑖=0 𝑛 𝑐𝑒𝑖 𝑛 + 𝑗=0 𝑚 𝑐𝑜𝑗 𝑚 ) (5 < R < 8) … ③ 재사용화 성숙도 메트릭

6. 결론 & 향후 연구 결론 향후 연구 소프트웨어 규모가 점점 커지고 복잡해지면서 코드의 재사용성은 품질과 생산성에 결정적인 역할 재사용 적합한 모듈 판단을 위해 응집도 추출 Tool-Chain 개발 객체 지향 패러다임에서 응집도 재 정의 객체 지향 기반 코드 분석을 통해 프로그램 구조와 응집도와 결합도 측정 결과를 가시화 가시화 결과에 따라 재사용에 적합한 모듈 판단 재사용 모듈의 품질을 위해 리팩토링이 가능 향후 연구 구체적인 응집도 개념 추가적 검출 객체 지향 특성이 반영되도록 모듈의 단위 클래스로 확장

Q&A Thank you.