Showing posts with label Rekayasa Perangkat Lunak. Show all posts
Showing posts with label Rekayasa Perangkat Lunak. Show all posts

Thursday, November 28, 2013

Pembahasan UTS RPL 2012

  1. Jelaskan dan masing-masing berilah dua contohnya
    a. Kebutuhan fungsional
    b. kebutuhan non fungsional
    Jawab
    a. Kebutuhan fungsional : Kebutuhan yang harus dipenuhi oleh sistem, bagaimana sistem bereaksi terhadap suatu input dan bagaimana sistem berperilaku dalam situasi tersebut
    Contoh : – Suatu sistem informasi rumah sakit, seorang asisten dokter harus bisa menuliskan jadwal pemeriksaan dokter pada sistem
    - Suatu sistem informasi akademik ITS, seorang dosen harus bisa menginputkan nilai mahasiswanya
    b. Kebutuhan non fungsional : Batasan layanan dan fungsi yang ditawarkan sistem, misal batasan waktu, batasan bentuk pengembangan, dll
    Contoh : – Keamanan sistem menggunakan sistem enkripsi SHA1
    - Sistem bekerja 24 jam
    - kecepatan akses
    - sistem mudah digunakan
  2. Ada empat cara/teknik untuk mendapatkan kebutuhan pengguna, yaitu wawancara, skenario, kasus penggunaan dan etnografi. Jelaskan masing-masing teknik tersebut dan berikan minimal sebuah contohnya
    Jawab:
    Wawancara : wawancara formal dan informal dengan stakeholder berupa pertanyaan-pertanyaan yang diajukan pada stakeholder. Contoh: wawancara sistem informasi kereta api yang akan dibangun kepada petugas penjaga kereta api
    Skenario : contoh nyata bagaimana sistem digunakan, deskripsi situasi awal, kejadian normal, kesalahan yang mungkin terjadi, aktifitas selanjutnya, kondisi ketika skenario selesai. Contoh : pengumpulan catatan medis pasien RS
    Kasus penggunaan : teknis berbasis skenario UML yang mengidentifikasi aktor dan interaksi dalam sistem : Diagram sekuens, sistem manajemen RS
    Etnografi : Bertanya kepada ilmuwan sosial dan menganalisa orang bekerja sehingga mereka tidak perlu menjelaskan. Contoh bertanya pada ahli gempa untuk membuat sistem informasi tentang gempa
  3. System Modeling
    a. Sebutkan dan jelaskan 4 model yang ada pada system modeling
    b. Untuk setiap model petakan ke diagram pada UML dan berilah alasannya
    Jawab:
    a. Model Konteks, Model Interaksi, Model Struktural, Model Perilaku
    Model Konteks : Digunakan untuk mengilustrasikan llingkungan operasional sistem, model ini menunjukkan apa yang ada di luar batasan. Menunjukkan sistem yang ada dalam lingkungan, bukan bagaimana sistem yang dikembangkan digunakan dalam lingkungan tersebut.
    Model Interaksi : membantu menidentifikasi kebutuhan pengguna, menggunakan usecase diagram dan sequence diagram. Memodelkan interaksi antar sistem dan komponen
    Model Struktural : Memperlihatkan organisasi sistem berupa komponen yang membangun sistem dan hubungannya. Dibuat saat mendesain arsitektur sistem.
    Model perilaku : model perilaku dinamis sistem saat dieksekusi. Menunjukkan apa yang terjadi atau seharusnya terjadi ketika sistem merespon rangsangan dari lingkungannya
    b. Model konteks : Actifity diagram, Cocok untuk menunjukkan model proses bisnis.
    model intekasi : Usecase diagram dan Sequence diagram , cocok karena memodelkan interaksi pengguna dan komponen
    model struktural : Class diagram, cocok karena membuat sistem berbasis objek untuk menujukkan kelas-kelas dalam sistem
    model aktifitas  : actifity diagram, cocok karena menunjukkan aksi yang terlibat dalam pemrosesan input dan menghasilkan output
  4. Rancangan arsitektural
    a. Sebutkan dan jelaskan pola-pola arsitektur PL yang ada
    b. Kondisi seperti apa yang cocok digunakan untuk setiap pola dan berikan satu contoh aplikasinya
    Jawab :
    a. Arsitektur berlapis, arsitektur repositori, arsitektur klien-server, arsitektur pipe dan filter
    Arsitektur berlapis : memodelkan antarmuka sub sistem, mengatur menjadi sekumoulan lapisan dimana setiap lapisan antarmuka terdefinisi yang berisi layanan
    arsitektur repositori : satu atau lebih sistem bertukar data dengan dua cara. Dimana data diletakkan di basis data terpusat dan diakses oleh seluruh sub sistem. Dan setiap sub sistem memiliki basis datanya masing-masing
    arsitektur klien-server : Model terdistribusi dimana data dan pemrosesnya terdistribusi dalam komponen yang terpisah yaitu server dan klien, juga jaringan
    arsitektur pipe dan filter : Data dikirimkan dari satu proses ke proses lain,
    b. arsitektur berlapis : Digunakan ketika ada beberapa cara untuk melihat dan berinteraksi dengan data. Juga digunakan ketika kebutuhan masa depan untuk interaksi dan penyajian data tidak diketahui
    arsitektur repositori : Anda harus menggunakan pola ini ketika Anda memiliki sistem di mana volume besar informasi yang dihasilkan yang harus disimpan untuk waktu yang lama. Anda juga dapat menggunakannya dalam sistem data-driven di mana masuknya data dalam repositori memicu tindakan atau alat
    arsitektur klien-server : Digunakan ketika data dalam database bersama harus diakses dari berbagai lokasi. Karena server dapat direplikasi, juga dapat digunakan ketika beban pada sistem adalah variabel.
    arsitektur pipe dan filter : Umumnya digunakan dalam aplikasi pengolahan data (baik batch dan transaksi berbasis) dimana input diproses dalam tahap yang terpisah untuk menghasilkan output yang terkait

TUGAS 2 REKAYASA PERANGKAT LUNAK - B. Ratih

TUGAS 2 REKAYASA PERANGKAT LUNAK C, D dan F
Jawaban dengan Bahasa Indonesia
Aturan Pengerjaan dan Pengumpulan:
a. Tugas dari materi Pertemuan 4-Rekayasa Kebutuhan, 5-Pemodelan Sistem dan 6-Arsitektur Sistem
b. Tugas dikerjakan berkelompok 2 orang
c. Jawaban sama atau terindikasi saling menyontek atau sekedar copy paste dari slide, NILAI TOTAL = 0
d. File jawaban dalam bentuk pdf dengan format judul: Tugas2-NRP1-NRP2
e. Tugas dikumpulkan oleh salah seorang anggota kelompok melalui link yang diberikan di elearning maksimal Kamis, 17 Oktober 2013 pukul 19.00 WIB


1. apa yang dimaksud dengan kebutuhan fungsional, non fungsional, dan domain. berikan contoh masing-masing?
jawab :

a. kebutuhan fungsional
kebutuhan fungsional adalah pernyataan layanan sistem yang harus disediakan, bagaimana sistem bereaksi pada input tertentu dan bagaimana prilaku sistem pada situasi tertentu. sedangkan kebutuhan fyngsional user merupakan pernyataan level tinggi dari apa yang seharusnya dilakukan sistem tetapi kebutuhan fungsional sistem menggambarkan layanan sistem secara detail.
contoh kebutuhan fungsional :
1. user dapat mencari semua kumpulan database inisial atau memilih subset dari database tersebut
2. sistem menyediakan tampilan yang tepat untuk user yang membaca dokumen dalam penyimpanan dokumen
3. setiap pesanan dapat dialokasikan sebagai identifiery yang unik (ORDER_ID) dimana user dapat meng-copy daeraha penyimpan account permanen

b. kebutuhan non-fungsional
kebutuhan non-fungsional adalah batasan layanan atau fungsi yang ditawarkan sistem seperti batasan waktu, batasan pengembangan proses, standarisasi dll. kebutuhan non-fungsional lebih kritis daripada kebutuhan fungsional. jika tidak dapat bertemu, sistem menjadi tidak berguna.
contoh kebutuhan non-fungsional :
1. kebutuhan produk
2. kebutuhan organisasi
3. kebutuhan eksternal
c. kebutuhan domain

kebutuhan domain adalah kebutuhan yang datang dari domain aplikasi dari sistem dan yang menyatakan karakteristik dari domain tersebut, berupa kebutuhan fungsional baru, batasan pada kebutuhan yang sudah ada atau mendefinisikan komputasi tertentu, sistem mungkin tidak dapat bekerja.
permasalahan kebutuhan domain :
1. kemampuan untuk dimengerti
2. ketidak lengkapan
contoh :
a. sistem yang hanya bisa dimengerti oleh orang tertentu, tidak semua orang mengerti tentang sistem tersebut
b. sistem keamanan pesawat

2. sebut dan jelaskan 4 teknik pemunculan kebutuhan beserta contoh penerapannya!
Jawab:
a. penemuan kebutuhan:
pertama kali yang harus dilakukan adalah penemuan kebutuhan, cara yan dilakukan yaitu bekonsultasi dengan stakeholder, agar apa yang dbutuhkan bisa diketahui. Pada tahap ini kebutuhan domain juga di temukan.
b. Klasifikasi dan penyusunan kebutuhan
setelah mengetahui kebutuhannya, tahap selanjutnya yaitu mengelompokkan datanya, dan di urutkan atau disusun secara sistematis, agar data tersebut mudah dibaca dan digunakan untuk tahap selanjutnya.
c. Penyusunan prioritas dan negosiasi
prioritasnya disusun terlebuih dahulu agar bisa diketahui mana prioritas yg paling utama, yang harus diselesaikan lebih dahulu, dan mana yang akhir-akhir. Dan menyelesaikan konflik kebutuhan yang terjadi pada sistem
d. Spesifikasi kebutuhan
mencatat atau mendokumentasikan semua kebtuhan dari data yang sudah diperolah dari tahap-tahap sebelumnya.
Contoh penerapannya : stakeholder sistem manajemen laundry
o Data pelanggan disimpan pada sistem
o Pekerja menimbang berat pakaian yang akan dilaundry
o Pekerja memberikan info ke pelanggan tentang berat pakaiannya
o Pekerja mencuci pakaian pelanggan yang dilaundry
o Pekerja memberi tahu harga pembayaran
o Bagian IT bertugas mencatat semua data tentang pelanggan tersebut

3. masalah apa yang biasanya muncul ketika spesifikasi kebutuhan dituliskan dalam bahasa natural? jelaskan!
Jawab :
Bahasanya sulit untuk dimengerti oleh orang secara umum, sehingga menimbulkan berbagai masalah. Seperti :
- Pembuat sistem sulit mengartikan bahasa tersebut, sehingga bisa terjadi kesalahan dalam pembuatan sistem
- Sistem tersebut belum tentu sesuai dengan apa yang dibutuhkan oleh customer
- Pada saat proses kebutuhan bisa berubah kapan saja
- Bisa terjadi kesalah pahaman antara pembuat dan pengembang sistem tersebut

4. jelaskan 4 aktivitas dalam proses rekayasa kebutuhan perangkat lunak!
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 lunak harus divalidasi untuk menjamin bahwa perangkat lunak melakukan apa yang diinginkan pelanggan
d. evolusi perangkat lunak
perangkat lunak harus berkembang untuk memenuhi kebutuhan pelanggan

5. jelaskan 4 perspektif dalam pemodelan sistem!
jawab :
a. perspektif fungsional sistem
-->Tahapan berangkai ;
-dari mencari fungsi,
-di-analisis,
-upaya membangun sistem lain yang baru. (karakteristik fungsi sangat majemuk, meliputi; proses, tujuan, totalitas, perilaku, pertalian, keperluan ).
-->Penetapan desain sistem
-->Teknik teknik penggunaan sistem untuk teori keputusan
b. perspektif kelakuan sistem
-->Menghasilkan satu atau lebih model;
-Gambarkan sifat sistem
-Adanya keterbatasan.
-->Model ditetapkan dari beberapa model;
-Pilihan secara kontekstual setempat
-Pilihan secara waktu saat itu
-Pilihan secara peramalan masa depan
Kelakuan sistem dapat lebih dari satu untuk satu sistem
c. perspektif informasi sistem
Menjelaskan konfigurasi hubungan elemen elemen pembentuk sistem dengan sifat sifat hubungan tergambar akurat, biasanya dapat dibuat matrik hubungannya (nilai hubungan nol = tidak ada relasi, nilai hubungan satu = hubungan sangat kuat, nilai antara nol - satu sebagai perkiraan bobot hubungan antara.
d. perspektif lingkungan sistem
– Sifat lingkungan ;
• 1. Tidak pasti,
• 2. Bisa sebagai ancaman
– lingkungan luar sistem penting untuk mencari batasan sistem dimana pada titik singgungnya terdapat pertukaran informasi.
– Lingkungan luar didefinisikan sebagai sesuatu yang tidak berhingga dibandingkan terhadap sistem yang dibatasinya.
– Dampak lingkungan sistem;
• Ketergantungan
• saling menyesuaikan (biasanya sistem yang kalah)
• muncul tugas baru dari sistem untuk mengawasi hubungan dengan lingkungan
6. Apakah fungsi dari model konteks dalam pemodelan sistem? Diagram apa yang dapat digunakan untuk menunjukkan model konteks?
Jawab :
 Model konteks menggambarkan sistem dengan lingkungan diluarnya, lingkungan luar mungkin mengirimkan data ke system yang terhubung langsung ke system dan membagi datanya ke system, untuk itu detail progamharus disediakan dalam model proses.
 Model konteks digunakan untuk mengilustrasikan batasan dari sistem
 Lingkungan sosial dan organisasi mempengaruhi batasan sistem
 Model arsitektur akan menggambarkan atau mengilustrasikan struktur lingkungan sistem informasi
Diagram yang digunakan dalam model konteks adalah Diagram Aliran Data atau (Data Flow Diagram/DFD)


7. Apa yang dimaksud dengan model structural dan perilaku? Dipetakan ke dalam diagram UML apakah kedua model ini?
Jawab :
 Model Struktural
- Model Struktural perangkat lunak menampilkan organisasi dari suatu system yang membentuk sistem dan hubungannya.
- Model Struktural diklasifikasikan menjadi 2 macam yaitu
o Model statis yang menunjukkan struktur dari desain sistem atau model
o Model dinamis yang menunjukkan organisasi sistem ketika mengeksekusi
Model Struktural ini jika dipetakan menjadi diagram UML menjadi diagram class

 Model Perilaku
- Model perilaku merupakan model perilaku dinamis. Artinya model ini akan terjadi apabila ada rangsangan dari lingkungannya
 Terdapat dua jenis rangsangan:
 Data :Sejumlah data datang dan harus diproses oleh sistem
 Kejadian : Ada sejumlah kejadian yang mendorong sistem melakukan pemrosesan. Kejadian ini bisa memiliki data, bisa juga tidak.
Model Perilaku ini jika dipetakan menjadi diagram UML menjadi diagram aktivitas

8. Jelaskan 4 karakteristik arsitektur PL!
Jawab :
 Performa (performance)
 Melokalikasi operasi penting dan meminimalisir komunikasi.
 Keamanan (security)
 Menggunakan arsitektur berlapis dengan aset-aset penting di lapisan dalam.
 Keselamatan (safety)
 Melokalisasi fitur rawan keselamatan di dalam sub-sistem.
 Ketersediaan (availability)
 Membuat komponen ganda dan mekanisme untuk menangani terjadinya kegagalan.
 Keterawatan (maintainability)
 Menggunakan komponen kecil yang dapat dengan mudah diganti.

9. Terdiri atas gambaran apa sajakah model 4+1 untuk mendesain arsitektur PL? Jelaskan!
Jawab :



 Gambaran Logika (Logical View) : Gambaran ini menunjukkan komponen (objek) dari sistem serta interaksi / hubungannya
 Gambaran Proses (Process View) : Gambaran ini menunjukkan proses / alur kerja aturan sistem dan bagaimana proses-proses berkomunikasi satu sama lain.
 Gambaran pengembangan (development view) : Gambaran ini memberikan pandangan bangunan blok dari system yang dipecah untuk pengembangan
 Gambaran fisik (physical view) : Gambaran ini menunjukan bagaimana perangkat keras dan perangkat lunak terdistribusi didalam sistem.

10. Jelaskan 4 pola arsitektur PL! Kondisi seperti apa yang cocok digunakan untuk setiap pola serta berikan satu contoh aplikasinya
Jawab :
 Arsitektur Berlapis (layered architecture)
- Sistem atau jaringan komponen yang terisolasi dalam lapisan sehingga perubahan dapat dibuat dalam satu lapisan tanpa mempengaruhi yang lain.
- Sebuah arsitektur di mana data bergerak dari satu tingkat proses ke tingkat proses yang lain. Protokol komunikasi adalah contoh utama
- Mengatur sistem menjadi sekumpulan lapisan dimana setiap lapisan tersebut menyediakan antarmuka terdefinisi yang berisi layanan-layanan.
- Mendukung pembangunan incremental untuk setiap lapisannya.
- Perubahan sebuah antarmuka lapisan hanya akan mempengaruhi layer terdekatnya.
Kondisi ketika digunakan :
- Digunakan ketika membangun fasilitas baru di atas sistem yang ada
- Digunakan ketika ada persyaratan untuk keamanan multi-level.



 Arsitektur Repositori (repository architecture)
- Data diletakakkan dalam sebuah system terpusat yang kemudian dapat diakses oleh seluruh sub-system
- Sub system dapat mengirimkan data kepada sub system yang lain
- Cocok untuk aplikasi isu sentral karena bersifat membangun, menambah, dan mempertahankan tubuh yang kompleks sebagai pusat informasi.
Kondisi yang digunakan :
Digunakan ketika Anda memiliki sistem dengan volume yang besar dan disimpan untuk waktu yang lama. Anda juga dapat menggunakannya dalam sistem data-driven di mana masuknya data dalam repositori memicu tindakan atau alat.



 Arsitektur Klien-Server (client-server architecture)
- Aplikasi terdistribusi yang didistribusi dalam komponen-komponen yang terpisah dantara penyedia pelayanan, yang disebut server , pemohon pelayanan, disebut klien, dan jaringan yang memungkinkan klien bisa mengakses server
Kondisi ketika digunakan :
Digunakan ketika data dalam database pusat harus diakses dari berbagai lokasi.


 Arsitektur Pipe dan Filter (pipe and filter architecture)
- Data dikirimkan dari sati proses ke proses lain
- Sebuah komponen data yang melalui proses-proses ini disebut sebagai inputan dan menghasilkan data sebagai outputan.
- Cocok untuk aplikasi yang memerlukan serangkaian pendefinisian dan perhitungan independen yang akan dilakukan pada data.

Kondisi kettika digunakan :
Umumnya digunakan dalam aplikasi pengolahan data (baik batch dan transaksi berbasis) dimana input diproses dalam tahap yang terpisah untuk menghasilkan output yang terkait

Contoh Arsitektur Pipe dan Filter


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.

 

Copyright @ 2013 POSITIVE THINKING.