Написание эффективных вариантов использования

При написании личных проектов, а также в работе я часто стараюсь продолжать текущую задачу, потому что либо я зацикливаюсь на том, что я думал, либо не думал обо всех случаях, которые могут возникнуть в будущем , Я думал, что, если перед кодированием чего-нибудь, что я делаю мозговой штурм, и пишу последовательность шагов, как я делаю в задачах алгоритма.

Я знаю, что он известен как «Случаи использования», но я думаю, что я действительно пойму, если я начну читать все книги на нем, я хочу что-то простое, но надежное, по крайней мере, для моего личного проекта. Я сделал некоторую домашнюю работу и, написав простой игрушечный проект, я хотел бы написать пример использования, который в основном состоит в том, как пользователь будет взаимодействовать с системой.

Вот он:

"""
Design a question and answer system which allows
user to see optional hints to each question and
let him assign score to each question answered.

The order of the question next time would depend
on the current scores.

UseCase:

1. User sees a welcome message and avalilable topics
2. User chooses the topic
3. A new session is started for the user
4. User sees a question on the selected topic
  4.1 User asks for hint by pressing '/h'
  4.2 User sees a hint
    4.2.1 User presses '/h', Repeat step 4.2
    4.2.2 User presses 'return' GOTO step 5
5. User is prompted to answer the question
6. User answers the question, presses 'return'
7. User sees the answer
8. User is prompted to give a score [1, 3]
7. Repeat steps 4-8 until there are no more questions
8. User sees the summary of questions and scores
9. User is asked if it needs to start another session
  9.1 User enters 'Y', Repeat steps 1-9
  9.2 User receives a goodbye message
10. End  

Requirements:

1. The user can choose topic
2. An user can see all its previous sessions
3. The user can stop and resume a session
4. The system should be designed in such a way that
   the order of the questions changes based on the
   user's last score for each question

"""

Мне нужно знать, есть ли нерелевантные /избыточные данные, которых можно избежать, и если есть какие-либо детали, которые можно добавить?

Является ли этот правильный подход к решению задач вообще?

Я планирую больше узнать о дизайне использования с использованием стандартных книг по этой теме, но я думаю, что это хорошая стратегия, чтобы узнать что-то новое, прежде чем погрузиться в детали.

3 голоса | спросил CodeYogi 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 16:04:28 +0300 2017, 16:04:28

2 ответа


2
  

Мне нужно знать, есть ли нерелевантные /избыточные данные, которых можно избежать   и если есть какие-либо детали, которые можно добавить?

Наверное, ничего лишнего, ничего не поймал на первый взгляд. Если все это имеет значение, или если что-то не хватает, зависит от того, что «эксперт по домену» или «пользователь» или любой другой заинтересованный сторонник такой системы может подумать об этом (но поскольку это ваш игрушечный проект, это просто до вас).

Чтобы сделать это более понятным: я могу представить себе другие функции, например, перемещение назад к прежним ответам, чтобы исправить их впоследствии, но если вам нужно или нужно их (или нет), вы должны решить сами. Я также могу представить, как оставить некоторые вещи для минимальной версии программы (например, «подсказки» или «скоринговые» функции), но вам нужно решить самостоятельно, если цель этого описания состоит в том, чтобы дать полный список потенциальных возможностей функции или частично список или минимальный список.

  

Является ли этот правильный подход к решению задач вообще?

Конечно, процесс разбивает сложную тему или вещество на более мелкие части, чтобы лучше понять ее " имеет хорошо известное имя, оно называется " Анализ ", см. Википедию . Я уверен, что вы слышали этот термин раньше.

В 2000 году Джоэл Спольский написал несколько коротких записей в блогах о том, как создавать «безболезненные функциональные спецификации» для разработки программного обеспечения, начать здесь или здесь , этот пример, вероятно, будет более полезен, чем все, что я могу вам сказать здесь, в коротком ответе.

ответил Doc Brown 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 16:32:03 +0300 2017, 16:32:03
1

Я хочу отметить один подход к использованию случаев.

Сначала попробуйте идентифицировать кандидатов объектов в вашем домене. Затем подумайте об их обязанностях, просто чтобы их усовершенствовать, чтобы понять, какие объекты вам действительно нужны. Затем нарисуйте семантическую сеть с внутренним отношения между объектом. Затем возьмите пару объектов и посмотрите, какие службы они добавляют к общей стоимости проекта. Подумайте о случаях использования, в которых они могут принять участие. Запишите их.

И на всякий случай две классические книги: Написание эффективных примеров использования от Alistair Cockburn и Истории пользователей, используемые для разработки Agile Software от Майка Кон.


Обновить : есть очень подходящий пример, который я разложил только в смежном вопросе . Главный момент - тот, который был отмечен Кристофом в комментарии: сначала начните понимать свой домен.

ответил Zapadlo 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 21:20:15 +0300 2017, 21:20:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132