Compare commits

..

9 Commits

Author SHA1 Message Date
IO-23 Andrii Bodnar f5abbf5274 оновлення гілки 2024-04-20 11:38:01 +03:00
ІО-23 Шмуляр Олег c3bbc47f6b Merge pull request 'Лаб №2: додав опис системи за критерієм функціональності' (#25) from shmuliar into master
Reviewed-on: #25
Reviewed-by: IO-23 Andrii Bodnar <bodnarandrew123@gmail.com>
2024-04-14 18:51:58 +03:00
ІО-23 Шмуляр Олег 86f27e99fd Оновив гілку для злиття 2024-04-14 18:48:08 +03:00
ІО-23 Шмуляр Олег 0f68887e2f Merge pull request 'Лаб2: додав use-case-файли' (#26) from shmuliar-use-case into master
Reviewed-on: #26
Reviewed-by: IO-23 Andrii Bodnar <bodnarandrew123@gmail.com>
2024-04-14 18:46:07 +03:00
ІО-23 Шмуляр Олег 5da6368aae лаб2: додав папку готових таблиць use-case-ів до .gitignore 2024-04-04 16:15:19 +03:00
ІО-23 Шмуляр Олег f2751a8604 лаб2: додав скрипти для зручнішої роботи з use-case-таблицями 2024-04-04 16:13:40 +03:00
ІО-23 Шмуляр Олег a53cdb334d лаб2: додав 12 файлів use-case-ів 2024-04-04 16:12:45 +03:00
ІО-23 Шмуляр Олег 05f9376a90 лаб2: додав підтримку аргументу --destination у програму для генерації таблиць та покращив її вивід 2024-04-04 16:11:33 +03:00
ІО-23 Шмуляр Олег efe128fd59 лаб №2: додав опис системи за критерієм функціональності 2024-03-24 18:37:14 +02:00
17 changed files with 197 additions and 6 deletions

3
.gitignore vendored
View File

@ -102,3 +102,6 @@ dist
# TernJS port file
.tern-port
# Generated tables for use-cases
utils/table-generator/tables/

View File

@ -105,7 +105,44 @@
## Функціональність
*[Functionality (функциональні вимоги)]*
Наша система спрямована, в першу чергу, на взаємодію з користувачами.
***Користувач** - це особа, що взаємодіє із системою.*
стема розділяє користувачів на дві категорії:
- гість
- авторизований користувач
***Гість** - це користувач, що не пройшов ідентифікацію в системі. Такого користувача не можна зіставити з жодним обліковим записом.*
Гість може:
- створити обліковий запис
- пройти ідентифікацію в системі
- пройти анонімне опитування
***Зареєстрований користувач** - це користувач, котрий успішно пройшов ідентифікацію в системі. Такого користувача можна однозначно зіставити з обліковим записом, що наявний у системі.*
Зареєстрований користувач може:
- редагувати властивості свого облікового запису
- видалити свій обліковий запис
- скинути дані про ідентицікацію в системі
- створити опитування
- відредагувати своє опитування
- видалити своє опитування
- призупинити своє опитування
- продовжити своє опитування
- переглянути властивості свого опитування
- переглянути результати свого опитування
- пройти анонімне опитування
- пройти поіменне опитування
*[Респондент](https://slovnyk.ua/index.php?swrd=%D1%80%D0%B5%D1%81%D0%BF%D0%BE%D0%BD%D0%B4%D0%B5%D0%BD%D1%82) - той, хто відповідає на питання анкети; опитуваний.*
***Опитування** - це перелік запитань, кожне з яких передбачає обов'язкову або необов'язкову відповідь. Кожна відповідь має визначений тип.*
***Анонімне опитування** - це опитування, відповідь на яке може не містити інформації про обліковий запис респондента (&#42;респондент все одно може вирішити надати таку інформацію).*
***Поіменне опитування** - це опитування, відповідь на яке обов'язково містить дані про обліковий запис респондента.*
## Практичність

View File

@ -1,6 +1,7 @@
#!/bin/python3
import sys
import os
# magic values
NO = 0
@ -26,7 +27,7 @@ def convert_usecase_v1(filename, data):
merged_lines = []
for i in split_raw_lines:
if i[0] == "":
if i[0].replace(" ", "") == "":
merged_lines[-1][1] += "<br>" + i[1]
else:
merged_lines.append(i)
@ -68,9 +69,10 @@ if __name__=="__main__":
usecase_formatting = AUTO
verbose = AUTO
process_table_files = AUTO
file_output_path = None
# 1 pass (argument harvest)
for i in sys.argv[1:]:
for n, i in enumerate(sys.argv[1:]):
if i.startswith("-"):
# записувати таблицю в файл
if i in ["-f", "--file"]:
@ -96,11 +98,17 @@ if __name__=="__main__":
elif i in ["-nv", "--no-verbose"]:
verbose = NO
# дозволити обробку файлів .table
elif i in ["-t", "--process-table"]:
process_table_files = YES
elif i in ["-nt", "--no-process-table"]:
process_table_files = NO
# задає папку, в яку необхідно зберігати конвертовані таблиці
elif i in ["-d", "--destination"]:
file_output_path = sys.argv[n+2]
sys.argv.remove(sys.argv[n+2])
# 2 pass (filename harvest)
for i in sys.argv[1:]:
if not i.startswith("-"):
@ -133,12 +141,17 @@ if __name__=="__main__":
print(formatted_table_data)
if write_to_file > AUTO:
if file_output_path:
open(os.path.join(file_output_path, os.path.basename(name)) \
+ ".table", 'w', encoding = "utf-8") \
.write(formatted_table_data+"\n")
else:
open(name + ".table", 'w', encoding = "utf-8").write(formatted_table_data+"\n")
exit(0)
for no, name in enumerate(files):
print(f"Converting {no+1}/{len(files)}")
print(f"Converting {no+1:02d}/{len(files)}: {name}")
data = open(name, encoding = "utf-8").read()
@ -157,4 +170,9 @@ if __name__=="__main__":
print(formatted_table_data)
if write_to_file >= AUTO:
if file_output_path:
open(os.path.join(file_output_path, os.path.basename(name)) \
+ ".table", 'w', encoding = "utf-8") \
.write(formatted_table_data+"\n")
else:
open(name + ".table", 'w', encoding = "utf-8").write(formatted_table_data+"\n")

View File

@ -0,0 +1,5 @@
#!/bin/sh
grep -E '\|\ [0-9]{3}\.[0-9]{3}' use-cases/*.uc \
| cut -d '|' -f 2 \
| sort | uniq -c

View File

@ -0,0 +1,4 @@
#!/bin/sh
mkdir -p tables/
./convert.py use-cases/* -nv -d tables/

View File

@ -0,0 +1,10 @@
Назва | Створити обліковий запис
Учасники | Користувач, система
Передумови | Відсутні
Результат | Обліковий запис користувача
Виключні ситуації | 001.001 Користувач ввів заборонені символи в поле псевдоніму
| 001.002 Ідентичний псевдонім вже існує
Основний сценарій | 1. Користувач вводить бажаний псевдонім у поле вводу псевдоніму
| 2. Користувач вводить пароль у поле вводу паролю
| 3. Користувач натискає на кнопку створення облікового запису
| 4. Система створює обліковий запис користувача (можливі 001.001, 001.002)

View File

@ -0,0 +1,9 @@
Назва | Видалити обліковий запис
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі
Результат | Відсутність облікового запису користувача
Виключні ситуації | 001.005 Користувач не ідентифікований
Основний сценарій | 1. Користувач натискає на кнопку видалення облікового запису
| 2. Система виводить кнопку-запит на підтвердження видалення облікового запису
| 3. Користувач натискає на кнопку підтвердження видалення облікового запису
| 4. Система видаляє обліковий запис (можлива 001.005)

View File

@ -0,0 +1,10 @@
Назва | Змінити властивості облікового запису
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі
Результат | Зміна властивостей облікового запису
Виключні ситуації | 001.005 Користувач не ідентифікований
Основний сценарій | 1. Користувач натискає на кнопку редагування облікового запису
| 2. Система виводить інтерфейс для редагування облікового запису (можлива 001.005)
| 3. Користувач вказує бажані зміни властивостей облікового запису
| 4. Користувач натискає на кнопку внесення змін до властивостей облікового запису
| 5. Система змінює властивості облікового запису

View File

@ -0,0 +1,12 @@
Назва | Створити опитування
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі
Результат | Створене опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.007 Користувач ввів неприпустимі символи в назві опитування
Основний сценарій | 1. Користувач переходить на сторінку створення опитування (можлива 001.005)
| 2. Система виводить інтерфейс створення опитування
| 3. Користувач задає інформацію про запитання та тип опитування
| 4. Користувач натискає кнопку збереження опитування
| 5. Система створює опитування (можлива 001.007)
| 6. Система виводить посилання на проходження опитування

View File

@ -0,0 +1,11 @@
Назва | Видалити опитування
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі, користувач є власником опитування
Результат | Відсутність опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
Основний сценарій | 1. Користувач натискає на кнопку видалення опитування
| 2. Система виводить запит на підтвердження видалення опитування
| 3. Користувач натискає на кнопку підтвердження видалення опитування
| 4. Система видаляє опитування (можливі 001.005, 001.006, 001.008)

View File

@ -0,0 +1,9 @@
Назва | Переглянути відповіді на опитування
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі, користувач є власником опитування
Результат | Інформація про відповіді на опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
Основний сценарій | 1. Користувач натискає на кнопку перегляду відповідей на опитування
| 2. Система виводить інформацію про відповіді на опитування (можливі 001.005, 001.006, 001.008)

View File

@ -0,0 +1,12 @@
Назва | Пройти ідентифікацію в системі
Учасники | Користувач, система
Передумови | Користувач має обліковий запис
Результат | Користувач ідентифікований в системі
Виключні ситуації | 001.001 Користувач ввів заборонені символи в поле псевдоніму
| 001.003 Користувач ввів псевдонім, якого не існує в системі
| 001.004 Користувач ввів неправильний пароль до облікового запису
Основний сценарій | 1. Користувач вводить псевдонім у поле вводу псевдоніму
| 2. Користувач вводить пароль у поле вводу паролю
| 3. Користувач натискає кнопку ідентифікації
| 4. Система ідентифікує користувача (можливі 001.001, 001.003, 001.004)

View File

@ -0,0 +1,7 @@
Назва | Скинути дані про ідентифікацію в системі
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі
Результат | Користувач не ідентифікований в системі
Виключні ситуації | 001.005 Користувач не ідентифікований
Основний сценарій | 1. Користувач натискає на кнопку виходу з облікового запису
| 2. Система скидає інформацію про ідентифікацію користувача (можлива 001.005)

View File

@ -0,0 +1,12 @@
Назва | Редагувати опитування
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі, користувач є власником опитування
Результат | Змінене опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
Основний сценарій | 1. Користувач переходить на сторінку редагування опитування
| 2. Система виводить інтерфейс редагування опитування (можливі 001.005, 001.006, 001.008)
| 3. Користувач задає інформацію про зміни в опитуванні
| 4. Користувач натискає кнопку збереження змін в опитуванні
| 5. Система змінює опитування

View File

@ -0,0 +1,9 @@
Назва | Переглянути властивості опитування
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі, користувач є власником опитування
Результат | Інформація про властивості опитування
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
| 001.008 Користувач не є власником опитування
Основний сценарій | 1. Користувач натискає на кнопку перегляду інформації про опитування
| 2. Система виводить інформацію про опитування (можливі 001.005, 001.006, 001.008)

View File

@ -0,0 +1,11 @@
Назва | Пройти анонімне опитування
Учасники | Користувач, система
Передумови | Відсутні
Результат | Запис відповідей на опитування
Виключні ситуації | 001.006 Запитане опитування не існує
Основний сценарій | 1. Користувач переходить на сторінку проходження опитування
| 2. Система виводить перелік запитань опитування (можлива 001.006)
| 3. Користувач вводить відповіді на запитання
| 4. Користувач натискає кнопку надсилання відповідей
| 5. Система записує відповіді на опитування (можлива 001.006)
| 6. Система виводить прощальне повідомлення

View File

@ -0,0 +1,12 @@
Назва | Пройти поіменне опитування
Учасники | Користувач, система
Передумови | Користувач ідентифікований в системі
Результат | Запис відповідей на опитування та відомості про користувача
Виключні ситуації | 001.005 Користувач не ідентифікований
| 001.006 Запитане опитування не існує
Основний сценарій | 1. Користувач переходить на сторінку проходження опитування
| 2. Система виводить перелік запитань опитування (можливі 001.005, 001.006)
| 3. Користувач вводить відповіді на запитання
| 4. Користувач натискає кнопку надсилання відповідей
| 5. Система записує відповіді на опитування та відомості про користувача (можлива 001.006)
| 6. Система виводить прощальне повідомлення