Senin, 23 Maret 2015

OTHER AGILE PROSESS MODEL

Adaptive Software Development
merupakan pengembangan perangkat lunak proses yang tumbuh dari kerja pengembangan aplikasi cepat oleh Jim Highsmith dan Sam Bayer.
ASD mewujudkan prinsip bahwa adaptasi yang berkesinambungan dari proses kerja di tangan adalah urusan keadaan normal.
ASD menggantikan siklus air terjun tradisional dengan serangkaian berulang berspekulasi, berkolaborasi, dan belajar siklus. Siklus dinamis memberikan pembelajaran dan adaptasi kepada negara muncul proyek. 

Proses :

ASD Spekulasi 

  • Menggunakan adaptive cycle planning
  • Menggunakan user mission statement, project constraints.
  • Setelah siklus pertama,rencana dikaji ulang dan disesuaikan agar proyeknya sesuai dengan realita dimana team ASD bekerja 

ASD Kolaborasi

  • Meliputi komunikasi dan kerjasama antar team tetapi tetap menekan individualis.
  • Mengumpulkan kebutuhan dengan mini specs.

ASD Learn 

  • Menggunakan Focus group dan Formal Technical Review.
  • Melakukan evaluasi ulang
Karakteristik dari siklus hidup ASD adalah 
·         Misi fokus
·         Fitur berbasis
·         Berulang
·         Timeboxed
·         Risiko didorong
·         Toleran berubah.


Dynamic Systems Development Method 
  • Sebuah perkembangan pesat kerangka aplikasi yang menekankan pengembangan perangkat lunak secara iteratif untuk merespon kebutuhan pengguna yang terus berkembang. DSDM dikembangkan pada 1990-an oleh sekelompok vendor SI dan para ahli di Inggris untuk menyediakan seperangkat praktek terbaik untuk mengembangkan aplikasi sesuai waktu dananggaran. 
  • Menyediakan kerangka kerja untuk membangun dan memelihara sistem/ perangkat lunak melalui penggunaan prototipe (incremental prototype).
  • Proses perangkat lunak berulang dimana setiap iterasi mengikuti aturan 80 persen dan 20 persen
  • Dipromosikan oleh konsorsium DSDM. Mirip dalam banyak dengan XP dan/atau ASD. Beberapa prinsip-prinsip panduan :
1.     Pelibatan user secara aktif adalah keharusan.
2.     Tim DSDM harus diberdayakan untuk mengambil keputusan.
3.     Fokus pada penyajian produk sesering mungkin.
4.     Penerimaan dari tujuan bisnis adalah kriteria esensial untuk penerimaan penyajian.
5.     Pengembangan bertahap dan berulang dibutuhkan untuk fokus pada solusi bisnis yang akurat
6.     Semua perubahan selaman pengembangan dapat dibalik.
7.     Kebutuhan adalah dasar pada level tinggiPengujian terintegrasi dalam siklus kehidupan


Scrum
Sebuah proses agile yang memungkinkan kita untuk memfokuskan diri guna menghasilkan produk dengan nilai ekonomi paling tinggi dalam jangka waktu yang sangat pendek. Dalam jangka waktu tertentu semua pihak dapat melihat sebuah software  yang dapat bekerja dan memutuskan untuk merilis software sebagaimana adanya atau melanjutkan untuk mengembangkannya di sprint  berikutnya.


Keterangan :
  • Product Backlog : Fitur-fitur yang di catat sebagai item dan diurutkan berdasarkan pioritasnya
  • Sprint Backlog : Backlog yang memiliki pioritas lebih tinggi untuk di kerjakan oleh tim scrum berdasarkan spesialisasi masing-masing
  • Daily Meetings : Meeting yang wajib dilakukan oleh Scrum master dan di hadiri oleh anggotatim untuk menjawab pertanyaan sebagai evaluasi hasil kerja per 24 jam
Crystal

    o   Konsepnya dibuat oleh Allstair Cockburn dan Jim Highsmith
    o   Menempatkan prioritas tinggi pada “kemampuan bermanuver” untuk mencapai suatu pendekatan pengembangan perangkat lunak.
    o   Tujuannya adalah untuk memungkinkan team cepat untuk memilih anggota keluarga kristal yg paling sesuai dengan proyek dan lingkungan mereka

    Feature Driven Development


    Dikemukakan oleh Peter Coad dengan orientasi objek. Kemudian dikembangkan oleh Stephen Palmer dan Felsing John. Mengadopsi beberapa falsafah:
    a.       Menekankan kolaborasi antara orang-orang pada tim FDD
    b.      Mengelola kompleksitas masalah yang menggunakan dekomposisi  berbasis fitur
    c.       Melakukan beberapa komunikasi teknis rinci yang menggunakan sarana berbasis teks, verbal dan grafis 
    Manfaat Fitur-fitur (FDD)
    • Dapat lebih mudah dipahami dan dapat menemukan ambiguitas, kesalahan atau kelalaian
    • Dapat diatur menjadi pengelompokan hierarkis yang berhubungan dengan bisnis
    • Rancangan dan representasi kode-kode program lebih mudah untuk diperiksa.


    Agile Modeling


    merupakan metodologi berbasis praktik untuk pemodelan yang efektif dan dokumentasi perangkat lunak berbasis sistem.
    AM adalah kumpulan nilai-nilai, prinsip, dan praktik untuk perangkat lunak pemodelan yang dapat diterapkan pada sebuah proyek pengembangan perangkat lunak secara efektif dan ringan.

    kunci keberhasilan AM
    • memiliki komunikasi yang efektif antara semua stakeholder proyek
    • berusaha untuk mengembangkan solusi yang paling sederhana
    • memenuhi semua kebutuhan anda
    • mendapatkan feedback mengenai usaha anda
    • memiliki keberanian untuk membuat keputusan
    • memiliki kerendahan hati untuk mengakui bahwa Anda tidak mungkin tahu segalanya, bahwa orang lain memiliki nilai untuk menambah upaya proyek.
    • diperlukan adanya komunikasi yang terbuka dan kejujuran pada tim ​​ untuk memastikan kerja sama tim yang efektif.
    Macam-macam Agille Modelling
    1. Pengembangan perangkat lunak adaptif (Adaptive Software Development [ASD])
    2. Pengembangan oleh banyak orang atau scrum
    3. Metode pengembangan sistem dinamik (Dynamic Systems Development Method [DSDM])
    4. Kristal
    5. Pengembangan Drive fitur (Feature Drive Development [FDD])
    6. Permodelan cepat (Agile Modeling [AM])
    7. Pengembangan perangkat lunak yang ringkas (Lean Software Development [LSD])
    8. Proses cepat terpadu (Agile Unified Process [AUP])

    Lean Software Development (LSD)
    Suatu proses engineering yang digunakan untuk mengembangkan dan menghasilkan suatu software berkualitas tinggi yang telah terjamin kehandalannya sehingga tidak terjadi kegagalan dalam penggunaan software tersebut. 

    Lean software development ini berpedoman pada pemahaman lapangan dan kesesuaian pelaksanaan prinsip lean disepanjang seluruh proses pengembangan software. Slogan yang dipakai yaitu berpikir besar, bertindak kecil, gagal cepat, belajar cepat.

    Lean dapat mereduksi waktu pengembangan software karena waktu pengembangan software dapat direduksi dengan cara mengurangi error pengerjaan software yaitu menggunakan tujuh prinsip Lean, yaitu: Eliminate Waste, Amplifying Learning, Decide As Late As Possible, Deliver As Fast As Possible, Empower The Team, Built Integrity, See The Whole.
    7        Prinsip LSD
    1.      Eliminate waste (Mengeliminasi Ketidak Effisienan)
    2.      Amplify learning (Mengamplifikasi pembelajaran)
    3.      Decide as late as possible (Menentukan keterlambatan sebagai hal yang mungkin)
    4.      Deliver as fast as possible (Mengantarkan Secara cepat sebagai hal yang mungkin)
    5.      Empower the team (Memberdayakan team)
    6.      Build integrity in (Membangun integritas)
    7.      See the whole (Melihat secara kesatuan/keseluruhan.)

    Agile Unified Process

    Versi sederhana dari IBM Rational Unified Process (RUP) yang dikembangkan oleh Scott Ambler. Ini menggambarkan sederhana, mudah untuk memahami pendekatan ke perangkat lunak aplikasi bisnis berkembang menggunakan teknik gesit dan konsep namun masih tetap setia untuk RUP tersebut.

    Filosofi dari Agile Unified Process:
    1.      Staf. Orang tidak akan membaca dokumentasi proses rinci, tetapi mereka akan ingin beberapa petunjuk tingkat tinggi dan / atau pelatihan dari waktu ke waktu. Produk AUP menyediakan link ke banyak rincian.
    2.      Kesederhanaan. Semuanya proses dijelaskan dengan singkat.
    3.      Agility. UP Agile sesuai dengan nilai-nilai dan prinsip-prinsip dari pengembangan perangkat lunak tangkas dan Aliansi Agile.
    4.      Fokus pada aktivitas bernilai tinggi. Fokusnya adalah pada kegiatan penghitungan, tidak setiap hal yang memiliki focus yang tinggi.
    5.      Alat kemerdekaan. Anda dapat menggunakan toolset yang Anda inginkan dengan UP Agile.

     Sumber:
    http://www.distrodoc.com/3750-agile-unified-process
    http://arekget.blogspot.com/2013/01/bab-3-pengembangan-dan-implementasi.html

    Selasa, 03 Maret 2015

    Perangkat Lunak

    Definisi Perangkat Lunak
    • Software = Perangkat lunak

     Kumpulan program komputer dengan fungsi tertentu
    • Perangkat lunak adalah
    1. Instruksi (program komputer) yang bila dieksekusi dapat menjalankan fungsi tertentu,
    2. Struktur data yang dapat membuat program memanipulasi informasi, dan
    3. Dokumen yang menjelaskan operasi dan penggunaan program (Pressman, 1997).


    Perangkat Lunak (software) adalah kumpulan beberapa perintah yang dieksekusi oleh mesin komputer dalam menjalankan pekerjaannya. perangkat lunak ini merupakan catatan bagi mesin komputer untuk menyimpan perintah, maupun dokumen serta arsip lainnya.

    Era Perkembangan Perangkat Lunak
    1. Era Pemula (Pioneer) 
    Pada era ini, perangkat lunak merupakan satu kesatuan dengan perangkat kerasnya. Penggunaan komputer dilakukan secara langsung dan hasil yang selesai di kerjakan komputer berupa print out. Proses yang di lakukan di dalam komputer berupa baris instruksi yang secara berurutan di proses.
    2. Era Stabil 
    Pada era ini perangkat lunak mampu menyelesaikan banyak pengguna (multi user) secara cepat/langsung (real time). Pada era ini mulai di kenal sistem basis data, yang memisahkan antara program (pemroses) dengan data (yang di proses).
    3.  Era Mikro 
    Perangkat lunak dapat di bedakan menjadi perangkat lunak sistem yang bertugas menangani internal dan perangkat lunak aplikasi yang di gunakan secara langsung oleh penggunannya untuk keperluan tertentu. Automatisasi yang ada di dalam perangkat lunak mengarah ke suatu jenis kecerdasan buatan.
    4. Era Modern 
    Saat ini perangkat lunak sudah terdapat di mana-mana, sebuah komputer genggampun telah di lengkapi dengan perangkat lunak yang dapat di sinkronkan dengan PC. Bahkan peralatan seperti telepon, TV, hingga ke mesin cuci, AC dan microwave, telah ditanamkan perangkat lunak untuk mengatur operasi peralatan itu. 

    Software menurut jenisnya di bagi menjadi  :
    1. Perangkat lunak sistem :
        a) Operating System (Sistem Operasi) : memiliki fungsi untuk mengelola dan mengkoordinasikan semua komponen dan fungsi komputer. Sistem operasi harus ada di setiap komputer dan menjembatani interaksi antara komputer dan penggua (user). Beberapa contoh sistem operasi diantaranya adalah DOS, Windows, UNIX, dan linux.
        b) Programming Language (Bahasa Pemrograman) : Software jenis ini memberikan instruksi standar yang melibatkan sintak dan semantik yang digunakan untuk mendefinisikan program aplikasi komputer (computer application program). contoh bahasa pemrograman adalah Java, PHP, dan Microsoft Visual Basic.
       c)  Utility : merupakan perangkat lunak yang berfungsi untuk menyelesaikan suatu permasalahan tertentu dalam sistem komputer.

     2. Perangkat lunak aplikasi :
       Application Program (Program Aplikasi) : Software yang ditujukan untuk keperluan dan kegunaan khusus dan tertentu, misalnya untuk akuntansi, presentasi, perpustakaan, dan lain-lain. Semua program aplikasi dibuat dengan menggunakan bahasa pemrograman. Beberapa contoh program aplikasi adalah Microsoft Office Word untuk membuat dokumen, Myob untuk akuntansi, OpenOffice.org Impress untuk presentasi dan lain-lain.


    Jenis Software berdasarkan Aplikasi-nya:
    1. Perangkat Lunak Sistem (Sistem Software)
    Sekumpulan program yang ditulis untuk kepentingan program lain
    contoh : editor, driver dan lain-lain
    2. Perangkat Lunak Waktu Nyata (Real Time Software)
    Suatu perangkat lunak yang berfungsi mengendalikan, memonitor atau menganalisis kejadian (event) yang terjadi pada keadaan nyata (seketika).
    3. Perangkat Lunak Bisnis (Business Software)
    Perangkat lunak yang memberikan fasilitas operasi untuk bisnis atau fasilitas pengambilan keputusan manajemen.
    contoh : sistem akuntansi, inventory, payroll dan lain-lain.
    4. Perangat Lunak Rekayasa dan Sains (Engineering and Scientific Software)
    Perangkat lunak yang digunakan di dalam bidang aplikasi teknik dan kerekayasaan. Perangkat lunak jenis ini biasanya berhubungan dengan komputasi data numerik, CAD (Computer Aided Design), simulasi sistem, dan lain-lain. 
    contoh : AutoCAD
    5. Embedded Perangkat lunak yang ditanam pada suatu chip (EEPROM).
    Perangkat lunak ini terintegrasi dengan perangkat keras dan berfungsi mengatur kinerja dari perangkat keras tersebut.
    contoh : microwave oven, telpon genggam, pengaturan avionik pesawat udara, dan lain-lain.
    6. Perangkat Lunak Komputer Pribadi (Personal Computer Software)
    Banyak digunakan pada aplikasi yang bersifat perorangan
    contoh : pengolah kata, spreadsheet, game, DBMS dan lain-lain.
    7. Perangkat Lunak Intelegensia Buatan (Artificial Intelligent Software)
    Dibuat dengan menggunakan teknik algoritma non-numerik untuk memecahkan masalah yang kompleks, digunakan dalam bidang aplikasi kecerdasan buatan
    contoh : game, expert sistem, neural network, dan lain-lain

    Karakteristik Perangkat Lunak
    Perangkat lunak lebih dikenal sebagai elemen lojik daripada fisik, oleh karena itu perangkat lunak memiliki karakteristik yang berbeda dari perangkat keras :
    1. Perangkat lunak dikembangkan atau direkayasa, jadi tidak diproduksi dalam pengertian klasik.
    2. Merupakan produk yang unik (tidak ada seri produksi).
    3. Perangkat lunak tidak pernah akan rusak/aus karena selalu diperbaharui
    4. Tidak terlihat (invisible).
    5. Perangkat lunak pada umumnya dibangun sesuai keinginan, jadi tidak dibentuk dari komponen yang sudah ada.
    6. Fleksibel, sehingga mudah dimodifikasi.
    7. Dihubungkan (linked) dengan sistem komputer. 


    Rekayasa Perangkat Lunak adalah pengubahan perangkat lunak itu sendiri guna mengembangkan, memelihara, dan membangun kembali dengan menggunakan prinsip reakayasa untuk menghasilkan perangkat lunak yang dapat bekerja lebih efisien dan efektif untuk pengguna.

    Mengapa Rekayasa Perangkat Lunak ?
    • Perangkat lunak lebih banyak menyebabkan masalah daripada menyelesaikannya.
    • Peningkatan ukuran perangkat lunak tanpa pengorganisasian.
    • Perbaikan suatu kesalahan menyebabkan timbulnya kesalahan lainnya.
    • Tidak ada kendali pemeliharaan.

    sumber :
    http://www.termasmedia.com/65-pengertian/72-pengertian-software.html
    http://tentangkomputerkita.blogspot.com/2010/04/pengertian-perangkat-lunak-software.html
    Software Engineering A Practitioner’s Approach