• Tidak ada hasil yang ditemukan

1. Pilih opsi yang benar:

a. Manakah dari berikut ini yang bukan merupakan gejala dari krisis perangkat lunak saat ini:

i. Perangkat lunak itu mahal.

ii. Membutuhkan waktu terlalu lama untuk membangun produk perangkat lunak.

iii. Perangkat lunak dikirimkan terlambat.

iv. Produk perangkat lunak diperlukan untuk melakukan tugas yang sangat kompleks.

b. Tujuan dari pemrograman terstruktur adalah:

i. Memiliki program yang berindentasi baik.

ii. Dapat menyimpulkan aliran kontrol dari kode yang dikompilasi.

iii. Mampu menyimpulkan alur kendali dari teks program.

iv. Untuk menghindari penggunaan pernyataan GO TO.

c. Penggunaan pernyataan GO TO yang tidak dibatasi biasanya dihindari saat menulis program, karena:

i. Meningkatkan waktu berjalan program.

ii. Meningkatkan kebutuhan memori program.

iii. Ini menghasilkan ukuran kode yang dapat dieksekusi lebih besar.

iv. ini membuat debugging menjadi sulit.

d. Mengapa menulis kode yang mudah dimodifikasi itu penting?

i. Kode yang mudah dimodifikasi menghasilkan loading yang lebih cepat.

ii. Sebagian besar program dunia nyata memerlukan perubahan pada beberapa titik waktu atau lainnya.

iii. Sebagian besar editor teks mewajibkan penulisan kode yang dapat dimodifikasi.

iv. Beberapa orang mungkin menulis bagian kode yang berbeda secara bersamaan.

2. Apa tujuan utama dari disiplin rekayasa perangkat lunak? Apa yang dibahas oleh disiplin rekayasa perangkat lunak?

3. Menurut Anda mengapa pengembangan perangkat lunak sistematis menggunakan prinsip rekayasa perangkat lunak berbeda dari seni atau kerajinan?

4. Bedakan antara program dan perangkat lunak yang dikembangkan secara profesional.

5. Membedakan antara program, produk perangkat lunak, dan layanan perangkat lunak.

Berikan satu contoh masing-masing. Diskusikan perbedaan karakteristik proyek pembangunan untuk masing-masingnya.

6. Apa yang dimaksud dengan lini produk perangkat lunak? Berikan contoh lini produk perangkat lunak. Bagaimana pengembangan lini produk perangkat lunak berbeda dari pengembangan produk perangkat lunak.

7. Apa jenis proyek utama yang dilakukan oleh perusahaan pengembangan perangkat lunak? Berikan contoh jenis proyek ini dan tunjukkan perbedaan karakteristik penting antara jenis proyek ini.

8. Apakah Anda setuju dengan pernyataan berikut: Fokus program eksplorasi adalah koreksi kesalahan sedangkan prinsip-prinsip rekayasa perangkat lunak menekankan pencegahan kesalahan”? Mengapa? Jelaskan alasan Anda.

9. Kesulitan apa yang akan dihadapi perusahaan pengembangan perangkat lunak, jika mencoba menggunakan gaya pengembangan program eksplorasi (membangun dan memperbaiki) dalam proyek pengembangannya? Jelaskan jawaban Anda.

10. Apa saja gejala krisis perangkat lunak saat ini? Faktor-faktor apa yang telah berkontribusi pada pembuatan krisis perangkat lunak saat ini? Apa solusi yang mungkin untuk krisis perangkat lunak saat ini?

11. Jelaskan mengapa upaya, waktu, dan biaya yang diperlukan dalam mengembangkan program menggunakan gaya build and fix meningkat secara eksponensial dengan ukuran program? Bagaimana prinsip-prinsip rekayasa perangkat lunak membantu mengatasi peningkatan pesat dalam waktu dan biaya pengembangan ini?

12. Apa perbedaan produk dan layanan perangkat lunak. Berikan contoh masing-masing.

13. Apa saja jenis proyek yang dilakukan oleh rumah pengembangan perangkat lunak?

Manakah dari jenis proyek ini yang merupakan keahlian organisasi pengembangan perangkat lunak India? Identifikasi kemungkinan alasan mengapa yang lain tidak difokuskan oleh organisasi pengembangan perangkat lunak India.

14. Sebutkan teknik dasar yang digunakan oleh teknik rekayasa perangkat lunak untuk menangani kompleksitas dalam suatu masalah.

15. Apa yang Anda pahami dengan gaya pengembangan perangkat lunak eksplorasi (juga dikenal sebagai build and fix)? Secara grafis menggambarkan aktivitas yang biasanya dilakukan oleh programmer saat mengembangkan solusi pemrograman menggunakan gaya eksplorasi. Dalam diagram Anda juga tunjukkan urutan kegiatan yang dilakukan.

Apa kekurangan dari gaya pengembangan program ini?

16. Buat daftar perbedaan utama antara praktik pengembangan perangkat lunak eksplorasi dan modern.

17. Apa perbedaan antara kompleksitas aktual dari pemecahan masalah dan kompleksitas yang dirasakan? Apa yang menyebabkan perbedaan antara keduanya muncul?

18. Apa yang Anda pahami dengan istilah kompleksitas masalah yang dirasakan? Apa bedanya dengan kompleksitas komputasi? Bagaimana kompleksitas masalah yang dirasakan dapat dikurangi?

19. Mengapa angka 7 dianggap sebagai angka ajaib dalam rekayasa perangkat lunak?

Bagaimana rekayasa perangkat lunak yang berguna?

20. Apa yang Anda pahami dengan prinsip abstraksi dan dekomposisi? Mengapa kedua prinsip ini dianggap penting dalam rekayasa perangkat lunak? Jelaskan masalah yang ingin dipecahkan oleh kedua prinsip ini? Dukung jawaban Anda dengan menggunakan contoh yang sesuai.

21. Apa yang Anda pahami dengan struktur aliran kontrol suatu program? Mengapa sulit untuk memahami program yang memiliki struktur aliran kontrol yang berantakan?

Bagaimana struktur aliran kontrol yang baik untuk suatu program dapat dirancang?

22. Apa itu diagram alur? Bagaimana teknik diagram alur berguna selama pengembangan perangkat lunak?

23. Apa yang Anda pahami dengan visibilitas desain dan kode? Bagaimana peningkatan visibilitas membantu dalam pengembangan perangkat lunak yang sistematis? (Kita akan meninjau kembali pertanyaan ini di Bab 3)

24. Apa yang Anda pahami dengan istilah—pemrograman terstruktur? Bagaimana bahasa pemrograman modern seperti PASCAL dan C memfasilitasi penulisan program terstruktur? Apa keuntungan menulis program terstruktur dibandingkan dengan program tidak terstruktur?

25. Apa itu bahasa pemrograman tingkat tinggi? Mengapa seorang programmer yang menggunakan bahasa pemrograman tingkat tinggi memiliki produktivitas yang lebih tinggi dibandingkan dengan ketika menggunakan bahasa mesin untuk pengembangan aplikasi?

26. Apa tiga tipe dasar konstruksi program yang diperlukan untuk mengembangkan program untuk setiap masalah yang diberikan? Berikan contoh ketiga konstruksi ini dari bahasa tingkat tinggi apa pun yang Anda ketahui.

27. Apa yang Anda pahami dengan modul program? Apa karakteristik penting dari modul program?

28. Jelaskan bagaimana penggunaan prinsip-prinsip rekayasa perangkat lunak membantu mengembangkan produk perangkat lunak dengan biaya yang efektif dan tepat waktu.

Uraikan jawaban Anda dengan menggunakan contoh-contoh yang sesuai.

29. Apa perbedaan mendasar antara teknik desain berorientasi aliran kontrol dan aliran data? Dapatkah Anda memikirkan alasan mengapa teknik desain berorientasi aliran data cenderung menghasilkan desain yang lebih baik daripada teknik desain berorientasi aliran kontrol?.

30. Sebutkan dua prinsip dasar yang digunakan secara luas dalam rekayasa perangkat lunak untuk mengatasi kompleksitas dalam mengembangkan program besar? Jelaskan kedua prinsip tersebut. Dengan menggunakan contoh yang sesuai, jelaskan bagaimana kedua prinsip ini membantu mengatasi kompleksitas yang terkait dengan pengembangan program besar.

31. Apa yang diwakili oleh grafik aliran kontrol (CFG) dari suatu program? Gambarkan CFG dari program berikut:

main(){

int y=1;

if(y<0)

if(y>0) y=3;

else y=0;

printf(“%d\n”,y);

}

32. Diskusikan kemungkinan alasan di balik penggantian metode desain berorientasi struktur data dengan metode desain berorientasi aliran kontrol.

33. Apa yang dimaksud dengan metodologi desain perangkat lunak berorientasi struktur data? Apa bedanya dengan metodologi desain berorientasi aliran data?

34. Diskusikan keuntungan utama dari metodologi desain berorientasi objek (OOD) atas metodologi desain berorientasi aliran data.

35. Jelaskan bagaimana teknik desain perangkat lunak telah berkembang di masa lalu.

Bagaimana menurut Anda teknik desain perangkat lunak akan berkembang dalam waktu dekat?

36. Apa itu rekayasa sistem komputer? Apa bedanya dengan rekayasa perangkat lunak?

Berikan contoh beberapa jenis proyek pengembangan produk yang rekayasa sistemnya sesuai.

37. Apakah yang Anda maksud: layanan perangkat lunak Jelaskan perbedaan penting antara karakteristik proyek pengembangan layanan perangkat lunak dan proyek pengembangan produk perangkat lunak.

BAB 2