Rabu, 18 Maret 2015

Agile Software Development

1. Agile Modeling

Agile Modeling (AM) merupakan metodologi berbasis praktik untuk pemodelan yang efektif dan dokumentasi perangkat lunak berbasis sistem.
Software Proses
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.

Driven Development

Macam-macam Agile 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. Pengembangan perangkat lunak yang ringkas (Lean Software Development [LSD])
  7. Permodelan cepat (Agile Modeling [AM])
  8. Proses cepat terpadu (Agilr Unified Process [AUP])

2. Agile Proses Model

Agile process memadukan filosofi dan sekumpulan aturan dalam pengembangan software. Aturan-aturan pengembangan software lebih menekankan penyampaian ke pelanggan tentang pendesainan dan analisa software itu sendiri serta komunikasi yang aktif dan berkesinambungan antar developer dan pelanggan.

3. Pengembangan perangkat lunak adaptif

Ø  Pengembangan perangkat lunak adaptif (Adaptive Software Development [ASD]) diusulkan oleh Jim Highsmith
Ø  Sebagai suatu teknik yang dapat digunakan untuk membangun/mengembangkan perangkat lunak dan sistem yang kompleks.
Ø  Menggabungkan 3 fase: spekulasi, kolaborasi dan pembelajaran


4. Model Pengembangan Sistem Dinamik

  •  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

5. Kristal

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


6. Pengembangan Kendali Fitur

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

7. Adaptif Software Development

Dipelopori oleh Jim Highsmith. Karakter yang membedakan :
  • Perencanaan berbasis misi
  •  Fokus berbasis komponen
  • Menggunakan “time-boxing”
  • Konsideran eksplisit pada resiko
  •  Menekankan kolaborasi bagi pengumpulan kebutuhan
  • Menekankan pembelajaran melalui proses

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

8. Pemrograman Extreme

Definisi XP

sebuah model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel.

Nilai-nilai Dasar XP

  • Communication : XP memfokuskan pada hubungan komunikasi yang baikanta anggota tim.
  • Courage : Para anggota tim dan penanggungjawab pengembangan perangkat lunak harus selalu memiliki keyakinan dan integritas dalam melakukan tugasnya.
  • Simplicity : gunakan method 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.
  • Feedback : berikan selalu feedback kepada sesama anggota tim maupun pihak-pihak lain yang terlibat dalam pengembangan perangkat lunak.
  • Quality Work : semua ini diatas berujung pada sebuah kondisi dimana kita melakukan pekerjaan dengan berkualitas.

Aspek Dasar XP

  1. The planning game
  2. Small releases
  3. Metaphor
  4. Simple design
  5. Refactoring
  6. Testing
  7. Pair programming
  8. Collective ownership
  9. Coding standard
  10. Continous integration
  11. 40 hours week
  12. On site customer

The planning games

pada XP proses ini menggunakan terminologi "game" karena Beck menyarankan untuk menggunakan teknik score card dalam menentukan requirements. Semakin sulit aspek teknis yang dibutuhkan semakin tinggi pula score cardnya.

Metaphor

metaphor, walaupun mirip dengan arsitektur lebih bersifat dan deskriptif. Dengan demikian diharapkan komunikasi antara klien dengan developer akan berlangsung lebih baik dan lancar dengan penggunaan metaphor.

Simple design

Pada XP desain dibuat dalam lingkup kecil dan sederhana. Dengan desain yang simpel apabila terjadi perubahan maka membuat desain baru untuk mengatasi perubahan tersebut dapat dengan mudah dilakukan dan resiko kegagalan desain dapat diperkecil.

Refactoring

Melakukan perubahan pada kode program dari perangkat lunak dengan tujuan meningkatkan kualitas dari struktur program tersebut tanpa mengubah cara program tersebut bekerja. Dengan Refactoring tim pengembang dapat melakukan berbagai usaha untuk meningkatkan kualitas program tanpa kembali mengulang-ulang proses desain.

Testing 

Jika pada pengembangan perangkat lunak lainnya tes baru dikembangkan setelah perangkat lunak selesai menjalani proses coding maka pada XP tim pengembang harus membuat terlebih dahulu tes yang hendak dijalani oleh perangkat lunak.

  • Sikuls pada XP adalah requirement analysis à test à code à design

Pair programming

melakukan proses menulis program dengan berpasangan.

Coding standard

Dengan adanya coding standards yang telah disepakati terlebih dahulu maka pemahaman terhadap program akan menjadi mudah untuk semua programer dalam tim.

Continous integration

Dengan melakukan build sesering mungkin berbagai kesalahan pada program dapat dideteksi dan diperbaiki secepat mungkin. Pada XP tim disarankan untuk melakukan build sesering mungkin misalnya setiap 4 jam atau bahkan lebih cepat lagi.

9. Scrum

Scrum adalah 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. Tiga pertanyaan kunci :

  1. Apa yang anda lakukan sejak pertemuan terakhir tim ?
  2. Kendala apa yang anda hadapi ?
  3. Apa yang akan anda lakukan hari ini ?

  • Potentially product shipping increment  : yaitu setiap backlog atau product yang telah selesaidikerjakan selama sprint dan di demonstasikan ke product owner

Sejarah Scrum

a.) Jeff Sutherland

  • Dimulai di Easel Corp pada tahun 1993
  • IDX dan 500+ orang melakukan Scrum

b.) Ken Schwaber

  • ADM
  • Scrum dipresentasikan di OOPSLA pada tahun 96 dengan Sutherland
  •  Penulis 3 buku mengenai Scrum

c.) Mike Beedle

  • Scrum patterns di PLOPD4

d.) Ken Schwaber dan Mike Cohn

  • Mendirikan Scrum Alliance pada tahun 2002 yang awalnya bagian dari Agile Allianc
Karakteristik Scrum
Kelebihan dan Kekurangan Scrum

Software yang menggunakan scrum

  1. Software komersil
  2. Pengembangan internal
  3. Proyek dengan kontrak
  4. Aplikasi keuangan
  5. Aplikasi yang tersertifikasi ISO 9001, dll

10. Dynamic System Development Model (DSDM)

Dipromosikan oleh konsorsium DSDM. Mirip dalam banyak dengan XP dan/atau ASD. Sembilan prinsip-prinsip panduan :
  • Pelibatan user secara aktif adalah keharusan.
  • Tim DSDM harus diberdayakan untuk mengambil keputusan.
  • Fokus pada penyajian produk sesering mungkin.
  • Penerimaan dari tujuan bisnis adalah kriteria esensial untuk penerimaan penyajian.
  • Pengembangan bertahap dan berulang dibutuhkan untuk fokus pada solusi bisnis yang akurat
  • Semua perubahan selaman pengembangan dapat dibalik.
  • Kebutuhan adalah dasar pada level tinggiPengujian terintegrasi dalam siklus kehidupan 
 
Sumber: http://arekget.blogspot.com/2013/01/bab-3-pengembangan-dan-implementasi.html

Jumat, 27 Februari 2015

REKAYASA PERANGKAT LUNAK

Rekayasa Perangkat Lunak merupakan mesin yang memproses fakta atau data menjadi informasi. komputer digunakan orang untuk hasil kerja dan memecahkan berbagai masalah. yang menjadi pemroses data atau memecah masalah itu merupakan perangkat lunak.
bentuk terkecil ari perangkat lunak adalah operasi aritmatik (+, -, :, x) dan logika (AND, OR, >, <, =). Dari operasi dasar ini disusun program.

gambar.1 tingkat pemroses.
tingkat pemroses yang dikerjakan software pun dari machine like, mulai berubah seperti human like. Didalam teori informasi, mulai dari data / fakta, setelah proses seleksi dan pengurutan menjadi suatu yang berguna menjadi informasi. Informasi yang disusun secara sistematis dengan alur logika tertentu menjadi knowledge dan pada akhirnya gabungan knowledge  yang digabung dari berbagai sisi guna membangun widsom.
data yang diprosespun telah banyak berubah, yang semula hanya berupa data bilangan dan karakter merambah ke audio visual.
Sejauh perkembangan hingga saat ini, seluruh menggunakan format data digital dengan satuan bit.

Perkembangan Pembuatan Software

Bentuk paling primitif dari software, menggunakan aljaber boolean, yang direpresentasikan sebagai bit. yaitu 1 (benar) atau 0(salah). bit dikelompokkan  menjadi nible (4bit), byte(8bit), word(2bit), doubleword(32bit).
Evolusi Software
1. Era Pioner 
Bentuk software pada awalnya adalah sambungan-sambungan kabel ke antar bagian dalam komputer.
2. Era Stabil
penggunaan komputer sudah banyak digunakan, tidak hanya kalangan peneliti dan akademik saja, tetapi juga oleh kalangan industri/ pabrik. Perusahaaan software bermunculan dan sebuah perangkat lunak mulai bergeser menjadi beberapa fungsi, dari ini perangkat lunak menjadi sebuah produk. Baris-baris perintah perangkat lunak yang di jalankan oleh komputer bukan lagi satu-satu, tapi sudah seperti banyak proses yang di lakukan secara serempak (multi tasking). Sebuah 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
Sejalan dengan semakin luasnya PC dan jaringan komputer di era ini, perangkat lunak juga berkembang untuk memenuhi kebutuhan perorangan. 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, tidak hanya pada sebuah superkomputer dengan 25 prosesornya, sebuah komputer genggampun telah di lengkapi dengan perangkat lunak yang dapat di sinkronkan dengan PC. Tidak hanya komputer, bahkan peralatan seperti telepon, TV, hingga ke mesin cuci, AC dan microwave, telah di tanamkan perangkat lunak untuk mengatur operasi peralatan itu. Dan yang hebatnya lagi adalah setiap peralatan itu akan mengarah pada suatu saat kelak akan dapat saling terhubung. Pembuatan sebuah perangkat lunak bukan lagi pekerjaan segelentir orang, tetapi telah menjadi pekerjaan banyak orang, dengan beberapa tahapan proses yang melibatkan berbagai disiplin ilmu dalam perancangannya. Tingkat kecerdasan yang di tunjukkan oleh perangkat lunak pun semakin meningkat, selain permasalahan teknis, perangkat lunak sekarang mulai bisa mengenal suara dan gambar.
Klasifikasi Perangkat Lunak
software secara umum dibagi menjadi 2 yaitu software sistem dan software aplikasi.
software sistem dapat dibagi menjadi 3 macam yaitu:
1. Bahasa pemrograman 
 merupakan perangkat lunak yang bertugas mengkonversikan arsitektur dan algoritma yang di rancang manusia ke dalam format yang dapat di jalankan komputer, contoh bahasa pemrograman di antaranya : BASIC, COBOL, Pascal, C++, FORTRAN.
2.Sistem Operasi
merupakan sekumpulan rutin perangkat lunak yang berada diantara program aplikasi dan perangkat keras.

3. Utility
adalah  sistem operasi yang merupakan perangkat lunak sistem dengan fungsi tertentu.

Sistem Operasi
 Sistem Operasimerupakan sekumpulan rutin perangkat lunak yang berada diantara program aplikasi dan perangkat keras.
Kedudukan Sistem operasi dalam komputer berkedudukan sebagai penghubung antara software dan hardware. Maksudnya, manusia berinteraksi dengan komputer melalui sistem operasi yang ada.    

Sasaransistem operasi
a)  Kenyamanan : Sistem operasi harus membuat penggunaan komputer menjadi lebih nyaman.
b) Efisiensi : Sistem operasi menjadikan penggunaan sumber daya sistem komputer secara efisien.
c)  Mampu Berevolusi : Sistem operasi harus dibangun sehingga memungkinkan dan memudahkan pengembangan, penguji dan pengajuan fungi-fungsi yang baru tanpa mengganggu layanan yang dijalankan sistem komputer.
Aplikasi  Multimedia
Aplikasi multimedia saat ini sangat banyak dan beragam. Di katakan Multimedia karena selain 
penggunaan media teks, aplikasi ini dapat memproses / menampilkan dalam bentuk yang lain yaitu 
gambar, suara  dan film.
Aplikasi Multimedia sangat berkaitan dengan format data yang di gunakan. Aplikasi Multimedia 
umumnya di pisahkan lagi menjadi aplikasi yang di gunakan untuk membuat, yang hanya di gunakan
untuk menampilkan saja dan aplikasi pengaturan.
gambar player suara musik.
gambar player film.
Format-format digital multimedia 
1. MIDI (Musical Instrument Digital Interface) , format suara instrumen ini di perkenalkan pada tahun 1983 oleh perusahaan musik elektrik seperti Roland, Yamaha dan Korg. Format MIDI bersifat sangat kompak dengan ukurannya yang kecil, suara yang di hasilkan oleh MIDI dengan dukungan sound card yang memilik synthesizer (penghasil suara elektrik) sangatlah mirip dengan organ elektrik yang bisa memainkan berbagai alat musik.
2. MP3, format suara yang terkenal saat ini berbeda dengan MIDI yang hanya instrument, MP3 merekam seluruh suara termasuk suara penyanyinya. Kualitas suara MP3 akan berbanding dengan ukuran penyimpannya. Kualitas yang banyak di gunakan untuk merekam musik adalah standar CD-ROM (44,2 KHz, 16 bit, stereo), sementara kualitas terendah adalah kualitas seperti telepon (5 KHz, 8 bit, mono).
3. MPEG (Moving Picture Experts Group), merupakan format yang di susun oleh ahli dari berbagai penjuru dunia untuk format multimedia.
4. AVI (Audio Video Interleave), format AVI di buat oleh Microsoft dan mudah di pindah-pindahkan di aplikasi buatan Microsoft lainnya seperti Word atau PowerPoint.
5.Quicktime, sama dengan AVI, Quicktime dapat digunakan baik di komputer berbasis Intel maupun Mac. Quicktime dapat menyaingin AVI di karenakan tingkat kompresinya yang lebih baik. Tingkat kompresi menentukan besar-kecilnya file yang akan menentukan pula besar-kecilnya media penyimpanan, dan lebar jalur data yang dibutuhkan untuk transfer.
Aplikasi Internet
Perangkat lunak yang berhubungan dengan internet sangat berkaitan dengan aplikasi internet. Aplikasi Internet adalah protokol yang digunakan untuk berhubungan antara satu orang atau mesin dengan pihak lain yang berjauhan. Aplikasi internet akan menyangkut dua sisi, yaitu sisi penyedia (server) atau sisi pengguna (client). Contoh aplikasi internet dan perangkat lunak dari sisi pengguna yang umum di gunakan adalah :
1. HTTP (Hypertext Transfer protocol)
merupakan aplikasi internet yang menampilkan baris kalimat, atau gambar, dengan beberapa kata yang di beri tanda garis bawah (hypertext). Dari hypertext ini, pengguna dapat melompat dari satu dokumen (page) ke dokumen lainnya. Perangkat lunak di sisi pengguna yang menjalankan http di kenal sebagai browser. Contoh:
gambar browse internet explorer dan netscape.
2.E-mail (Electronic mail)
merupakan aplikasi surat menyurat di internet. Setiap orang memiliki alamat E-mail dan saling bertukar dokumensatu sama lain. contoh: Outlook Exspress
gambar outlool exspress.
3. Messenger
 digunakan untuk berkomunikasi antar satu orang atau lebih, selain melalui teks, juga bisa berupa suara, maupun film.
gambar yahoo messenger.

Referensi : ivan@wiraekabhakti.co.id ,  IlmuKomputer.Com