C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[12298] 소스분석.. 어떻게 해야 가장 효율적일까요?
무식한흑태자 [incu76] 9415 읽음    2006-10-26 19:38
회사에서 소스 큰 덩어리를 하나 던져주는군요.
장비 제어하는 프로그램인데 리눅스 환경에서 프로그램된 처음 구성부터 지금까지 거진 10년 정도 구축되어온
소스입니다. 이런저런 참고자료를 가지고는 있지만 일관되게 정리되어 있지도 못하고..
억지로 여기저기 흩어져 있는 자료들을 수집하고 읽어보고 해서 이 장비가 뭐하는 놈이다~라는 것과
대충 어떠한 부품들로 구성이 되더라.. 그리고 어떤 툴을 이용해서 작성이 됐더라~ 라는 정도는 파악이 되었습니다
그 다음에 막연하게 Main 부터 추척해서 들어가고 있었습니다. 서브함수..요놈은 어디? 이 변수는 어디??

무척 많은 글로벌 변수들과.. 멀티쓰레드로 돌아가는 프로그램이라 정신도 없고..

프로그램을 하시는 분들은 당연히 한번쯤은 해보았을 남에 소스 분석. 어떻게 하십니까?
main부터 한줄한줄 분석해 나가는데 오늘 과장님 하시는 말쌈.
"야~ 그렇게 하면 백날 가도 그거 분석 못한다"
그럼 어떻게 하라는 말쌈..ㅡ_ㅡ;;;;

어떻게 소스 분석을 해야 효율적으로 정리를 할 수가 있을까요?
그것땜에 머리싸매고 드러눕게 생겼습니다. ㅜ_ㅜ
정영훈 [allinux]   2006-10-26 21:31 X
객체지향적으로 클래스가 잘 디자인 되어 있으면 클래스 다이어그램부터 그려봅니다. 또한...펑션들의 관계를 비주얼하게 표현해주는 소스 분석 툴들로 펑션들의 호출관계나 종속관계부터 파악합니다.
10년 정도 된 프로덕션인데...문서화는 거의 되어 있지 않나 보군요-.-
크레브 [kkol]   2006-10-26 21:31 X
소스 분석할때는 일단 에디터가 좋아야합니다. 변수 사용, 함수 호출 관계를 찾아가기는 엄청 짜증나는일이죠. 소스 분석하기도 힘든데.. 이 함수가 어디서 호출되는지 하나 하나 찾아가다 보면 정리도 안되고. 암튼.. SourceInsight 같은 에디터 가지고 함수들의 전체적인 연결구조를 파악하는것이 제일 중요할것이라 생각합니다.
다음에 변수들의 사용방법 분석하시고, 동시 동작하는 쓰레드의 동기화 방법 순으로 분석하시면 될것같네요^^
kongbw, 광양 [kongbw]   2006-10-26 22:27 X
Source insight 왕추천 합니다.  ^^;
"요놈 없음 어떻게 프로그램을 짤까~~?" 라는 생각이 들정도로 매력 덩어리 임다.
Jeep [hiraga]   2006-10-27 00:12 X
저는 함수 막 따라가다 끊겼을 때 막 짜증 ㅡ.ㅡ 저두 엄청 길어 고생중 ㅋㅋ;
무식한흑태자 [incu76]   2006-10-27 08:07 X
감사합니다. 일단 의견 주신대로 한번 해봐야 겠네요 ^^
무식한흑태자 [incu76]   2006-10-27 09:50 X
source insight.. 좋네요. ^^
근데 이건 visual studio 에도 있는 기능 아닌가요? 프로젝트 생성해서 소스랑 헤더 추가하고..
정의로 이동..선언으로 이동.. 참조찾기..
변수 선언된 곳, 함수 정의된 곳으로 이동하는 기능은 visual studio도 충분합니다. 다만 덩치가 너무 클 따름이죠. ^^;;
아뭏든 답변고맙습니다. source insight는 사용법을 더 익혀봐야 겠네요. 좋은 툴인 것은 분명하니까요 ^^
최보현.U&I [uriduri]   2006-10-27 10:34 X
소스 인사이트 보다 볼랜드 코드라이터를 추천합니다 ...
제가 두가지다 써본결과~~ 소스 인사이트는 코드라이터 따라오지도 못합니다 ...
. -> 찍으면 어떤언어건 바로바로 뛰쳐나오는 크래스 멤버들 ... 이자체를 에디터에서~
자체적으로 디비구성하게끔 되 있어서~~ 엄청 빠르고요~
또 커서가 움직이는 족족이~~ 변수 상수들이 선언된 심볼 부라우저~
암튼 소스인사이트랑은 차원이 다릅니다,
리눅스 커널 소스도~~ 이넘으로~~ 보면 한눈에 쫙 보인다는 ^^
최보현.U&I [uriduri]   2006-10-27 10:37 X
대형 프로그램의 분석법은 ...
일단 두가지 차원에서 접근 합니다 ... 기존소스를 이용 해서~ 계속 업그래이드를 할건가
아니면 긴응 분석을 통해 신규 프로젝트 작성인가
먼저 이거를 결정 해야 합니다 ...
그거에 따라 분석방법이 달라지거든요`
뭐~~ 두가지 경우다~ 메인에서 부터 찾아가는것은~~ 무척 힘든일이구요~~
보통~ 장비 자체를 이해하고~~
기능자체를 이해한다음 역으로 추적 합니다 ...
무식한흑태자 [incu76]   2006-10-27 10:52 X
현재는 장비를 저희가 이관을 받는 작업이기 때문에 기존 소스를 이용..업그레이드 하는 것이 주목적입니다. 기존에 잘 돌아가고 있는 프로그램을 새로 만들어서 문제를 일으킬건 없겠죠 ^^;;
기능자체를 이해한 다음 역으로 추적한다?? 흠~_~ 어려운 문제군요.

그런데 볼랜드 코드라이터는 어디에 있는건가요? BDS2006을 깔아야 하나요? 아니면..;;;
소스 인사이트도 기능 찾아보니 괜찮은거 같던데 비교가 안된다니 꼭~ 써보고 싶습니다~ ^^
박지훈.임프 [cbuilder]   2006-10-27 20:59 X
볼랜드의 코드라이트는 별도 제품입니다.
다른 회사를 인수합병할 때 덩달아 따라온 제품이죠. 그런데 지금은 2년쯤 전인가에 단종시켜서 판매되지 않습니다.
미루(RTT) [sxdotori]   2006-11-04 20:51 X
프로그램 전체에 대한 개략적인 도식화(플로우 챠트)가 필요합니다.
A1용지에 A4지로 작성한 각 파트별 개략적인 도식을 트리 형태로 분석할때 마다 배열을 합니다.
어디서 콜 되는지 매직으로 그려 넣고요...
프로그램의 개략적인 도식 전체가 머리속에서 항상 떠오를수 있도록 이 A1용지가 손때가 뭇어 찢어질때까지 보고 또 보고,,계속 업데이트 시켜야 합니다.
미루(RTT) [sxdotori]   2006-11-04 20:53 X
프로그램의 세세한 부분은 도식화를 하다보면 어쩔수 없이 머리속에 들어 옵니다.
세세한 도식이 아닌 간단한 개략적인 도식입니다. 생각보다 시간 많이 안 걸립니다.
남의 프로그램 이해하는데는 그림이 최고 입니다.

+ -

관련 글 리스트
12298 소스분석.. 어떻게 해야 가장 효율적일까요? 무식한흑태자 9415 2006/10/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.