Pertemuan 13 KPPL
Kelompok 15
Anggota Kelompok
1. Raymond Feivel Liander - 5025231214
2. Danny Rachmadian Yusuf Satryatama - 5025231240
Pertanyaan
Berdasarkan SRS dan Use Case Smart Home pada minggu lalu buatlah Analysis Model beserta dengan Behavioural Elementnya. Juga tunjukkan Use Case Diagram, Activity Diagram, dan Class Diagram-nya.
Jawaban
Analysis Model dalam konteks rekayasa perangkat lunak adalah representasi konseptual dari sistem yang akan dibangun. Tujuannya adalah untuk memahami dan menggambarkan bagaimana sistem akan berfungsi sebelum desain dan implementasi dilakukan. Jenis-jenis Analysis Model yang biasanya digunakan adalah Use Case Diagram, Class Diagram, Activitiy Diagram, dan State Diagram.
Behavioural Elements dalam konteks aplikasi Smart Home, mengacu pada bagaimana sistem berinteraksi dengan pengguna dan perangkat, serta bagaimana proses-proses dalam aplikasi dijalankan atau berubah seiring waktu. Elemen-elemen ini lebih fokus pada dinamika sistem, yaitu bagaimana fungsionalitasnya berubah dan merespons perintah serta kondisi tertentu.
1. Autentikasi Pengguna
- Behaviour: Pengguna melakukan proses login dengan memasukkan username dan password. Jika autentikasi berhasil, pengguna bisa mengakses fitur aplikasi. Jika tidak, sistem akan memberikan pesan kesalahan.
- State Transitions:
- Logged out → Login attempt → Logged in atau Failed login
- Logged in → Logout
2. Pengontrolan Devices
- Behaviour: Pengguna mengirimkan perintah untuk menyalakan atau mematikan perangkat (misalnya lampu, pintu). Perintah ini diteruskan oleh aplikasi ke perangkat IoT terkait, dan perangkat merespons sesuai dengan perintah tersebut.
- State Transitions:
- Device off → User turns on device → Device on
- Device on → User turns off device → Device off
- Event-Driven: Perubahan status perangkat terjadi sebagai respons terhadap tindakan pengguna atau kondisi tertentu (misalnya, sensor mendeteksi gerakan).
3. Notifikasi
- Behaviour: Sistem mengirimkan notifikasi secara real-time berdasarkan kejadian mendesak yang terdeteksi oleh sensor atau perangkat. Misalnya, jika pintu rumah dibuka saat malam hari, sistem akan mengirimkan pemberitahuan kepada pengguna.
- State Transitions:
- Idle → Emergency detected → Send notification to user
- Emergency resolved → Stop notification
4. Voice Recognition
- Behaviour: Pengguna mengucapkan perintah suara (misalnya "turn on the lights"), dan sistem menganalisis suara tersebut menggunakan algoritma pengenalan suara. Jika perintah dikenali dengan benar, sistem mengeksekusi tindakan yang sesuai.
- State Transitions:
- Idle listening → Voice command detected → Execute command
- Voice command invalid → Error message or retry listening
5. System Recovery
- Behaviour: Jika sistem mengalami kegagalan atau crash, sistem otomatis mencoba untuk memulihkan dirinya ke kondisi normal, seperti me-restart komponen yang bermasalah atau mengambil data terakhir yang valid.
- State Transitions:
- System failure → Recovering → System restored
6. Interaksi Antarmuka Pengguna
- Behaviour: Pengguna mengakses dashboard yang menampilkan status perangkat dan sensor, serta menggunakan navigasi untuk mengontrol perangkat atau mengakses fitur lain. Interaksi ini melibatkan perubahan status pada UI (misalnya, perubahan warna tombol atau pembaruan status perangkat).
- State Transitions:
- Dashboard idle → User clicks control button → Control device or show status
7. Backup & Data Recovery
- Behaviour: Setiap 24 jam, sistem akan membuat cadangan otomatis untuk mencegah kehilangan data. Jika data hilang atau rusak, sistem akan mencoba untuk mengembalikan data cadangan tersebut.
- State Transitions:
- Backup scheduled → Backup in progress → Backup complete
- Data lost → Restoring from backup → Data restored
8. Security
- Behaviour: Jika pengguna melakukan login dengan autentikasi dua faktor, sistem akan mengirimkan kode verifikasi ke perangkat pengguna dan menunggu konfirmasi. Jika kode benar, akses akan diberikan.
- State Transitions:
- User login → Two-factor authentication required → Code entered correctly → Login successful
- Invalid code → Login failed
9. Data Privacy and Compliance
- Behaviour: Sistem mematuhi peraturan privasi data seperti GDPR. Setiap kali data pribadi dikumpulkan atau digunakan, pengguna harus diberikan pemberitahuan dan persetujuan terlebih dahulu.
- State Transitions:
- User consent pending → User provides consent → Data usage allowed
- User withdraws consent → Data usage stopped
Use Case Diagram:
Activity Diagram:
- Start
- Proses dimulai saat pengguna membuka aplikasi.
- Pilih Perangkat
- Pengguna memilih perangkat yang ingin dikontrol (misalnya, lampu atau pintu).
- Periksa Koneksi Perangkat
- Sistem memeriksa apakah perangkat terhubung dan dapat diakses (misalnya, apakah perangkat ada di jaringan WiFi dan aktif).
- Keputusan
- Jika Terhubung: Sistem melanjutkan ke langkah berikutnya.
- Jika Tidak Terhubung: Sistem menampilkan pesan kesalahan kepada pengguna dan kembali ke langkah "Pilih Perangkat".
- Kirim Perintah ke Perangkat
- Sistem mengirimkan perintah untuk mengontrol perangkat yang dipilih (misalnya, menyalakan lampu atau mengunci pintu).
- Perangkat Merespon
- Perangkat menerima perintah dan merespons (misalnya, lampu menyala atau pintu terkunci).
- Notifikasi ke Pengguna
- Sistem mengirimkan notifikasi ke pengguna untuk memberi tahu bahwa perintah telah berhasil dijalankan (misalnya, "Lampu telah menyala" atau "Pintu telah terkunci").
- End
- Proses selesai.
Start --> Pilih Perangkat --> Periksa Koneksi Perangkat --> [Jika Terhubung]
| | |
V V V
Pilih Kontrol Kirim Perintah Perangkat Merespon
| | |
V V V
[Jika Tidak Terhubung] ----> Tampilkan Pesan Error ------------|
| |
V |
Pilih Perangkat <------------------|
|
V
Notifikasi ke Pengguna
|
V
End
Class Diagram:User
- Attributes:
username: Stringpassword: Stringemail: StringisAuthenticated: Boolean
- Methods:
register(username: String, password: String, email: String): Booleanlogin(username: String, password: String): Booleanlogout(): BooleanreceiveNotification(message: String): void
- Attributes:
Device
- Attributes:
deviceID: StringdeviceName: Stringstatus: Boolean(true = on, false = off)deviceType: String(e.g., Light, Door Lock)
- Methods:
turnOn(): voidturnOff(): voidgetStatus(): Boolean
- Attributes:
SecuritySystem
- Attributes:
securityLevel: Stringsensors: List<Sensor>isArmed: Boolean
- Methods:
armSystem(): BooleandisarmSystem(): BooleantriggerAlarm(): voidaddSensor(sensor: Sensor): voidremoveSensor(sensor: Sensor): void
- Attributes:
Sensor
- Attributes:
sensorID: StringsensorType: String(e.g., Motion, Door, Window)status: Boolean(true = triggered, false = not triggered)
- Methods:
activate(): voiddeactivate(): voidgetStatus(): Boolean
- Attributes:
Notification
- Attributes:
notificationID: Stringmessage: Stringtimestamp: Date
- Methods:
sendNotification(user: User, message: String): void
- Attributes:
VoiceRecognition
- Attributes:
voiceCommand: String
- Methods:
recognizeCommand(command: String): BooleanprocessCommand(): void
- Attributes:
Relasi antar Kelas
- User memiliki hubungan association dengan Notification (seorang pengguna bisa menerima banyak notifikasi).
- User memiliki hubungan association dengan Device (seorang pengguna dapat mengontrol banyak perangkat).
- SecuritySystem memiliki hubungan aggregation dengan Sensor (sistem keamanan bisa memiliki banyak sensor).
- Device dapat berhubungan dengan VoiceRecognition untuk mengontrol perangkat via suara.

Komentar
Posting Komentar