경험많은 개발자들의 조언을 구합니다..

글쓴이: 익명 사용자 / 작성시간: 화, 2001/01/09 - 11:23오후
어떤 프로젝트에 참여하고 있는데.. 여러명이서 같이 개발하고
있습니다..
함수로 모듈화하고, 자료구조도 잘 정의해놓고 이런것까지는
명확합니다.. 문제는 그런 함수와 자료구조를 어떤 소스파일에
분산시켜 담아놓느냐 하는건데.. 이게 장난이 아니더라구요.
아무리 독립적으로 각 모듈을 분산시키려고 해도 cross 참조를
하게되는 경우를 피할수가 없더군요..
그래서 #include 를 하나만써도.. 그 헤더파일이 참조하고 있는
다른 헤더파일까지 같이 참조하고.. 또 참조된 헤더파일 내부의
#include가 또다른 헤더를 참조하고...그래서 각 모듈이 헤더를
참조하려면 쓸데없는것까지 다 끌고 들어오게 되거든요..
모듈로 나누는것과 나눠진 모듈을 독립된 파일에 담는것은
매우 다른 문제라는걸 이번에야 깨닫게 되었습니다..
모듈로 잘 쪼개진.. 1000개의 함수가 있다 하더라도
하나의 헤더파일과 하나의 소스파일에 모두 담아낼수가
있고, 혹은 100여개의 파일에 분산시킬수도 있겠죠..
그래서 그건 설계와는 좀 다른 문제인것 같더군요..
이에 대해 조언이나 잘 나와있는 책이 있다면 추천을 부탁
드립니다. 저한테 sw공학책이 있긴하지만.. 독립된 파일에
소스를 모듈별로 분산시켜 담는방법에 대해 언급한곳은 찾아볼수가
없었습니다. 모듈을 파일에 나눠담는 전략에 대한 노하우를
한수 가르쳐 주십시오..
Forums:
Re: 경험많은 개발자들의 조언을 구합니다..
주제를 요령껏 조금 더 확대(?) 해서 geekforum에
올려 주시기 바랍니다....
Re: 경험많은 개발자들의 조언을 구합니다..
글쎄요. 이런 물음에 대한 답변은 프로젝트의 성격상 달라질 수 있습니다.
님이 물으시는 건 아마 소스가 커지면서 종속성이나 연관성이 있는 헤더
파일들관의 문제일 겁니다. 이건 전처리기로(#ifdef ~ #endif) 처리하더라
도 나중에는 지저분해져 기독성이나 유지관리측면에서 문제가 생기는 경우
가 있을 수 있습니다. S/W 공학이나 다른 설계에 관한 책들에는 모듈화에
대해서 설명이 나와 있습니다. 모듈화나 기능 설계에서 주창하는 것은 말
그대로 디자인이죠. 저는 님에게 조금 더 명확한 소스 모듈화를 위해 Ada
package 방법론 내지는 소스 의존성에 관하여 대충 DFD 라도 그려보고 조
금 더 모듈화를 해보라고 권하고 싶군요. 아님 비슷한 규모나 성격을 가
진 다른 소스화일들을 참조하시거나! 결국 소스 모듈화라는 것은 개발중에
도 변경 될 수 있는 것이지만 처음부터 삐걱거리면------ ^_^.
그리고 익숙해지신다면 이건 코딩 스타일 및 경험으로 처리될 수도 있는
문제인것 같군요. 미국이나 유럽 쪽 개발자들의 개발방식도 사실은 전체
프로세스마다 구조가 약간씩 변경 되는 일도 벌어지거든요. 그리고는 이러
한 아키텍츄어로 가져간다를 보여줍니다. 말 그대로 살을 붙여 나가는 식
의 일은 처음부터 모든 걸 예측한다는 건 불가능 하죠.
조금이라도 도움이 됐으면 좋겠네요.
Re: 경험많은 개발자들의 조언을 구합니다..
괴짜포럼에 올려진다면 다시 올리도록 하고 일단 제가 쓰던 방식을
알려 드립니다.
첫번째,
모듈화를 진행했을 때, 전역으로 쓸 함수인지 프로그램의 일부분에
의존할 함수인지는 구분해야 합니다.
한개의 모듈에 의존할 함수라면 그 모듈에 의존하는 함수끼리 모읍니다.
그화일은 한개가 될 수도 있고, 두개가 될 수도 있고, 이를 더욱 세분화하
여 표시할 수도 있지요. 일단 한 묶음으로 처리합니다.
프로젝트이 작다면 이정도에서 모든 것이 처리 될 수 있지만,
프로젝트가 크다면 이를 다시 모듈의 세부기능별로 분류합니다.
그리고 위의 내용들은 다음 사항을 고려해서 위의 분류상태를 유지한상태
에서 재분류할 수도 있습니다.
해당하는 함수들이 한두번정도 호출될지 아니면 매우 빈번히 호출될 지를
고려합니다.
여러모듈에 걸쳐 호출되기는 하지만, 호출되는 빈도가 상당히 낮다면 일
단 모듈과 의존하는 부분에 각각 중복해서 넣습니다. 각각 중복된 내용들
을 잘 관리만 한다면(무결성을 지켜야 합니다.) 속도나 관리측면에서 훨씬
나은 점을 가지고 있습니다.
때로는 모든 것을 통합하는 것이 프로그램을 유지보수하는 데 문제점을 발
생 시킬 수도 있고, 버그가 나올 가능성도 높습니다.
즉 상호참조부분을 가장 줄이는게-독립성을 극대화시키는게- 좋은 프로그
램이겠죠. 하지만 독립성을 너무 강조하다보면 프로그램자체의 오버헤드가
커지게 됩니다. 컴퓨팅 리소스의 낭비를 일으키고, 각 소스간에 관리를 어
렵게하죠... ^^;
하지만 .. 자유게시판에 쓰기에는... ^^;
넘 골치 아픈 문제다... 요즘그렇지 않아도... 머리아픈데... 허걱...
난.... 난...
트래비스 wrote..
어떤 프로젝트에 참여하고 있는데.. 여러명이서 같이 개발하고
있습니다..
함수로 모듈화하고, 자료구조도 잘 정의해놓고 이런것까지는
명확합니다.. 문제는 그런 함수와 자료구조를 어떤 소스파일에
분산시켜 담아놓느냐 하는건데.. 이게 장난이 아니더라구요.
아무리 독립적으로 각 모듈을 분산시키려고 해도 cross 참조를
하게되는 경우를 피할수가 없더군요..
그래서 #include 를 하나만써도.. 그 헤더파일이 참조하고 있는
다른 헤더파일까지 같이 참조하고.. 또 참조된 헤더파일 내부의
#include가 또다른 헤더를 참조하고...그래서 각 모듈이 헤더를
참조하려면 쓸데없는것까지 다 끌고 들어오게 되거든요..
모듈로 나누는것과 나눠진 모듈을 독립된 파일에 담는것은
매우 다른 문제라는걸 이번에야 깨닫게 되었습니다..
모듈로 잘 쪼개진.. 1000개의 함수가 있다 하더라도
하나의 헤더파일과 하나의 소스파일에 모두 담아낼수가
있고, 혹은 100여개의 파일에 분산시킬수도 있겠죠..
그래서 그건 설계와는 좀 다른 문제인것 같더군요..
이에 대해 조언이나 잘 나와있는 책이 있다면 추천을 부탁
드립니다. 저한테 sw공학책이 있긴하지만.. 독립된 파일에
소스를 모듈별로 분산시켜 담는방법에 대해 언급한곳은 찾아볼수가
없었습니다. 모듈을 파일에 나눠담는 전략에 대한 노하우를
한수 가르쳐 주십시오..
답장은 geekforum으로...
이 글에 대한 답장은 geekforum으로 해 주시기 바랍니다....