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 :
- Menentukan tahap-tahap yang diperlukan untuk pengembangan perangkat lunak. yang diperlukan untuk pengembangan perangkat lunak.
- Menentukan urutan pelaksanaan dari tahap-tahap tersebut dalam rangka pengembangan perangkat lunak.
- Menentukan kriteria transisi/perpindahan dari satu tahap ke tahap berikutnya.
Waterfall Development
Model Waterfall Development. Klik gambar untuk memperbesar~ |
Langkah-langkah pengembangan perangkat lunak model Waterfall :
- 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.
- 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. - 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. - Detailed DesignSebuah spesifikasi diverifikasi lengkap dari struktur pengendalian, struktur data, hubungan antarmuka, ukuran, algoritma kunci, dan asumsi masing-masing komponen program.
- 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. - Integration
Ketepatan fungsi sebuah produk perangkat lunak yang terdiri dari komponen-komponen perangkat lunak. - 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. - 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.
- Terjadinya pembagian proyek menjadi tahap-tahap yang tidak fleksibel, karena komitmen harus dilakukan pada tahap awal proses.
- Hal ini mengakibatkan sulitnya untuk merespon perubahan kebutuhan pengguna (user).
- 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~ |
- Mendefinisikan objektif secara keseluruhan dan mengidentifikasi kebutuhan yang sudah diketahui.
- Melakukan perancangan secara cepat sebagai dasar untuk membuat prototype.
- Menguji coba dan mengevaluasi prototype dan kemudian melakukan penambahan dan perbaikan-perbaikan terhadap prototype yang sudah dibuat.
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
- Feasibility prototyping. Digunakan untuk menguji kelayakan dari teknologi yang akan digunakan untuk sistem informasi yang akan disusun.
- 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.
- Desain Prototyping. Digunakan untuk mendorong perancangan sistem informasi yang akan digunakan.
- Implementation prototyping. Merupakan lanjutan dari rancangan protipe, prototype ini langsung disusun sebagai suatu system informasi yang akan digunakan.
- User dapat berinteraksi aktif.
- Penentuan kebutuhan lebih mudah diwujudkan.
- Mempersingkat waktu pengembangan.
- Proses analisis dan perancangan terlalu singkat.
- Mengesampingkan alternatif pemecahan masalah.
- Bisanya kurang fleksible dalam mengahadapi perubahan.
- Prototype yang dihasilkan tidak selamanya mudah dirubah.
- Prototype terlalu cepat selesai.
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 :- Komunikasi Pelanggan.
Tugas-tugaas yang dibutuhkan untuk membangun komunikasi yang efektif di antara pengembang dan pelanggan. - Perencanaan
Tugas-tugaas yang dibutuhkan untuk membangun komunikasi yang efektif di antara pengembang dan pelanggan. - Analisis Resiko
Tugas-tugas yang dibutuhkan untuk menarik resiko-resiko, baik manajemen maupun teknis. - Perekayasaan
Tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut. - Konstruksi Saat Peluncuran
Tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut. - 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. |
- Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak komputer.
- 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.
- Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses.
- Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol.
- Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
- 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 :- 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? - 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. - 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. - 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. - 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.
- Dimungkinkan dalam proses pembuatan membutuhkan waktu yang sangat singkat (60-90 hari).
- Menghemat biaya, karena penekannya adalah penggunaan komponen-komponen yang sudah ada.
- RAD menggunakan kembali komponen-komponen yang sudah ada, maka beberapa komponen program sudah diuji sehingga kita dapat melakukan penghematan waktu dalam uji coba.
- Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber daya manusia yang memadai untuk menciptakan jumlah tim RAD yang baik.
- 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.
- Tidak semua aplikasi sesuai untuk RAD.
- 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 :
- Requirement
- Specification
- Architecture Design
Keunggulan metode spiral :
- Penambahan kemampuan fungsional akan lebih mudah diuji, diverifikasi, dan divalidasi dan dapat menurunkan biaya yang dikeluarkan untuk memperbaiki sistem.
- Nilai penggunaan dapat ditentukan pada setiap increament sehingga fungsionalitas sistem disediakan lebih awal.
- Increment awal berupa prototype untuk membantu memahami kebutuhan pada increment berikutnya.
- Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem.
- Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.
- Tiap bagian tidak dapat diintegrasikan.
- Setiap tambahan yang dibangun harus dimasukkan kedalam struktur yang ada tanpa menurunkan kualitas dari yang telah dibangun system tersebut sampai saat ini.
- 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 :
- 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. - 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.
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:
- 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. - Sistem-Sistem biasanya kurang terstruktur
Kecenderungan perubahan yang terus menerus akan mengurangi stuktrur dari perangkat lunak. Evolusi perangkat lunak terlihat sulit dan mahal. - 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.
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 |
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
thanks gun sangat membantu