Sabtu, 21 November 2015

SDLC (System Development Life Cycle)



Siklus Hidup Pengembangan Sistem) atau Systems Life Cycle (Siklus Hidup Sistem), dalam rekayasa sistem dan rekayasa perangkat lunak, adalah proses pembuatan dan pengubahan sistem serta model dan metodologi yang digunakan untuk mengembangkan sistem-sistem tersebut. Konsep ini umumnya merujuk pada sistem komputer atau informasi. SDLC juga merupakan pola yang diambil untuk mengembangkan sistem perangkat lunak, yang terdiri dari tahap-tahap: rencana(planning),analisis (analysis), desain (design), implementasi (implementation), uji coba (testing) dan pengelolaan (maintenance). Dalam rekayasa perangkat lunak angsyat Ä, konsep SDLC mendasari berbagai jenis metodologi pengembangan perangkat lunak. Metodologi-metodologi ini membentuk suatu kerangka kerja untuk perencanaan dan pengendalian pembuatan sistem informasi, yaitu proses pengembangan perangkat lunak. Terdapat 3 jenis metode siklus hidup sistem yang paling banyak digunakan, yakni: siklus hidup sistem tradisional (traditional system life cycle), siklus hidup menggunakan prototyping (life cycle using prototyping), dan siklus hidup sistem orientasi objek (object-oriented system life cycle).


1.       Model Spiral
          Spiral Model adalah suatu model tentang tahapan pembuatan suatu perangkat lunak, spiral model ini adalah salah satu dari model revolusioner, model spiral merangkai sifat interatif yaitu sifat yang ditandai yang memungkinkan untuk mengembangkan versi dari suatu perangkat lunak secara bertahap untuk menghasilkan perangkat lunak yang lebih lengkap atau lebih sempurna dan terkontrol.

Tahapan-Tahapan Model Spiral
Model spiral dibagi menjadi enam wilayah tugas yaitu:
1.            Komunikasi pelanggan
Yaitu tugas-tugas untuk membangun komunikasi antara pelanggan dan kebutuhankebutuhan yang diinginkan oleh pelanggan
2.            Perencanaan
Yaitu tugas-tugas untuk mendefinisikan sumber daya, ketepatan waktu, dan proyekinformasi lain yg berhubungan.
3.            Analisis Resiko
Yaitu tugas-tugas yang dibutuhkan untuk menaksir resikomanajemen dan teknis.
4.            Perekayasaan
Yaitu tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari apikasi tersebut.
5.            Konstruksi dan peluncuran
Yaitu tugas-tugas yang dibutuhkan untuk mengkonstruksi, menguji, memasang dan memberi pelayanan kepada pemakai.
6.            Evaluasi Pelanggan
Yaitu tugas-tugas untuk mendapatkan umpan balik dari pelanggan.

Kelebihan model Spiral :
·         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 .
·         Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap keadaan di dalam evolusi produk.
·         Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja iteratif.

b. Kelemahan model Spiral :
·         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.

2. Model Waterfall
Metode Waterfall adalah suatu proses pengembangan perangkat lunak berurutan, di mana kemajuan dipandang sebagai terus mengalir ke bawah (seperti air terjun) melewati fase-fase perencanaan, pemodelan, implementasi (konstruksi), dan pengujian. Berikut adalah gambar pengembangan perangkat lunak berurutan/ linear (Pressman, Roger S. 2001):
Tahapan Metode Waterfall
1.    Requirement (analisis kebutuhan).
Dalam langakah ini merupakan analisa terhadap kebutuhan sistem. Pengumpulan data dalam tahap ini bisa melakukan sebuah penelitian, wawancara atau study literatur. Seseorang system analisis akan menggali informasi sebanyak-banyaknya dari user sehingga akan tercipta sebuah sistem komputer yang bisa melakukan tugas-tugas yang diinginkan oleh user tersebut. Tahapan ini akan menghasilkan dokumen user requirement atau bisa dikatakan sebagai data yang berhubungan dengan keinginan user dalam pembuatan sistem. Dokumen inilah yang akan menjadi acuan system analisis untuk menterjemahkan kedalam bahasa pemrograman.

2.    Design System (design sistem)
Proses design akan menterjemahkan syarat kebutuhan kesebuah perancangan perangkat lunak yang dapat diperkirakan sebelum dibuat koding. Proses ini berfokus pada : struktur data, arsitektur perangkat lunak, representasi interface, dan detail (algoritma) prosedural. Tahapan ini akan menghasilkan dokumen yang disebut software requirement. Dokumen inilah yang akan digunakan programmer untuk melakukan aktivitas pembuatan sistemnya.

3.    Coding & Testing (penulisan sinkode program / implemention)
    Coding merupakan penerjemahan design dalam bahasa yang bisa dikenali oleh komputer.Dilakukan oleh programmer yang akan meterjemahkan transaksi yang diminta oleh user. Tahapan inilah yang merupakan tahapan secara nyata dalam mengerjakan suatu sistem.Dalam artian penggunaan computer akan dimaksimalkan dalam tahapan ini. Setelah pengkodean selesai maka akan dilakukan testing terhadap sistem yang telah dibuat tadi. Tujuan testing adalah menemukan kesalahan-kesalahan terhadap system tersebut dan kemudian bisa diperbaiki.

4.    Penerapan / Pengujian Program (Integration & Testing)
Tahapan ini bisa dikatakan final dalam pembuatan  sebuah sistem. Setelah melakukan analisa, design dan pengkodean maka sistem yang sudah jadikan digunakan oleh user.

e.     Pemeliharaan (Operation & Maintenance)
Perangkat lunak yang susah disampaikan kepada pelanggan pasti akan mengalami perubahan. Perubahan tersebut bisa karena mengalami kesalahan karena perangkat lunak harus menyesuaikan dengan lingkungan (periperal atau system operasi baru) baru, atau karena pelanggan membutuhkan perkembangan fungsional. 

a.        Kelemahan model waterfall
Kelemahan pengembangan software dengan metode waterfall yang utama adalah lambatnya proses pengembangan perangkat lunak. Dikarenakan prosesnya yang satu persatu dan tidak bisa diloncat-loncat menjadikan model klasik ini sangat memakan waktu dalam pengembangannya

b.        Kelebihan Model Waterfall
  • Kualitas dari sistem yang dihasilkan akan baik. Ini dikarenakan oleh pelaksanaannya secara bertahap. Sehingga tidak terfokus pada tahapan tertentu.
  • Document pengembangan system sangat terorganisir, karena setiap fase harus terselesaikan dengan lengkap sebelum melangkah ke fase berikutnya. Jadi  setiap fase atau tahapan akan mempunyai dokumen tertentu.
  • Metode ini masih lebih baik digunakan walaupun sudah tergolong kuno, daripada menggunakan pendekatan asal-asalan. Selain itu, metode ini juga masih masuk akal jika kebutuhan sudah diketahui dengan baik.
3. Model Rapid Application Development (RAD)
          Rapid application development (RAD) atau rapid prototyping adalah model proses pembangunan perangkat lunak yang tergolong dalam teknik incremental (bertingkat). RAD menekankan pada siklus pembangunan pendek, singkat, dan cepat. Waktu yang singkat adalah batasan yang penting untuk model ini. Rapid application development menggunakan metode iteratif (berulang) dalam mengembangkan sistem dimana working model (model bekerja) sistem dikonstruksikan di awal tahap pengembangan dengan tujuan menetapkan kebutuhan (requirement) user dan selanjutnya disingkirkan.
Tahapan dalam model RAD:
1. Rencana Kebutuhan (Requirement Planning)
Pada tahap ini, user dan analyst melakukan semacam pertemuan untuk melakukan identifikasi tujuan dari aplikasi atau system dan melakukan identifikasi kebutuhan informasi untuk mencapai tujuan.

2. Proses Desain (Design Workshop)
Pada tahap ini adalah melakukan proses desain dan melakukan perbaikan-perbaikan apabila masih terdapat ketidaksesuaian desain antara user dan analyst. Untuk tahap ini maka keaktifan user yang terlibat sangat menentukan untuk mencapai tujuan, karena user bisa langsung  pemberikan komentar apabila terdapat ketidaksesuaian pada desain. Biasanya, user dan analyst berkumpul menjadi satu dan duduk di meja melingkar dimana masing-masing orang bias melihat satu dengan yang lain tanpa ada halangan. Apabila memungkinkan, maka masingmasing user diberikan satu komputer yang terhubung satu dengan yang lain, sehingga masing-masing bisa melihat desain yang dibuat dan langsung memberikan komentar. Hal ini sering kali disebut dengan Group Decision Support System (GDSS). Pada beberapa kasus, GDSS ini merupakan suatu langkah yang ideal, karena user dan analyst dapat menyetujui desain yang dibuat untuk kemudian dilanjutkan oleh programmer dalam pembuatan prototype dari aplikasi yang dimaksud dengan langsung menampilkan kepada user hasilnya dengan cepat.

3. Implementasi (Implementation)
Setelah desain dari sistem yang akan dibuat sudah disetujui baik itu oleh user dan analyst, maka pada tahap ini programmer mengembangkan desain menjadi suatu program. Setelah program selesai baik itu sebagian maupun secara keseluruhan, maka dilakukan proses pengujian terhadap program tersebut apakah terdapat kesalahan atau tidak sebelum diaplikasikan pada suatu  organisasi.

a.        Kelebihan model RAD:
  • ·       Membeli sistem yang baru memungkinkan untuk lebih menghemat biaya ketimbang engembangkan sendiri.
  • ·       Proses pengiriman menjadi lebih mudah, hal ini dikarenakan proses pembuatan lebih banyak menggunakan potonganpotongan script.
  • ·       Mudah untuk diamati karena menggunakan model prototype, sehingga user lebih mengerti akan sistem yang dikembangkan.
  • ·       Lebih fleksibel karena pengembang dapat melakukan proses desain ulang pada saat yang  bersamaan.
  • ·       Bisa mengurangi penulisan kode yang kompleks karena menggunakan wizard.
  • ·       Keterlibatan user semakin meningkat karena merupakan bagian dari tim secara keseluruhan.

b.        Kekurangan Model RAD
  • ·      Dengan melakukan pembelian belum tentu bisa menghemat biaya dibandingkan dengan       mengembangkan sendiri.
  • ·      Membutuhkan biaya tersendiri untuk membeli peralatan-peralatan penunjang seperti misalnya software dan hardware.
  • ·      Kesulitan melakukan pengukuran mengenai kemajuan proses.
  • ·      Kurang efisien karena apabila melakukan pengkodean dengan menggunakan tangan bisa lebih efisien.
  • ·      Ketelitian menjadi berkurang karena tidak menggunakan metode yang formal dalam melakukan pengkodean.
  • ·      Lebih banyak terjadi kesalahan apabila hanya mengutamakan kecepatan dibandingkan dengan biaya dan kualitas.
4.  Model Prototyping
Menurut Raymond McLeod, prototype didefinisikan sebagai alat yang memberikan ide bagi pembuat maupun pemakai potensial tentang cara system berfungsi dalam bentuk lengkapnya, dan proses untuk menghasilkan sebuah prototype sisebut prototyping. Prototyping adalah proses pembuatan model sederhana software yang mengijinkan pengguna memiliki gambaran dasar tentang program serta melakukan pengujian awal.

Tahapan model Prototyping
  1. Pengumpulan kebutuhan
Pelanggan dan pengembang bersama-sama mendefinisikan format dan kebutuhan kesseluruhan perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat.

  1. Membangun prototyping
Membangun prototyping dengan membuat perancangan sementara yang berpusat pada penyajian kepada pelanggan (misalnya dengan membuat input dan contoh outputnya).

  1. Evaluasi protoptyping
Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginan pelanggan. Jika sudah sesuai maka langkah keempat akan diambil. Jika tidak, maka prototyping diperbaiki dengan mengulang langkah 1, 2 , dan 3.

  1. Mengkodekan system
Dalam tahap ini prototyping yang sudah disepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai.

  1. 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.

  1. Evaluasi Sistem
Pelanggan mengevaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan . Jika sudah, maka langkah ketujuh dilakukan, jika belum maka mengulangi langkah 4 dan 5.

a.  Kelebihan Model Prototyping
  •   Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan setiap pelanggannya.
  • Pelanggan berperan aktif dalam proses pengembangan sistem.
  • Lebih menghemat waktu dalam pengembangan sistem.
  1. Kekurangan Model Prototyping
  • 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 jangka waktu lama.
  • Pengembang biasanya ingin cepat menyelesaikan proyek sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan sebuah kerangka kerja(blueprint) dari sistem .
  • Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik dan benar. 
5.  Model Agile
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 dari Metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak. Agile memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada.

Prinsip Agile Software Development
    
      Agile Software Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, antara developer dan managernya. Ciri lain adalah klien menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip yang ditetapkan oleh Agile Alliance. Menurut Agile Alliance, 12 prinsip ini adalah bagi mereka yang ingin berhasil dalam penerapan Agile Software Development:
  1. Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus       menerus.
  2. Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  3. Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan.
  4. Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan.
  5. Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
  6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
  7. Software yang berfungsi adalah ukuran utama dari kemajuan proyek
  8. Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
  9. Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
  10. Kesederhanaan penting
  11. Arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
  12. Secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
Dua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Dengan prinsip-prinsip tersebur Agile Process Model berusaha untuk menyiasati 3 asumsi penting tentang proyek software pada umumnya:
v Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
v Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
v Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.

  1. Kelebihan  Metode Agile
·       Meningakatkan rasio kepuasan pelanggan.
·       Bisa melakukan reviw pelanggan mengenai software yang dibuat lebih awal.
·       Mengurangi resiko kegagalan implementasi software dari non-teknis.
·       Besar kerugian baik secara material atau imaterial tidak terlalu besar jiak terjadi kegagalan

  1. Kelemahan  Metode Agile
·         Agile jarang dipraktekkan secara langsung,
·         Interksi dengan customers yang berlebihan,
·         Agile  sulid  diimplementasikan  dalam  proyek  yang berskala besar,
·         Membutuhkan manajemen tim yang terlatih,
·         Lemah dalam perencanaan arsitektur,2 Scrum dan Extreme Programming
·         Keterbatasan waktu dalam perencanaan Proyek

6. Model Incremental
     Incremental model adalah model pengembangan sistem pada software engineering berdasarkan requirement software yang dipecah menjadi beberapa fungsi atau bagian sehingga model pengembangannya secara bertahap. dilain pihak ada mengartikan model incremental sebagai  perbaikan dari model waterfall dan sebagai standar pendekatan topdown. Layaknya Model Waterfall, model ini pun juga memiliki tahapan tahapan untuk perancangan perangkat lunaknya.
Tahapan-tahapan model Incremental
1. Requirement , Requirment adalah proses tahapan awal yang dilakukan pada incremental model adalah penentuan kebutuhan atau analisis kebutuhan.
2. Specification, Specification adalah proses spesifikasi dimana menggunakan analisis kebutuhan sebagai acuannya.
3. Architecture Design, adalah tahap selanjutnya, perancangan software yang terbuka agar dapat diterapkan sistem pembangunan per-bagian pada tahapan selanjutnya.
4.  Code setelah melakukan proses desain selanjutnya ada pengkodean.
5. Test merupakan tahap pengujian dalam model ini.

a.            Kelebihan
1.    Merupakan model dengan manajemen yang sederhana
2.    Pengguna tidak perlu menunggu sampai seluruh sistem dikirim untuk mengambil keuntungan dari sistem tersebut. Increment yang pertama sudah memenuhi persyaratan mereka yang paling kritis, sehingga perangkat lunak dapat segera digunakan.
3.    Resiko untuk kegagalan proyek secara keseluruhan lebih rendah. Walaupun masalah masih dapat ditemukan pada beberapa increment. Karena layanan dengan prioritas tertinggi diserahkan pertama dan increment berikutnya diintegrasikan dengannya, sangatlah penting bahwa layanan sistem yang paling penting mengalami pengujian yang ketat. Ini berarti bahwa pengguna akan memiliki kemungkinan kecil untuk memenuhi kegagalan perangkat lunak pada increment sistem yang paling bawah.
4.    Nilai penggunaan dapat ditentukan pada setiap increment sehingga fungsionalitas sistem disediakan lebih awal.
5.    Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem,
6.    Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji

b.        Kekurangan
1.    Kemungkinan tiap bagian tidak dapat diintegrasikan
2.    Dapat menjadi build and Fix Model, karena kemampuannya untuk selalu mendapat perubahan selama proses rekayasa berlangsung
3.    Harus Open Architecture
4.    Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment.
7. Model Iterasi
Iterasi adalah model pengembangan system yang bersifat dinamis dalam artian setiap tahapan proses pengembangan system dapat diulang jika terdapat kekurangan atau kesalahan. Setiap tahapan pengembangan system dapat dikerjakan berupa ringkasan dan tidak lengkap, namun pada akhir pengembangan akan didapatkan system yang lengkap pada pengembangan system.
    1. Kelebihan
1.   Dapat mengakomodasi jika terjadi perubahan pada tahapan pengembangan yang         telah dilaksanakan.
2.   Dapat disesuaikan agar system bisa dipakai selama hidup software computer.
3.   Cocok untuk pengembangan sistem dan perangkat lunak skala besar.
4.   Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tahapan karena system terus bekerja selama proses.
b. Kekurangan
1.    Tiap bagian tidak dapat diintegrasikan
2.    Setiap tambahan yang dibangun harus dimasukkan kedalam struktur yang ada tanpamenurunkan kualitas dari yang telah dibangun system tersebut sampai saat ini.
3.    Penambahan staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut



Atipa Muji
*diambil dari berbagai sumber

0 komentar:

Posting Komentar