EAS KPPL

Nama : Kadek Fajar Pramartha Yasodana

NRP : 5025231185

Kelas : KPPL E


EAS KPPL

1. Dalam Pengembangan Perangkat Lunak ada fase Analisis dan Desain.

A. Terangkan aktivitas yang dilakukan dalam fase Analisis dan Desain

  • Fase Analisis adalah fase dimana kita melakukan sebuah analisis mengenai kebutuhan apa saja yang akan kita perlukan dalam membuat sebuah aplikasi. Misal dalam membuat aplikasi website Restaurant, kita melakukan analisis mengenai kebutuhan dari user mulai dari cara user untuk berinteraksi dengan website, alur cara user memesan suatu makanan dari website. Hal tersebut nantinya akan dibuatkan sebuah use-case diagram yang tentunya akan lebih merinci interaksi user dan website. Selain dari interaksi user, kita juga perlu melakukan analisis mengenai teknologi/stack apa saja yang akan kita gunakan dalam membuat applikasi tersebut, misal dalam website Restaurant, kita membutuhkan database maka kita memakai Postgre dan sebagainya, misal kita membutuhkan interaksi pembayaran user, kita sebaiknya menggunakan payment gateway seperti MidTrans/Xendit atau kita melakukannya manual.
  • Fase Desain adalah fase dimana kita melakukan desain yang lebih terperinci dan lebih mendekati implementasi programatically berdasarkan deskripsi fase sebelumnya. Misal pada website Restaurant, karena sebelumnya kita membutuhkan database, kita bisa mendesain Data Model untuk database kita supaya menunjang semua kebutuhan dari use-case diagram. Selain itu juga dalam fase ini kita juga akan mendesain user interface dari aplikasi kita misalnya menggunakan figma. Terdapat hal lain yang bisa kita lakukan juga, agar dalam proses implementasi kita lebih mudah integrasi antara frontend dan backend, kita bisa membuat sebuah API Spec pada fase ii,

B. Apa Output dari aktivitas tersebut untuk mendukung pengembangan perangkat lunak

  • Output dari aktivitas ini diharapkan agar proses dari pengembangan perangkat lunak yang kita buat menjadi lebih terstruktur. Selain itu berdasarkan fase Analisis dan fase Desain, kita bisa mengurangi adanya kebingungan antara frontend, backend, dan business, karena semua alur sudah sesuai dan data yang akan didapatkan juga sudah tertera dengan jelas, maka kita juga bisa melakukan paralelisasi dalam pengerjaan antara frontend dan backend.

2. Dalam model Waterfall, setiap tahap memiliki fungsi spesifik. Jelaskan lima tahap utama dalam model ini, serta sebutkan kelebihan dan kekurangan dari model tersebut dalam konteks proyek besar yang memiliki persyaratan tetap.

Lima Tahap Utama

  1. Requirement Analysis : Pada fase ini kita harus mengumpulkan data-data yang kita perlukan untuk menunjang pengembangan perangkat lunak kita agar kita bisa menemukan ketidakjelasan atau konflik dalam kebutuhan. Data-data yang dikumpulkan nantinya akan diproses menjadi diagram-diagram alur bisnis sebagai referensi pembuatan pada Fase Desain. Selain itu juga pada fase ini kita juga perlu mengumpulkan tech stack apa saja yang akan kita gunakan untuk melanjutkan fase berikutnya.
  2. Design : Pada fase design kita membuat sebuah alur yang lebih teknis mengikuti referensi alur bisnis dari fase sebelumnya. Alur lebih teknis artinya desain yang kita buat harus lebih mendekati alur pemrograman yang nantinya akan dilanjutkan. Misalnya dalam pembuatan data model dari database, membuat UI/UX, membuat API Spec
  3. Implementation : Tahap implementasi adalah tahap pemrograman/pembuatan aplikasi kita berdasarkan Design teknis yang sudah dibuat sebelumnya. Tahap ini nantinya akan menghasilkan aplikasi yang bisa dilakukan uji coba dan dilakukan analisis lainnya.
  4. Testing : Dalam fase testing kita melakukan uji coba secara menyeluruh dari aplikasi yang telah dibuat agar diharapkan nantinya jika sudah di deploy to production, aplikasi yang dibuat bisa stabil. Testing yang digunakan bisa berupa Unit Testing, API Testing, Integration Testing, UI/UX Testing, dan Lainnya.
  5. Operation and Maintenence : Pada Operation and Maintenence, aplikasi kita akan dilakukannya deploy to Production yang artinya aplikasi kita bisa digunakan oleh semua orang. Setelah mendeploy applikasi tentunya perlu dilakukannya maintenence untuk menjamin applikasi bisa stabil dan tidak adanya kebobolan dalam hal security.

Kelebihan & Kekurangan dalam konteks proyek besar yang memiliki persyaratan tetap

  • Kelebihan : Kelebihan dari model ini adalah workflow yang jelas, karena setiap fase sudah terbagi dan mutlak hal apa saja yang harus dilakukan pada fase tersebut mengingat proyek memiliki persyaratan tetap. Selain itu dapat menghemat biaya karena kita tidak perlu melakukan revisi yang tentunya akan memakan waktu, biaya dan menambahkan lamanya implementasi mengingat implementasi sudah lama karena proyek besar. Selain itu juga dokumentasi dari applikasi yang kita buat sudah jelas, karena semua rencana fase sudah terurai dengan detail sehingga seluruh agen yang bekerja dalam proyek ini dapat mengintegrasikan secara parallel, hal ini cukup menguntungkan mengingat applikasi proyek yang besar dan tidak ada revisi fase.
  • Kekurangan : Kekurangan dari model ini adalah membutuhkan kerja sama tim yang solid, mengingat semua fase sudah dibuat dan setiap fase harus dikerjakan secara sequential, jika terdapat fase pada tim sebelumnya yang belum dapat menyelesaikan pekerjaannya, maka implementasi tim lainnya juga akan terhambat. Selain itu dalam proyek besar yang memiliki persyaratan tetap, walaupun metode Waterfall terlihat lebih cocok, tetapi kita juga perlu ingat bahwa dalam proses pengembangan perangkat lunak itu sangat dinamis dan tidak bisa 100% diprediksi. Misalnya pada fase analisis dan desain kita sudah merancang sebuah alur transaksi E-Money menggunakan sebuah payment gateway A, dan pada fase implementasi ternyata payment Gateway A sudah deprecated dan tidak di operasikan lagi. Hal ini membuat kita harus melakukan planning baru dan alur baru secara menyeluruh agar bisa melakukan support untuk menggantikan payment gateway A menjadi payment gateway B, hal ini tentunya akan memakan biaya yang sangat tinggi mengingat proyek kita yang cukup besar karena kita memerlukan planning secara menyeluruh lagi.

3. Jelaskan perbedaan antara architectural design dan detailed design. Mengapa kedua jenis desain tersebut diperlukan dalam proses pengembangan perangkat lunak?

  • Architectural Design adalah suatu design yang berisi deskripsi singkat design applikasi kita secara menyeluruh. Architectural design membagi applikasi kita menjadi komponen komponen yang dapat berinteraksi dengan componen lainnya. Contoh dari architectural design adalah desain arcitecture komponen backend seperti MVC, Singleton Factory, dan lainnya. Dalam desain penggunaan API seperti RestAPI, GraphQL, dan lainnya. Dalam hal mengintegrasikan database, menggunakan ORM atau Default.
  • Detailed Design adalah desain yang kita buat lebih detail mengikuti dari Architectural Design yang lebih mendekati pengimplementasian applikasi secara programatically. Misalnya adalah interaksi desain antara user interface, Interaksi data dan control terhadap unit lainnya, desain algoritma dan struktur data, desain unit testing, dan lainnya.

4. Sebuah perusahaan membutuhkan sistem e-commerce untuk menjual produk digital seperti foto, video, desain poster, ebook. Saat ini transaksi dihandle dengan WhatsApp. Namun seiring dengan perkembangan bisnis tools tersebut tidak mampu menangani lonjakan transaksi. Buatkan sistem / aplikasi yang mampu menangani lonjakan transaksi pada musim tertentu. Jelaskan pendekatan rekayasa perangkat lunak yang akan Anda gunakan untuk merancang, membangun, dan menguji sistem tersebut agar memenuhi kebutuhan klien.

Aplikasi yang saya sarankan untuk dibuat berdasarkan studi kasus diatas adalah dengan mengubah interaksi user menggunakan WhatsApp dan manuall, menjadi sebuah Website berintegrasi dengan Backend yang akan melakukan automasi dari request transaksi dan resource yang ingin dibeli. Website yang akan dibuat bisa kita namakan BuyMyDigitals

Pada applikasi ini pendekatan yang saya akan lakukan adalah pendekatan Waterfall agar dokumentasi fase yang dibuat lebih detail dan jelas. Proses yang akan dilakukan adalah sebagai berikut

  1. Requirement Analysis : Pada fase ini akan dilakukannya analisis mengenai kebutuhan user dengan melakukan form survey atau wawancara dari admin handler transaksi Whatsapp sebelumnya. Data ini nantinya akan digunakan untuk membuat sebuah diagram interaksi user (Pembeli, Penjual) dengan sistem. Dari diagram yang telah dibuat akan dilakukannya sedikit planning mengenai technology stack apa saja yang akan digunakan dalam proses berikutnya, pada studi kasus ini karena membutuhkan interaksi user dan system, dan juga adanya proses transaksi maka tech stack yang akan digunakan adalah berupa payment gateway MidTrans, database berupa PostgreSQL, authentication manager Google OAuth. Selain itu juga akan dilakukannya analisis perkiraan biaya yang akan dikeluarkan untuk mengoperasikan applikasi, dalam hal ini bisa menggunakan VPS dengan budget yang sesuai dengan kebutuhan.
  2. Design : Pada fase ini akan dibuatnya detail yang lebih mendekati secara programatically. Berdasarkan analysis sebelumnya kita akan membuat banyak desain dimulai dari membuat Data Model untuk database kita menggunakan tools seperti vertabelo, selanjutnya Desain Architecture, dalam hal ini menggunakan MVC, REST API, dan lainnya, selanjutnya Detailed Design membuat desain alur applikasi dalam hal interaksi setiap unit, algoritma dan struktur data yang digunakan dan lainnya. Pada proses ini juga akan dibuat API Spec untuk mengurangi kebingungan antara tim Frontend dan Backend
  3. Implementation : Dalam hal implementation kita melakukan programming berdasarkan desain yang telah dibuat, dimulai dari Tim Frontend membuat UI Pages, Backend membuat API, struktur database, dan interaksinya, QA membuat unit testing dan api testing berdasarkan hal yang dibuat antara frontend dan backend yang nantinya akan dilakukan pada fase berikutnya.
  4. Testing : Pada fase kita akan melakukan testing mulai dari mendeploy applikasi network local, dan dilanjutkan dalam environment staging pada VPS. Applikasi yang dideploy pada kedua environment tersebut nantinya akan dijalankan testing berdasarkan yang telah dibuat oleh QA pada sebelumnya, selain itu juga akan dilakukan analisis mengenai performa dari applikasi yang dibuat untuk memastikan bahwa kita bisa menghandle transaksi sesuai dengan requirement yang diminta client. Selain itu akan dilakukan testing secara manual untuk memastikan integrasi frontend dan backend sudah sesuai dengan yang direncanakan
  5. Operation & Maintenence : Jika applikasi kita sudah melewati fase testing dan sukses, maka kita bisa mendeploy applikasi kita kedalam environment production. Kita juga perlu melakukan testing pada environment ini walaupun kita sudah melakukan testing pada staging yang dimana staging adalah environment yang mirip dengan production, Hal ini memastikan applikasi berjalan sesuai dengan hasil pada testing. Jika semua selesai, maka applikasi bisa dilakukan Maintenence dengan pooling request fitur, dan report bug untuk dilakukannya fase update berikutnya.


Comments

Popular posts from this blog

Pertemuan 13 OOP - Abstraksi & Simulasi Fox & Rabit

Pertemuan 6 KPPL - Implementasi Web ChatBot Tech Support System, Web & Prototipe & Metodologi

Pertemuan 11 PWEB - Membuat Website CRUD PHP MySQL