[꼭 좀 봐주세요] 개발 방법론에 대한 질문 .. 3 가지 ........ ㅜㅜ

naddolki의 이미지

8 bit 마이컴을 다루고 있는데요 .

이 분야로 .. 실습 프로젝트를 할 땐 ..
객체지향 언어보다는 .. 절차지향 언어를 사용해 ..
소위 말하는 .. bigbang 식으로 개발해 왔는데요 ..

소프트웨어 규모가 커지다보니 ..
bigbang 식의 방법이 더는 통하지 않더라구요 .

그래서 .. 개발 방법론에 대해 공부를 해보려고 ..
요즘 O'Reilly 에서 펴낸 Head First - Software Development 책으로 학습을 하고 있습니다 .
근데 .. 그 책으로 학습하다 보니 .. 몇 가지 궁금한 점이 생기더군요 .

그래서 좀 여쭤볼려고 .. 개발자 분들이 많은 .. 이곳을 찾게 되었습니다 .
궁금한 점 몇 가지만 여쭙겠습니다 .

질문1 . Head First - Software Development 에서는 객체지향 언어(Java) 를 기준으로 해 ..
개발 방법을 .. 소개하고 있는데요 ..
C 나 어셈으로 프로젝트를 진행할 때도 .. 책에서 소개한 대로 적용할 수 있나요 ?

질문2 . 네이버에서 검색해 보니 .. 개발 방법론에는 여러가지가 있더라구요 .
CDB, 애자일(XP, RUP, 스크럼 ..) 등등 ..
대충 개요만 .. 훑어 보았는데 .. 실례 없이 두루뭉술하게 설명된 이론들 뿐이라 ..

정말 머리 아프더군요 .. ^^ ;;

모든 방법론을 알아야 하는 거라면 ..
엄청난 에너지와 시간을 소비해야 할 것 같던데요 ..

객체지향 언어로 개발할 경우와 ..
절차지향 언어로 개발할 경우 ...

각각에 해당하는 ..
현실적으로 추천할 만한(대세인) 개발방법론을 하나씩만 알려주세요 .
책을 소개해주시면 더 감사하구요 .. 하하 ^^ ;;

질문3 . Head First - Software Development 에서 다루고 있는 개발 방법론은 ..
구체적으로 어떤 방법론에 속하나요 ?
(가령 .. CDB, 애자일[XP, RUP ..] 등 ....)
구체적인 이름이 궁금합니다 ..

............................
읽어주셔서 대단히 감사합니다 .
............................

jeongheumjo의 이미지

1.
C 나 어셈을 가지고 OOP 프로그래밍 한다는 얘기 못들어봤습니다.
(C 는 OOP로 사용하는 방법이 있는 것도 같습니다. 아주 고급 기법일테지요...) 어셈은 전혀 가능성 없습니다...(제가 아는 한)

2. & 3.
제가 질문을 한눈으로 봤네요...
같은 책이 아니군요...
제 답은 질문 2에 대한 것이라고 봐주세요..

같은 책 Head First 디자인 패턴 책을 귀중히 여기는 입장에서 제가 겉으로만 봐온 내용들을 소개할게요..
어떤 책에서 개발 방법론으로 XP + 디자인패턴 + 리팩토링 을 꼽은 걸 봤습니다.

XP ..........는 업무 진행 방법에 관한 충고들을 모아놓은 것이구요.
디자인 패턴..은 재활용 가능하고 논리적이고 설명적인 코딩을 할 수 있는 SW 구조 작성 방법에 관한 좋은 사례들을 모아놓은 것.
리팩토링.....은 코드를 유지보수 그리고 개선 하는 좋은 방법들을 모아놓은 것.

이라고 해요..
리팩토링과 XP의 정의에 대해서는 제가 잘 몰라서 의미가 조금 틀릴 수도 있습니다.

모두 코드를 잘 짜는 경험적 좋은 방법들을 모아놓은 것입니다.

그 중 디자인 패턴이 가장 중요한 것 같구요. 다른 것들은 그저 참고만 해도 될 것 같습니다.

절차적 방법과 OOP 는 적용하는 분야에 따라 선택해야 한다고 봐요.

코드 양이 많고 복잡하고 유지보수 및 개선이 계속 이루어져야 하는 경우는 OOP 를 쓰는 것이 좋을 것 같고요..
그렇지 않고 단순하고 간단하고 유지보수를 할 필요가 별로 없는 코드는 절차적으로 짜게 되는 것 같아요.

하지만 절차적/OOP적 코드의 적용분야는 프로그래머의 재주에 달려있기도 합니다. 아무리 방대한 구현 업무를 앞에 놓고도 프로그래머가 OOP에 익숙치 않으면 어쩔 수 없이 절차적 방식을 사용하게 되고 그런 경우가 허다합니다.

추천할 만한 책은 Head Fist Design Patterns 입니다.
Java 예제로 설명하지만 검색해보시면 C++ 예제롤 오픈소스로 제공하는 곳이 있습니다.

naddolki의 이미지

아. 네 .. 감사합니다 .

head first 디자인 패턴은 소장하고 있고 ..
전에 읽었던 책이네요 ..
리팩토링은 Java 로 배우는 리팩토링(?) 인가 하는 책으로 ..
대충 공부했구요 ..

프로젝트에 적용해 보진 않았지만요 .. ^^ ;;;

사실 .. OOAD 쪽으로는 ..
책을 몇 권 보아 왔어요 ..

OOAD 쪽으로는 생각보다 ..
시중에 나와 있는 책이 많아서요 .

혹시 ..
"구조적 분석 & 설계" 에 관한 실무 지침서 같은 걸 ..
아시는 게 있으면 .. 추천 좀 받고 싶어서 .. 질문 올려 보았어요 .. ^ ^

물론, "소프트웨어 공학" 이나 .. "시스템 분석 및 설계" .. 책을 보면 ..
이에 대해서도 다루고 있긴 하지만 ..
너무 이론적인 데다 .. 구체적이라기보단 두루뭉술한 느낌이어 ..
실제 프로젝트에 적용하기가 힘들더라구요 .

그래서 .. 시중에 많이 나와 있는 OOAD 책처럼 ..
실무 지침서로 활용할 만한 ..

"구조적 분석 & 설계" 관련 서적이 아니면 안 될 것 같아요 ㅠㅠ

설연희 입니다 ^ ㅡ^ㅋ

NN의 이미지

저도 소싯적 나름 개발방법론을 공부해봤는데...

공부까지 할 내용은 아닙니다.

참고로, 책 읽는것과 공부하는건 다른겁니다. 이거 잘 아셔야 합니다.
공부라는게 지식으로 익히는것뿐 아니라 몸으로 체득하는것까지 광범위하게 포괄하기 때문에...

특히 개발방법론쪽 공부는 실전을 경험해보지 않고 텍스트만 줄줄 꿰는건 거의 소용이 없다고 해도 과언이 아니죠.
아무리 개발방법론을 줄줄 꿰고 있더라도 실전서 약하면 헛방입니다.

그러니 책은 참고용으로 보시고... 실전 코딩능력을 향상시키시길 바랍니다.

일단 눈에 보이는 어떤것이든 측정부터 시작하세요. 코드 라인수부터 시작해서 일하는 시간이나 함수의 갯수
, 심지어 쉬는시간까지 닥치는 모든걸 정량화 하세요.

그리고 프로젝트 끝낸뒤에 통계를 냅니다.
뭘 잘했고, 뭐가 잘못되었고 하는게 반드시 나오게 됩니다.
그걸 기반으로 과거를 반성 해 봅니다.

다음번부터는 방법을 달리해 이 과정을 반복합니다. 빅-뱅식에서 벗어나 iteration을 돌려보고
각 스텝을 계획적으로 통제하려고 해보세요. 각 과정에 대해서 마찬가지로 모든걸 정량화하시고요.
그렇게 해서 프로젝트 끝나고 또 통계를 내세요.

처음의 방법과 뭐가 같고/다른지가 나올것이고 어떤 부분이 더 나은지/못한지가 나올겁니다.
그게 그냥 말로 나오는게 아니라 data로 나와야 합니다.
이런식으로 각 프로젝트를 방법을 조금씩 달리합니다.

그렇게 한 너댓개 이상의 프로젝트를 끝마치고 나면...
자연스럽게 XP, RUP...뭐니 하는 각 방법론에서 얘기하는것들을 자신이 손수 재발견 하는때가 옵니다.

단지 개발방법론 책을 읽어보는건...이 시행착오를 조금 더 줄일 수 있도록 돕는것에 불과하고요.
시간이 걸리더라도 프로젝트를 이렇게 반성적으로 이끌고 나가면...방법론 전문가가 되는건 시간문제가 되죠.

개인적으로 저는 마틴 파울러같은 방법론 전문가보다는
에릭 레이몬드같은 실전 고수를 더 높게 칩니다.
(그런면에선 XP책을 보시는거 보단 차라리 레이몬드저 Art of Unix Programming을 보시는게 더 나을지도...)

괜히 이런저런 텍스트 보면서 방법론에 대한 헛바람으로 뇌를 더럽히지 마시고
실전에서 좀 더 강해질 수 있는 방법을 고민해보세요...

제 생각엔 이 세계에선 그 방향이 정답입니다.

꼬리 - 방법론 책을 보면서 두루뭉실하고 추상적인 느낌을 받으셨다고요...
정상적인 반응입니다. 원래 그런 책 저자들이 좀 그런 경향이 큽니다.
님 머리가 나빠서 그런게 아니라, 그 분들이 신선놀음을 좋아해서 그런거니까 너무 걱정 마세요.

일반적으로 그렇게 느끼는데는 두가지 가능성이 있습니다.
님이 아직 하수라서 해당 책을 읽어봐야 할 때가 아니거나...
혹은 책 내용이 이론적으론 그럴싸한데 실전과 전혀 상관이 없는 경우이거나....

몇년동안 맨몸으로 세차게 부딪혀보고 굳은살이 박히게 되면
둘 중 어떤 경우인지는 자연스럽게 나오게 될겁니다.

emptynote의 이미지

'신선 놀음'에 빵 터졌습니다. ^^ 정말 적절한 촌철 살인적 표현이네요.

emptynote의 이미지

개발 방법에 대해서 좋은 글과 책을 소개해 드리고자 합니다.

첫번째 "존재의바다" 님이 쓴 "글쓰는 프로그래머" 라는 블러그를 소개합니다.

참고 url : http://kldp.org/node/119150

"존재의바다" 님이 쓴 "글쓰는 프로그래머" 라는 블러그 url :http://swarchi.tistory.com/

블러그 보시면 "프로젝트 M을 논하다" 와

"소프트웨어 설계가 완벽할 수 없는 다섯 가지 이유" 부분이 있는데요.

꼭 읽어 보시기 바랍니다.

그리고 두번째로 "조엘온 소프트웨어" 책도 읽어 보실것을 권장해 드립니다.