프로그래밍 할 때 코딩을 하기 전의 기획 단계에서

leonid의 이미지

기획을 요령없게 해서 그런지, 이번에 간단한 프로그램인데도 불구하고

현재 코드를 단 한줄도 짜지 않은 상태에서 삼일을 보내버렸습니다.

그렇다고 해서 제대로 생각해보지 않고 바로 코딩에 들어가면

반드시 어느 시점에서 막히더군요. 그 때부터 소스 뜯어고치는 데에 다시 며칠을 낭비하게 됩니다.

프로그램 동작을 어느 정도까지 미리 기획하고 코딩에 들어가야 할까요?

여러분의 노하우를 알려주세요.

익명사용자의 이미지

기획이라.. 기획은 개발자의 범위 이상이기 때문에, 개발 방법 측면에서만 간략히 한번 이야기 해볼께요.

첫째 가장 우선시 되는건 내가 만들고자 하는넘이 무엇인지 정의하는 겁니다.
용도가 무엇이냐, 누가 쓰는 것이냐, 이넘이 수행해야 할 작업은 어떤것 들이며 어느 범위까지 수행해야 하느냐?

그리고, 좀더 세부적으로 파악해 봅니다.
수행해야 할 작업들의 전체 목록을 추려봅니다.
작업을 처리할 순서를 파악해 봅니다.
어떻게 모듈화 할지 어떤 구조를 사용할지 결정합니다.
사용될 툴과 기술들도 파악해 냅니다.

그러면 이제, 프로그램 설계 작업을 합니다.
사용자 인터페이스를 계획/디자인 합니다.
모듈을 세분화하고 구조 및 그 처리방법을 도출해 냅니다.

자 이제 앞에서 파악된 요구사항에 따른 설계를 바탕으로 코딩에 들어갑니다.

가장 중요한건 무엇을 만들 것인지 이넘이 해야할 작업을 정하는 것이 가장 중요하리라 봅니다.

간단히 요구사항 분석 및 설계의 개론을 이야기 했는데요. 사실 단계가 그렇게 중요한건 아닙니다. 서로 얽히고 변경된고 하기 때문이지요. 개발 방법론이 있지만 이는 방법론일 뿐이고, 실제 이를 적용할 사람과 개발되어 나올 결과물의 특성에 따라 방법론은 바뀌게 됩니다. 방법론의 기본을 익히고 적용하시되, 상황과 경험에 따라 적절히 조화롭게 진행하면 됩니다.

경험이 꾀나 중요하니 적당히(?) 생각하시고 코딩하세요. 하다가 안되면 다시 시작하시면 됩니다. ^^;

leonid의 이미지


그렇군요. 역시 뭐든 지나친건 안좋은 것 같습니다.

제가 너무 어렵게 생각한 것 같네요. ^;

익명사용자의 이미지

분석/설계/구현 까지만 이야기 했지만, 테스트와 유지/개선/관리가 또 개발 사이클의 반 이상을 차지합니다. 무시하면 안되는 부분입니다. 앞부분만 이야기 해서 추가 코멘트를 답니다. (질문이 약간 바뀌셨네요 ㅎㅎ)

leonid의 이미지


질문 써놓고 보니 너무 짧고 성의 없어보여서

몇줄 더 썼습니다. ㅎㅎ

ㅡ,.ㅡ;;의 이미지

저는 주로 반정도 씁니다.
(아무것도 코딩하지 않고 흘려보내는기간이 이중반이고 나머지는 약간의 실험적인코딩)

그리고 나머지 반의 반은 개발하고 남은 반의반은 버그잡거나 약간 여유를 갖거나..

간혹 개발기간 반이나 지났는데 얼마나 했나라고 물어볼때 아무것도 보여줄게 없어 당황스러을때가..ㅎㅎ
그러다가 개발기간에 예상외의 일이 발생해서 더욱당황스러울때도..
그땐 불이나게해야죠...

----------------------------------------------------------------------------
C Library Development Project


----------------------------------------------------------------------------

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.