• Tidak ada hasil yang ditemukan

BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK"

Copied!
11
0
0

Teks penuh

(1)

IV-1

ANALISIS DAN PERANCANGAN

PERANGKAT LUNAK

Pada bab ini, akan diuraikan mengenai analisis pada kebutuhan perangkat lunak, analisis kelas, serta perancangan antarmuka dan kelas dari perangkat lunak tersebut.

4.1 Analisis Perangkat Lunak

Perangkat lunak yang dibuat dalam Tugas Akhir akan dinamakan dengan XGP, dan dibangun pada perangkat mobile phone. Berikut ini akan dijelaskan tentang deskripsi umum sistem, arsitektur dan kebutuhan perangkat lunak, serta analisis kelas.

4.1.1 Deskripsi Umum Sistem

Fungsi utama dari XGP adalah dapat menyisipkan pesan ke dalam video, serta dapat mengekstraksi kembali pesan tersebut. Pada saat menjalankan fungsi penyisipan pesan, XGP menerima masukan yaitu video 3GP, pesan rahasia berupa file atau tulisan yang diketik secara manual, dan kunci berupa sandi lewat. Keluarannya adalah video 3GP yang sudah memiliki pesan di dalamnya. Sedangkan pada fungsi ekstraksi pesan, XGP menerima masukan yaitu video 3GP dengan sandi lewat sebagai kunci. Keluaran yang dihasilkan adalah pesan yang sebelumnya tersembunyi pada video. Gambar dari sistem dapat dilihat pada Gambar IV–1. Video yang mengandung pesan dapat diekstraksi kembali pada mobile phone yang sama, atau mobile phone yang lain, dengan menggunakan perangkat lunak XGP. Pengiriman video tidak dicakup oleh sistem, melainkan dapat melalui MMS, bluetooth, atau cara lainnya. Sistem ini juga tidak mencakup pengukuran kualitas video hasil penyisipan, namun dengan menggunakan perangkat lunak yang khusus menangani fungsi tersebut.

(2)

4.1.2 Arsitektur Perangkat Lunak

Arsitektur dari XGP ditunjukkan pada Gambar IV–2. Terlihat bahwa XGP memiliki dua buah modul utama, yaitu modul penyisipan pesan, dan modul ekstraksi pesan.

3GP Pesan Kunci Video Video 3GP Pencarian letak data Pengacakan pesan Penyimpanan pesan

Proses penyisipan pesan

Proses ekstraksi pesan

Pesan Video Kunci 3GP Pembacaan pesan Pengurutan pesan

Gambar IV–2 Arsitektur XGP

Masukan untuk modul penyisipan pesan adalah video 3GP, kunci, dan pesan rahasia. Video ini akan dicari letak data yang dapat disisipkan pesan, yaitu koefisien INTRA-DC pada masing-masing I-frame. Koefisien ini nantinya akan menjadi tempat penyisipan pesan, yang sudah melalui proses pengacakan dengan kunci. Keluaran yang dihasilkan adalah video 3GP yang telah disisipi pesan tersebut.

Sedangkan pada modul ekstraksi pesan, objek masukan berupa video 3GP yang memiliki pesan, dan kunci. Pesan yang dibaca dari video masih dalam bentuk acak, sehingga harus diurutkan terlebih dahulu. Dengan kunci masukan, urutan data dapat ditentukan sehingga pesan akan terbaca dengan benar, yang sekaligus menjadi keluaran dari modul ini.

(3)

4.1.3 Kebutuhan Perangkat Lunak

Perangkat lunak XGP yang akan dibangun dalam Tugas Akhir ini diharapkan dapat melakukan hal-hal berikut:

1. Membaca dan melakukan parsing terhadap video 3GP dan video codec H.263. 2. Melakukan pengacakan pada pesan sesuai dengan kunci yang dimasukkan,

dimana hasil pengacakan ini haruslah sama untuk setiap kunci yang sama. 3. Menyisipkan pesan ke dalam video, baik berupa tulisan maupun file. 4. Mengekstraksi pesan yang disimpan dari video.

4.1.4 Diagram Use Case

Untuk menggambarkan kebutuhan perangkat lunak secara visual, maka digunakan diagram use case, seperti pada Gambar IV–3.

System Menyisipkan Pesan Mengekstraksi Pesan Membaca Video Mengacak Pesan Membaca Pesan Menyimpan Pesan Mengambil Pesan Pengirim Penerima <<extend>> <<extend>> <<include>> <<include>> <<include>> <<include>> <<extend>>

Gambar IV–3 Diagram use case

Perangkat lunak XGP memiliki 7 buah use case, dan 2 buah aktor. Pengirim merupakan pengguna yang melakukan penyisipan pesan ke dalam video, sedangkan penerima adalah pengguna yang melakukan ekstraksi pesan. Use case Membaca Pesan digunakan untuk melakukan pembacaan data pesan dan validasi ukuran pesan terhadap video, sedangkan use case Menyimpan Pesan memasukkan data pesan ke dalam video. Maka kedua use case ini hanya digunakan pada saat penyisipan pesan.

(4)

Sedangkan use case Mengambil Pesan digunakan untuk mengambil kembali pesan dari video, maka use case ini hanya digunakan pada proses ekstraksi pesan. Use case

Membaca Video dan Mengacak Pesan digunakan pada proses penyisipan sekaligus ekstraksi, sehingga kedua use case ini terdapat pada kedua proses. Penjelasan tiap use case dari diagram Gambar IV–3 dijelaskan pada Tabel IV-1.

Tabel IV-1 Narasi use case

No. Elemen Use Case Keterangan

1 Nama Menyisipkan Pesan

Deskripsi Melakukan penyisipan pesan pada video

Prekondisi Sistem menampilkan menu utama

Proses Pengirim memilih menu penyisipan pesan

Kondisi akhir Sistem masuk ke dalam menu penyisipan pesan

2 Nama Membaca Video

Deskripsi Melakukan pembacaan dan parsing video Prekondisi Use case Menyisipkan Pesan sudah dilakukan

Proses Pengguna memasukkan video 3GP

Sistem melakukan validasi format video Sistem mem-parsing video

Sistem mencatat semua letak data yang mungkin sebagai pesan Kondisi akhir Alamat video tersimpan dan sudah tervalidasi

3 Nama Membaca Pesan

Deskripsi Melakukan pembacaan pesan, baik berupa file atau teks Prekondisi Use case Menyisipkan Pesan sudah dilakukan

Proses Pengirim memilih jenis pesan, yaitu file atau teks

Sistem menampilkan layar browser pesan untuk jenis pesan

file, dan textbox pesan untuk jenis pesan teks Pengirim memasukkan pesan

Sistem menyimpan pesan yang dimasukkan Kondisi akhir Pesan sudah tersimpan

4 Nama Mengacak Pesan

Deskripsi Melakukan pengacakan pesan dengan kunci

Prekondisi Use case Membaca Pesan atau Mengambil Pesan sudah dilakukan

Proses Pengguna memasukkan kunci

Sistem melakukan pengacakan atau pengurutan pesan, sesuai dengan kunci

Sistem menyimpan pesan hasil pengacakan atau pengurutan tersebut

Kondisi akhir Pesan hasil pengacakan atau pengurutan sudah tersimpan

5 Nama Menyimpan Pesan

Deskripsi Melakukan penyimpanan pesan ke dalam video Prekondisi Use case Mengacak Pesan sudah dilakukan

Proses Pengirim menekan tombol „Proses‟

(5)

No. Elemen Use Case Keterangan

sesuai dengan letak yang telah diurutkan Kondisi akhir Video sudah memiliki pesan

6 Nama Mengekstraksi Pesan

Deskripsi Melakukan ekstraksi pesan pada video

Prekondisi Sistem menampilkan menu utama

Proses Pengirim memilih menu ekstraksi pesan

Kondisi akhir Sistem masuk ke dalam menu ekstraksi pesan

7 Nama Mengambil Pesan

Deskripsi Mengambil kembali pesan yang tersembunyi pada video Prekondisi Use case Membaca Video sudah dilakukan

Proses Penerima menekan tombol „Proses‟

Sistem melakukan pembacaan data video

Sistem mengolah data tersebut untuk digabungkan menjadi pesan

Kondisi akhir Pesan dihasilkan oleh sistem

4.1.5 Analisis Kelas

XGP memiliki dua buah modul, yaitu modul penyisipan pesan, dan modul ekstraksi pesan. Untuk lebih memudahkan, maka analisis akan dilakukan terhadap kedua modul ini secara terpisah.

1. Proses penyisipan pesan

Proses untuk penyisipan pesan membutuhkan tiga buah masukan, yaitu video, pesan rahasia, dan kunci. Ketiga masukan ini dapat menjadi kelas yang berbeda, seperti tampak pada Gambar IV–4.

Message -fileAddress -textContent -size +reader() +writer() +countSize() Key -password +generate() Embed -video -message -key +writeMessage() Video -address +readData() +writeData()

(6)

Kelas „Video‟ menangani segala proses terhadap video seperti validasi format video yang dimasukkan, mencari data video yang dapat menjadi tempat penyisipan, dan melakukan perubahan atau pengambilan data pada video. Kelas „Message‟ mengatur pembacaan pesan, baik berupa file maupun teks. Apabila jenis file yang dimasukkan, maka hanya alamat file tersebut yang disimpan. Sedangkan apabila jenis teks, seluruh isi dari teks tersebut akan disimpan. Pembacaan ukuran pesan pada saat penyisipan juga dilakukan oleh kelas ini.

Kelas „Key‟ menyimpan kunci masukan, serta melakukan pembangkitan bilangan acak berdasarkan kunci tersebut. Deretan bilangan acak ini tidak boleh mengandung bilangan yang sama lebih dari sekali, untuk menghindari pengambilan data pada bit yang sama.

Kelas „Embed‟ merupakan kelas yang mengatur proses menyisipkan pesan, dan penyimpanan semua informasi masukan dari pengguna. Jenis keluaran yang dilakukan, apakah menjadi file video yang baru atau menimpa video yang lama, juga diatur oleh kelas ini.

2. Ekstraksi pesan

Pada ekstraksi pesan, kelas analisis ditunjukkan pada Gambar IV–5. Pada proses ini, hanya dibutuhkan dua buah masukan, yaitu video dan kunci, yang masing-masing menjadi kelas „Video‟ dan „Key‟.

Kelas „Video‟ tidak melakukan adanya penulisan atau pengubahan data pada video, tetapi hanya dipakai untuk membaca data dari video. Sedangkan kelas „Message‟ digunakan untuk menyimpan pesan hasil ekstraksi, dan akan diurutkan melalui bilangan acak pada kelas „Key‟. Kelas „Extract‟ menyimpan kedua objek masukan dan objek hasil, serta mengatur proses pembacaan data tersebut.

(7)

Key -password +generate() Extract -video -message -key +readMessage() Video -address +readData() +writeData() Message -fileAddress -textContent -size +reader() +writer() +countSize()

Gambar IV–5 Kelas analisis pada ekstraksi pesan

Diagram kelas analisis untuk seluruh modul dapat dilihat pada Gambar IV–6. Jumlah kelas pada diagram ini berjumlah 6 kelas. Kelas „Embed‟ digunakan pada proses penyisipan, yang menyimpan tiga kelas sebagai objek masukan, yaitu kelas „Video‟, „Message‟, dan „Key‟. Sedangkan kelas „Extract‟ digunakan pada proses ekstraksi, yang menyimpan kelas „Video‟ dan „Key‟ sebagai masukan, dan kelas „Message‟ sebagai keluaran. Kelas „XGPMidlet‟ digunakan untuk mengatur tampilan aplikasi pada layar mobile phone.

Message -fileAddress -textContent -size +reader() +writer() +countSize() Key -password +generate() Embed -video -message -key +writeMessage() Extract -video -message -key +readMessage() Video -address +readData() +writeData() XGPMidlet -embed -extract

(8)

4.2 Perancangan Perangkat Lunak

Berikut akan dijelaskan mengenai perancangan antarmuka dari XGP, serta diagram kelas perancangan, yaitu kelas yang sudah memiliki atribut dan operasi secara lengkap.

4.2.1 Perancangan Antarmuka

Perangkat lunak XGP dirancang seperti aplikasi wizard, baik pada menu penyisipan atau ekstraksi. Pada saat XGP pertama kali dijalankan, layar akan menampilkan menu utama, seperti pada Gambar IV–7. Disini dapat dipilih kedua modul perangkat lunak, yaitu „Embed‟ untuk penyisipan, dan „Extract‟ untuk ekstraksi pesan.

XGP

Embed Extract

Exit

Gambar IV–7 Antarmuka menu utama

Antarmuka utama pada menu „Embed‟ ditunjukkan pada Gambar IV–8. Layar „Embed – Input‟ adalah tampilan saat meminta masukan untuk proses penyisipan, yaitu video dan pesan. Dengan menekan tombol „Video‟, layar „Embed – Video‟ akan muncul sebagai file browser untuk masukan video. Tombol „Video Output‟ ditekan untuk memilih bagaimana video keluaran akan dihasilkan, apakah pada file baru atau menimpa video yang lama. Pemilihan ini ditunjukkan pada layar „Embed – Output‟, dan pemilihan nama file video baru ditunjukkan pada layar „Embed – File Output‟ Untuk memasukkan pesan, jenis pesan dipilih terlebih dahulu, yaitu pada layar „Embed – Message‟. Untuk jenis file, maka file browser „Embed – Message File‟

untuk pesan akan muncul. Sedangkan apabila jenis teks, maka akan muncul textbox

seperti pada layar „Embed – Message Text‟. Apabila kedua masukan ini sudah dimasukkan, pengguna dapat melanjutkan proses penyisipan untuk memasukkan kunci. Layar „Embed – Key‟ akan tampak untuk meminta kunci masukan. Kemudian layar „Embed – Confirmation‟ akan memperlihatkan semua masukan, untuk

(9)

mengkonfirmasi pengguna terhadap masukan. Tombol „Show key‟ dapat dipilih untuk menampilkan isi kunci yang sebenarnya. Apabila setuju, pengguna dapat menekan tombol „Proceed‟ untuk melakukan proses penyisipan. Layar „Embed – Done‟ akan memberikan status hasil penyisipan, dan pengguna dapat kembali ke menu utama.

Embed - Key Key: Back Proceed 1234 Embed - Confirmation Back Proceed Video: “video.3gp” Message: “file.txt” Key: *** Show key Embed - Done Result: Embed process done successfully. Menu Embed - Video Back Select ../ Music/ Picture/ Video/ Document/ video.3gp Embed - Message File Text Back Select

Embed - Message Text

Text:

Back Proceed

abcd

Embed - Message File

Back Select ../ Other/ file.txt Back Proceed Embed - Input Video: “video.3gp” Video output: “res.3gp”

Output Message Message: “file.txt” Video Embed - Output New File Overwrite Back Select

Embed - File Output

File name:

Back Proceed

res.3gp

Video output: “res.3gp”

(10)

Antarmuka utama pada menu „Extract‟ ditunjukkan pada Gambar IV–9. Layar untuk meminta masukan ditunjukkan pada layar „Extract – Input‟, dimana hanya dapat memasukkan video sebagai masukan, yaitu melalui file browser pada layar „Extract – Video‟. Apabila video sudah dimasukkan, maka pengguna dapat memasukkan kunci, yaitu pada „Extract – Key‟. Kemudian konfirmasi masukan akan ditunjukkan pada layar „Extract – Confirmation‟. Jika setuju, pengguna dapat menekan tombol „Proceed‟ untuk menjalankan proses ekstraksi pesan. Hasil proses akan diperlihatkan pada layar „Extract – Done‟.

Extract - Key Key: 1234 Back Proceed Extract - Confirmation Video: “video.3gp” Key: *** Back Proceed Show key Extract - Done

Result: Extract process done successfully. “file.txt” is created in “file:/root/” Menu Extract - Input Video: “video.3gp” Video Back Proceed Extract - Video Back Select ../ Music/ Picture/ Video/ Document/ video.3gp

Gambar IV–9 Antarmuka modul 'Extract'

4.2.2 Perancangan Kelas

Berdasarkan analisis kelas pada subbab sebelumnya, didapatkan daftar kelas perancangan seperti yang ditunjukkan pada Tabel IV-2. Terdapat sebuah kelas tambahan yaitu kelas „Lib‟, yang hanya berfungsi untuk menyimpan semua konstanta, tipe, dan operasi umum yang dipakai pada kelas lainnya, yaitu kelas „Message‟, „Key‟, dan „Video‟. Tidak ada fungsi khusus dalam kelas „Lib‟ ini.

Detil dari atribut dan operasi dari masing-masing kelas dapat dilihat pada Lampiran C. Sedangkan diagram kelas perancangan, beserta hubungan antar kelas, terdapat pada Gambar IV–10.

(11)

Tabel IV-2 Daftar kelas perancangan

Nama Kelas Keterangan

XGPMIDlet Kelas yang mengatur tampilan perangkat lunak

Embed Kelas yang mengatur proses penyisipan pesan, validasi ukuran,

serta menyimpan objek masukan

Extract Kelas yang mengatur proses ekstraksi pesan, serta menyimpan objek masukan

Video Kelas yang melakukan segala proses terhadap video, seperti

validasi format, serta perubahan dan pembacaan data video

Message Kelas yang mengatur pembacaan pesan, dan pembangkitan

header pesan, yang digunakan pada proses penyisipan pesan, serta penulisan pesan pada proses ekstraksi

Key Kelas yang membangkitkan deretan bilangan acak, untuk

mengacak atau mengatur bit-bit pesan

Lib Kelas yang menyimpan semua konstanta dan operasi yang

dibutuhkan oleh kelas lainnya

XGPMIDlet -embed: Embed -extract: Extract -form: Form -fileBrowser: FileBrowser -textField: TextField -textBox: TextBox -list: List -alert: Alert -waitScreen: WaitScreen -command: Command -task: SimpleCancellableTask <<create>>+XGPMIDlet() -initialize()

+switchDisplayable(alert: Alert, nextDisplayable: Displayable) +commandAction(command: Command, displayable: Displayable) +startApp() +pauseApp() +destroyApp(unconditional: boolean) +clearData() Video -bufferBit: StringBuffer -messageResult: StringBuffer -messageBit: StringBuffer -fileNameResult: String -nPict: int -bitLSB: int -totalMessageSize: int -pictOffset: int[*] -pictSize: int[*] -buffer: byte[*] -fileSize: long -stopEmbed: boolean -stopExtract: boolean +overwrite: boolean -fileName: String -fileNameOutput: String -fileConnectionInput: FileConnection -fileConnectionOutput: FileConnection -dataInputStream: DataInputStream -dataOutputStream: DataOutputStream -vMsgError: Vector <<create>>+Video() -openReader() -closeReader() -openWriter() -closeWriter() -readInt(times: int): int -readBit(len: int): String -writeByte() -skipBit(len: int) -readNext(): int -readByte(len: int) -skipByte(len: int) -skipByteTo(pos: int)

-startUpEmbed(message: Message, key: Key) +copyFile(): boolean

+delete(fileName: String) +renameOutput(nFileName: String)

+embed(message: Message, key: Key, write: boolean): String -finishEmbed(message: Message)

-writeMessage(message: Message, key: Key) -startUpExtract(message: Message, key: Key) +extract(message: Message, key: Key): String -finishExtract(message: Message, key: Key) -makeFileName(stBit: String) -makeMessageSize(stBit: String) -startUpValidateFormat() +validateFormat() +setURL(nURL: String) +isOutputExist(nName: String): boolean +checkSize(nURL: String): boolean +setURLOutput(nURLOutput: String) +getURLOutput(): String +getFileName(): String +getFileNameOutput(): String +getMsgError(): Vector +isAnyError(): boolean Embed -messageReady: boolean -videoReady: boolean -video: Video -message: Message -key: Key -statusOutput: String <<create>>+Embed()

+setVideoFileName(nURL: String): boolean +getVideoFileName(): String +setVideoOutputFileName(name: String) +getVideoOutputFileName(): String +setVideoOverwrite(nOverwrite: boolean) +getVideoOverwrite(): boolean +getVideoMsgError(): Vector +getMessageFileName(): String +setMessageFileName(url: String) +setMessageText(text: String) +getMessageText(): String +isMessageFile(): boolean +setPassword(nPassword: String) +getPassword(): String +clear() +allReady(): boolean +videoAnalyze(): boolean +videoEmbedCancel() +videoEmbedFinish() +videoEmbed(): String Extract -video: Video -message: Message -key: Key -videoReady: boolean <<create>>+Extract() +setVideoFileName(address: String) +getVideoFileName(): String +getVideoMsgError(): Vector +getMessageText(): String +getPassword(): String +setPassword(nPassword: String) +clear() +allReady(): boolean +videoExtract(): String +videoAnalyze(): boolean Message -type: short -url: String -fileName: String -filePath: String -status: String -text: StringBuffer -messageBit: StringBuffer -headerBit: StringBuffer -fileConnection: FileConnection -dataInputStream: DataInputStream -dataOutputStream: DataOutputStream -headerWritten: boolean -sizeTotalMessage: int -byteWritten: int -counterMessageBit: int -counterHeaderBit: int -counterTotal: int -message: byte[*] -header: byte[*] <<create>>+Message() -openFileRead() -closeFileRead()

-openFileWrite(nPath: String, nName: String): boolean -closeFileWrite()

+tryCreate(nPath: String, nName: String): boolean -writeText(x: char)

-writeByte(x: int)

+writeMessage(key: Key, ch: char) -readNext(): byte +startUpEmbed(key: Key) +finishEmbed() +startUpExtract(key: Key) -flushMessage(key: Key) +finishExtract(key: Key) -generateMessage(): int -generateMessageBit(key: Key) -generateHeaderBit() -generateStatus(statusType: short) +getNextBit(key: Key): char +getType(): short +setType(nType: short) +setSizeMessage(nSizeTotalMessage: int) +getSizeMessage(): int +getTotalSize(): int +setURL(nURL: String) +getFileName(): String +getByteWritten(): int +getStatus(): String +getText(): String +setText(nText: String) Key -password: String -md5: MD5 -rand: Random -theKey: int[*] -boolKey: boolean[*] <<create>>+Key() +startUp() +generateTheKey(sizeKey: int) -generateSeedMD5() +getNextInt(): int +setPassword(nPassword: String) +getPassword(): String Lib +msgSize: int +vidSize: int +LSBSize: int +ftypSupported: String[*] +ftypUnSupported: String[*] +container: String[*] +PICT_TYPE_INTRA: int +PICT_TYPE_INTER: int +ERROR_UNCOMPATIBLE_TYPE: String +ERROR_UNKNOWN_TYPE: String +ERROR_H263_NOT_BASELINE: String +ERROR_MP4: String +OPEN_READ: int +OPEN_WRITE: int +OPEN_READ_WRITE: int +vlcMcbpcIPict: String[*] +vlcMcbpcIPictMbType: int[*] +vlcMcbpcIPictCbpc: String[*] +vlcMcbpcPPict: String[*] +vlcMcbpcPPictMbType: int[*] +vlcMcbpcPPictCbpc: String[*] +vlcCbpy: String[*] +vlcMvd: String[*] +vlcMvdVector: double[*] +vlcMvdDifference: double[*] +vlcTcoef: String[*] +vlcTcoefRun: int[*] +vlcTcoefLast: int[*] +vlcTcoefLevel: int[*] +maxBit: int +TYPE_FILE: short +TYPE_TEXT: short +STATUS_SUCCEED: short +STATUS_MEMORY_ERROR: short +bitToInt(bit: String): int +byteToBit(x: int): String +hexToInt(hex: String): int

Gambar

Gambar dari sistem dapat dilihat pada Gambar IV–1. Video yang mengandung pesan  dapat diekstraksi kembali pada mobile phone yang sama, atau mobile phone yang lain,  dengan  menggunakan  perangkat  lunak  XGP
Tabel IV-1 Narasi use case
Diagram kelas analisis untuk seluruh modul dapat dilihat pada  Gambar IV–6. Jumlah  kelas  pada  diagram  ini  berjumlah  6  kelas
Tabel IV-2 Daftar kelas perancangan

Referensi

Dokumen terkait

241 KPIG GLOBAL LAND DEVELOPMENT Tbk BSRE1 - BSR

Skripsi yang berjudul “Pengaruh Inflasi, Suku Bunga, dan Nilai Tukar Terhadap Indeks Jakarta Islamic Index (JII) periode Januari 2010- November 2015” ini ditulis

Data hasil observasi dari 3 observer terkait penggunaan model Think Talk Write dengan media konkret berupa replika dadu, balok, dan prisma tegak pada

Penghargaan terhadap keikutsertaan mahasiswa dalam setiap kegiataan organisasi kemahasiswaan baik sebagai pengurus maupun sebagai panitia yang diselenggarakan oleh

Selain pengujian melalui professional judgment, pengujian modul juga dilakukan dengan ujicoba pelatihan terhadap tiga orang siswa mengenai dua sesi yang ada di

Kegiatan pengabdian kepada masyarakat ini secara umum dapat dilakukan sesuai dengan rencana. Walaupun pada pelaksanaan masih terdapat jadwal pelaksanaan kegiatan yang

Mungkin banyak hal yang kita rasakan didalam hati, tapi semua itu seolah cukup untuk kita rasakan bukan untuk dikatakan.. Mau dikatakan bagaimanapun tidak akan ada orang

Ganguan ekskresi natrium, dalam perjalanan PGK kemampuan nefron untuk mengatur keseimbangan natrium menjadi terganggu, pada pasien dengan CKD yang stabil jumlah