questionnaire/README.md

340 lines
9.5 KiB
Markdown

# Questionnaire
Aplikasi berbasis web untuk publikasi kuesioner pada lingkup Yayasan Widya
Anindya (Perguruan Tinggi, SMK dan lainnya).
## Latar Belakang
Guna melancarkan akreditasi Perguruan Tinggi LEPISI pada 2018, aplikasi ini
dibuat untuk memenuhi kebutuhan akan dokumen-dokumen:
- dokumen #1
- dokumen #2
- ...
### Kebutuhan Perangkat Lunak
- PHP 7.0
- nginx
## Design
### UC Diagram pembuatan kuesioner
```plantuml
left to right direction
actor Admin
Admin -- (Membuat Kuesioner)
Admin -- (Mengubah Kuesioner)
Admin -- (Membuat Seksi)
Admin -- (Mengubah Seksi)
Admin -- (Membuat Pertanyaan)
Admin -- (Mengubah Pertanyaan)
Admin -- (Membuat Pilihan)
Admin -- (Mengubah Pilihan)
```
#### Membuat Kuesioner
Skenario utama:
1. Admin telah login ke dalam sistem
2. Admin mengisi form pembuatan kuesioner baru yang terdiri dari `title`,
`descriptions`, `released_at`
3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`,
`updated_at` dan `creator_id` ke dalam database
4. sistem mengembalikan Admin ke tampilan daftar kuesioner
Ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan kuesioner baru dan
menampilkan pesan kesalahan
- Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- Admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Mengubah Kuesioner
Skenario utama:
1. Admin telah login ke dalam sistem
2. Admin mengisi form edit kuesioner yang terdiri dari `title`, `descriptions`, dan
`released_at`
3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari kuesioner yang
sedang diedit ke dalam database
4. sistem mengembalikan Admin ke tampilan daftar kuesioner
Ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan kuesioner baru dan
menampilkan pesan kesalahan
- Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
2. b. tanggal `released_at` telah lewat dari tanggal hari mengubah
- sistem menampilkan pesan bahwa tanggal `released_at` tidak dapat diubah
lagi
3. a. sistem tidak dapat menyimpan data ke database:
- Admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Membuat Seksi
Skenario utama:
1. Admin telah login ke dalam sistem dan memilih kuesioner yang akan dibuatkan
seksinya
2. Admin mengisi form pembuatan seksi baru yang terdiri dari `title`,
`descriptions`
3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`,
`updated_at`, `questionnaire_id` dan `creator_id` ke dalam table `sections`
4. sistem mengembalikan Admin ke tampilan daftar seksi dari kuesioner yang
sedang diedit
Ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan seksi baru dan
menampilkan pesan kesalahan
- Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- Admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Mengubah Seksi
Skenario utama:
1. Admin telah login ke dalam sistem dan memilih kuesioner yang akan diedit
seksinya
2. Admin mengisi form edit seksi yang terdiri dari `title`, `descriptions`
3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari seksi yang
sedang diedit ke dalam database
4. sistem mengembalikan Admin ke tampilan daftar seksi kuesioner
Ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form mengubah seksi dan
menampilkan pesan kesalahan
- Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- Admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Membuat Pertanyaan
skenario utama:
1. admin telah login ke dalam sistem dan memilih kuesioner dan seksi yang akan
dibuatkan pertanyaan
2. admin mengisi form pembuatan pertanyaan baru yang terdiri dari `title`,
`descriptions`, `question_type`, `text`, `number`
3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`,
`updated_at`, `section_id` dan `creator_id` ke dalam table `questions`
4. sistem mengembalikan admin ke tampilan daftar pertanyaan dari kuesioner dan
seksi yang sedang diedit
ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan seksi baru dan
menampilkan pesan kesalahan
- admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Mengubah Pertanyaan
Skenario utama:
1. Admin telah login ke dalam sistem dan memilih kuesioner dan seksi yang akan
diedit pertanyaannya
2. Admin mengisi form edit pertanyaan yang terdiri dari `title`, `descriptions`,
`question_type`, `text`, dan `number`
3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari pertanyaan yang
sedang diedit ke dalam database
4. sistem mengembalikan Admin ke tampilan daftar pertanyaan kuesioner
Ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan pertanyaan baru dan
menampilkan pesan kesalahan
- Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- Admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Membuat Pilihan
skenario utama:
1. admin telah login ke dalam sistem dan memilih pertanyaan yang akan dibuatkan
pilihan
2. admin mengisi form pembuatan pilihan baru yang terdiri dari `descriptions`,
`text`, `number`
3. sistem menyimpan nilai form yang diisi dan menambahkan data `id`, `created_at`,
`updated_at`, `questions_id` dan `creator_id` ke dalam table `question_choices`
4. sistem mengembalikan admin ke tampilan daftar pilihan dari pertanyaan yang
sedang diedit
ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan pilihan baru dan
menampilkan pesan kesalahan
- admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
#### Mengubah Pilihan
Skenario utama:
1. Admin telah login ke dalam sistem dan memilih pilihan pertanyaan yang
akan diedit
2. Admin mengisi form edit pilihan yang terdiri dari `title`, `descriptions`,
`question_type`, `text`, dan `number`
3. sistem menyimpan nilai form yang diisi sesuai dengan `id` dari pertanyaan yang
sedang diedit ke dalam database
4. sistem mengembalikan Admin ke tampilan daftar pertanyaan kuesioner
Ekstensi:
2. a. form tidak diisi lengkap:
- sistem mengembalikan admin ke halaman form pembuatan pertanyaan baru dan
menampilkan pesan kesalahan
- Admin dapat mencoba mengirim form kembali setelah mengisi dengan lengkap
3. a. sistem tidak dapat menyimpan data ke database:
- Admin dikembalikan ke halaman pengisian form dan diberi peringatan
kesalahan
### UC Diagram pengisian kuesioner
```plantuml
left to right direction
actor Responden
actor Admin
Responden -- (Mengisi identitas)
Responden -- (Mengisi kuesioner)
Responden -- (Menyelesaikan kuesioner)
(Menerima notifikasi pengisian) .> (Menyelesaikan kuesioner) : extends
(Menerima notifikasi pengisian) -- Admin
```
### UC Diagram pencetakan laporan kuesioner
```plantuml
left to right direction
actor Admin
Admin -- (Mencetak rekap pengisian kuesioner)
Admin -- (Mencetak laporan hasil pengolahan kuesioner)
```
### Class Diagram
```plantuml
class Questionnaire {
id : int
title : varchar (100)
descriptions : text
creator_id : int
reviewer_by : int
released_at : datetime
created_at : datetime
updated_at : datetime
deleted_at : datetime
}
class Section {
id : int
questionnaire_id : int
title : varchar (100)
descriptions : text
creator_id : int
created_at : datetime
updated_at : datetime
deleted_at : datetime
}
class Question {
id : int
section_id : int
number : int
text : varchar (300)
descriptions : text
question_type : enum ('text', 'choice', 'number')
creator_id : int
created_at : datetime
updated_at : datetime
deleted_at : datetime
}
class QuestionChoice {
id : int
question_id : int
number : int
text : varchar (300)
descriptions : text
creator_id : int
created_at : datetime
updated_at : datetime
deleted_at : datetime
}
class Respondent {
id : int
login : varchar (100)
name : varchar (100)
handphone : varchar (100)
email : varchar (100)
gender : enum ('m', 'f')
descriptions : text
created_at : datetime
updated_at : datetime
deleted_at : datetime
}
class Answer {
id : int
respondent_id : int
question_id: int
text : text
choice : int
created_at : datetime
updated_at : datetime
deleted_at : datetime
}
Questionnaire "1" -- "1..*" Section
Section "1" -- "1..*" Question
Question "1" -- "0..*" QuestionChoice
Respondent "1" -- "1..*" Answer
Question "1" - "1" Answer
```
### ER Diagram
```dot
diagraph ER {
node [shape=box]; questionnaires; sections; questions; respondents;
answers;
node [shape=diamond,style=filled]; question_answers;
questionnnaires -- sections;
sections -- questions;
questions -- questions_answers;
questions -- answers;
answers -- respondent;
}
```