Thursday, November 28, 2013

TUGAS 1 REKAYASA PERANGKAT LUNAK – B. Ratih

1. Jelaskan beberapa konsep RPL

a.       Definisinya
b.      Mengapa diperlukan
c.       Cakupannya
Jawab :
a.       Rekayasa Perangkat Lunak adalah Aplikasi ilmu computer untuk membangun sistem perangkat lunak praktis yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, desain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan.
b.      - Semua negara maju ekonominya bergantung pada perangkat lunak (PL), makin banyak sistem yang dikendalikan oleh PL, makin banyak pula anggaran yang dihabiskan untuk perangkat lunak
- Rekayasa perangkat lunak dalam skala yang besar tidak bisa dikerjakan oleh seorangan, karena akan menghabiskan keefektifan dan keefisienan waktu. Oleh sebab itu dibutuhkan kerja tim/orang-orang yang terlibat dalam pengembangannya seperti : programmer, system analis, software engineer, database engineer dll.
- Harga PL sering lebih mendominasi harga sistem komputer. Harga PL pada PC sering lebih mahal dari pada harga perangkat kerasnya.
c.       Disiplin ilmu dasar Rekayasa Perangkat Lunak ada 3 macam :
1.      Proses
Semua kumpulan aktivitas yang saling terkait guna untuk menyelesaikan masalah tertentu atau menghasilkan prodak atau layanan, mulai tahap awal (spesifikasi) sampai tahap akhir (evolusi)
2.      Produk
Sesuatu yang dihasilkan dari beberapa proses yang telah dilakukan berupa perangkat lunak yang siap digunakan oleh pengguna
3.      Manajemen

Pengelolaan manajemen yang diperlukan untuk teknis-teknis pengembangan perangkat lunak, contoh : manajemen biaya, waktu, resiko, tim kerja/orang, strategis dll.


2.  Sebut dan jelaskan lima atribut PL

Jawab :
1.      dapat terus dirawat dan dipelihara(maintainability)
perangkat lunak harus dibuat sedemikian rupa sehingga bisa awet/tidak mudah rusak dalam penggunaannya
2. dapat mengikuti perkembangan teknologi(dependability)
Tuntutan evolusi tidak bisa dihindari akibat perkembangan teknologi dan permintaan pelanggan yang bermacam-macam
3. dapat mengikuti keinginan pengguna(robust)
Arti keinginan pengguna disini adalah dapat diterima oleh jenis dan sifat pengguna dalam mengoperasikan perangkat lunak di system yang diinginkan pengguna
4. efektif dan efisien dalam menggunakan energi dan penggunaannya (efficiency)
Perangkat lunak yang efisien yaitu perangkat lunak yang tidak boros dalam penggunaan sumber daya sistem
5. dapat memenuhi kebutuhan (usability)[2]
Kebutuhan pelanggan bermacam-macam, oleh karenanya kita harus siap ketika sewaktu-waktu dimintai untuk membuatkan perangkat lunak yang  dibutuhkan pelanggan


3. Jelaskan dua jenis produk PL dan berikan contohnya
Jawab :

a.      Produk Generik (Umum)
Sistem stand-alone standar yang diproduksi oleh organisasi pengembang dan dijual ke pasar terbuka kesiapapun yg membelinya. Biasa disebut sebagai software shrink-wrapped. Contoh : pengolah kata (word processor).
b.      Produk pesanan (yang disesuaikan)
Sistem yang dipesan oleh pelanggan tertentu. Dikembangkan khusus bagi pelanggan oleh kontraktor perangkat lunak. Contoh : Sistem untuk mendukung proses bisnis tertentu dan sistem kontrol lalu lintas udara.

4. Tanggung jawab apa saja yang harus dimiliki oleh seorang software engineer? Jelaskan!
Jawab :
  Kerahasiaan
  Seorang perekayasa PL harus menghormati kerahasiaan data-data pelanggan
  Kompetensi
  Seorang perekayasa  harus mempunyai kemampuan untuk melaksanakan atau melakukan suatu pekerjaan yang dilandasi atas keterampilan dan pengetahuan
  Hak cipta intelektual
  Seorang perekayasa PL harus memastikan dan melindungi hak cipta pemikiran/intelektualitas
  Penyalahgunaan komputer
  Seorang perekayasa PL tidak seharusnya menyalahgunakan kemampuannya untuk  melakukan kejahatan atau kriminalitas

5. Sebut dan jelaskan 4 proses PL!
Jawab :
a. Spesifikasi Perangkat Lunak : Fungsionalitas perangkat lunak dan batasan kemampuan operasinya harus didefinisikan.

b. Pengembangan Perangkat Lunak : Perangkat lunak yang memenuhi spesifikasi harus diproduksi.

c. Validasi Perangkat Lunak : Perangkat lunak harus divalidasi untuk menjamin bahwa perangkat lunak melakukan apa yang diinginkan oleh pelanggan.

d. Evolusi Perangkat Lunak : Perangkat lunak harus berkembang untuk memenuhi kebutuhan pelanggan.

1.   6. Gambar dan jelaskan tahap2 dalam model proses Waterfall! Apa kekurangan dan kelebihan model proses Waterfall?
Jawab :


Tahap-Tahap Model Proses Waterfall :
· 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 & Architecture. 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.
· Development & 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.
· Quality Assurance & Software 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.
· Implementation.  selama tahap ini, desain perangkat lunak disadari sebagai sebuah program lengkap atau unit program. Desain yang telah disetujui, diubah dalam bentuk kode-kode program. Tahap ini, kode-kode program yang dihasilkan masih pada tahap modul. Diakhir tahap ini, tiap model di testing tanpa diintregasikan.
· Maintenance & Support. 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.
     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.

    Kekurangan model Waterfall:

  •   Diperlukan majemen yang baik, karena proses pengembangan tidak dapat dilakukan secara berulang sebelum terjadinya suatu produk.
  • Kesalahan kecil akan menjadi masalah besar jika tidak diketahui sejak awal pengembangan yang berakibat pada tahapan selanjutnya.
  • Pelanggan sulit menyatakan kebutuhan secara eksplisit sehingga tidak dapat mengakomodasi ketidak pastian pada saat awal pengembangan.
  • Pelanggan harus sabar, karena pembuatan perangkat lunak akan dimulai ketika tahap desain sudah selesai. Sedangkan pada tahap sebelum desain bisa memakan waktu yang lama.

    7. Sebutkan beberapa ciri-ciri model incremental sebutkan pula kelebihan dan kekurangannya!
Jawab  :

Model incremental menggabungkan elemen-elemen model sekuensial linier (diimplementasikan secara berulang) dengan filosofi prototype interatif. Model ini memakai urutan-urutan linier di dalam model yang membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier menghasilkan pertambahan perangkat lunak yang kemudian dapat disampaikan kepada pengguna.
Pada saat model incremental (pertambahan) ini digunakan, pertambahan pertama sering merupakan produk inti (core product), yaitu sebuah model pertambahan yang dipergunakan, tetapi beberapa muka tambahan (beberapa diketahui dan beberapa tidak) tetap tidak disampaikan. Produk inti tersebut dipergunakan oleh pelanggan (atau mengalami pengkajian detail). Sebagai hasil dari pemakaian dan/atau evaluasi maka dikembangkan rencana bagi pertambahan selanjutnya. Rencana tersebut menekankan modifikasi produk inti untuk secara lebih baik memenuhi kebutuhan para pelanggan dan penyampaian fitur serta fungsional tambahan. Proses ini mengikuti penyampaian setiap pertambahan sampai bisa menghasilkan produk yang lengkap.
Model proses incremental tersebut, seperti model prototype dan pendekatan-pendekatan evolusioner yang lain, bersifat iterative. Tetapi tidak seperti model prototype, model pertambahan berfokus pada penyampaian produk operasional dalam setiap pertambahannya. Pertambahan awal ada di versi stripped down dari produk akhir, tetapi memberikan kemampuan untuk melayani pemakai dan juga menyediakan platform untuk evaluasi oleh pemakai.
Perkembangan pertambahan, khususnya berguna pada saat staffing, tidak bisa dilakukan dengan menggunakan implementasi lengkap oleh batasan waktu bisnis yang sudah disepakati untuk proyek tersebut. Jika produk inti diterima dengan baik, maka staf tambahan (bila dibutuhkan) bisa ditambahkan untuk mengimplementasi pertambahan selanjutnya. Sebagai tambahan, system mayor yang sedang pada masa perkembangan serta waktu penyampaiannya belum pasti, mungkin membutuhkan keberadaan perangkat keras yang baru. Bisa juga rencana tertentu dibuat untuk menghindari pemakaian perangkat lunak ini, sehingga memungkinkan fungsionalitas partial disampaikan kepada pemakai tanpa harus banyak tertunda.

Contoh Penggunaan Incremental Model
Misalnya, perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigma penambahan akan menyampaikan manajemen file dasar, editing serta fungsi penghasilan dokumen pada penambahan pertama; kemudian editing dan kemampuan penghasilan dokumen yang lebih canggih pada pertambahan kedua; pengecekan spelling dan tata bahasa pada pertambahan ketiga; serta kemampuan pengaturan halaman tingkat lanjut pada tahap pertambahan keempat. Harus dicatat bahwa aliran proses untuk berbagai pertambahan tersebut dapat menggabungkan paradigma prototype.


Kelebihan Penggunaan Model Incremental
·   Merupakan model dengan manajemen yang sederhana
·   Pelanggan tidak perlu menunggu sampai seluruh system dikirim untuk mengambil keuntungan dari system tersebut. Inkremen yang pertama sudah memenuhi persyaratan mereka yang paling kritis, sehingga perangkat lunak dapat segera digunakan.
·   Pelanggan dapat memakai inkremen yang pertama sebagai bentuk prototype dan mendapatkan pengalaman yang dapat menginformasikan persyaratan untuk inkremen system berikutnya
·   Resiko untuk kegagalan proyek secara keseluruhan lebih rendah. Walaupun masalah dapat ditemukan pada beberapa inkremen, bias saja beberapa inkremen diserahkan dengan sukses kepada pelanggan.
·   Karena layanan dengan prioritas tertinggi diserahkan pertama dan inkremen berikutnya diintegrasikan dengannya, sangatlah penting bahwa layanan system yang paling penting mengalami pengujian yang paling ketat. Ini berarti bahwa pelanggan akan memiliki kemungkinan kecil untuk memenuhi kegagalan perangkat lunak pada inkremen system yang paling kecil.

Kekurangan Penggunaan Model Incremental
·   Inkremen harus relative lebih kecil (tidak lebih dari 20.000 baris kode) dan setiap inkremen harus menyediakan sebagian dari fungsional system
·   Adanya kesulitan untuk memetakan persyaratan pelanggan pada inkremen dengan ukuran yang 


    8. Apa saja yang dapat menyebabkan perubahan PL? sebut dan jelaskan 2 cara untuk menekan biaya terkait perubahan PL!

Jawab  :
Banyak factor yang menyebabkan perubahan perangkat lunak, antara lain :
a.       Kemajuan teknologi
Teknologi adalah keseluruhan sarana untuk menyediakan barang-barang yang digunakan bagi kelangsungan dan kenyamanan hidup manusia. Teknologi telah mempengaruhi manusia dan sekelilingnya dalam banyak cara.
Tidak dapat dipungkiri makin lama kemajuan teknologi berkembang sangat pesat, hal tersebut terjadi karena manusia semakin lama semakin ingin instan tidak usah bertele-tele.
Dan hal ini juga menyebabkan perubahan akan Perangkat Lunak semakin cepat, jika tertinggal sedikit saja maka Perangkat Lunak tersebut tidak akan laku, karena semua orang pasti menginginkan Perangkat Lunak yang paling canggih dan terbaru. Sebagai contohnya yaitu smart phone, hampir tiap bulan bahkan bisa jadi tidak sampai satu bulan sudah ada smart  phone yang baru, dimana kualitasnya lebih baik, lebih canggih dan lebih simple.
Maka dari itu pembuat perangkat lunak harus bisa membuat suatu perangkat lunak yang sangat canggih, sesuai perubahan zaman, agar perangkat lunak tersebut bisa diterima masyarakat luas.
b.      Kebutuhan manusia
Kebutuhan manusia akan sesuatu barang atau jasa setiap harinya semakin banyak, hal ini karena tuntutan zaman, dimana setiap manusia pasti inginnya hal yang serba instan,  maka dari itu pembuat perangkat lunak harus bisa mengetahui kebutuhan apa saja yang diinginkan oleh manusia pada saat akan membuat perangkat lunak, agar  perangkat lunak yang dibuat bisa diterima oleh masyarakat umum, agar hal itu bisa terealisasi maka pembuat perangkat lunak harus mau bertanya langsung atau meminta pendapat kepada masyarakat umum (konsumen).
Cara untuk menekan biaya terkait perubahan perangkat lunak adalah dengan mengguna metode yang tepat, yaitu metode incremental, karena metode incremental mampu mengakomodasi terhadap adanya perubahan secara fleksibel dan produk yang dihasilkan pada increment pertama bukanlah prototype, tapi produk yang sudah bisa berfungsi dengan spesifikasi dasar, jadi perangkat lunak tersebut masih bisa di revisi sesuai perubahan yang di inginkan, selain itu biaya yang digunakan juga relative kecil, beda dengan metode lainnya. Hal ini akan memberi keuntungan pagi kedua pihak (konsumen dan produsen) baik dalam hal biaya maupun hasilnya (perangkat lunak tersebut).


9. Apa yang dimaksud dengan extreme programming? Jelaskan beberapa prinsip XP!

Jawab  :
Proyek Pemrograman Extreme pertama dimulai 6 Maret 1996. Extreme Programming adalah salah satu dari beberapa Proses Agile populer. Sudah terbukti sangat sukses di banyak perusahaan dari berbagai ukuran dan industri di seluruh dunia.
Extreme Pemrograman berhasil karena menekankan kepuasan pelanggan. Alih-alih memberikan semua yang anda mungkin inginkan pada tanggal beberapa jauh di masa depan proses ini memberikan perangkat lunak yang Anda butuhkan saat Anda membutuhkannya. Extreme Pemrograman memberdayakan pengembang Anda untuk percaya diri menanggapi perubahan kebutuhan pelanggan, bahkan terlambat dalam siklus hidup.
Extreme Pemrograman menekankan kerja sama tim. Pengelola, pelanggan, dan pengembang semua mitra setara dalam sebuah tim kolaboratif. Extreme Pemrograman menerapkan, sederhana namun efektif yang memungkinkan tim lingkungan menjadi sangat produktif. Tim mengorganisir diri mengatasi masalah untuk menyelesaikannya seefisien mungkin.
Extreme Pemrograman meningkatkan proyek perangkat lunak dalam lima cara penting; komunikasi, kesederhanaan, umpan balik, rasa hormat, dan keberanian. Extreme Programmer selalu berkomunikasi dengan pelanggan mereka dan programer sesama. Mereka terus desain mereka yang sederhana dan bersih. Mereka mendapatkan umpan balik dengan menguji perangkat lunak mereka dimulai pada hari pertama. Mereka memberikan sistem ke pelanggan sebagai perubahan sedini mungkin dan melaksanakan seperti yang disarankan. Setiap keberhasilan kecil memperdalam rasa hormat mereka atas kontribusi yang unik dari masing-masing dan setiap anggota tim. Dengan dasar Extreme pemrogram dapat berani merespon perubahan kebutuhan dan teknologi.
Aspek yang paling mengejutkan dari Extreme Programming adalah aturan sederhana. Extreme Pemrograman sangat mirip jig gergaji teka-teki. Ada banyak potongan-potongan kecil. Individual potongan
Extreme Programming adalah metode pengembangan perangkat lunak yang ringan dan termasuk salah satu agile methods yang dipelopori oleh Kent Beck, Ron Jeffries, dan Ward Cunningham. Extreme Programming merupakan agile methods yang paling banyak digunakan dan menjadi sebuah pendekatan yang sangat terkenal. Sasaran Extreme Programming adalah tim yang dibentuk berukuran antara kecil sampai medium saja, tidak perlu menggunakan sebuah tim yang besar. Hal ini dimaksudkan untuk menghadapi requirements yang tidak jelas maupun terjadinya perubahan-perubahan requirements yang sangat cepat.
Tugas utama developer dalam membangun suatu sistem perangkat lunak adalah mengkomunikasikan kebutuhan sistem kepada pengembang perangkat lunak. Komunikasi dalam Extreme Programmning dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien dalam melakukan coding dan unit testing sehingga klien bisa terlibat langsung dalam pemrograman sambil berkomunikasi dengan developer. Tujuannya untuk memberikan pandangan pengembang sesuai dengan pandangan pengguna sistem.
1.      Kesederhanaan (Simplicity)
XP mencoba untuk mencari solusi paling sederhana dan praktis. Perbedaan metode ini dengan metodologi pengembangan sistem konvensional lainnya terletak pada proses desain dan coding yang terfokus pada kebutuhan saat ini daripada kebutuhan besok, seminggu lagi atau sebulan lagi. Lebih baik melakukan hal yang sederhana dan mengembangkannya besok jika diperlukan.
2.      Umpan Balik (Feedback)
Hal ini diperlukan untuk mengetahui kemajuan dari proses dan kualitas dari aplikasi yang dibangun. Informasi ini harus dikumpulkan setiap interval waktu yang singkat secara konsisten. Ini dimaksudkan agar hal-hal yang menjadi masalah dalam proses pengembangan dapat diketahui sedini mungkin. Setiap feed back ditanggapi dengan melakukan tes, unit test atau system integration dan jangan menunda karena biaya akan membengkak (uang, tenaga, waktu).
3.      Keberanian (Courage)
Berani mencoba ide baru. Berani mengerjakan kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki. Contoh dari courage adalah komitmen untuk selalu melakukan design dan coding untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit, sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun ulang). Hal ini menjadikan pengembang merasa nyaman dengan refactoring program ketika diperlukan.
Extreme Programming menggunakan pendekatan berorientasi objek. Pada aktifitas Perencanaan terjadi pengumpulan user stories dari klien yang klien tetapkan prioritasnya. Setiap story ditetapkan harga dan lama pembangunan, jika terlalu besar, story dapat dipecah menjadi beberapa story yang lebih kecil. Terjadi pemeriksaan dan pertimbangkan resiko dan aktifitas Desain kegiatannya sederhana yaitu memanfaatkan kartu CRC (Class-Responsibility-Collaborator) untuk identifikasi dan mengatur class-class di konsep OO. Jika temuikan kesulitan, prototype dibangun [ini namanya spike solution].
Dilakukannya refactoring, yaitu mengembangkan desain dari program setelah ditulis. Pada aktifitas Pengkodean adalah penyiapan unit test sebelum pengkodean dipakai sebagai focus pemrogram untuk membuat program. Pair programming dilakukan untuk real time program solving dan real time quality assurance. Proses pengujiannya menggunakan unit test yang dipersiapkan sebelum pengkodean Menggunakan pendekatan berorientasi objek
Dalam penerapannya, Extreme Programming memiliki lima prinsip utama, yaitu:
1.      Rapid Feedback Menurut ilmu psikologi, waktu antara sebuah aksi dengan feedbacknya sangat penting untuk dipelajari. Dalam sebuah proyek XP, developer memperoleh feedback sesegera mungkin, menginterpretasikannya, lalu mengambil inti sarinya dan meletakkannya ke dalam system. Feedback dari pelanggan terhitung harian, bukan bulanan, dan feedback dari developer terhitung menitan, bukan mingguan!
2.      Assume Simplicity Hanya mendesain untuk masalah saat ini dan menghemat waktu 98% dari masalah tersebut dan hanya menekuni sekitar 2% untuk bagian yang sulit. XP berencana untuk masa depan sehingga desainnya bias di-reuse, lakukan pekerjaan yang penting, dan percayalah bahwa untuk kekompleksitasan bias ditambahkan kemudian.
3.      Incremental Change Pemecahan problem yaitu dengan bagian-bagian kecil perubahan saja. Jadi perubahan-perubahan yang terjadi pada XP melalui tahap-tahap kecil dan waktu yang singkat.
4.      Embracing Change Mencari dan menyediakan terlebih dahulu sebanyak mungkin pilihan ketika menyelesaikan masalah yang begitu menekan.
5.      Quality Work Setiap orang suka mengerjakan pekerjaan yang bagus dan layak dan kualitas yang dimaksud di sini adalah kualitas yang sempurna dan kualitas yang sempurna secara ekstrim. Karena tanpa kualitas kita tidak akan suka melakukan pekerjaan tersebut, hasilnya tidak akan sempurna dan proyeknya akan jatuh berantakan. 

   10. Jelaskan tentang metode agile
a.       Definisinya
b.      Prinsip-prinsipnya
c.       Kekurangan dan kelebihannya
Jawab  :
A.    definisi
Agile Software development adalah salah satu metodelogi dalam pengembangan sebuah perangkat lunak (software). Kata Agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan sebagai kata yang menggambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada. Konsep Agile software development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus.
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 klient lebih penting daripada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Namun demikian, sama seperti model proses yang lain, agile software development memiliki kelebihan dan tidak cocok untuk semua jenis proyek, produk, orang dan situasi. Agile Software Development memungkinkan model proses yang toleransi terhadap perubahan kebutuhan sehingga perubahan dapat cepat ditanggapi. Namun di sisi lain menyebabkan produktiitas menurun.

B.     prinsip-prinsip metode Agile
Salah satu cirri dari Agile Software Development adalah tim yang tanggap terhadap perubahan. Karena perubahan adalah hal yang utama dalam membangun software: perubahan kebutuhan software, perubahan anggota tim, perubahan teknologi dll. Selain itu Agile Software Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, anatara developer dan managernya. Cirri lain adalah klien menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip yang diterapkan 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 mendukun 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:
a.       Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain  itu, prioritas klien juga sering berubah seiring berjalannya proyek.
b.      Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
c.       Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.

C.  kelebihan dan kekurangan
Kelebihan dari metode Agile
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.
5.      Bisa melakukan review pelanggan mengenai software yang di buatlebih awal.

Kekurangan metode agile:
1.      Total lama pengembangan menjadi lebih lama
2.      Meningkatkan resiko kesalahan teknis
3.      Proses pengembangan menjadi agak kurang terorganisir

11. Apa yang disebut dengan pair programming? Apa keuntungan memakai pair programming?

Jawab        :
Pair Progamming adalah dua pemrogram yang bekerja pada satu sistem komputer yamg sama. Pair Progamming dapat dianalogikan seperti rally mobil dimana salah seorang bertindak sebagai driver, yang mengetik source code dan yang lain sebagai navigatornya, memikirkan strategi secara logika dan apa yang harus dilakukan oleh driver. PAda beberapa penelitian terdahulu Pair Progamming memiliki keuntungan dabandingkan dengan individual programming. Antara lain meningkatnya ketepatan secara fungsional dari system yang dibangun dan menghemat waktu pengerjaan. Sedangkan pada penelitian yang lain diperoleh hasil sebaliknya. Hal ini mungkin terjadi dikarenakan perbedaan sample pada pengujian misalnya tingkat kemahiran pemrogram atau kekompleksitasan dari sistem.
Pertanyaan yang muncul dari hasil peneltian terdahulu adalah apa hubungan dari waktu(duration), usaha (effort), dan Ketepatan  (correctness) dari Pair Progamming untuk tiap level kompleksitas dari system dan kemahiran pemrogram pada saat mengerjakan sebuah system ?.
Penelitian saat ini mengilustrasikan dengan jelas bagaimana kompleksitas dari pemrograman bergantung pada kemahiran dari subjeknya. Hipotesa dari study ini dapat dilihat pada tabel 1. H01,H04, dan H07 menunjukan pengaruh Pair Progamming yang berkaitan dengan durasi, effort dan correctness. Sepanjang pengetahuan peneliti, tidak ada studi mengenai Pair Progamming yang dapat digunakan untuk menilai secara langsung mengenai bagaimana hubungan kekompleksitasan dari system dan kemahiran pemrogram untuk membandingkan Pair Progamming dan Individual programming. Untuk membuktikan hubungan dari kekompleksitasan system peneliti mebuat null hipotesis H02, H05, dan H06. Dan dalam hubungan dengan kemahiran pemrogram dibuat null hipotesis H03, H06, dan H09.

Keuntungan pair programming :
Programmer bekerja berpasangan biasanya menghasilkan program yang lebih pendekdengan desain yang lebih baik dan lebih sedikit bugdaripada programmer bekerja sendiriPenelitian telah menemukan pengurangan tingkat cacat dari 15% sampai 50%, bervariasi tergantung pada pengalaman programmer dan kompleksitas tugasPasangan biasanya mempertimbangkan alternatif desain yang lebih daripada programmer bekerja sendiridan tiba di sederhanadesain yang lebih-dipelihara, mereka juga menangkap cacat desain awal Pasangan biasanya menyelesaikan pekerjaan lebih cepat dari satu programmer ditugaskan untuk tugas yang sama.. Pasangan sering menemukan bahwa tampaknya "mustahilmasalah menjadi mudah atau bahkan cepat, atau setidaknya mungkin untuk memecahkan ketika mereka bekerja bersama-sama.
            Pengetahuan lewat di antara pasangan programmer saat mereka bekerjaMereka berbagi pengetahuan spesifik dari sistem, dan mereka mengambil teknik pemrograman dari satu sama lainNew mempekerjakan cepat mengambil praktik tim dan mempelajari secara spesifik dari sistemDengan "promiscuous pasangan "-masing bersepeda programmer melalui semua programmer lain di tim daripada pasangan hanya dengan satu pasangan-pengetahuan tentang sistem menyebar ke seluruh seluruh timmengurangi risiko kepada manajemen jika salah satu programmer meninggalkan tim.            Pairing biasanya membawa peningkatan disiplin dan manajemen waktuProgrammer cenderung untuk melewatkan menulis unit testmenghabiskan waktu surfing web atau email pribadi atau jalan pintas ketika mereka bekerja dengan mitra pasanganMitra pair "membuat mereka jujur​​". Orang lebih enggan untuk mengganggu sepasang dari mereka untuk mengganggu seseorang yang bekerja sendirian.             keuntungan tambahan dilaporkan meliputi peningkatan moral dan kepercayaan yang lebih besar dalam kebenaran kode.


1
2.      Jelaskan tentang plan driven development


a.       Definisinya
b.      Tepat digunakan dalam kondisi seperti apa
c.       Kelebihan
d.      Kekurangan
Jawab  :

A.    definisi
            Metode plan driven adalah pendekatan khusus yang lebih formal untuk membuat aplikasi . Metodologi plan-driven menggabungkan : pengulangan dan prediktabilitas , suatu proses inkremental ditetapkan , dokumentasi yang ekstensif , arsitektur sistem muka , rencana rinci , proses pemantauan , pengendalian dan pendidikan , manajemen risiko , verifikasi dan validasi .             Rencana biasanya dihasilkan oleh berikut :
a.        Proyek dipecah menjadi tahap / tugas
b.      Setiap tugas dipecah menjadi kegiatan komposit
c.       Setiap tugas individu diperkirakan (mungkin menggunakan metrik )
d.      Perkiraan pengumpulan untuk memberikan usaha total
e.       Daftar tugas dianalisis untuk concurrencies dan dependensi untuk memberikan jadwal
f.       Jadwal dan tanggal pengiriman bantuan menyediakan ukuran tim dan komposisi tim
g.       Tim dirakit dan proyek dimulai
h.      Pemantauan dan pengendalian seluruh pembangunan
i.        Pengiriman

Metodologi Rencana -driven dikenal sebagai " Heavy -weight " metodologi atau " tradisional " metodologi .

Tiga yang paling menonjol metodologi plan -driven adalah Proses Personal Software ( PSP ) , Tim Perangkat Lunak Proses ( TSP ) , dan Rational Unified Process ( RUP ) .    

Sebuah proses pengembangan perangkat lunak adalah proses dimana kebutuhan pengguna dijabarkan ke dalam produk perangkat lunak . Proses ini melibatkan menerjemahkan kebutuhan pengguna ke dalam persyaratan perangkat lunak , mengubah persyaratan perangkat lunak ke dalam desain , menerapkan desain dalam kode , pengujian kode, dan kadang-kadang menginstal dan memeriksa perangkat lunak untuk penggunaan operasional .         
Proses Personal Software ( PSP ) , Tim Perangkat Lunak Proses ( TSP ) , dan Rational Unified Process ( RUP ) , yang semuanya menggunakan model inkremental

B.     Metode plan driven cocok digunakan untuk berbagai hal, antara lain :
1.   Jika customer lepas tangan terhadap pembuatan perangkat lunak, customer tersebut tidak mau ikut campur dalam pembuatannya, baik itu karena alas an sibuk, malas dan sebagainya.
2.      Timnya besar (terdiri dari banyak orang).
3.      Analisisnya besar.
4.      Perangkat lunak tersebut dirancang agar bisa digunakan dalam tempo yang lama, tidak hanya 1 atau 2 tahun saja.
5.      Teknologi yang tersedia kurang mendukung.
6.  Tim pengembangnya tersebar dimana-mana, tidak harus kumpul satu lokasi agar bisa membuat suatu perangkat lunak

C.    Kelebihan
1.      Pembuatan progam tersebut terencana, mulai dari spesifikasi, perancangan, validasi evolusi
2.      Customer tidak perlu repot-repot untuk memikirkan pembuatan perangkat lunak tersebut, karena Cuma membuat kontrak (berisi kebutuhan) diawal saja.
3.      Perangkat lunak tersebut bisa digunakan dalam jangka waktu yang panjang, sampai puluhan tahun.
4.      Bisa dikerjakan oleh tim, dimana mereka tidak harus kumpul satu lokasi.
5.      Biaya relative ringan karena pekerjaan nya dilakukan berurutan
6.      Hasilnya sangat bagus karena pengolahannya sangat terperinci

D.    Kekurangan
1.  Tidak bisa dilakukan perubahan terhadap perangkat lunak di tengah-tengah pekerjaan. Sehingga tidak bisa menyesuaikan kemajuan dan keinginan masyarakat saat itu.
2.   Hasilnya kurang sesuai dengan kebutuhan dan keinginan masyarakat pada saat perangkat lunak tersebut selesai.

Jabir Al Hayyan

Saya adalah penulis di blog jabiralhayyan.blogspot.com. Semoga tulisan yang dimuat di blog ini bermanfaat
Comments
0 Comments

0 comments:

Post a Comment

 

Copyright @ 2013 POSITIVE THINKING.