Macam-Macam Model Pengembangan Perangkat Lunak

Selamat malam.

Sekali lagi, untuk kesekian kalinya-dua kali tepatnya-saya membuka dan membuat sebuah tulisan yang didasari oleh kewajiban saya sebagai pelajar dalam menyelesaikan sebuah amanat, atau bila Anda bukan orang yang senang dengan basa-basi, saya hanya akan bilang ini adalah sebuah tugas~

Kembali ke judul, pada saat ini saya akan menerangkan mengenai macam-macam model pengembangan perangkat lunak.

Mungkin banyak orang masih asing mendegar kata perangkat lunak, namun bila saya translasikan ke bahasa inggris, software akan terasa lebih ringan untuk didengar.

Sebelum kita mulai membahas bagaimana model pengembangan perangkat lunak, ada baiknya kita membahas terlebih dahulu apa yang disebut dengan rekayasa perangkat lunak, karena pengembangan perangkat lunak termasuk kedalam rekayasa perangkat lunak.

Secara teori, rekayasa perangkat lunak adalah pendekatan sistematik, berdisiplin dan dapat dikuantifikasi untuk mengembangkan, mengoperasikan dan merawat perangkat lunak, yaitu penerapan rekayasa terhadap perangkat lunak.


Aktifitas-aktifitas yang dilakukan pada pengembangan perangkat lunak dapat beragam sesuai paradigma atau model proses. Paradigma yang dipilih untuk pengembangan perangkat lunak adalah paradigma konvensional. Sedangkan model proses yang akan digunakan untuk pengembangan perangkat lunak ada beberapa macam.

Rekayasa Perangkat Lunak mempunyai fungsi utama dalam pengembangannya, antara lain :
  1. Menentukan tahap-tahap yang diperlukan untuk pengembangan perangkat lunak. yang diperlukan untuk pengembangan perangkat lunak.
  2. Menentukan urutan pelaksanaan dari tahap-tahap tersebut dalam rangka pengembangan perangkat lunak.
  3. Menentukan kriteria transisi/perpindahan dari satu tahap ke tahap berikutnya.
Dan berikut adalah macam-macam dari model proses pengembangan perangkat lunak :

Waterfall Development

Model Waterfall Development. Klik gambar untuk memperbesar~
Model waterfall merupakan metode yang sering digunakan oleh penganalisa sistem pada umumnya. Model ini adalah model klasik yang mengusung pengembangan perangkat lunak yang sistematis/sekuensial. Inti dari model waterfall adalah pengerjaan dari suatu sistem dilakukan secara berurutan atau secara linear. Jadi jika langkah satu belum dikerjakan maka tidak akan bisa melakukan pengerjaan langkah 2, 3 dan seterusnya.  Secara otomatis tahapan ke-3 akan bisa dilakukan jika tahap ke-1 dan ke-2 sudah dilakukan.

Langkah-langkah pengembangan perangkat lunak model Waterfall :
  1. System FeasibilityLangkah ini merupakan analisa terhadap kebutuhan sistem. Pengumpulan data dalam tahap ini bisa malakukan sebuah penelitian, wawancara atau studi literatur. Seorang sistem analis akan menggali informasi sebanyak-banyaknya dari pengguna sehingga akan tercipta sebuah sistem komputer yang bisa melakukan tugas-tugas yang diinginkan oleh user tersebut. Tahapan ini akan menghasilkan dokumen user requirment atau bisa dikatakan sebagai data yang berhubungan dengan keinginan user dalam pembuatan sistem. Dokumen ini yang akan menjadi acuan sistem analis untuk menerjemahkannya ke dalam bahasa pemrograman.
  2. Software Plans and Requirements
    Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk software engineering. Analis harus memahami fungsi, performance, dan interface terhadap elemen lainnya pada software yang diinginkan.

    Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara menerapkan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Panduan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan elemen lain, seperti : hardware, sofware, dan brainware.
  3. Product Design
    Proses desain akan menerjemahkan syarat kebutuhan ke sebuah perancangan perangkat lunak yang dapat diperkirakan sebelum dibuat coding. Proses ini berfokus pada : struktur data, arsitektur perangkat lunak, representasi interface, dan detail (algoritma) prosedural. Tahapan ini akan menghasilkan dokumen yang disebut software requirment. Dokumen inilah yang akan digunakan programmer untuk melakukan aktivitas pembuatan sistemnya.
  4. Detailed DesignSebuah spesifikasi diverifikasi lengkap dari struktur pengendalian, struktur data, hubungan antarmuka, ukuran, algoritma kunci, dan asumsi masing-masing komponen program.
  5. Code
    Coding merupan penerjemahan design dalam bahasa yang bisa dikenali oleh komputer. Dilakukan oleh programmer yang akan meterjemahkan transaksi yang diminta oleh user. Tahapan ini lah yang merupakan tahapan secara nyata dalam mengerjakan suatu sistem. Dalam artian penggunaan komputer akan dimaksimalkan dalam tahapan ini.  Setelah coding selesai maka akan dilakukan testing terhadap sistem yang telah dibuat tadi. Tujuan testing adalah menemukan kesalahan-kesalahan terhadap sistem tersebut dan kemudian bisa diperbaiki.
  6. Integration
    Ketepatan fungsi sebuah produk perangkat lunak yang terdiri dari komponen-komponen perangkat lunak.
  7. Implementation
    Tahapan ini bisa dikatakan final dalam pembuatan sebuah sistem. Setelah melakukan analisa, design dan pengkodean maka sistem yang sudah jadi akan digunakan oleh user.
  8. Operation and Maintenance
    Perangkat lunak yang sudah disampaikan kepada pelanggan pasti akan mengalami perubahan. Perubahan tersebut bisa karena mengalami kesalahan karena perangkat lunak harus menyesuaikan dengan lingkungan (peripheral atau sistem operasi baru) baru, atau karena pelanggan membutuhkan perkembangan fungsional.
Kelebihan model Waterfall adalah dapat digunakan jika suatu persyaratan untuk membuat suatu software sudah dipahami dengan baik dan sudah lengkap semua persyaratan yang ada. Sedangkan kekurangannya adalah :
  1. Terjadinya pembagian proyek menjadi tahap-tahap yang tidak fleksibel, karena komitmen harus dilakukan pada tahap awal proses.
  2. Hal ini mengakibatkan sulitnya untuk merespon perubahan kebutuhan pengguna (user).
  3. Model air terjun harus digunakan hanya ketika persyaratan dipahami dengan baik.

Prototype Development

Metode Prototype merupakan metode pengembangan perangkat lunak yang memodelkan dari sistem kerja suatu perangkat lunak yang belum lengkap dari pihak user. Para pengembang perangkat lunak melakukan koordinasi dan pertemuan-pertemuan yang secara intensif dengan user guna menampung informasi yang akan dijadikan dasar dalam perancangan perangkat lunak. Prototype dari perangkat lunak yang dihasilkan kemudian dipresentasikan kepada  dan user diberikan kesempatan untuk memberikan masukan masukan sehingga perangkat lunak yang dihasilkan nantinya betul-betul sesuai dengan keinginan dan kebutuhan user.

Perubahan dan presentasi prototype ini dapat dilakukan berkali-kali sampai dicapai kesepakatan bentuk perangkat lunak yang akan dipakai.

Model Prototype. Klik untuk memperbesar~
Metode pengembangan perangkat lunak ini dimulai dengan pengumpulan kebutuhan. Pendekatan prototyping model digunakan jika pemakai hanya mendefenisikan secara umum dari perangkat lunak tanpa merinci kebutuhan input, pemrosesan dan output-nya, sementara pengembang tidak begitu yakin akan efisiensi algoritma, adaptasi sistem operasi, atau bentuk antarmuka manusia-mesin yang harus diambil. Cakupan aktivitas dari prototyping model terdiri dari :
  1. Mendefinisikan objektif secara keseluruhan dan mengidentifikasi kebutuhan yang sudah diketahui.
  2. Melakukan perancangan secara cepat sebagai dasar untuk membuat prototype.
  3. Menguji coba dan mengevaluasi prototype dan kemudian melakukan penambahan dan perbaikan-perbaikan terhadap prototype yang sudah dibuat.
Secara ideal prototype berfungsi sebagai sebuah mekanisme untuk mengidentifikasi kebutuhan perangkat lunak.

Tahapan Metode Prototyping

  • Pemilihan Fungsi. Mengacu pada pemilahan fungsi yang harus ditampilkan oleh prototyping. Pemilahan harus selalu dilakukan berdasarkan pada tugas-tugas yang relevan yang sesuai dengan contoh kasus yang akan diperagakan.
  • Penyusunan Sistem Informasi. Bertujuan memenuhi permintaan kebutuhan akan tersedianya prototype.
  • Evaluasi.
  • Penggunaan Selanjutnya

 Jenis-Jenis Prototyping

  1. Feasibility prototyping. Digunakan untuk menguji kelayakan dari teknologi yang akan digunakan untuk sistem informasi yang akan disusun.
  2. Requirement prototyping. Digunakan untuk mengetahui kebutuhan aktivitas bisnis user. Misalnya dalam sebuah perusahaan terdapat user direktur, manajer, dan karyawan. Maka penggunaan sistem dapat dibedakan berdasarkan user tersebut sesuai dengan kebutuhannya.
  3. Desain Prototyping. Digunakan untuk mendorong perancangan sistem informasi yang  akan digunakan.
  4. Implementation prototyping. Merupakan lanjutan dari rancangan protipe, prototype ini langsung disusun sebagai suatu system informasi yang akan digunakan.
Keunggulan metode prototyping :
  1. User dapat berinteraksi aktif.
  2. Penentuan kebutuhan lebih mudah diwujudkan.
  3. Mempersingkat waktu pengembangan.
Kelemahan metode prototyping :
  1. Proses analisis dan perancangan terlalu singkat.
  2. Mengesampingkan alternatif pemecahan masalah.
  3. Bisanya kurang fleksible dalam mengahadapi perubahan.
  4. Prototype yang dihasilkan tidak selamanya mudah dirubah.
  5. Prototype terlalu cepat selesai.
Metode pengembangan perangkat lunak model prototype dirancang agar dapat menerima perubahan-perubahan dalam rangka menyempurnakan prototype yang sudah ada sehingga pada akhirnya dapat menghasilkan perangkat lunak yang dapat diterima dan perubahan-perubahan yang terjadi dapat dianggap merupakan bagian dari proses pengembangan itu sendiri.

Spiral Modeling

Model spiral adalah model proses software yang evolsioner yang merangkai sifat iteratif dari prototype dengan cara kontrol dan aspek sistematis dari model sekuensial linear. Model ini berpotensi untuk pengembangan versi software secara cepat. Di alam model spiral, software dikembangkan dalam dalam suatu deretan pertambahan. Selama awal iterasi, rilis inkremental bisa merupakan sebuah model atau prototype kertas. Selama iterasi berikutnya, sedikit semi sedikit dihasilkan versi sistem rekayasa yang lebih lengkap. Model spiral dibagi menjadi sejumlah aktifitas kerangka kerja, disebut juga wilayah tugas. 6 wilayah tugas yaitu  :
  1. Komunikasi Pelanggan.
    Tugas-tugaas yang dibutuhkan untuk membangun komunikasi yang efektif di antara pengembang dan pelanggan.
  2. Perencanaan
    Tugas-tugaas yang dibutuhkan untuk membangun komunikasi yang efektif di antara pengembang dan pelanggan.
  3. Analisis Resiko
    Tugas-tugas yang dibutuhkan untuk menarik resiko-resiko, baik manajemen maupun teknis.
  4. Perekayasaan
    Tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut.
  5. Konstruksi Saat Peluncuran
    Tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut.
  6. Evaluasi Pelangganan.
    Tugas-tugas yang dibutuhkan untuk memperoleh umpan balik dari pelanggan dengan didasarkan pada evaluasi representasi software,yang dibuat selama masa perekayasaan, dan diimplementasikan selama masa pemasangan.
Spiral Model. Klik untuk memperbesar.
Keunggulan metode spiral :
  1. Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak komputer.
  2. Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar. Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses.
  3. Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses.
Kelemahan metode spiral :
  1. Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol.
  2. Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
  3. Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolute.

Rapin Aplication Development (RAD) Model

Rapin Aplication Development (RAD) adalah sebuah model proses perkembangan software sekuensial linier yang menekankan siklus perkembangan yang sangat pendek. Model RAD ini merupakan sebuah adaptasi “kecepatan tinggi” dari model sekuensial linier di mana perkembangan cepat dicapai dengan menggunakan pendekatan kontruksi berbasis komponen. Jika kebutuhan dipahami dengan baik, proses RAD memungkinkan tim pengembangan menciptakan “sistem fungsional yang utuh” dalam periode waktu yang sangat pendek (kira-kira 60 sampai 90 hari). Karena dipakai terutama pada aplikasi sistem konstruksi, pendekatan RAD melingkupi fase – fase sebagai berikut :
  1. Bussiness modeling
    Aliran informasi di antara fungsi – fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan – pertanyaan berikut : informasi apa yang mengendalikan proses bisnis? Informasi apa yang di munculkan? Siapa yang memunculkanya? Ke mana informasi itu pergi? Siapa yang memprosesnya?
  2. Data modeling
    Aliran informasi yang didefinisikan sebagai bagian dari fase bussiness modelling disaring ke dalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut. Karakteristik (disebut atribut) masing – masing objek diidentifikasi dan hubungan antara objek – objek tersebut didefinisikan.
  3. Prosess modelling
    Aliran informasi yang didefinisikan di dalam fase data modeling ditransformasikan untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan diciptakan untuk menambah, memodifikasi, menghapus, atau mendapatkan kembali sebuah objek data.
  4. Aplication generation
    RAD mengasumsikan pemakaian teknik generasi ke empat. Selain menciptakan perangkat lunak dengan menggunakan bahasa pemrograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja untuk memkai lagi komponen program yang ada (pada saat memungkinkan) atau menciptakan komponen yang bisa dipakai lagi (bila perlu). Pada semua kasus, alat – alat bantu otomatis dipakai untuk memfasilitasi konstruksi perangkat lunak.
  5. Testing and turnover
    Karena proses RAD menekankan pada pemakaian kembali, banyak komponen program telah diuji. Hal ini mengurangi keseluruhan waktu pengujian. Tetapi komponen baru harus diuji dan semua interface harus dilatih secara penuh.
Keunggulan metode spiral :
  1. Dimungkinkan dalam proses pembuatan membutuhkan waktu yang sangat singkat (60-90 hari).
  2. Menghemat biaya, karena penekannya adalah penggunaan komponen-komponen yang sudah ada.
  3. RAD menggunakan kembali komponen-komponen yang sudah ada, maka beberapa komponen program sudah diuji sehingga kita dapat melakukan penghematan waktu dalam uji coba.
Kelemahan metode RAD :
  1. Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber daya manusia yang memadai untuk menciptakan jumlah tim RAD yang baik.
  2. RAD menuntut pengembangan dan pelanggan yang memiliki komitmen di dalam aktifitas rapid-fire yang diperlukan untuk melengkapi sebuah sistem, di dalam kerangka waktu yang sangat diperpendek. Jika komitmen tersebut tidak ada, proyek RAD akan gagal. RAD menekankan perkembangan komponen program yang bisa dipakai kembali.
  3. Tidak semua aplikasi sesuai untuk RAD.
  4. RAD menjadi tidak sesuai jika risiko teknisnya tinggi. Hal ini terjadi bila sebuah aplikasi baru memforsir teknologi baru atau bila perangkat lunak baru membutuhkan tingkat interoperabilitas yang tinggi dengan program komputer yang ada.
Model RAD. Klik Memperbesar.

Incremental Model

Pada tahun 1971 Harlan Mills (IBM) mengusulkan semestinya perkembangan software lebih tepat daripada membuatnya. Kita mulai membangun sistem sangat sederhana yang mendukung, memiliki fungsi sederhana, kemudian menambahkan dan mengembangkan software tersebut. Semestinya software pengembangan seperti bunga atau pohon. Nama lain perangkat lunak tersebut adalah incremental model.

Model incremental (Incremental waterfall model) merupakan perbaikan dari modelwaterfall dan sebagai standar pendekatan top-down. Ide dasar dari model ini adalahmembangun software secara meningkat (Increment) berdasarkan kemampuan fungsional. Model incremental ini diaplikasikan pada sistem pakar dengan penambahan rules yang mengakibatkan bertambahnya kemampuan fungsional sistem. Model incremental merupakan model continous rapid prototype dengan durasi yang diperpanjang hingga akhir prosespengembangan. Pada model prototipe biasa, prototipe hanya dibuat pada tahap awal untuk mendapatkan kebutuhan user. Model Incremental dalam rekayasa perangkat lunak, menerapkan rekayasa perangkat lunak perbagian, hingga menghasilkan perangkat lunak yang lengkap. Proses membangun berhenti jika produk telah mencapai seluruh fungsi yang diharapkan. Pada awal tahapan dilakukan penentuan kebutuhan dan spesifikasi. Kemudian dilakukan perancangan arsitektur software yang terbuka, agar dapat diterapkan pembangunan per-bagian pada tahapan selanjutnya.

Tahapan Incremental Model :
  1. Requirement
  2. Specification
  3. Architecture Design
Incremental model menerapkan rangkaian linear. Setiap rangkaian linear mendelivery increment dari software. Sebagai contoh, software word-processing, dibangun menggunakan incremental model, men-delivery fungsi dasar file management, editing, dan fungsi document production pada increment pertama. Kemampuan editing, dan fungsi document production yang lebih baik pada increment kedua, checking dan grammar spelling pada increment ketiga. Proses akan diulangi sampai produk yang lengkap telah dihasilkan. Jika menggunakan Incremental model, increment yang pertama merupakan inti product. Incremental model fokus pada pendeliverian opertional product pada tiap increment.

Keunggulan metode spiral :
  1. Penambahan kemampuan fungsional akan lebih mudah diuji, diverifikasi, dan divalidasi dan dapat menurunkan biaya yang dikeluarkan untuk memperbaiki sistem.
  2. Nilai penggunaan dapat ditentukan pada setiap increament sehingga fungsionalitas sistem disediakan lebih awal.
  3. Increment awal berupa prototype untuk membantu memahami kebutuhan pada increment berikutnya.
  4. Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem.
  5. Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.
Kelemahan metode RAD :
  1. Tiap bagian tidak dapat diintegrasikan.
  2. Setiap tambahan yang dibangun harus dimasukkan kedalam struktur yang ada tanpa menurunkan kualitas dari yang telah dibangun system tersebut sampai saat ini.
  3. Penambahan staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut.
Metode Increment. Klik untuk meperbesar.


Evolutionary Development Model

Model ini berdasarkan pada ide pengembangan pada implementasi awal yang akan menghasilkan komentar pemakai sehingga dapat dilakukan perbaikan melalui banyak versi sampai sistem yang mencukupi dapat dikembangan. Selain memiliki aktivitas-aktivitas yang terpisah model ini memberikan feedback dengan cepat dan serentak.

Terdapat 2 tipe pada model ini :
  1. Pemrograman Evolusioner
    Tujuannya adalah bekerjasama dengan pelanggan untuk menghasilkan kebutuhan-kebutuhan dan menyampaikan sistem akhir kepada pemakai. Pengembangan dimulai dengan bagian-bagian sistem yang dimengerti. Sistem dikembangkan melalui penambahan features sesuai yang diusulkan oleh pelanggan.
  2. Pemodelan
    Dimana tujuan pengembangan evolusioner pada tipe ini adalah mengetahui kebutuhan-kebutuhan pelanggan dan mengembangkan difinisi kebutuhan yang lebih baik untuk sistem. Model/contoh difikuskan pada penelitian bagian-bagian kebutuhan pelanggan yang kurang dimengerti.
Pemrograman evolusioner penting saat sulit untuk membuat spesifikasi sistem secara rinci. Beberapa orang mungkin setuju bahwa semua sistem masuk dalam tipe ini. Namun, pemprograman evolusioner banyak digunakan dalam pengembangan sistem AI (artificial intelligence) yang berusaha untuk menyamai kemampuan manusia.

Kita tidak mungkin membuat spesifikasi yang rinci untuk perangkat lunak yang menyamai manusia karena kita tidak mengerti bagaimana manusia menjalankan tugas-tugas mereka.

Pendekatan evolusioner biasanya lebih efektif daripada pendekatan waterfall untuk hal pengembangan perangkat lunak yang harus dengan segera dapat memenuhi kebutuhan pelanggan. Namun, dari segi teknik dan manajemen, model ini memiliki masalah mendasar yaitu:
  1. Proses Tidak Visibel
    Manager-manager membutuhkan "deliverables" yang teratur untuk mengukur kemajuan. Jika sistem dikembangkan dengan cepat akan terjadi pemborosan pada pembuatan dokumen yang menggambarkan setiap versi sistem.
  2. Sistem-Sistem biasanya kurang terstruktur
    Kecenderungan perubahan yang terus menerus akan mengurangi stuktrur dari perangkat lunak. Evolusi perangkat lunak terlihat sulit dan mahal.
  3. Keterampilan Khusus Yang Dimiliki
    Tidak jelas batasan ketrampilan yang normal dalam rekayasa perangkat lunak yang mungkin dapat digunakan secara efektif dalam model pengembangan ini. Kebanyakan sistem yang dikembangkan melalui cara ini telah diimplementasikan oleh kelompok kecil yang memiliki keterampilan yang tinggi dan motivasi yang kuat.
Untuk memecahkan masalah-masalah tersebut, kadang-kadang tujuan dari pengembangan evolusioner adalah mengembangkan contoh sistem. Contoh ini digunakan untuk mengerti dan mevalidasikan spesifikasi sistem. Disinilah pengembangan evolusioner merupakan bagian dari beberapa proses yang lebih luas. (Seperti model waterfall).

Karena masalah-masalah tersebut, sistem dengan skala besar biasanya tidak dikembangkan melalui cara ini. Pengembangan evolusioner lebih tepat untuk pengembangan sistem yang relatif kecil.

Masalah-masalah mengenai perubahan sistem yang ada dihindari dengan meimplementasi ulang sistem keseluruhan kapanpun perubahan yang signifikan diperlukan. Jika pemodelan digunakan, tidak terlalu mahal.

Metode Evolutionary
Begitulah, ternyata banyak sekali model pengembangan perangkat lunak yang sudah ada sekarang. Kita dapat mengunakan salah satu dari sekian banyak model pengembangan yang saya jelaskan.

Untuk artikel ini, saya banyak mengambil "referensi" dari teman saya. Terima kasih kepada Anda telah memberikan materi yang bisa jadi ilmu pengetahuan yang bermanfaat ini.

Jadi begitulah, semoga saya bisa membuka dan menulis di blog ini dengan kemauan saya sendiri untuk kesempatan berikutnya~


One Comment

  • 15 Oktober 2015 pukul 23.51 | Permalink

    thanks gun sangat membantu

  • Leave a Reply

    Silahkan tuangkan segala kritik, saran, maupun komentar yang ada dalam pikiran anda dengan bahasa yang baik dan benar. Terimakasih