Kamis, 26 September 2013

Teknik Dokumentasi Aplikasi ~PART 2

Proses Dokumentasi
Dalam rangka membangun perangkat lunak, langkah awal yang perlu dilakukan adalah melakukan analisis kebutuhan perangkat lunak. Yang dimaksud dengan analisis adalah mengurai atau mendekomposisi sesuatu menjadi elemen-elemennya. Analisis perangkat lunak artinya mengurai aktivitas pengolahan data menjadi elemen pencatatan, pengolahan, perekaman, dan pelaporan. Analisis kebutuhan perangkat lunak merupakan upaya untuk mengidentifikasi kebutuhan, dengan mencari dan mengenali elemen aktivitas pengolahan data , yang diperlukan ketika seseorang atau suatu team akan membangun perangkat lunak.

Analisis kebutuhan perangkat lunak meliputi :
  • Mengidentifikasi kebutuhan
  • Mengidentifikasi kebutuhan sebagai use cases
  •  Analisis
Definisi Requirement
Ditinjau dari sisi bahasa requirement berarti syarat atau keperluan.
Definisi Software Requirement
Sedangkan definisi dari Software Requirement itu sendiri adalah spesifikasi syarat atau keperluan sebuah software agar dapat beroperasi sesuai dengan permintaan user yang sebelumnya telah didefinisikan terlebih dulu.
Content Software Requirement
Software Requirements mencakup beberapa hal seperti yang tercantum di bawah ini :
*     Requirements Engineering
*     Requirements Analysis
*     System Models

Software Development Life Cycle


Waterfall VS Agile

  1.  Keuntungan utama adalah skalabilitas mundur dalam Agile. Berdasarkan pendekatan waterfall kita tidak bisa mengubah keputusan dan implementasi bahwa kami telah dibuat di bawah tahap sebelumnya. Jika kita ingin membuat perubahan di bawah waterfall kita akan harus membangun keseluruhan proyek dari awal sekali lagi.
  2. Fleksibilitas untuk kesalahan centang di bawah setiap bagian dari tahap pengembangan Agile membuat lebih bug gratis dan kurang salah dibandingkan dengan waterfall yang hanya dapat menguji bug pada akhir modul pembangunan.
  3. Sejak Agile menyediakan fleksibilitas untuk membuat perubahan sesuai kebutuhan pelanggan itu lebih cenderung ke arah kepuasan klien yang lebih baik. Ini adalah satu set kembali nyata untuk model Waterfall yang tidak memungkinkan modifikasi setelah modul telah selesai.
  4. Dalam Agile pengembangan perangkat lunak modular partisi tersebut dapat secara efektif dilaksanakan dibandingkan dengan pasangannya. Meskipun keduanya memungkinkan pilihan untuk pemisahan nanti tidak memiliki modifikasi dalam tahap implementasi. Aturan-aturan yang ditetapkan sebelum dimulainya proyek karena itu merintangi lanjut memecah modul logis. Sedangkan Agile dapat sangat membantu dalam situasi seperti ini dan dapat memungkinkan pengembangan simultan dari modul yang berbeda pada saat yang sama sesuai kebutuhan waktu terikat. Jika kita ingin proyek menjadi lebih terpisah Agile datang sebagai penghilang rasa sakit untuk pengembang.

Waterfall Process Model


Gambar di atas adalah tahapan umum dari model proses ini. Akan tetapi Roger S. Pressman memecah model ini menjadi 6 tahapan meskipun secara garis besar sama dengan tahapan-tahapan model waterfall pada umumnya. Berikut adalah penjelasan dari tahap-tahap yang dilakukan di dalam model ini menurut Pressman:
· System / Information Engineering and Modeling. Permodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam bentuk software. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dsb. Tahap ini sering disebut dengan Project Definition.
· Software Requirements Analysis. Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface, dsb. Dari 2 aktivitas tersebut (pencarian kebutuhan sistem dan software) harus didokumentasikan dan ditunjukkan kepada pelanggan.
· Design. Proses ini digunakan untuk mengubah kebutuhan-kebutuhan diatas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti 2 aktivitas sebelumnya, maka proses ini juga harus didokumentasikan sebagai konfigurasi dari software.
· Coding. Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer.
· Testing / Verification. Sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.
· Maintenance. Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu. Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya.
Alasan Menggunakan Model Water Fall ::
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. Selain itu, ada beberapa kekurangan pengaplikasian model ini, antara lain adalah sebagai berikut:

  1. Ketika problem muncul, maka proses berhenti, karena tidak dapat menuju ke tahapan selanjutnya. Bahkan jika kemungkinan problem tersebut muncul akibat kesalahan dari tahapan sebelumnya, maka proses harus membenahi tahapan sebelumnya agar problem ini tidak muncul. Hal-hal seperti ini yang dapat membuang waktu pengerjaan SE.
  2. Karena pendekatannya secara sequential, maka setiap tahap harus menunggu hasil dari tahap sebelumnya. Hal itu tentu membuang waktu yang cukup lama, artinya bagian lain tidak dapat mengerjakan hal lain selain hanya menunggu hasil dari tahap sebelumnya. Oleh karena itu, seringkali model ini berlangsung lama pengerjaannya.
  3. Pada setiap tahap proses tentunya dipekerjakan sesuai spesialisasinya masing-masing. Oleh karena itu, ketika tahap tersebut sudah tidak dikerjakan, maka sumber dayanya juga tidak terpakai lagi. Oleh karena itu, seringkali pada model proses ini dibutuhkan seseorang yang “multi-skilled”, sehingga minimal dapat membantu pengerjaan untuk tahapan berikutnya.

Agile Process Model

Agile methods merupakan salah satu dari beberapa metode yang digunakan dalam pengembangan sooftware. Agile method adalah jenis pegembangan sistem jangka pendek yang memerlukan adaptasi cepat dan pengembang terhadap perubahan dalam bentuk apapun.
Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana.
Agile Method juga dapat diartikan sekelompok metodologi pengembangan software yang didasarkan pada prinsip-prinsip yang sama atau pengembangan system jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun
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:

  • Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
  •  Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
  •  Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan.
  •  Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan.
  • Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.
  • Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
  • Software yang berfungsi adalah ukuran utama dari kemajuan proyek
  • Dukungan yang stabil dari sponsor pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
  •  Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
  •  Kesederhanaan penting
  •  Arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
  • 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:

  1.  Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
  2. Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
  3. Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
Kelebihan dari Agile Method
1.      Meningkatkan kepuasan kepada klien
2.      Pembangunan system dibuat lebih cepat
3.      Mengurangi resiko kegagalan implementasi software dari segi non-teknis
4.      Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.

Model-model Agile method
1.      Extreme Programmning (XP)
2.      Adaptive Software Development (ASD)
3.      Dynamic Systems Development Method (DSDM)
4.      Scrum Methodology
5.      Crystal
6.      Feature Driven Development (FDD)
7.      Agile Modeling (AM)
8.      Rational Unified Process

Alasan menggunakan model Agile ::
  • Meminimalisasi biaya pembuatan dokumen
  • Menggunakan model waterfall prediksinya lambat
  • Lebih cepat dan lebih menerima value daripada proses
  •  Pengerjaan cepat sesuai contract
  • Ide bagus dan bisa diterima langsung dan diterapkan
Resource ::
http://www.sdlc.ws/agile-vs-waterfall/
http://tonyjustinus.wordpress.com/2007/11/11/waterfall-process-model/

http://dwijaantara.wordpress.com/2010/10/25/agile-method/
Fdrw.politekniktelkom.ac.id

Senin, 09 September 2013

Teknik Dokumentasi Aplikasi

Konsep Teknik Dokumentasi Aplikasi

  • Dokumentasi :: Mengumpulkan data dengan cara mengalir atau mengambil data-data dari catatan, dokumentasi, administrasi yang sesuai dengan masalah yang diteliti. Dalam hal ini dokumentasi diperoleh melalui dokumen-dokumen atau arsip-arsip dari lembaga yang di teliti.
  • Software :: merupakan perangkat lunak yang tidak dapat disentuh maupun dilihat wujud fisiknya. Sekalipun tidak berwujud fisik, keberadaan software sangat penting. Software dibuat untuk menjalankan hardware komputer agar dapat berjalan sesuai fungsi yang diinginkan. Software dapat dibedakan atau dibagi berdasarkan jenis dan juga pendistribusianya.
  • Software menurut jenisnya ::
          - Operating System (Sistem Operasi), ex : DOS, Windows, UNIX, dan linux.
          - Programming Language (Bahasa Pemrograman), ex : Java, PHP, Microsoft Visual Basic dll.
          - Application Program (Program Aplikasi), ex : Microsoft Office Word, Myob dll.

Sofware Crisis 
Pada jaman sebelum ada internet. Pengembangan software masih dimiliki oleh kampus dengan kartu plong atau computer 486 yang dipasangkan turbo pascal. Pada saat itu, itulah software crisis yang dikarenakan pengetahuan, aliran informasi yang terbatas, dan mahalnya harga software. Era ini mulai bergeser saat diperkenalkannya system operasi yang dikenal dengan Windows dan Linux yang bisa terhubung ke software yang dinamakan browser Internet Explorer, Yang menjanjikan teknologi pengembangan perangkat lunak menjadi lebih maju dan effisien.
Rekayasa perangkat lunak adalah suatu tahapan demi tahapan yang dibahas satu demi setu dan memiliki hasil dari setiap tahapannya. Mulai dari pengambilan kebutuhan, analisis, desain, pembuatan kode dan diakhiri dengan pendistribusian aplikasi. Software Development Life Cycle adalah penggambaran secara abstrak langkah apa saja yang dikerjakan untuk membuat software yang lenih terprediksi dari segi hasil dan kualitas. Kita membutuhkan SDLC saat (1) proyek dengan kerangka kerja lebih dari 1 bulan atau bahkan multiyear project (2) klien membutuhkan suatu laporan administrative selain source codes dan software (3) komposisi tim lebih dari 3 orang dan tiap orang memiliki role spesifik untuk bekerja fulltime. Kita tidak membutuhkan SDLC saat (1) mengembangkan software sederhana dengan jangka waktu kurang dari 1minggu (2) memiliki pengalaman mengembangkan software yang identic / mirip (3) mampu dan paham saat menceritakan secara sederhana mengenai proses bisnis aplikasi yang dikembangkan.
Masalah dalam pengembangan perangkat lunak mencakup masalah teknis dan non teknis. Masalah non teknis seperti (1) aspek komunikasi yang kurang baik, (2) pengelolaan sumber daya tidak mencukupi (waktu, dana, dan manusia), (3) manajemen risiko yang tidak terkendali hingga aspek kenyamanan bekerja adalah faktor-faktor kegagalan sebagian besar pengembangan perangkat lunak.
           Masalah teknis seperti (1) Sisem kompleks makin banyak diusulkan dan clien makin membutuhkannya untuk kebutuhan bisnisnya, (2) Terlalu banyak teknologi yang bisa dipilih, sebenarnya itu memudahkan tetapi terkadang membuat bingung dalam memilihnya (3) Semakin banyak system yang terdistribusi dan terintegrasi (machine to machine), (4) Inisialiasi kebuuthan yang kurang baik dari klien, (5) Pengujian yang tidak mencukupi atau kurang detail.

Software Documentation
         Ketika berbagai jenis produk perangkat lunak yang dikembangkan kemudian tidak hanya file executable dan kode sumber yang dikembangkan tetapi juga berbagai jenis dokumen seperti manual pengguna, perangkat lunak persyaratan spesifikasi (SRS) dokumen, dokumen desain, dokumen pengujian, instalasi manual, dll juga dikembangkan sebagai bagian dari setiap proses rekayasa perangkat lunak. Semua dokumen-dokumen ini adalah bagian penting dari praktek pembangunan perangkat lunak yang baik. Dokumen yang baik sangat berguna dan server tujuan berikut :
  • Dokumen Baik meningkatkan saling pengertian dan pemeliharaan produk perangkat lunak. Mereka mengurangi usaha dan waktu yang dibutuhkan untuk pemeliharaan.
  • Penggunaan dokumen membantu pengguna secara efektif menggunakan sistem.
  • Dokumen baik membantu secara efektif menangani masalah perputaran tenaga kerja. Bahkan ketika seorang insinyur meninggalkan organisasi, dan seorang insinyur baru masuk, ia dapat membangun pengetahuan yang diperlukan dengan mudah. ​​
  • Produksi dokumen yang baik membantu manajer secara efektif melacak kemajuan proyek.

Dokumentasi aplikasi meliputi ::
  1. Perencanaan (SDP = Software Development Plan), merupakan hal awal yang harus dilakukan ketika akan mengembangkan suatu perangkat lunak.
  2. Requirements Analysis (SRS = Software Requirements Specification),  Tujuan dari SRS adalah untuk melakukan hal berikut: Menentukan kebutuhan fungsional dari sistem, Mengidentifikasi batasan-batasan sistem, Identifikasi pengguna sistem, Menjelaskan interaksi antara sistem dan pengguna eksternal, Menetapkan suatu bahasa yang umum antara klien dan tim program untuk menggambarkan sistem, Memberikan dasar untuk pemodelan use case.
  3. IRS = Interface Requirements Specification
  4. Dokumentasi Perancangan (SDD = Software Design Document)
  5. Dokumentasi Pengujian (STP = Software Test Plan, STRp = Software Test Report)
  6. Dokumentasi yang berhubungan dengan produk (SUM = Software User Manual, SPS = Software Product Specification, VDD = Version Description Document), dll

Resource ::