PENDAHULUAN
A. Latar Belakang Masalah
Dalam dunia teknologi sekarang pengembangan dalam bidang informatikan telah mengalami perkembangan yang sangat pesat. Dengan perkembangan ini, dalam bidang informatika tidak hanya menghasilkan hanya dalam pengembangan program perangkat lunak saja, melainkan pengambangan dalam bidang suatu permodelan yang bersifat komplek.
Dalam pembuatan sebuah perangkat lunak yang haruslah memiliki Teknik analisa kebutuhan dan teknik permodelan yang baik, supaya terwujudnya suatu perangkat lunak yang baik. Dengan hal tersebut maka perlulah suatu pengenalan mengenai permodelan dalam suatu pembangunan Perangkat Lunak (Software). Berdasarkan tugas yang kami peroleh, kami hanya membatasi penjelasan mengenai permodelan ini.
PEMBAHASAN
A. Pengertian Proses Pengembangan Perangkat Lunak
Proses pengembangan perangkat lunak (Software Process / Development Paradigm) adalah sekumpulan tahap, tugas dan aktivitas yang dibutuhkan untuk secara effisien mentransformasikan kebutuhan pemakai ke suatu solusi perangkat lunak yang efektif.Pemodelan proses perangkat lunak (Software Process Modeling) bertujuan untuk merepresentasikan aktivitas yang terjadi selama pembuatan perangkat lunak dan perubahan-perubahannya (evolusi). Latar belakang penggunaan model-model tersebut adalah kebutuhan untuk menghasilkan suatu sistem yang benar sedini mungkin didalam proses pengembangannya.
Alasan utama adalah biaya, Semakin dini suatu kesalahan bisa dideteksi dalam pengembangan sistem, biaya perbaikannya semakin rendah.
B. Model-Model Proses Pengembangan Perangkat Lunak.
1. Incremental model
A. Pengertian
Model Incremental dalam rekayasa perangkat lunak, menerapkan rekayasa perangkat lunak. Pada saat model incremental (pertambahan) ini digunakan, pertambahan pertama sering merupakan produk inti (core product), yaitu sebuah model pertambahan yang dipergunakan, tetapi beberapa muka tambahan (beberapa diketahui dan beberapa tidak) tetap tidak disampaikan. Produk inti tersebut dipergunakan oleh pelanggan (atau mengalami pengkajian detail). Sebagai hasil dari pemakaian dan/atau evaluasi maka dikembangkan rencana bagi pertambahan selanjutnya.Rencana tersebut menekankan modifikasi produk inti untuk secara lebih baik memenuhi kebutuhan para pelanggan dan penyampaian fitur serta fungsional tambahan. Proses ini mengikuti penyampaian setiap pertambahan sampai bisa menghasilkan produk yang lengkap. Proses membangun berhenti jika produk telah mencapai seluruh fungsi yang diharapkan.
Model incremental menggabungkan elemen-elemen model sekuensial linier (diimplementasikan secara berulang) dengan filosofi prototype interatif. Model ini memakai urutan-urutan linier di dalam model yang membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier menghasilkan pertambahan perangkat lunak yang kemudian dapat disampaikan kepada pengguna.
Adapun beberapa tahapan yang ada pada model incremental dimana tahapan-tahapan tersebut dilakukan secara berurutan. Setiap bagian yang sudah selesai dilakukan testing, dikirim ke pemakai untuk langsung dapat digunakan. Tahapan Incremental Model adalah :
• Requirement , Requirment adalah proses tahapan awal yang dilakukan pada incremental model adalah penentuan kebutuhan atau analisis kebutuhan.
• Specification, Specification adalah proses spesifikasi dimana menggunakan analisis kebutuhan sebagai acuannya.
• Architecture Design, adalah tahap selanjutnya, perancangan software yang terbuka agar dapat diterapkan sistem pembangunan per-bagian pada tahapan selanjutnya.
• Code setelah melakukan proses desain selanjutnya ada pengkodean.
• Test merupakan tahap pengujian dalam model ini
Tahapan-tahapan tersebut dilakukan secara berurutan. Setiap bagian yang sudah selesai dilakukan testing, dikirim ke pemakai untuk langsung dapat digunakan. Pada incremental model, tiga tahapan awal harus diselesaikan terlebih dahulu sebelum sebelum tahap membangun tiap modal. Untuk mengantisipasi kondisi yang terjadi pada incremental model, diperkenalkan model More Risky Incremental Model.
Model ini menerapkan sistem kerja yang paralel. Setelah daftar kebutuhan didapatkan dari pemakai, tim spesifikasi membuat spesifikasi untuk modul pertama. Setelah spesifikasi pertama selesai, tim desain menindak lanjuti. Tim spesifikasi sebelumnya juga langsung membuat spesifikasi untuk model kedua, dan seterusnya. Jadi, tidak harus menunggu modul pertama selesai hingga dikirim ke user.
Incremental Model merupakan gabungan antara model linear sekuensial dan prototyping. Setiap linear sekuen menghasilkan produk yang deliveriables. Increment pertama merupakan produk inti yang mengandung persyaratan/kebutuhan dasar. Penambahan dilakukan pada increment-incremet berikutnya
B. Contoh Penerapan Model Incremental
Perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigma pertambahan akan menyampaikan manajemen file, editing, serta fungsi penghasilan dokumen pada pertambahan pertama, dan selanjutnya. Pertambahan pertama dapat disebut sebagai produk inti (core product). Dan pada pertambahan selanjutnya, produk inti akan dikembangkan terus hingga menghasilkan produk jadi yang siap untuk digunakan/dipasarkan.C. KARAKTERISTIK INCREMENTAL
1. Kombinasikan element-element dari waterfall dengan sifat iterasi/perulangan.2. Element-element dalam waterfall dikerjakan dengan hasil berupa produk dengan spesifikasi tertentu,
kemudian proses dimulai dari fase pertama hingga akhir dan menghasilkan produk dengan spesifikasi yang lebih lengkap dari yang sebelumnya. Demikian seterusnya hingga semua spesifikasi memenuhi kebutuhan yang ditetapkan oleh pengguna.
3. Produk hasil increment pertama biasanya produk inti (core product), yaitu produk yang memenuhi kebutuhan dasar. Produk tersebut digunakan oleh pengguna atau menjalani review/pengecekan detil. Hasil review tersebut menjadi bekal untuk pembangunan pada increment berikutnya. Hal ini terus dikerjakan sampai produk yang komplit dihasilkan.
4. Model ini cocok jika jumlah anggota tim pengembang/pembangun PL tidak cukup.
5. Mampu mengakomodasi perubahan secara fleksibel.
6. Produk yang dihasilkan pada increment pertama bukanlah prototype, tapi produk yang sudah bisa berfungsi dengan spesifikasi dasar.
7. Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment.
8. Produk hasil increment pertama biasanya produk inti (core product), yaitu produk yang memenuhi kebutuhan dasar. Produk tersebut digunakan oleh pengguna atau menjalani review/pengecekan detil. Hasil review tersebut menjadi bekal untuk pembangunan pada increment berikutnya. Hal ini terus dikerjakan sampai produk yang komplit dihasilkan.
D. Keunggulan dari Incremental Model
1. Personil bekerja optimal2. Mampu mengakomodasi perubahan secara fleksibel.
3. Merupakan model dengan manajemen yang sederhana
4. Prioritas tinggi pada pelayanan system adalah yang paling diuji.
5. Pihak konsumen dapat langsung menggunakan dahulu bagian-bagian yang telah selesai dibangun. Contohnya pemasukan data karyawan
6. Mengurangi trauma karena perubahan sistem. Klien dibiasakan perlahan-lahan menggunakan produknya bagian per bagian
7. Memaksimalkan pengembalian modal investasi konsumen
8. Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem
E. Kekurangan dari Incremental Model
1. Cocok untuk proyek berukuran kecil (tidak lebih dari 200.000 baris coding)2. kemungkinan tiap bagian tidak dapat diintegrasikan
3. Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment
4. Harus Open Architecture
5. Dapat menjadi build and Fix Model, karena kemampuannya untuk selalu mendapat perubahan selama proses rekayasa berlangsung
6. Butuh waktu yang relatif lebih lama untuk menghasilkan produk yang lengkap.
F. KENDALA PENGGUNAAN INCREMENTAL MODEL
Kendala yang sering terjadi adalah sulitnya untuk memetakan kebutuhan user (customer) ke dalam rencana spesifikasi masing-masing hasil increment. Hal ini disebabkan pula karena seringkali user sulit menentukan kebutuhannya sendiri secara eksplisit atau jelas.Sebagai contoh pertama, software word-processing, dibangun menggunakan incremental model, mendelivery 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 incrementketiga. Proses akan diulangi sampai produk lengkap telah dihasilkan. Jika menggunakan Incremental model,increment yang pertama merupakan inti product. Incremental model focus pada pendeliverian opertional productpada tiap increment.
Sebagai contoh kedua, mengadopsi model sekuensial linier dan model prototipe. Fungsi dasar sama, tapi ada tambahan asesoris (contoh : ada M.Word 1997, 2000). Fungsi tambahan ditambahkan terus untuk membuat system menjadi lebih baik. Pada increment pertama PL yang jadi, mengakomodasi kebutuhan inti. Baru pada tahap berikutnya ditambahkan kemampuan baru.
Mengapa model ini sangat populer??? Selain karena pengaplikasian menggunakan model ini mudah, kelebihan dari model ini adalah ketika semua kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal project, maka SE dapat berjalan dengan baik dan tanpa masalah. Meskipun seringkali kebutuhan sistem tidak dapat didefinisikan seeksplisit yang diinginkan, tetapi paling tidak, problem pada kebutuhan sistem di awal project lebih ekonomis dalam hal uang (lebih murah), usaha, dan waktu yang terbuang lebih sedikit jika dibandingkan problem yang muncul pada tahap-tahap selanjutnya.
Meskipun demikian, karena model ini melakukan pendekatan secara urut / sequential, maka ketika suatu tahap terhambat, tahap selanjutnya tidak dapat dikerjakan dengan baik dan itu menjadi salah satu kekurangan dari model ini.
2. Prototyping
A. Pengertian Prototyping Model
Prototyping merupakan salah satu metode pengembangan perangat lunak yang banyak digunakan. Dengan metode prototyping ini pengembang dan pelanggan dapat saling berinteraksi selama proses pembuatan sistem.Prototyping dapat diartikan sebagai proses yang digunakan untuk membantu pengembang perangkat lunak dalam membentuk model dari perangkat lunak yang harus dibuat.Model tersebut dapat berupa tiga bentuk:
1. Bentuk prototype di atas kertas/model berbasis komputer yang menggambarkan interaksi manusia yang mungkin terjadi.
2. Working prototype, yang mengimplementasikan sebagian dari fungsi yang ditawarkan perangkat lunak.
3. Program jadi yang melakukan sebagian atau seluruh fungsi yang akan dilakukan, tapi masih ada fitur yang masih dikembangkan.
Sering terjadi seorang pelanggan hanya mendefinisikan secara umum apa yang dikehendakinya tanpa menyebutkan secara detal output apa saja yang dibutuhkan, pemrosesan dan data-data apa saja yang dibutuhkan. Sebaliknya disisi pengembang kurang memperhatikan efesiensi algoritma, kemampuan sistem operasi dan interface yang menghubungkan manusia dan komputer.
Untuk mengatasi ketidakserasian antara pelanggan dan pengembang , maka harus dibutuhakan kerjasama yanga baik diantara keduanya sehingga pengembang akan mengetahui dengan benar apa yang diinginkan pelanggan dengan tidak mengesampingkan segi-segi teknis dan pelanggan akan mengetahui proses-proses dalm menyelasaikan sistem yang diinginkan. Dengan demikian akan menghasilkan sistem sesuai dengan jadwal waktu penyelesaian yang telah ditentukan.
Kunci agar model prototype ini berhasil dengan baik adalah dengan mendefinisikan aturan-aturan main pada saat awal, yaitu pelanggan dan pengembang harus setuju bahwa prototype dibangun untuk mendefinisikan kebutuhan. Prototype akan dihilangkan sebagian atau seluruhnya dan perangkat lunak aktual aktual direkayasa dengan kualitas dan implementasi yang sudah ditentukan.
Prototyping merupakan Javascript Framework yang dibuat untuk lebih memudahkan proses dalam membangun aplikasi berbasis web. Metode protyping sebagai suatu paradigma baru dalam pengembangan sistem informasi, tidak hanya sekedar suatu evolusi dari metode pengembangan sistem informasi yang sudah ada, tetapi sekaligus merupakan revolusi dalam pengembangan sistem informasi manajemen.
Karakteristik metode prototyping meliputi langkah-langkah :
1. Pemilahan fungsi
2. Penyusunan Sistem Informasi
3. Evaluasi
4. Penggunaan Selanjutnya
B. Jenis –jenis Prototyping
Ada dua jenis prototype antara lain:1. Jenis I : Suatu Sistem yang akan menjadi sistem operasional
2. Jenis II : Suatu model yang dapat dibuang yang berfungsi sebagai cetak biru bagi system operasional.
a.Jenis-jenis prototyping meliputi:
1.Feasibility prototyping
Feasibility prototyping – digunakan untuk menguji kelayakan dari teknologi yang akan digunakan untuk system informasi yang akan disusun.
2.Requirement prototyping
Requirement prototyping – digunakan untuk mengetahui kebutuhan aktivitas bisnis user.
3.Desain Prototyping
Desain Prototyping - digunakan untuk mendorong perancangan system informasi yang akan digunakan.
Implementation prototyping
Implementation prototyping – merupakan lanjytan dari rancangan protipe, prototype ini langsung disusun sebagai suatu system informasi yang akan digunakan
b. Teknik-teknik prototyping meliputi:
4.Perancangan Model
5.Perancangan Dialog
6.Simulasi
C. System prototype
Prototype yang berupa model lengkap dari perangkat lunak.Tahap-tahap dalam prototyping boleh dikata merupakan tahap-tahap yang dipercepat. Strategi utama dalam prototyping adalah kerjakan yang mudah terlebih dahulu dan sampaikan hasil kepada pengguna sesegera mungkin. Harris (2003) membagi prototyping dalam enam tahapan seperti terlihat pada gambar 2.5.
Tahapan-tahapan secara ringkas dapat dijelaskan sebagai berikut:
1. Identifikasi kandidat prototyping. Kandidat dalam kasus ini meliputi user interface (menu, dialog, input dan output), file-file transaksi utama, dan fungsi-fungsi pemrosesan sederhana.
2. Rancang bangun prototype dengan bantuan software seperti word processor, spreadsheet, database, pengolah grafik, dan software CASE (Computer-Aided System Engineering).
3. Uji prototype untuk memastikan prototype dapat dengan mudah dijalankan untuk tujuan demonstrasi.
4. Siapkan prototype USD (User’s System Diagram) untuk mengidentifikasi bagian-bagian dari perangkat lunak yang di-prototype-kan.
5. Evaluasi dengan pengguna untuk mengevaluasi prototype dan melakukan perubahan jika diperlukan.
6. Transformasikan prototype menjadi perangkat lunak yang beroperasi penuh dengan melakukan penghilangan kode-kode yang tidak dibutuhkan, penambahan program-program yang memang dibutuhkan dan perbaikan dan pengujian perangkat lunak secara berulang.
D.Keunggulan dan Kelemahan Prototyping
Keunggulan Prototyping
1. Adanya komunikasi yang baik antara pengembang dan pelanggan.
2. Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan.
3. Pelanggan berperan aktif dalam pengembangan system.
4. Lebih menghemat waktu dalam pengembangan system.
5. Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.
Kelemahan Prototyping
1. Pelanggan kadang tidak melihat atau menyadari bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangja waktu lama.
2. penegmbang biasanya ingin cepat menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan lebih lanjut bahwaprogram tersebut hanya merupakan cetak biru sistem.
3. Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik
Prototyping bekerja dengan baik pada penerapan-penerapan yang berciri sebagai berikut:
1. Resiko tinggi Yaitu untuk maslaha-masalah yang tidak terstruktur dengan baik, ada perubahan yang besar dari waktu ke waktu, dan adanya persyaratan data yang tidak menentu.
2. Interaksi pemakai penting. Sistem harus menyediakan dialog on-line antara pelanggan dan komputer.
3. Perlunya penyelesaian yang cepat.
4. Perilaku pemakai yang sulit ditebak.
5. Sitem yang inovatif. Sistem tersebut membutuhkan cara penyelesaian masalah dan penggunaan perangkat keras yang mutakhir.
6. Perkiraan tahap penggunaan sistem yang pendek.
E. Tahapan – tahapan prototyping
Tahapan-tahapan dalam Prototyping adalah sebagai berikut:1. Pengumpulan kebutuhan
Pelanggan dan pengembang bersama-sama mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat.
2. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada pelanggan (misalnya dengan membuat input dan format output).
3. Evaluasi protoptyping
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginan pelanggan. Jika sudah sesuai maka langkah 4 akan diambil. Jika tidak prototyping direvisi dengan mengulangi langkah1, 2 , dan 3.
4. Mengkodekan system
Dalam tahap ini prototyping yang sudah di sepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai.
5. Menguji system
Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. Pengujian ini dilakukan dengan White Box, Black Box, Basis Path, pengujian arsitektur dan lain-lain.
6. Evaluasi Sistem.
Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan Juka ya, langkah 7 dilakukan; jika tidak, ulangi langkah 4 dan 5.
7. Menggunakan system
Perangkat lunak yang telah diuji dan diterima pelanggan siap untuk digunakan.
3. CONCURENT DEVELOPMENT MODEL
A. DEFENISI CONCURENT DEVELOPMENT MODEL
Concurrent development model adalah Cara/Proses pengembangan yang pada dasarnya adalah rangkaian dari kegiatan teknis, tugas, dan hubungan saling terkait dengan kegiatan seperti analisis desain atau komunikasi. Aktifitas dalam model ini dilakukan secara simultan, setiap aktifitas kerja saling terkait dengan aktifitas kerja lain. Concurrent Development Model yang biasa disebut dengan Concurrent Engineering adalah pengembangan berdasarkan parelisasi (yaitu melakukan tugas secara bersamaan).
Pengembangan Concurrent development model terjadi seiring dengan analisis yang dilakukan terhadap pengembangan model lainnya seperti model Inkremental, waterfall, dll. Di mana pada model Concurrent Development Model ini waktu yang diperlukan untuk membawa produk ke pasar relatif lebih singkat. Concurrent Development Model Mirip Spiral model, biasa digunakan dalam pengembangan aplikasi client / server.
Concurrent Models Dalam buku Roger S. Pressman Model Pengembangan Concurrent, atau yang biasa disebut Concurrent Engineering, yang memungkinan tim software untuk merepresentasikan secara berulang-ulang dan elemen-elemen searah mengenai segala model proses yang concurrent.
Model pembangunan yang bersamaan, kadang-kadang disebut concurrent engineering, telah digambarkan dalam cara berikut oleh Davis dan Sitaram. Pada kenyataannya, proses konkuren model ini berlaku untuk semua jenis pengembangan perangkat lunak dan memberikan gambaran yang akurat tentang keadaan sekarang dari suatu proyek. Model proses concurrent biasa diaplikasikan kedalam semua tipe pengembangan perangkat lunak, dan memberikan keadaan akurat mengenai keadaan tertentu dari sebuah proyek.
Model proses yang concurrent mendefinisikan sebuah rangkaian peristiwa yang akan memicu transisi dari negara bagian untuk masing-masing kegiatan rekayasa perangkat lunak. Pada model ini aktifitas kerja dilakukan secara bersamaan, setiap proses kerja memiliki beberapa pemicu kerja dari aktifitas. Pemicu dapat berasal dari awal proses kerja maupun dari pemicu yang lain karena setiap pemicu akan saling berhubungan. Terdapat dua dimensi aktivitas yang digambarkan oleh model ini sebagai berikut.
Dari gambar diatas menunjukkan skematika dari satu aktivitas dengan concurrent process model. Aktivitas-Analisa-mungkin pada tiaporang macatat bagian-bagian disetiap waktu. Dengan cara yang sama, aktivitas yang lain ( seperti, disain atau komunikasi pelanggan) dapat digambarkan denagn cara yang sama.
Concurrent Process Model dapat digambarkan secara skematik sebagai rangkaian dari kegiatan teknis utama, tugas dan hubungan antar bagian. Jadi, pada intinya Metode CDMini suatu skema model yang mengimplementasikan suatu proses kerja yang dilakukan cepat namun dikerjakan secara bersama-sama dan tetap efektif dalam menyelesaikan berbagai penyelesaian masalah sesuai permintaan customer.
Diagram Modeling Activity menunjukkan skematik dari satu aktivitas dengan Concurrent Process Model. Aktivitas analisa pada setiap orang mencatat bagian-bagian di setiap waktu sesuai jadwal. Dengan cara yang sama, aktivitas yang lain seperti komunikasi antara customer dapat digambarkan dengan cara yang sama.
Concurrent Process Model sering digunakan sebagai paradigma untuk pengembangan aplikasi Client/Server.
Sistem Client/Server terdiri atas satu set komponen yang fungsional. Ketika diaplikasikan untuk Client/Server, Concurrent Process Model menggambarkan aktivitas di dua dimensi yaitu dimensi sistem dan dimensi komponen.
Concurrent process model cocok digunakan untuk pengembangan aplikasi client/server yang terdiri atas satu set komponen yang fungsional.
Terdapat dua dimensi aktivitas yang digambarkan oleh model ini sebagai berikut.
1. Dimensi sistem
Terdapat tiga proses di dalamnya yakni perancangan, perakitan (assembly) dan penggunaan (use).
2. Dimensi komponen
Terdapat dua kegiatan utama yaitu perancangan dan realisasi.
Concurrent (pertemuan) dapat diperoleh dengan dua cara:
1) sistem dan komponen kegiatan (aktifitas) terjadi secara simultan dan dapat diperagakan dengan memanfaatkan pendekatan yang berdasar pada status sebelumnya.
2) aplikasi client/server yang bersifat unik/khas di mana dapat diterapkan pada banyak komponen yang tiap-tiap komponen bisa dirancang dan direalisasikan secara serentak.
B. Kelebihan dari Concurrent Development Model
Proses Concurrent Development Model ini berlaku untuk semua jenis pengembanganperangkat lunak dan memberikan gambaran yang akurat tentang keadaan sekarang darisuatu proyek.Produk yang dihasilkan oleh model concurrent development ini lebih kokoh dan teratur dikarenakan prosesnya langsung dirancang sekaligus dibuat oleh teknisi.
Masing-masing kegiatan pada jaringan ada persamaan dengan kegiatan lain sehingga bisa dimulai atau diperbarui dari semua step.
Fitur fitur baru dapat ditambahkan nanti di akhir proyek. Ketika tahap validasi akhir tidak akan terkejut akan kesalah kesalahan atau permasalahan. Hal ini dikarenakan percobaan (testing) dilakukan secara terus menerus seiring dengan proyek berjalan.
Concurrent Development Model bersifat flexibel karena perkembangan incremental yang terjadi dapat secara penuh dianalisis oleh team, dan secara langsung akan memperolah feedback melalui testing.
C. Kekurangan dari Concurrent Development Model
Implementasi awal desain yang sedikit sulit, dan membutuhkan komunikasi dan kemampuan yang baik pada tiap teknisi dan teamnya. Karena kurangnya waktu, bila permasalahan tidak dapat diselesaikan dengan baik, maka kemungkinan concurrent design ini tidak akan bekerja dengan baik dan efisien.Karena kegiatannya berbentuk paralel akan sedikit sulit bila ditemukan suatu permasalahan di tengah proses. yang artinya akan semakin banyak waktu yang ditunda untuk pengerjaan. Lebih lama proses pembuatan terhenti akan lebih banyak timbul masalah saat mulainya proses pembuatan setelah terhenti. Statenya sangat banyak sehingga membutuhkan waktu lebih banyak. Maksudnya,Berhentinya suatu kegiatan karena kegiatan yang lain tentunya akan menyebabkan pengunduran waktu dari target yang ditentukan.
4. Agile Development Methods
A. Pengertian
Agile Development Methods adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun.Agile development methods merupakan salah satu dariMetodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak. Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada. Sehingga saat membuat perangkat lunak dengan menggunakan agile development methods diperlukan inovasi dan responsibiliti yang baik antara tim pengembang dan klien agar kualitas dari perangkat lunak yang dihasilkan bagus dan kelincahan dari tim seimbang.
• Perencanaan, pada langkah ini pengembang dan klien membuat rencana tentang kebutuhan dari perangkat lunak yang akan dibuat.
• Implementasi, bagian dari proses dimana programmer melakukan pengkodean perangkat lunak.
• Tes perangkat lunak, disini perangkat lunak yang telah dibuat di tes oleh bagian kontrol kualitas agar bug yang ditemukan bisa segera diperbaiki dan kualitas perangkat lunak terjaga.
• Dokumentasi, setelah dilakukan tes perangkat lunak langkah selanjutnya yaitu proses dokumentasi perangkat lunak untuk mempermudah proses maintenanance kedepannya.
• Deployment, yaitu proses yang dilakukan oleh penjamin kualitas untuk menguji kualitas sistem. Setelah sistem memenuhi syarat maka perangkat lunak siap dideployment.
• Pemeliharaan, langkah terakhir yaitu pemeliharaan. Tidak ada perangkat lunak yang 100% bebas dari bug, oleh karena itu sangatlah penting agar perangkat lunak dipelihara secara berkala.
B. Tujuan dirumuskannya agile development method
1. High-value & working App system,
Diharapkan dengan memakai agile development methods dapat dihasilkan perangkat lunak yang mempunyai nilai jual yang tinggi, biaya pembuatan bisa di tekan dan perangkat lunak bisa berjalan dengan baik.2. Iterative, incremental, evolutionary,
agile adalah metode pengembangan perangkat lunak yang iteratif, selalu mengalami perubahan, dan evolusioner. Tim harus bekerja dalam waktu yang singkat(biasanya 1-3 minggu) dan juga selalu menambah fungsionalitas dari perangkat lunak sesuai dengan kebutuhan klien. Agile dapat dianalogikan ketika seseorang ingin pergi ke suatu kota dan dia tidak tahu jalannya. Lalu bagaimana dia bisa sampai tujuan? Dengan sering bertanya kepada orang yang dia temui dijalan hingga dia sampai di tempat tujuan.3. Cost control & value-driven development,
salah satu tujuan dari agile yaitu pengembangan perangkat lunak disesuaikan dengan kebutuhan pengguna, tim bisa dengan cepat merespon kebutuhan yang diinginkan pengguna sehingga waktu dan biaya pembuatan perangkat lunak bisa dikontrol.4. High-quality production,
walaupun biaya pembuatan perangkat lunak bisa ditekan dan proses pembuatan bisa dipercepat, tetapi kualitas dari perangkat lunak yang dibuat harus tetap dijaga. Dengan melakukan tes setiap fungsionalitas perangkat lunak setelah selesei dibuat berarti agile juga mengakomodir kebutuhan ini.5. Flexible & risk management,
jika kita menggunakan metode pembuatan yang biasanya dipakai, jika ingin mengubah fungsionalitas dari wireframe yang telah dibuat di butuhkan proses yang rumit. Mulai dari pertemuan dengan sistem analis untuk mengubah sistem perangkat lunak, perubahan rencana rilis produk hingga perubahan biaya produksi. Pertemuan dengan klien untuk melakukan tes perangkat lunak juga sering dilakukan sehingga fungsionalitas perangkat lunak mudah diubah dan akhirnya kegagalan perangkat lunakpun bisa diminimalisir.6. Collaboration,
dengan menggunakan agile, tim pengembang diharuskan sering bertemu untuk membahas perkembangan proyek dan feedback dari klien yang nantinya akan ditambahkan dalam perangkat lunak, sehingga tim bisa berkolaborasi dengan maksimal.7. Self-organizing, self-managing teams,
rekrut orang terbaik, beri dan dukung kebutuhan mereka lalu biarkan mereka bekerja. Itulah perbedaan agile dan SDM lainnya. Dengan agile, developer dapat memanajemen dirinya sendiri, sedangkan manajer tim hanya bertugas mengkolaborasikan developer perangkat lunak dengan klien. Sehingga terciptalah tim yang solid.C. Cara Kerja dari Metode Agile ini digambarkan sebagai berikut.
Komposisi tim
Secara umum komposisi dari sebuah tim pengembang perangkat lunak yaitu :
• Owner / Klien, bersama dengan developer sebagai bagian terpenting dalam proyek, tugas dari klien menentukan fungsi dari perangkat lunak yang akan di buat, melakukan testing dan memberikan feedback.
• Manajer / Scrum Master, bertugas mengkolaborasikan developer dengan klien, membuat dan mengevaluasi target pengerjaan perangkat lunak.
• Sistem Analis, membuat arsitektur sistem dari perangkat lunak yang akan dibuat.
• Developer, merupakan titik vital dalam tim, tanpa developer perangkat lunak tidak akan bisa dibuat.
Story
Story adalah daftar kebutuhan atau fitur yang nanti akan dibuat. Story berisi apa yang klien kehendaki, dan ditulis dalam bahasa yang dimengerti klien. Dengan kata lain dapat disimpulan Story adalah bagian terpenting dari Scrum.
Story terdiri dari kolom-kolom berikut ini:
• ID – Identifikasi unik, biasanya berupa nomor urut. Hal ini untuk menghindari kehilangan jejak story kalau kita mengganti namanya.
• Nama – Nama story bersifat deskriptif, padat, singkat, dan jelas (2-10 kata), sehingga tim dan klien memahami kira-kira story yang dibicarakan.
• Kepentingan – Derajat kepentingan yang diberikan oleh klien terhadap story. Pemberian derajat kepentingan biasanya menggunakan deret fibonacci (1,1,2,3,5,dst). Semakin tinggi nilainya maka semakin tinggi pula prioritas pengerjaannya.
• Perkiraan awal – Perkiraan awal tim tentang berapa banyak kerja yang diperlukan untuk mengimplementasikan sebuah story.
• Demo – deskripsi umum bagaimana cara story ini didemokan pada waktu sprint demo (lakukan ini, klik itu, lalu ini akan muncul,dll).
Sprint
Sprint (Rapat perencanaan pembuatan perangkat lunak dilakukan 2-8 minggu sekali), yang perlu diperhatikan saat melaksanakan sprint antara lain :
•Tujuan sprint.
•Daftar anggota tim harus lengkap.
•Sprint backlog (daftar story yang akan diikutkan dalam sprint).
•Tanggal demo yang pasti.
•Tempat dan waktu yang jelas untuk pelaksanaan sprint berikutnya.
Tim akan melakukan sprint secara simultan sampai perangkat lunak selesei dikerjakan, sebagai contoh:
Sprint 1, tim membuat fungsi login,logout dan demo perangkat lunak akan dilakukan 3 minggu kemudian. Setelah dilakukan demo untuk mengevaluasi kerja yang dilakukan tim pada Sprint 1, maka Sprint 1 dianggap selesei. Bahan evaluasi dari Sprint 1 akan dibawa ke Sprint 2 begitu seterusnya sampai aplikasi selesei dikerjakan.
Berikut adalah ilustrasi dari metode Agile dalam pengembangan system informasi.
D. Kelebihan Agile
Beberapa kelebihan dari agile diantaranya :• 82% Menambah produktivitas tim.
• 77% Menambah kualitas perangkat lunak.
• 78% Menambah kepuasan klien.
• 37% Menghemat biaya.
E. Kekurangan
Sedangkan kekurangan dari agile antara lain :• Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
• Tidak cocok dalam skala tim yang besar (>20 orang).
• Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.
• Diperlukan Staff Programmer yang ahli (tenaga ahli) dan siap dibawah tekanan