나빌레라의 프로그래밍하기 #5

나빌레라의 이미지

5. 시나리오
기획자가 있다면 멋드러진 기획서와 스토리보드, 유저 시나리오등을 만들어서 설계자한테 보낼테고 설계자는 이를 바탕으로 유즈케이스와 객체 및 시퀀스 모델링등을 할 것이다. 그리고 상세 설계에 들어가서 자료구조와 메소스(함수) 수준의 설계가 이뤄지고 이를 바탕으로 본격 코딩 작업이 들어간다. 코딩이 어느정도 완료 되면 때로는 설계 변경을 할 때도 있고, 디버깅 및 테스트를 거친후에 릴리즈하게 된다.

하지만, 지금은 나 혼자 다 한다. 기획도 설계도 코딩도 테스트도 디버깅도 혼자 해야 한다. 지난 글 내용까지 준비 작업이었다면 이번 글부터 본격적으로 개발 작업을 진행하게 된다. 앞에서도 말했듯 개발 작업이라는 것은 소스코드를 만들어내는 코딩 작업만 말하는 것이 아니라 기획, 설계, 테스트, 디버깅을 모두 포함하는 장대한 작업이다. 난 전문 기획자가 아니기 때문에 언제나 항상 내 나름의 방식으로 기획을 진행했다. 물론 회사에서 돈을 벌기위한 프로그래밍을 진행할 때는 전문 기획자가 기획한 기획 문서가 있으므로 이를 검토하고 다른 개발자들과 토론하여 승인하는 일정도로 기획에 대한 작업은 끝낸다. 하지만, 지금은 돈을 벌지 않는 프로그래밍이기 때문에 어떻게든 기획의 단계를 수행해야 한다. 내가 주로 애용하는 기획은 시나리오를 작성하는 것이다. 시나리오라고 해서 뭐 대단한 것이 아니다. 그냥 메모장같은 간단한 에디터에 내가 만들고자 하는 프로그램의 동작 방식 및 유저 액션을 쭉 쓰는 것이다. 그렇게만 해도 그 안에서 상세 설계를 위한 많은 힌트 수준까지 얻어 낼 수 있다. 생각보다 꽤나 유용한 방식이다.

지난 글에서 나는 웹서비스를 만들겠다고 했다. 내가 생각하는 웹 서비스의 시나리오를 지금부터 작성하겠다.

1. 사용자는 서비스에 접속한다.
2. 그냥 접속하면 게시판의 글을 읽을 수 있지만, 글을 쓸 수 없다.
3. 가입을 할 수 있다. 가입할 때 받는 정보는 아이디, 비밀번호, 이메일, 닉네임이다. 그외 개인정보는 받지 않는다.
4. 가입하고 나면 로그인 할 수 있다. 로그인한 사용자는 로그아웃 할 수 있다.
5. 로그인 하고나면 글을 쓸 수 있다.
6. 글은 두 가지로 구분 된다. 본문 글, 댓글.
7. 본문 글은 제목과 내용을 구분하지 않는다. 그냥 죽 쓴 글이 내용이 된다. 본문에는 길이 제한을 둔다. 한 150자 정도.
8. 댓글도 제목과 내용을 구분하지 않는다. 그냥 본문 글 밑에 오래된 댓글이 위로 오고 아래로 갈 수록 최근 글이 나오도록 화면에 뿌려 준다.
9. 본문을 쓰는 글쓰기 폼은 게시판 리스트의 맨 위에 있다.
10. 댓글을 쓰는 글쓰기 폼은 각 본문의 댓글 리스트 맨 아래에 있다.
11. 본문과 댓글 모두 글을 쓴 사람은 삭제를 할 수 있다.
12. 글을 쓰고 나서 5분 안에는 수정을 할 수 있다. 5분이 지나면 수정을 할 수 없다.

여기까지가 기본 기능에 대한 시나리오다. 여기까지만 했더니 별 특색없는 그냥 게시판이다. 무언가 재미있는 기능을 넣고 싶다.

곰곰히 생각해보다가 남녀간의 만남을 주선하는 사이트를 만들어보면 어떨까하는 생각을 해 봤다. 관련 시나리오를 추가한다.

13. 게시판은 남자게시판 여자게시판으로 나눈다.
14. 가입시에 사용자 정보에 성별 정보를 추가로 받는다.
15. 남자는 남자게시판에만, 여자는 여자 게시판에만 본문을 쓸 수 있고, 댓글은 자유롭게 쓸 수 있다.
16. 본문을 쓰면 10점, 댓글을 달면 5점을 부여한다. 각 가입자는 활동점수를 유지한다.
17. 남자가 여자 게시판에 글을 쓰려면 10000점을 소비한다. 반대도 마찬가지
18. 서로간에 괜찮아 보이는 사람이 있으면 데이트를 신청할 수 있다. 물론 이성끼리만 가능하다.
19. 데이트 신청을 하고 신청 받은 사람이 수락하면 두 사람만 공유할 수 있는 타임라인 게시판이 생성된다.
20. 문자를 주고 받는 것 처럼 두 사람이 글을 써서 대화를 주고 받을 수 있다.
21. 현재 데이트를 진행중인 사람에게는 데이트 신청을 할 수 없고, 데이트를 진행중인 사람은 다른 사람에게 데이트를 신청 할 수도 없다.

여기까지 21개의 시나리오가 도출되었다. 이정도만 되어도 충분한 자료가 나온것 같다. 이제 이 시나리오를 기반으로 해서 동적 객체와 정적 객체를 도출 해 낼 수 있다. 동적 객체는 클래스의 메소드와 같은 오퍼레이션으로 구현이 될 것이고, 정적 객체는 자료구조나 DB 테이블로 구현이 될 것이다.

====
이 글은 CC이지만 다른곳에 불펌은 하지 말아 주세요. KLDP와 raonlife에(http://raonlife.com/navilera/blog/view/55/)만 연재합니다. 다른 곳에 연재되어 있는 것은 불펌이오니 저에게 알려주세요.

댓글 달기

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