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.
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
Kebutuhan
pelanggan bermacam-macam, oleh karenanya kita harus siap ketika sewaktu-waktu
dimintai untuk membuatkan perangkat lunak yang
dibutuhkan pelanggan
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.
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 pendek, dengan desain yang lebih baik dan lebih sedikit
bug, daripada programmer
bekerja sendiri. Penelitian telah
menemukan pengurangan tingkat
cacat dari 15% sampai 50%, bervariasi tergantung pada pengalaman
programmer dan kompleksitas tugas.
Pasangan biasanya mempertimbangkan alternatif desain yang lebih
daripada programmer bekerja
sendiri, dan tiba di sederhana,
desain 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 "mustahil" masalah menjadi mudah atau
bahkan cepat, atau setidaknya
mungkin untuk memecahkan ketika mereka bekerja bersama-sama.
Pengetahuan lewat di antara pasangan programmer saat mereka bekerja. Mereka berbagi pengetahuan spesifik dari sistem, dan mereka mengambil teknik pemrograman dari satu sama lain. New mempekerjakan cepat mengambil praktik tim dan mempelajari secara spesifik dari sistem. Dengan "promiscuous pasangan "-masing bersepeda programmer melalui semua programmer lain di tim daripada pasangan hanya dengan satu pasangan-pengetahuan tentang sistem menyebar ke seluruh seluruh tim, mengurangi risiko kepada manajemen jika salah satu programmer meninggalkan tim.
Pairing biasanya membawa peningkatan disiplin dan manajemen waktu. Programmer cenderung untuk melewatkan menulis unit test, menghabiskan waktu surfing web atau email pribadi atau jalan pintas ketika mereka bekerja dengan mitra pasangan. Mitra 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.
Pengetahuan lewat di antara pasangan programmer saat mereka bekerja. Mereka berbagi pengetahuan spesifik dari sistem, dan mereka mengambil teknik pemrograman dari satu sama lain. New mempekerjakan cepat mengambil praktik tim dan mempelajari secara spesifik dari sistem. Dengan "promiscuous pasangan "-masing bersepeda programmer melalui semua programmer lain di tim daripada pasangan hanya dengan satu pasangan-pengetahuan tentang sistem menyebar ke seluruh seluruh tim, mengurangi risiko kepada manajemen jika salah satu programmer meninggalkan tim.
Pairing biasanya membawa peningkatan disiplin dan manajemen waktu. Programmer cenderung untuk melewatkan menulis unit test, menghabiskan waktu surfing web atau email pribadi atau jalan pintas ketika mereka bekerja dengan mitra pasangan. Mitra 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.
12. 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 :
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.






0 komentar:
Posting Komentar