Kamis, 25 April 2013

Rekayasa Perangkat Lunak: Kelebihan dan Kekurangan Software Proses Model

Untuk postingan kali ini adalah membahas tentang kelebihan dan kekurangan software proses model.


1. Waterfall model
     Waterfall yaitu sebuah metode pengembangan software yang bersifat sekuensial dan terdiri dari 5 tahap yang saling terkait dan mempengaruhi.
a. Merupakan model pengembangan paling handal dan paling lama digunakan
b. Cocok untuk system software berskala besar.
c. Cocok untuk system software yang bersifat generic.
d. Pengerjaan project system akan terjadwal dengan baik dan mudah dikontrol.

  •    Kekurangan Waterfall
a. Persyaratan system harus digambarkan dengan jelas
b. Rincian proses harus benar-benar jelas dan tidak boleh berubah-ubah.
c. Sulit untuk mengadaptasi jika terjadi perubahan spesifikasi pada suatu tahapan pengembangan.


2. Prototyping Model
Metode prototype system melibatkan user secara langsung dengan analisis dan perancangan, sangat efektif untuk pengoreksian sistem.

  •     Kelebihan Prototyping

a. Komunikasi berlangsung baik antara pengembang dan pelanggan.
b. Pengemban dapat bekerja dengan baik dalam menentukan kebutuhan pelanggan.
c. Menghemat waktu dalam pengembangan sistem.
d. Pelanggan berperan aktif dalam pengembangan sistem.
e. Kemudahan dalam penerapan dikarenakan pemakai mengetahui apa yang diharapkan.
f. Mempunyai kemampuan menangkap requirement secara konkret daripada secara abstrak.

  •    Kekurangan Prototyping :
a. Tidak disadarinya bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat lunak secara keseluruhan dan belum memikirkan kemampuan pemeliharaan untuk jangka waktu lama.
b. Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik.


3. Spiral Model
Spiral Model merupakan penggabungan ide pengembangan berulang (prototyping) dengan aspek sistematis  terkendali model air terjun (waterfall). 


  •    Kelebihan Spiral
a. Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar.
b. Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses.
c. Membutuhkan pertimbangan langsung terhadp resiko teknis sehingga mengurangi resiko sebelum menjadi permaslahan yang serius.

  •    Kekurangan Spiral 
a. Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol.
b. Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
c. Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolut.


4. Incremental Model
Incremental model yaitu model pengembangan sistem pada software engineering berdasarkan requirement software yang dipecah menjadi beberapa fungsi atau bagian sehingga model pengembangannya secara bertahap.


  • Kelebihan Incremental Model
a. Merupakan model dengan manajemen yang sederhana
b. Nilai penggunaan dapat ditentukan pada setiap increment sehingga fungsionalitas sistem disediakan lebih awal.
c. Memiliki resiko lebih rendah terhadap keseluruhan pengembagan sistem.
d. Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.

  • Kekurangan Incremental Model
a. Kemungkinan tiap bagian tidak dapat diintegrasikan.
b. Dapat menjadi build and Fix Model, karena kemampuannya untuk selalu mendapat perubahan selama proses rekayasa berlangsung.
c. Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment. 


5. Extreme Programming

Suatu model yang menekankan pada keterlibatan user secara langsung, pengujian,  design.


  • Keuntungan XP
a. Menjalin komunikasi yang baik dengan client sehingga keinginan  akan software dapat direalisasikan.
b. Hemat biaya jika terjadi perubahan requirement client, karena lifecycle yang lebih pendek
c. komunikasi yang baik antar developer menjaga kualitas software


Kekurangan XP


a. Mau tidak mau developer harus siap dengan perubahan sewaktu-waktu
b. konsep simplicity (keserhanaan) membuat developer tidak bisa coding secara detail di awal, karna hanya melakukan apa yang di perlukan di hari itu juga.


6. Rational Unified Process (RUP)
Rational Unified Process (RUP) merupakan suatu metode rekayasa perangkat lunak yang dikembangkan dengan mengumpulkan berbagai best practises yang terdapat dalam industri pengembangan perangkat lunak. menggunakan konsep object oriented, dengan aktifitas yang berfokus pada pengembangan model dengan menggunakan Unified Model Language (UML).


  • Kelebihan RUP
a. Menyediakan akses yang mudah terhadap pengetahuan dasar bagi anggota tim.
b. Menyediakan petunjuk bagaimana menggunakan UML secara efektif.
c. Mendukung proses pengulangan dalam pengembangan software.
d. Memungkinkan adanya penambahan-penambahan pada proses.
e. Memungkinkan untuk secara sistematis mengontrol perubahan-perubahan yang terjadi pada software selama proses pengembangannya.
f. Memungkinkan untuk menjalankan test case dengan menggunakan Rational Test


  • Kekurangan RUP
Metodologi ini hanya dapat digunakan pada pengembangan perangkat lunak yang berorientasi objek dengan berfokus pada UML (Unified Modeling Language)

Sabtu, 06 April 2013

Software Proses

Jelaskan bagaimana Software Proses menurut Anda, dan mengapa kita perlu menggunakan software proses dalam mengembangkan perangkat lunak?
Dari kalimat pertanyaan diatas, setidaknya terdapat dua pertanyaan inti yaitu bagaimana software proses itu, dan manfaat serta tujuan proses software dalam pengembangan perangkat lunak. So, mari kita uraikan jawabannya satu persatu.

  1. Proses Software
Proses Software adalah sekumpulan aktifitas terstruktur yang dibutuhkan untuk mengembangkan sistem software, yang meliputi kegiatan:

  • Spesifikasi Perangkat Lunak

  • Pengembangan (Desain & Implementasi) Perangkat Lunak

  • Validasi Perangkat Lunak

  • Evolusi Peangkat Lunak
Ada beberapa metode yang digunakan dalam pengembangan perangkat lunak, yaitu:

    • Waterfall model
Model waterfall yaitu pemodelan yang prosesnya menyerupai air terjun, yaitu lurus. Dalam model ini terdapat beberapa tahapan, yaitu:
    1. Definisi kebutuhan
    2. Desain sistem dan software
    3. Implementasi dan testing unit
    4. Integrasi dan testing sistem
    5. Operasi dan maintenance
Kelebihan dari waterfall model adalah program akan lebih terorganisir, karena penyelesaiannya berurutan dan harus menyelesaikan tahap demi tahap baru melangkah ke tahap selanjutnya.
Masalah yang biasanya timbul adalah software tidak fleksibel karena harus komitmen dengan apa yang sudah dirancang pada awal proses.

    • Model Pengembangan Evolusioner
Model ini lebih  efektif dari pendekatan model waterfall, sifatnya juga fleksibel karena perubahannya berdasarkan pemahaman pelanggan.

    • Pengembangan Sistem Formal
Pengembangannya berdasarkan pada transformasi matematis dari spesifikasi sistem menjadi program yang dapat dijalankan.

    • Pengembangan Berdasarkan Pemakaian Ulang
Pengembangan ini berdasarkan pada perangkat lunak yang sudah ada (terjadi pemakaian ulang)
  1. Tujuan Proses Software
Berdasarkan pengertiannya, maka tujuan dari Proses Software adalah:
  1. Agar kita mengetahui apa saja aktifitas yang dibutuhkan dalam proses pengembangan software.
  2. Memilih model apa yang sekiranya cocok dengan perangkat lunak yang akan dikembangkan.
  3. Agar dapat melakukan pengembangan software secara benar.

 


Sabtu, 23 Maret 2013

Generic View of Software Engineering

Sebenarnya pada postingan kali ini saya hanya akan me-review mengenai Generic View of Sotware Engineering. Pada dasarnya Generic View-nya adalah berupa siklus atau tahapan dalam suatu proses pembuatan software seperti yang nampak pada gambar diatas. Pada siklus tersebut semua aktivitas yang dilakukan tergambar dan berputar. Mulai dari requirements, specifications, design, code, test and V&V, debug dan maintenance. Mari kita bahas satu persatu.
  • Requirements
Pada tahapan ini, yang sangat diperhatikan adalah apa yang dibutuhkan oleh user. Kita harus mampu mencari dan menemukan apa yang sebenarnya akan dibutuhkan oleh user.

Dalam tahapan ini hal umum yang diperhatikan adalah:
1. Purpose of System (Tujuan sistem), apa tujuan dibuatnya sistem ini.
2. Resources avaliability (Sumber daya yang tesedia) yang mencakup: Time (waktu), Money (uang), Person (manusia). Ketiga hal ini harus diperhatikan.

  • Specifications
Tahap ini lebih fokus pada kebutuhan software, apa sih yang sebenarnya akan dibutuhkan software setelah dipakai?

Dalam tahapan ini, programmer sudah mulai melakukan:
1. Membuat spesifikasi software.
2. Menentukan spesifikasi detail tentang fungsi.
  • Design
Pada tahapan desain, para programer akan memikirkan desainnya.
  • Code
Dalam tahp ini para programmer biasanya akan menentukan bahasa pemrograman yang akan digunakan, membuat algoritma, menentukan tugas masing-masing orang dalam sistem tersebur, dan membuat bagan arsitektur mengenai bagaimana bagian-bagian program dapat saling bekerja sama.
  • Test and V&V
 Testing and verification & validation, yaitu tahapan pengujian. Dalam tahapan ini, programmer melihat kembali program yang telah dibuatnya, mengecek dan melakukan pengujian apakah ada kesalahan pada saat user menggunakannya, atau ada ketidaksesuaian antara keinginan user dengan program yang dibuat.
  • Debug
 Untuk menguji apakah sebuah program tersebut error atau tidak, maka harus dilakukan proses debuing. Apabila ditemukan bug, maka programmer harus sesegera mungkin memperbaikinya.
  • Maintenance
Tahapan ini adalaha tahapan yang sifatnya berulang, tahap perawatan biasanya dilakukan oleh si user, namun tak menutup kemungkina jika si programmer pun kembali campur tangan jika ditengah jalan user menemukan kendala dalam mengopersaikan softwarenya. Oleh karenanya, sebelum si programmer secara sepenuhnya memberikan programnya, maka ada baiknya memberikan pelatihan terhadap si user.

Wah, nampaknya review kali ini terlalu panjang yaa..