Halo semua, kali ini saya akan melanjutkan series Membuat Aplikasi Movie dengan Flutter untuk pembahasan Analisis Domain.
Analisis Domain
Analisis domain adalah langkah dimana kita akan melakukan analisa terhadap domain bisnis yang akan di-solve. Baik itu secara usecase, flow, constraint, calculation dan lainnya. Untuk tahap ini, karena kita menggunakan design UI/UX yang ada, maka kita akan melakukan analisa terhadap apa saja data yang dibutuhkan untuk UI yang ada.
Home Screen
Dari desain di atas, bisa kita dapatkan ada 2 usecase yang terlihat. Pertama adalah Recently Watched, dan Trending Movie. Untuk rencently watched, kita akan menyimpan movie yang trailer apa yang terakhir dimainkan. Jika tidak ada data, maka tampilan kita ganti menjadi teks. Untuk trending, kita akan menampilkan dari TMDB Trending Movie endpoint. Untuk data yang dibutuhkan adalah:
Recently Watched
- ID
- Title
- Poster / Image
- Trailer URL
Trending
- ID
- Title
- Poster / Image
- Rating
Discover Screen
Pada discover screen kita akan menemukan Genre List yang mana pada masing-masing genre akan menampilkan List Item nya. Oleh sebab itu, untuk data yang akan dibutuhkan adalah:
Genre
- ID
- Name
Item
- ID
- Title
- Poster
- Release Year (only Movie)
Kemudian juga terdapat search bar yang mana bisa digunakan untuk mencari movie berdasarkan search query, tetapi untuk tampilan tidak ada di design Figma, kita akan menggunakan tampilan yang sama, minus list genre nya.
Search
- ID
- Title
- Poster
- Release Year
Detail Movie
Tampilan ini akan menyajikan data movie tersebut dalam bentuk yang detail. dan juga mempunyai List Related Movies dan juga tombol Play untuk memutar Trailernya.
Movie Detail
- Poster
- Title
- Duration
- Rating
- Release date
- Genre
- Synopsis
- Trailer
Related Movie
- Poster
- Title
- Year
Value Object
Value Object yang bisa gunakan untuk kasus ini adalah:
- Title
Digunakan untuk menyimpan judul dari film, Dengan validasi bahwa judul hanya 1 baris, tidak boleh berupa teks yang memiliki banyak paragraf. - DateTime
Digunakan untuk menyimpan release year, dan release date. - Rating
Rating dibatasi hanya bernilai 0-10 dan boleh dalam bentuk bilangan desimal. - Duration
Durasi akan digunakan untuk menyimpan durasi. - Poster
Poster akan berisi URI terhadap poster yang sudah lengkap dengan domainnya, dan ukurannya. - Trailer
Trailer akan menyimpan URI terhadap video dengan tipeTrailer
dan berstatusofficial = true
dan siteYouTube
. - SearchQuery
SearchQuery akan menyimpan inputan pencarian dari User dengan validasi tidak boleh kosong, dan harus berupa 1 baris.
Class Diagram
Use Case
Use Case Specification
Nama Use Case | Melihat Trending Movie |
---|---|
Aktor | User |
Pre-condition | User menekan tombol navigasi home |
Basic Flow | Halaman Home tampil, dan berisi Trending Movie |
Exception Flow | Halamam Trending tampil dan terdapat pesan Gagal terhubung ke server |
Nama Use Case | Melihat List Movie |
---|---|
Aktor | User |
Pre-condition | User menekan tombol navigasi play |
Basic Flow |
|
Alternate Flow |
|
Exception Flow | Halamam List tampil dan terdapat pesan Gagal terhubung ke server |
Nama Use Case | Mencari Movie |
---|---|
Aktor | User |
Pre-condition | Halaman List Movie tampil |
Basic Flow |
|
Exception Flow |
|
Post Condition | Hasil pencarian tampil. |
Nama Use Case | Melihat Detail Movie |
---|---|
Aktor | User |
Pre-condition | Halaman Home atau Halaman List Movie tampil |
Basic Flow | Aktor menekan movie yang ada |
Alternate Flow | Halaman Detail tampil, dan aktor menekan salah satu dari related movie |
Exception Flow | Jika koneksi gagal, maka tampil pesan Gagal terhubung ke server |
Post Condition | Hasil detail movie tampil. |
Nama Use Case | Menonton Trailer |
---|---|
Aktor | User |
Pre-condition | Halaman Detail Movie atau Halaman Utama tampil |
Basic Flow |
|
Exception Flow |
|
Post Condition |
|
Nama Use Case | Melihat Recently Watched |
---|---|
Aktor | User |
Pre-condition | Halaman Utama tampil |
Basic Flow | Tampil Recently Watched |
Alternate Flow | Jika tidak ada data, recently watched hilang. |
Demikian analisis domain dari aplikasi ini.
Jika teman-teman ada pertanyaan dan saran silahkan tulis di kolom komentar ya!