Pages

Selasa, 13 Agustus 2013

Tugas 10 RPL

Pemeliharaan merupakan fase akhir pada siklus hidup pengembangan software. Pengembangan software didefinisikan oleh IEEE sebagai berikut:

Modifikasi produk software setelah digunakan oleh user, untuk mengoreksi kesalahan, meningkatkan kinerja, atau atribut lainnya, atau untuk beradaptasi dengan produk baru atau lingkungan yang berubah.

Istilah pemeliharaan perangkat lunak digunakan untuk menjabarkan aktivitas dari analis sistem (software engineering) yang terjadi pada saat hasil produk perangkat lunak sudah dipergunakan oleh pemakai (user). Biasanya pengembangan produk perangkat lunak memerlukan waktu antara 1 sampai dengan 2 tahun, tetapi pada pase pemeliharaan perangkat lunak menghabiskan 5 sampai dengan 10 tahun. Aktivitas yang terjadi pada pase pemeliharaan antara lain:
-penambahan atau peningkatan atau juga perbaikan untuk produk perangkat lunak
-adaptasi produk dengan lingkungan mesin yang baru
-pembetulan permasalahan yang timbul
“ Pemeliharaan sistem berawal begitu sistem baru menjadi operasional dan berakhir masa hidupnya”

Jenis Pemeliharaan :
•Pemeliharaan Korektif
Pemeliharaan perangkat lunak dengan melakukan perbaikan kesalahan yang terjadi pada perangkat lunak. Kesalahan dapat bersumber dari kesalahan perancangan, kesalahan logika atau kode program.
•Pemeliharaan Adaptif
Pemeliharaan perangkat lunak dengan melakukan penyesuaian fungsi-fungsi yang ada pada perangkat lunak sehingga lebih memudahkan user. Misalnya ada perubahan terhadap hardware atau sistem operasi yang digunakan, atau perubahan dari eksternal misalnya perubahan aturan bisnis, kebijakan pemerintah, atau alur kerja. Kebutuhan perubahan adaptif hanya bisa dikenali dan dimonitor oleh lingkungan tempat sistem itu dioperasikan.
•Pemeliharaan Penyempurnaan/perfektif
Pemeliharaan perangkat lunak dengan melakukan pengembangan / peningkatan terhadap perangkat lunak yang telah ada. Pemeliharaan perfektif mengacu pada peningkatan fungsionalitas atau kinerja sistem untuk meningkatkan layanan terhadap user. Software yang berhasil diterapkan biasanya cenderung mengalami pemeliharaan jenis ini, karena biasanya setelah berhasil menggunakan software, user cenderung ingin mencoba hal-hal baru diluar fitur yang sudah ditawarkan.
•Pemeliharaan Preventif
Pemeliharaan perangkat lunak dengan perombakan secara total atau melakukan perekayasaan kembali pada perangkat lunak yang ada.

Siklus Hidup Pemeliharaan Sistem (SMLC)
Tahapan SMLC :
•Memahami Permintaan Pemeliharaan
•Mentransformasi permintaan pemeliharaan menjadi pengubahan
•Menspesifikasi perubahan
•Mengembangkan perubahan
•Menguji perubahan
•Melatih pengguna dan melakukan test penerimaan
•Pengkonversian dan meluncurkan operasi
•Mengupdate Dokumen
•Melakukan pemeriksaan Pasca implementasi

Maintainability (Kemampuan pemeliharaan sistem)
Prosedur untuk peningkatan maintainability :
•Menerapkan SDLC dan SWDLC
•Menspesifikasi definisi data standar
•Menggunakan bahasa pemrograman standart
•Merancang modul-modul yang terstruktur dengan baik
•Mempekerjakan modul yang dapat digunakan kembali
•Mempersiapkan dokumentasi yang jelas, terbaru dan komprehensif
•Menginstall perangkat lunak, dokumentasi dan soal-soal test di dalam sentral repositor sistem CASE atau CMS (change management system)

Tiga pendekatan untuk menyusun Pemeliharaan sistem :
•Pendekatan Pemisahan: Pemeliharaan dan Pemeliharaan
•Pendekatan Gabungan: Menggabungkan personalia penyusun dan pemelihara menjadi sebuah kelompok utama sistem informasi
•Pendekatan Fungsional: Variasi dari pendekatan gabungan dengan memindahkan tenaga profesional sistem dari sistem informasi dan menugasi mereka pada fungsi bisnis untuk penyusunan maupun pemeliharaan.

Ada 5 CASE Tools yang membantu pemeliharaan sistem dari sistem lama dan membantu memecahkan kemacetan timbunan sistem baru yang belum dikerjakan :
•Rekayasa Maju (Forward engineering)
•Rekayasa Mundur (Reverse engineering)
•Rekayasa Ulang (Reengineering)
•Restrukturisasi (restrukturing)
•Sistem Pakar Pemeliharaan (Maintenance expert system)

Mengelola Pemeliharaan Sistem
•Menetapkan Kegiatan Pemeliharaan Sistem
•Mengawali dan merekam kegiatan pemeliharaan sistem tidak terjadwal (Form Maintenance Work Order : Pekerjaan yang diperlukan/dilakukan, waktu yang diperkirakan dibandingkan dengan waktu yang sebenarnya, kode pemeliharaan, biaya pemeliharaan)
•Menggunakan sistem perangkat lunak helpdesk
•Mengevaluasi aktivitas pemeliharaan sistem
•Mengoptimalkan program pemeliharaan sistem

Karakteristik Pemeliharaan
Karakteristik pemeliharaan dapat dibedakan menjadi 2 yaitu:
-pemeliharaan terstruktur dan tidak terstruktur
-biaya pemeliharaan

Pemeliharaan terstruktur dan tidak terstruktur
Aliran tindakan yang dilakukan sebagai tindakan dari permintaan akan pemeliharaan dapat digambarkan:



Pada gambar di atas terlihat pemeliharaan terstruktur dimulai dari permintaan akan pemeliharaan dan menentukan konfigurasi dari perangkat lunak yang akan diadakan pemeliharaan. Jika merupakan seluruh perangkat lunak maka tindakan yang diambil adalah evaluasi perancangan dan menentukan rencana pendekatan yang akan digunakan untuk melakukan pemeliharaan. Kemudian dilanjutkan dengan melakukan modifikasi perancangan dan penulisan ulang program (rekode). Langkah terakhir adalah me-review program yang telah ditulis. Jika diterima maka berarti tugas pemeliharaan telah selesai. Sedangkan jika konfigurasi merupakan program per modul maka kegiatan yang dilakukan adalah evaluasi program. Jika diperlukan modifikasi yang cukup besar maka tindakan yang diambil adalah pembuatan ulang yang dilanjutkan dengan review hasil. Jika hasil akhir memenuhi kriteria maka berarti perangkat lunak siap. Sedangkan pemeliharaan tidak terstruktur adalah:
-tidak mempunyai dokumentasi yang baik
-tidak menggunakan metodologi perancangan
-tidak mengikuti langkah-langkah di atas

Biaya pemeliharaan
Biaya pemeliharaan perangkat lunak yang dikeluarkan dalam fase pemeliharaan meningkat dengan cepat, hal ini dapat dilihat pada gambar berikut:



Selain biaya yang umum dalam fase pengembangan sering timbul biaya-biaya tak berwujud (intangible cost). Biaya-biaya ini ditimbulkan karena:
-ketidakpuasan pemakai (user) akibat tidak selesainya perangkat lunak sesuai dengan waktu yang telah ditentukan pada fase pemeliharaan
-pengurangan kualitas perangkat lunak
-penambahan tenaga kerja Baru

Tugas 1 RPL

Dalam mengembangkan suatu software atau perangkat lunak para ahli dan peneliti membuat suatu kerangka atau model dalam mengembangkan atau membuat suatu perangkat lunak. Model atau kerangka tersebut adalah tahapan yang umum dilakukan dalam pembuatan atau perbaikan/penggantian sebuah sistem/software, dan mengacu juga pada metodologi yang digunakan orang untuk mengembangkan software yang disebut juga software development life cycle (SDLC). Pada ruang lingkup rekayasa perangkat lunak, konsep SDLC menjelaskan urutan-urutan fase, aktivitas dan keluaran setiap fase terkait dengan pengembangan perangkat lunak. Hingga saat ini, terdapat banyak model SDLC yang sudah dipublikasikan oleh berbagai peneliti, misalnya waterfall, fountain, spiral, build and fix, rapid prototyping, incremental, v-model, RAD, extreme programming dan sebagainya. Dalam artikel ini saya hanya menjelaskan salah satu paradigma saja, yaitu extreme programming.
Extreme Programming (XP) adalah sebuah pendekatan atau model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel. Model ini diciptakan oleh Kent Beck. Model ini adalah model proses yang terbaru dalam dunia rekayasa perangkat lunak dan mencoba menjawab kesulitan dalam pengembangan software yang rumit dan sulit dalam implementasi.
Permasalahan utama yang sering muncul dalam sebuah proyek pengembangan perangkat lunak adalah perubahan requirement yang begitu cepat. Hal ini terjadi sebagai akibat perubahan-perubahan yang muncul baik pada aspek bisnis maupun teknologi yang berlangsung lebih cepat daripada proses pengembangan perangkat lunak itu sendiri. Dengan menggunakan XP permasalahan tersebut dapat teratasi.

Tujuan XP
Tujuan utama XP adalah menurunkan biaya dari adanya perubahan software. Dalam metodologi pengembangan sistem tradisional, kebutuhan sistem ditentukan pada tahap awal pengembangan proyek dan bersifat fixed. Hal ini berarti biaya terhadap adanya perubahan kebutuhan yang terjadi pada tahap selanjutnya akan menjadi mahal. XP diarahkan untuk menurunkan biaya dari adanya perubahan dengan memperkenalkan nilai-nilai basis dasar, prinsip dan praktis. Dengan menerapkan XP, pengembangan suatu sistem haruslah lebih fleksibel terhadap perubahan.

Variabel XP
Terdapat 4 variabel XP, yaitu antara lain :
1. Cost (biaya): Dengan meningkatkan biaya, kita bisa menciptakan program yang lebih baik. Sebaliknya mengurangi biaya untuk proyek tidak akan menyelesaikan masalah customer. Tetapi, biaya yang tiak terbatas juga akan menimbulkan kerusakan.
2. Time (waktu): Dengan meningkatkan waktu makan kita akan mampu menciptakan program yang berkualitas dan dengan feature-feature yang lebih banyak.Akan tetapi waktu yang berlebihan tidak baik, karena dapat merusak terhadap diri sendiri. Waktu yang sedikit juga tidak baik karena kualitas yang dihasilkan akan jauh dari yang diharapkan.
3. Quality (mutu): Mutu merupakan suatu variabel pengendali yang sangat “mengerikan” karena merupakan suatu hal yang sangat diperhatikan oleh konsumen.
4. Scope (feature:) Scope merupakan varibel primer. Jika kita mengurangi Scope,maka kita bisa mengurangi biaya dan meningkatkan kualitas.

Empat nilai penting dari XP
1. Communication: XP memfokuskan pada hubungan komunikasi yang baik antar anggota tim. Para anggota tim harus membangun saling pengertian, mereka juga wajib saling berbagi pengetahuan dan keterampilan dalam mengembangkan perangkat lunak. Ego dari para programmer yang biasanya cukup tinggi harus ditekan dan mereka harus membuka diri untuk bekerjasama dengan programmer lain dalam menuliskan kode program.
2. Courege: Para anggota tim dan penanggungjawab pengembangan perangkat lunakharus selalu memiliki keyakinan dan integritas dalam melakukan tugasnya. Integritas ini harus selalu dijaga bahkan dalam kondisi adanya tekanan dari situasi sekitar. Untuk dapat melakukan sesuatu dengan penuh integritas, terlebih dahulu para anggota tim memiliki rasa saling percaya. Rasa saling percaya inilah yang coba dibangun dan ditanamkan oleh XP pada berbagai aspeknya.
3. Simplicity: Lakukan semua dengan sederhana. Hal tersebut adalah salah satu nilai dasar dari XP. Gunakan metode yang pendek dan simpel, jangan terlalu rumit dalam membuat desain, hilangkan fitur yang tidak ada gunanya, dan berbagai proses penyederhanaan lain akan selalu menjadi nilai utama dari setiap aspek XP.
4. Feedback: Berikan selalu feedback kepada sesama anggota tim maupun pihak-pihak lain yang terlibat dalam pengembangan perangkat lunak. Utarakan selalu pikiran anda dan diskusikan kesalahan-kesalahan yang muncul selama proses pengembangan.Dengarkan selalu pendapat rekan yang lain. Dengan adanya feedback inilah seringkali kita menyadari bagian mana yang salah atau bisa ditingkatkan lagi dari perangkat lunak yang dikembangkan.

Penerapan XP
Beberapa hal yang harus dipertimbangkan sebelum seseorang masuk dalam dunia XP adalah sebagai berikut:
1. User harus memahami konteks bisnis yang akan dikembangkan sistemnya, sehingga developer dapat menangkap sistem secara aplikatif dan dapat mengusulkan teknologi apa yang dapat dikembangkan dalam sistem barunya.
2. Akan lebih efektif apabila developer pernah menangani proyek pengembangan sistem yang sejenis sehingga dapat memberikan usulan model sistem baru, di samping alasan bahwa developer telah memiliki template aplikasi sistem tersebut untuk dijadikan prototype sistem baru. Hal ini akan berimplikasi kepada kemudahan dalam konstruksi sistem karena dikembangkan berdasarkan template yang sudah ada.
3. Extreme programming menuntut komunikasi antar developer dan user secara intensif dan komunikasi internal antar developer secara komprehensif, sehingga akan lebih representatif apabila tahap pengembangan sistem dilakukan di lokal yang mendukung proses komunikasi tersebut.
XP adalah suatu bentuk pembangunan perangkat lunak yang berbasis nilai kemudahan, komunikasi, umpan balik, dan keberanian. Bekerja dalam whole team bersama-sama dengan praktek yang mudah. Adapun inti penerapannya adalah:
1. Planning Game
2. Small, frequent releases
3. System metaphors
4. Simple design
5. Testing (unit testing & TDD)
6. Frequent refactoring
7. Pair programming
8. Collective code ownership
9. Continuous integration
10. Sustainable pace
11. Whole team together
12. Coding standards

Kesimpulan
Keuntungan XP:
• Menjalin komunikasi yang baik dengan client.
• Meningkatkan komunikasi dan sifat saling menghargai antar developer.
Kerugian XP:
• Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
• Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).

Referensi:
http://adit279.com/?p=71
Pressman,roger. “Rekayasa Perangkat Lunak (pendekatan praktisi edisi7)”.ANDI.2012