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

나빌레라의 이미지

6. 시나리오 분석
컨셉은 잡았지만 이제 프로그램을 어떻게 만들고 어떤식으로 설계해야 할지 모르겠는 사람들에게 내가 추천하는 방식이 시나리오 방식이다. 내가 만들고자 하는 프로그램이 어떤식으로 돌아가는 지를 그냥 머릿속에서 떠오르는 대로 아무런 부담도 제약도 없이 적어 놓고서 그것을 분석하면 된다. 내가 머릿속에 떠오르는대로 마구잡이로 적어놓은 시나리오는 저번에 쓴 글에 있다.

이제 그 시나리오를 하나하나 분석해 보겠다. 분석의 방법은 간단하다. 시나리오를 하나씩 읽으면서 정적객체와 동적객체를 분리해 낸다. 정적객체와 동적객체는 우리가 쓰는 언어의 명사와 동사를 생각하면 된다. 생각보다 아주 쉬운 작업이다.

1. 사용자는 서비스에 접속한다.
명사: 사용자, 서비스
동사: 접속하다.

2. 그냥 접속하면 게시판의 글을 읽을 수 있지만, 글을 쓸 수 없다.
명사: 게시판, 글
동사: 접속하다, 읽다, 쓰다, 쓸 수 없다.

3. 가입을 할 수 있다. 가입할 때 받는 정보는 아이디, 비밀번호, 이메일, 닉네임이다. 그외 개인정보는 받지 않는다.
명사: 아이디, 비밀번호, 이메일, 닉네임
동사: 가입하다, (정보를)받다.

4. 가입하고 나면 로그인 할 수 있다. 로그인한 사용자는 로그아웃 할 수 있다.
명사: 사용자
동사: 가입하다., 로그인하다, 로그아웃하다.

5. 로그인 하고나면 글을 쓸 수 있다.
명사: 글
동사: 로그인하다, (글을)쓰다.

6. 글은 두 가지로 구분 된다. 본문 글, 댓글.
명사: 본문, 댓글
동사: 구분하다

7. 본문 글은 제목과 내용을 구분하지 않는다. 그냥 죽 쓴 글이 내용이 된다. 본문에는 길이 제한을 둔다. 한 150자 정도.
명사: 본문, 제목, 내용, 길이, 150자
동사: 구분하지않는다, 제한한다.

8. 댓글도 제목과 내용을 구분하지 않는다. 그냥 본문 글 밑에 오래된 댓글이 위로 오고 아래로 갈 수록 최근 글이 나오도록 화면에 뿌려 준다.
명사: 댓글, 제목, 내용, 위, 아래, 최근글, 화면
동사: 구분하지않는다, 오래되다, 뿌리다.

9. 본문을 쓰는 글쓰기 폼은 게시판 리스트의 맨 위에 있다.
명사: 본문, 글쓰기폼, 게시판리스트, 맨위
동사: 쓰다, 있다.

10. 댓글을 쓰는 글쓰기 폼은 각 본문의 댓글 리스트 맨 아래에 있다.
명사: 댓글, 글쓰기폼, 본문, 댓글, 리스트, 맨아래
동사: 쓰다, 있다.

11. 본문과 댓글 모두 글을 쓴 사람은 삭제를 할 수 있다.
명사: 본문, 댓글, 글쓴사람
동사: 삭제하다.

12. 글을 쓰고 나서 5분 안에는 수정을 할 수 있다. 5분이 지나면 수정을 할 수 없다.
명사: 글, 5분
동사: 쓰다, 수정하다, 수정할수없다.

13. 게시판은 남자게시판 여자게시판으로 나눈다.
명사: 게시판, 남자게시판, 여자게시판
동사: 나누다.

14. 가입시에 사용자 정보에 성별 정보를 추가로 받는다.
명사: 사용자 정보, 성별 정보
동사: 가입하다, (추가로)받다.

15. 남자는 남자게시판에만, 여자는 여자 게시판에만 본문을 쓸 수 있고, 댓글은 자유롭게 쓸 수 있다.
명사: 남자, 남자게시판, 여자, 여자게시판, 본문, 댓글
동사: 쓰다.

16. 본문을 쓰면 10점, 댓글을 달면 5점을 부여한다. 각 가입자는 활동점수를 유지한다.
명사: 본문, 10점, 댓글, 5점, 가입자, 활동점수
동사: 쓰다, 달다, 부여하다, 유지하다.

17. 남자가 여자 게시판에 글을 쓰려면 10000점을 소비한다. 반대도 마찬가지
명사: 남자, 여자, 게시판, 글, 10000점, 반대
동사: 쓰다, 소비하다, 같다(==마찬가지다)

18. 서로간에 괜찮아 보이는 사람이 있으면 데이트를 신청할 수 있다. 물론 이성끼리만 가능하다.
명사: 괜찮아보이는사람, 데이트, 이성
동사: 신청하다. 가능하다.

19. 데이트 신청을 하고 신청 받은 사람이 수락하면 두 사람만 공유할 수 있는 타임라인 게시판이 생성된다.
명사: 데이트, 신청받은사람, 신청한사람, 타임라인게시판
동사: 신청하다. 수락하다. 공유하다. 생성하다.

20. 문자를 주고 받는 것 처럼 두 사람이 글을 써서 대화를 주고 받을 수 있다.
명사: 문자, 글, 두 사람
동사: 주고받다. 쓰다, 대화하다

21. 현재 데이트를 진행중인 사람에게는 데이트 신청을 할 수 없고, 데이트를 진행중인 사람은 다른 사람에게 데이트를 신청 할 수도 없다.
명사: 현재, 데이트, 사람, 다른사람
동사: 진행중이다. 신청할수없다.

여기까지 내가 전에 썼던 시나리오에 대한 동사, 명사 분리작업을 진행했다. 내가 국어를 조금더 진지하게 공부했다면 더 예쁘게 분리했겠지만, 나는 그저 뼛속 깊이 개발자일 뿐이다. 내가 할 수 있는 한 최대한 열심히 언어적 작업을 했다. 만약 내가 아닌 다른 사람이 이 작업을 진행했다면 조금 다른 결과가 나왔을 것이다. 그래서 시나리오는 최대한 많이 만들고 그에 대한 동사, 명사 분리작업을 한다면 여라 사람들이 작업을 한다고 해도 중복되는 것을 제거했을 때 비교적 비슷한 결과들이 도출 된다. 이 글에서는 이해를 돕기 위해 21개의 시나리오만 도출했지만 원래는 더 자세하고 많이 도출하는 것이 좋다.

동사와 명사를 분리한 자료는 앞으로 프로그램을 설계해 나가는데에 아주 중요한 자양분이 된다. 그러므로 이 작업은 생각보다 많이 중요한 작업이다. 명심하길 바란다. 최대한 많은 시나리오와 최대한 성심성의껏 분리한 동사와 명사.

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

댓글

Fe.head의 이미지

잘보고 있습니다.
개인적으로 기대하고 있어요^^

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

gurugio의 이미지

사용 시나리오를 개발 언어로 변환하는 일이 참 어려운것 같습니다.
점점 개발 자체보다는 요구사항 분석, 설계 등이 더 고민된다고 할까요

명사와 동사라면 데이터와 코드에 매칭될까요?
잘 보고 있습니다 ;-)

댓글 달기

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