Berikut adalah jawaban exercise chapter 12 e-book Software Engineering:
Fendy Chandra – 1601221420 – 44 PFT
Fernando Giovanni – 1601221723 – 44 PFT
1. Discuss the three “parts” of a design pattern and provide a concrete example of each from some field other than software.
Jawab:
Tiga “bagian” dari sebuah design pattern adalah context, problem, dan solution. Context dapat diartikan sebagai suatu bagian (konteks) yang memungkinkan seorang pembaca design pattern untuk memahami lingkungan tempat keberadaan suatu permasalahan dan solusi apa yang cocok untuk diterapkan didalam lingkungan tersebut. Sementara itu, problem yang dimaksud adalah berbagai permasalahan yang mungkin dialami dalam context yang sudah ditentukan tersebut, yang akan dicari penyelesaiannya melalui solution yang kita rancang.
Sebagai contoh, misalnya kita ingin pindah rumah dari daerah perkotaan ke pedesaan. Context dalam permasalahan suatu perpindahan dari wilayah yang padat dan lebih maju (perkotaan) ke wilayah yang belum terlalu terjamah teknologi tetapi lebih sepi (pedesaan). Hal-hal yang akan mempengaruhi bagaimana permasalahan ini akan diselesaikan antara lain: apakah orang ini ingin pindah sendiri atau bersama keluarganya, apakah dia akan berpindah pekerjaan pula atau tetap dengan karirnya sekarang, apakah ia akan pindah tempat kerja, dan apakah ia akan langsung pindah sekarang atau tahun depan, dan sebagainya.
Dari context tersebut, beberapa permasalahan yang mungkin timbul adalah ia menjadi repot untuk pergi ke tempat kerjanya yang sekarang karena jaraknya lebih jauh, dengan solusi yang mungkin diambil adalah dia berpindah kantor, berganti pekerjaan, atau tetap bertahan ditempat kerja yang sekarang dan berangkat kerja lebih awal setiap harinya.
2. What is the difference between a nongenerative pattern and a generative pattern?
Jawab:
Suatu design pattern yang nongenerative adalah design pattern yang menjelaskan sebuah context dan permasalahan yang terdapat pada context tersebut, tetapi tidak menghasilkan sebuah solusi yang memuaskan (solusinya tidak menyelesaikan permasalahan yang ada). Sementara itu, generative design pattern adalah sebuah design pattern yang mendeskripsikan suatu context dan permasalahan yang ada didalamnya, serta didesain sedemikian rupa sehingga dapat beradaptasi terhadap berbagai variasi yang mungkin timbul dalam permasalahan tersebut dan memberikan solusi sesuai dengan permasalahan yang ada. Jadi, secara sederhana, dapat dikatakan bahwa nongenerative design pattern tidak memberikan solusi yang menyelesaikan permasalahan yang ada didalam context, sedangkan generative design pattern memberikan solusi yang dapat menyelesaiakn permasalahan yang ada didalam context.
3. How do architectural pattern differ from component pattern?
Jawab:
Architectural pattern adalah sebuah pattern yang mendeskripsikan suatu briad-based design problem yang dapat diselesaikan dengan sebuah pendekatan structural, sedangkan component pattern adalah suatu jenis pattern yang berurusan dengan permasalahan-permasalahan yang berkaitan dengan pengembangan dari suatu subsystem/component, bagaimana mereka saling berkomunikasi satu sama lainnya, dan penempatannya dalam arsitektur yang lebih luas.
Secara sederhana, kita dapat mengatakan bahwa architectural pattern lebih berkaitan dengan suatu permasalahan sebagai satu kesatuan (structural, pendekatannya lebih dekat dengan structured programming), sedangkan component pattern lebih focus kepada bagan-bagian yang menyusun suatu program besar (pendekatannya lebih dekat dengan object-oriented programming).
4. What is a framework ad how does it differ from a pattern? What is an idiom and how does it differ from a pattern?
Jawab:
Framework adalah sebuah infrasturktur skeletal yang bersifat implementation-specific, yang biasanya berupa sebuah reusable mini-architecture yang menyediakan sebuah struktur dan behavior generic untuk sekelompok abstraksi software yang berkaitan, yang menspesifikasikan keterkaitan diantara mereka dan penggunaannya didalam suatu domain tertentu. Berikut adalah beberapa perbedaaan antara framework dan design pattern:
- Design pattern lebih abstrak daripada framework. Maksudnya, framework dapat dituliskan dalam bentuk code, sedangkan hanya “contoh” dari pattern yang dapat dituliskan dalam suatu code tertentu.
- Design pattern lebih kecil daripada framework dari segi ukuran architectural elements. Framework dapat terdiri dari beberapa design pattern, tapi tidak sebaliknya.
- Design pattern lebih general (kurang terspesialisasi) daripada framework.
Sementara itu, idiom adalah suatu bagian yang mendeskripsikan bagaimana untuk mengimplementasikan sebagian atau keseluruhan dari sebuah algoritma yang spesifik atau struktur data untuk sebuah komponen software didalam context dari sebuah bahasa pemrograman tertentu. Jadi, perbedaan antara idiom dan pattern adalah idiom bersifat lebih spesifik ketimbang design pattern dan berada pada level abstraksi yang lebih rendah daripada design pattern.
5. Using the design pattern template presented in Section 12.1.3, develop a complete pattern description for a pattern suggested by your instructor.
Jawab:
Berhubung belum ada instrusi spesifik tentang deskripsi apa yang harus dibuat, maka bagian ini saya skip dulu sampai ada instruksi lebih lanjut.
6. Develop a skeletal pattern language for a sport with which you are familiar. You can begin by addressing the context, the system of forces, and the broad problems that a coach and a team must solve. You need only specify pattern names and provide a one-sentence description for each pattern.
Jawab:
To be updated
7. Find five patterns repositories and present an abbreviated description of the types of patterns contained in each.
Jawab:
Saat ini saya sedang dalam tahap mencari repository yang sesuai. Jawaban akan saya update setelah saya mendapatkan 5 repository tersebut.
8. When Christopher Alexander says “good design cannot be achieved by simply adding together performing parts”, what do you think he means?
Jawab:
Menurut saya, maksud dari pernyataan tersebut adalah, kita sebagai seorang software developer tidak bisa sekedar menggabungkan berbagai bagian yang saling bekerja bersamaan untuk membuat sebuah desain yang baik. Misalnya, jika kita ingin membuat desain software pengolah kata. Kita tidak dapat membuat sebuah desain yang baik hanya dengan memasukkan berbagai fungsi yang berguna untuk mengolah kata, seperti bullets, numbering, header, footer, dll. Untuk menghasilkan yang baik, kita juga perlu memperhatikan factor-faktor lainnya seperti kenyamanan user, interface, resource yang digunakan oleh software tersebut, dll.
9. Using pattern-based design tasks noted in Section 12.2.3, develop a skeletal design for the “interior design system” described in Section 11.3.2.
Jawab:
To be updated
10. Build a pattern-organizing table for the patterns you used in Problem 12.9.
Jawab:
To be updated
11. Using the design pattern template presented in Section 12.1.3, develop a complete pattern description for the Kitchen pattern mentioned ni Section 12.3.
Jawab:
To be updated
12. The gang of four [Gam95] have proposed a variety of component patterns that are applicable to object-oriented systems. Select one (these are available on the Web) and discuss it.
Jawab:
To be updated
13. Find three patterns repositories for user interface patterns. Select one from each and present an abbreviated description of it.
Jawab:
Saat ini saya sedang dalam tahap mencari repository yang sesuai. Jawaban akan saya update setelah saya mendapatkan 3 repository tersebut.
14. Find three patterns repositories for user WebApp patterns. Select one from each and present an abbreviated description of it.
Jawab:
Saat ini saya sedang dalam tahap mencari repository yang sesuai. Jawaban akan saya update setelah saya mendapatkan 3 repository tersebut.