설계를 어떻게 해야하는것인가요?

gurumong의 이미지

C언어와 윈도우즈 API를 이용해서 테트리스를 만드려고 생각중입니다
어차피 공부삼아서 하는거니 제대로 하기위해서
설계부터 시작하고 모든것을 문서화해서 만들고자 하는데요

이 설계라는것을 어떻게 해야 바른건지 또 어떤 방법으로 할수있는지 잘 모르겠습니다
혼자 생각하기로서는 테트리스를 기능적으로 분리하고
그것을 각각의 하나의 함수로 보고 서로 호출하고 호출되는 관계로 생각했더니
왠지 어지럽게 섥혀있는 거미줄이 떠오릅니다;

다시 생각을 바꿔서 테트리스의 여러 요소를 작게 나누어보고
(키보드 입력, 그래픽 출력, 블럭과 블럭 몇개가 모여 만드는 여러 모양?, 시간 등등)
이것들을 다시 더 큰 요소로 묶어보려고 했지만;;
블럭의 움직임은 키보드 입력과 연관이 있고
또 키보드 입력에 따른 블럭의 회전 속도등도 고려해야하고
그렬려면 여러개의 블럭 + 시간 + 키보드 입력이 묶여져야하는데
이건 말이 안되는것 같구요
그렇게 생각대로 자연스럽게 더 큰 요소로 묶여지지 않아서 이것또한 잘못된것 같은데요

도대체 설계라는것은 어떻게 해야하는것인가요?
프로그래밍 초보로써 이러한 생각을 해보는게 많이 이른것 같지만
이미 고민은 시작되어버려서 많이 답답하네요

lovian의 이미지

제가 생각하는 설계란, 예측 혹은 계측이 아닐까 합니다.
규모가 있는 것을 만들어 내기 위해서는 피하기 힘든 과정의 하나겠죠.

그렇다고 누구나 첫술에 설계를 만족스럽게 하기는 힘들테죠.

각 기능을 역할 분담할 녀석으로 쪼개고, 그 역할을 가진 부분이 정확히 무엇을 어디까지 할 수 있을지에 대해서 명확하게 한정 짓는 것이 중요하겠지요.

여기서 분담하고 한정짓는 근거가 되는것이 설계나 개발의 경험이라고 생각합니다.

결국 어떠한 결과물이 나올지라도 해보는 것과, 남의 결과물을 참고해보는 것(혹은 다른 견해를 가진 사람과의 토론)의 연속이 아닐까하네요.

쓰고 보니 너무 뻔한말을.. ㅠㅠ

-----------------
한글을 사랑합니다.

snowall의 이미지

설계 없이 만들 수 있으면 일단 만들어 보세요. 그 다음, 만들어진 결과물을 남들이 알아볼 수 있게 잘 정리하면 설계가 어떻게 되어있는지 감이 올거예요.

피할 수 있을때 즐겨라! http://melotopia.net/b

shint의 이미지

1. 브라우저
2. 플래시

이런것들을 보면 데이터를 화면에 표시. 반응(기능)
하는것들이 매우 동적으로 가능하죠.

게다가 화면설계도 자유롭고. 도구'도 편리하구요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

semmal의 이미지

어떻게 설계를 시작하든, 한번에 끝을 보려고만 안하면 됩니다.

설계를 어떻게 하든, 일단 설계대로 만들어보면 부족한 점이 보이기 마련입니다.

그럴 때 다시 재설계를 하면 되는 것이지, 모든 것을 처음부터 한번에 완벽히 설계 하려다가는,

무엇이 문제인지 영원히 깨닫지 못하는 무한반복의 저주에 빠질 수 있습니다.

------------------------------
How many legs does a dog have?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.