Dokumentasi API L5-Swagger pada Laravel

Haloo kreatif reader.. kali ini aku mau bahas tentang Dokumentasi API L5 Swagger pada Laravel.

Dokumentasi API adalah dokumentasi yang berisi kumpulan panduan penggunaan API terhadap suatu program atau aplikasi. Dokumentasi API ini digunakan sebagai acuan untuk mendeskripsikan API secara menyeluruh sehingga penggunaan API dapat mudah dipahami oleh seluruh tim pengembang ataupun pengembangan lain untuk pemeliharaan aplikasi selanjutnya.

Salah satu tools  yang dapat digunakan untuk mendokumentasikan API adalah Swagger. Swagger merupakan framework populer yang digunakan untuk OpenAPI Specification (OAS). Penggunaan swagger dapat menyederhanakan proses dokumentasi API secara  interaktif. Dokumentasi yang dihasilkan dapat dengan mudah dipahami oleh pengguna teknis maupun non-teknis.

Saat ini swagger sudah dapat digunakan langsung pada framework Laravel dalam bentuk package L5 Swagger yang bekerja dengan mengadaptasi swagger-php dan swagger-ui.

Untuk melakukan instalasi dan setup L5 Swagger pastikan laravel dan composer sudah terinstall di laptop pengguna. Setelah itu ikuti langkah-langkah instalasi package l5swagger berikut ini:

1. Install package l5 swagger melalui composer

composer requires darkonline/l5-swagger tymon/jwt-auth

2. Publish file konfigurasi L5Swagger

php artisan vendor: publish --provider "L5Swagger\L5SwaggerServiceProvider"

3. Konfigurasi Swagger
Buka file config/l5-swagger.php dan sesuaikan pengaturan misalnya dengan mengonfigurasi path API documentation, keamanan, dan lainnya.

4. Tambah anotasi swagger ke Route dan Controllers
Contoh penggunaan anotasi pada route:

/**
* @OA\Get(
* path="/api/user",
* summary="Get a list of users",
* tags={"Users"},
* @OA\Response(response=200,
* description="List of users",
* ),
* )
*/

Contoh penggunaan anotas pada contollers

/**
* @OA\Info(
* title="Swagger with Laravel",
* version="1.0.0",
* )
* @OA\SecurityScheme(
* type="http",
* securityScheme="bearerAuth"
* scheme="bearer"
* bearerFormat="JWT"
* )
*/

5. Generate dokumentasi Swagger

php artisan l5-swagger:generate

Perintah ini akan menghasilkan file JSON swagger dan secara default menyimpannya di direktori publik.

6. Akses halaman swagger dengan mengunjungi url yang telah dibuat pada file konfigurasi. Contohnya ‘http://your-app-url/api/documentation’

Berikut ini contoh tampilan hasil generate dokumentasi swagger:

swagger-ui-1-768x363

Dengan penggunaan l5 swagger yang mudah diimplementasi ini, diharapkan dapat mendorong kolaboarasi yang lebih baik dan mempercepat pengembangan API pada aplikasi laravel yang dibuat.


Referensi:
Upadhyay, Mayur. (2024, January 04). Laravel Swagger Integration: A Step-by-Step-Guide. WPWEB Infotech.
Kolodii, Ivan. (2020, May 10). How to write Swagger Documentation for Laravel API. Tips & Example. Medium. 

PHP Framework Yii

Haloo kreatif readers.. kali ini saya saya akan membahas tentang salah satu framework PHP yaitu Yii.

Pengenalan Yii

Framework Yii merupakan sebuah framework PHP berbasis komponen yang memiliki performa yang baik. Framework ini bisa digunakan untuk membangun aplikasi berbasis web berskala kecil hingga berskala besar.

Yii mulai dikembangkan pada awal bulan Januari 2008 oleh Qiang Xue.  Saat ini Yii telah tersedia versi 2, sebuah versi yang merupakan lompatan besar dari versi sebelumnya (varian 1.1) dan lebih modern.

Yii merupakan framework PHP lain pada umumnya, dapat digunakan untuk membangun berbagai jenis aplikasi berbasis web, misalnya: web portal, forum, CMS, e-commerce, web service, dan masih banyak yang lainnya. Yii juga memiliki fitur-fitur yang umum dimiliki oleh framework lainnya, seperti MVC (model-view-controller), mendukung banyak basis data, ORM, caching, RESTful, code generator, dsb.

Kelebihan dari framework Yii yaitu:

  1. Memiliki Fitur dan Panduan yang Lengkap
    Yii memiliki fitur yang sangat lengkap seperti tersedianya banyak extension yang bisa kita gunakan atau library-library PHP yang dengan mudah bisa kita integrasikan dengan Yii. Selain itu panduan yang disediakan juga lengkap dan rapi misalnya pada dokumentasi API Yii yang mudah dibaca karena tersusun rapi dengan penjelasan yang mudah dimengerti.
  1. Adanya Komunitas Besar dan Aktif
    Yii memiliki komunitas yang besar sehingga diharapkan ketika kita menghadapi masalah dalam belajar atau pengembangan aplikasi berbasis Yii akan banyak yang membantu.
  1. Memiliki Kode Generator Ajaib
    Yii memiliki kode generator (Gii) yang berfungsi meng-generate kode template model, crud, form, dsb. Sehingga akan mempercepat pemrogram aplikasi dalam membangun sebuah aplikasi. Menariknya, tools ini bisa dengan mudah dikustomisasi sesuai dengan keinginan kita.
  1. Peningkatan Kemanan
    Yii memiliki beberapa fungsi keamanan built-in yang mudah digunakan, antara lain untuk pencegahan SQL injections, XSS attacks, CSRF attacks, cookie tampering, dsb.
  1. Otentikasi dan Otorisasi
    Yii secara built-in mendukung fitur otentikasi dan otorisasi pengguna, seperti: login, logout, cookie-based dan otentikasi berbasis token, access control filter dan role-based access control (RBAC). Di samping itu juga mendukung OpenID, OAuth1 dan OAuth2 protocols.
  1. Didukung oleh fitur-fitur unggulan lainnya seperti:
    URL SEO Friendly yang bernama pretty URL.
    - Mendukung berbagai jenis cache (APC, Memcache, files, basis data, dsb) pada berbagai level aplikasi, baik dari sisi client (HTTP caching) maupun server (fragment caching, dan query caching)
    Built-in Twitter Bootstrap.
    – Secara built-in Yii juga menyediakan tools untuk uji coba aplikasi yaitu Codeception dan Faker.

Adapun beberapa kekurangan dari framework Yii yaitu:

  1. Bukan merupakan framework yang paling populer.
  2. Kurang promosi, sehingga menyebabkan framework menjadi kurang populer.
  3. Update tergolong jarang, sehingga dikhawatirkan akan lambat untuk mengadopsi teknologi baru.
  4. Kecepatan Yii berada di tengah, banyak framework PHP lain yang memiliki kecepatan jauh melampaui Yii.

Arsitektur Yii

Untuk application project template Yii hadir dengan dua pilihan template yaitu Basic dan Advanced. Masing-masing memiliki peruntukannya sendiri, namun bagi pemula, direkomendasikan untuk menggunakan template Basic. Hal ini dikarenakan template ini simple yang terdiri dari satu aplikasi,  dan base-nya adalah template Basic. Adapun template Advanced direkomendasikan untuk pembuatan sebuah proyek aplikasi yang besar, dimana aplikasi backend terpisah dengan frontend.

Alur Kerja Yii

Sama seperti framework PHP lainnya, Yii mengimplementasi konsep MVC (Model-View-Controller) dimana file-file model view dan controller dibuat terpisah. Berikut ini gambaran alur kerja aplikasi yang menggunakan framework Yii menggunakan konsep MVC:

chrome_gteht9qsh9

Alur kerja aplikasi Yii dimulai dari user yang mengakses aplikasi Yii melalui entry script, selanjutnya dilakukan konfigurasi untuk menjalankan aplikasi. Aplikasi tersebut routing yang diminta oleh user melalui URL sehingga diketahui controller yang dimaksud user, kadangkala proses dalam aplikasi ini membutuhkan komponen tertentu sehingga dipanggillah suatu komponen tersebut. Setelah masuk ke controller yang dimaksud, controller menciptakan action berdasarkan routing. Sebelum action benar-benar tercipta maka dilakukan pengecekan atau filter terhadap action tersebut (misalnya: filter otorisasi yaitu apakah action tersebut boleh diakses oleh current user). Jika tidak lolos filter maka controller akan mengembalikan response ke user dan siklus berakhir, namun jika lolos filter maka action akan diproses. Pada action akan dimuat model (jika menggunakan model), demikian juga jika model membutuhkan basis data (active record) maka akan dilakukan pengaksesan basis data. Selanjutnya pada action tersebut akan dilakukan render terhadap suatu view (jika menggunakan view) untuk kemudian view tersebut ditampilkan ke user, dan siklus berakhir.


Referensi:
Mukhlasin, Hafidz. Membangun Aplikasi Profesional Berbasis Web Menggunakan Yii Framework. 2017. Jakarta: Buku Baik.

 

PHP Framework Codeigniter

blog-ars

Halo kreatif readers.. kali ini saya akan membahas tentang salah satu framework PHP yaitu Codeigniter.

Codeigniter (CI) adalah framework PHP yang digunakan untuk membangun aplikasi berbasis web yang dinamis.  Codeigniter merupakan platform open-source yang cukup populer dikalangan tim pengembang yang menggunakan bahasa pemrograman PHP. Keunggulan dari Codeigniter ini yaitu ringan dan menerapkan konsep MVC (Model, View, Controller) sehingga membuat pekerjaan lebih efektif dan cepat.

MVC (Model, View, Controller) adalah konsep atau paradigma pemrograman yang memisahkan komponen utama menjadi 3 bagian berikut:
1. Model
Model adalah bagian penanganan yang berhubungan atau manipulasi data dengan database, seperti pengambilan data dari database dan instruksi untuk proses CRUD.
2. View
View merupakan bagian penanganan interface atau antarmuka web yang muncul kepada user.
3. Controller
Controller yaitu bagian instruksi aksi yang merupakan jembatan yang menghubungkan model dan view.

Berikut ini merupakan gambaran alur kerja MVC:

mvc

Dari gambar diatas dapat dilihat alur kerja MCV, dari bagian view yang bertugas meminta informasi ke controller untuk ditampilkan ke device pengguna, permintaan itu diteruskan oleh controller ke bagian model agar dieksekusi. Lalu model mengolah dan mencari informasi ke database, setelah selesai hasil diberikan ke controller kemudian diproses untuk ditampilkan ke view.

Beberapa manfaat dari penggunaan Codeigniter adalah:
1. Lebih cepat dan efisien, hal ini karena beberapa modul yang dibutuhkan untuk melakukan pengembangan sudah disediakan oleh Codeigniter, sehingga dapat menghemat waktu dan dapat bekerja dengan efisien.
2. Mendukung kolaborasi, karena pengerjaan proyek dapat dengan mudah dikembangkan bersama tim dengan adanya standar penulisan kode yang sama.
3. Salah satu keunggulan Codeigniter dibandingkan kerangka kerjanya lainnya adalah ukurannya yang kecil (kurang dari 5 MB), sehingga lebih hemat ruang di server.
4. Keamanan lebih baik karena sudah tersedia beberapa fitur untuk meningkatkan keamanan pada framework-nya.
5. Kerangka dan penulisan kode akan lebih terskturkur karena sudah menerapkan model MVC.

Saat ini Codeigniter telah tersedia dengan versi terbaru yaitu Codeigniter 4 yang dirilis pada tahun 2020. Perbedaan utama dari CI 4 dibandingkan dengan versi sebelumnya terletak pada struktur direktori, sistem penulisan kode, konfigurasi, dan adanya fitur-fitur baru.

Beberapa keunggulan baru  yang diberikan dari CI4 ini yaitu sebagai berikut:
1. Dapat melakukan instalasi langsung menggunakan Composer
2. Memiliki Local Development Server
3. Menggunakan PHP versi 7.2 ke atas
4. Struktur direktori berbeda, dimana semua file diletakkan dalam folder app
5. Menggunakan NameSpace
6. Memiliki AutoLoading yang efektif
7. Memiliki File.env
8. Memiliki CLI (Command Line Interface)
9. Adanya fitur REST
10. Dokumentasi lebih praktis

Dari keunggulan yang diberikan Codeigniter 4 diatas, penggunaan Codeigniter 4 memungkinkan pengembang untuk membangun aplikasi web yang lebih modern dan responsif. Namun untuk pemilihan penggunaan framework ini tetap perlu memperhatikan kembali dari segi struktur dan kebutuhan aplikasi web yang akan dibangun/dikembangkan.

Software Testing

Presentation are communication tools that can be used to as demo

Halo sahabat Akhdani, tulisan kali ini membahas tentang Software Testing dari buku Software Engineering – Ian Sommerville.

Software testing adalah proses pengujian pada perangkat lunak yang bertujuan untuk memastikan aplikasi yang dibangun sesuai dengan kebutuhan klien dan untuk menemukan cacat fitur sebelum aplikasi digunakan.

Proses pengujian dilakukan dengan dua pendekatan. Yang pertama adalah pengujian validasi yaitu melakukan pengujian menggunakan serangkaian test case untuk memastikan sistem bekerja dengan baik dan sesuai dengan kebutuhan yang tercantum dalam dokumen requirement. Yang kedua adalah melakukan pengujian untuk menemukan cacat (bug) menggunakan serangkaian test case dan data dummy yang sengaja dibuat untuk menghasilkan sistem agar berjalan dengan tidak semestinya. Selanjutnya hasil pengujian ditunjukkan kepada tim pengembang dan klien.

Pengujian juga merupakan bagian dari proses verifikasi dan validasi perangkat lunak. Proses ini bertujuan untuk membangun keyakinan bahwa sistem perangkat lunak “sesuai dengan tujuannya.” Artinya, sistem tersebut harus cukup baik untuk tujuan penggunaannya, dan sudah memenuhi spesifikasi dan memberikan fungsionalitas sesuai yang diharapkan.

A. Development Testing
Development testing merupakan keseluruhan aktivitas pengujian yang dilakukan oleh tim yang sedang membangun sistem. Pengujian biasanya dilakukan oleh programmer yang membuat software, namun bisa juga programmer memiliki pasangan penguji yang membantu dan mengembangkan proses pengujian. Untuk sistem yang critical dan proses yang lebih formal, dapat dibuat kelompok pengujian (tim tester) terpisah dalam tim pengembangan. Kelompok ini bertanggung jawab untuk mengembangkan pengujian dan memelihara catatan ricin hasil pengujian.
Pengujian dalam pengembangan aplikasi terdiri dari beberapa tahap pengujian berikut:
1. Unit testing adalah proses pengujian komponen aplikasi yang paling sederhana, seperti function, method atau object class yang ada di dalamnya. Pertama-tama penguji harus merancang test case pengujian dan mengelompokkan test case menjadi  positive test case dan negative test case untuk setiap method. Pemilihan atau pengelompokan unit test cases ini dilakukan untuk mengefektifkan proses pengujian.
2. Component testing merupakan pengujian dari beberapa objek yang saling berinteraksi. Component testing ini difokuskan pada komponen antarmuka.
3. System testing adalah pengujian yang memeriksa seluruh komponen sistem yang sudah terintegrasi, pada pengujian ini dipastikan apakah interaksi pada sistem sudah berjalan dengan baik.

B. Test Driven Development
Test Driven Development (TDD) merupakan suatu pendekatan pengembangan aplikasi yang mengacu pada pengujian sebelum melakukan proses coding. Pengembangan berbasis pengujian ini merupakan pendekatan yang banyak digunakan karena dianggap lebih produktif untuk mengembangkan perangkat lunak. Berikut ini gambaran langkah-langkah proses TDD:

Proses TDD
Gambar: Proses TDD

Keuntungan dari penggunaan TDD yaitu:
– Mengurangi biaya produksi pembangunan perangkat lunak.
– Rangkaian regression test terus dikembangkan secara bertahap seiring dengan pengembangan kode program.
– Menyederhanakan proses debug, ketika pengujian gagal maka letak masalah akan terlihat jelas.
– Tes yang dibuat merupakan dokumentasi sistem yang dideskripsikan dalam bentuk kode, sehingga memudahkan proses pembuatan dokumentasi.

C. Release Testing
Pengujian ini dilakukan untuk memastikan bahwa sistem sudah cukup baik untuk digunakan dari segi fungsionalitas, kinerja, dan keandalan sistem. Pada pengujian ini dilakukan requirement-based testing yaitu memeriksa setiap persyaratan untuk mengembangkan pengujian sertam pembuatan test case dan test scenario.
Setelah sistem terintegrasi sepenuhnya, di tahap ini dilakukan performace test dengan menjalankan serangkai pengujian peningkatan bebanpada aplikasi untuk melihat kegagalan yang terjadi pada aplikasi. Contohnya yaitu pengujian pada suatu aplikasi yang bisa memproses 300 transaksi per detik, lalu dilakukan pengujian lebih dari 300 transaki per detik hingga melampaui beban desain maksimum sistem dan sistem gagal. Jika sistem berjalan dengan baik sampai batas transaksi sesuai dengan kebutuhan sistem, maka aplikasi dinyatakan lulus pengujian.

D. User Testing
User testing merupakan tahapan proses pengujian dimana pengguna atau klien memberikan masukan dan saran terhadap pengujian sistem. User testing terdiri dari beberapa jenis, sebagai berikut:
1. Alpha testing, pengujian yang dilakukan oleh tim pengembang di lingkup internal.
2. Beta testing, pengujian yang dilakukan oleh tim pengembang bersaam dengan end user sebelum aplikasi resmi dirilis.
3. Acceptance testing, klien menguji aplikasi unutk memutuskan apakah aplikasi sudah sesuai dan siap diterima atau tidak diterapkan di lingkungan klien.
Berikut ini gambaran proses acceptance testing:

acrobat_twxnwq1its
Gambar: Acceptance testing process

Software Process Model

Judul Buku: Software Engineering
Edisi : Tenth Edition
Pengarang : Ian Sommerville
Penerbit : Pearson Education Limited
Bagian yang dibaca
Bab 2 : Software Processes
Halaman : 43 s.d 65


Software Process adalah serangkaian aktivitas pada pembuatan perangkat lunak.

Ada 4 aktivitas dasar dalam rekaya perangkat lunak yaitu:

  1. Specification, menentukan spesifikasi dari fungsionalitas perangkat lunak dan batasan pengoperasiannya.
  2. Design and implementation, pengembangan perangkat lunak yang sesuai dengan spesifikasi diatas.
  3. Validation, validasi perangkat lunak Perangkat untuk memastikan bahwa perangkat lunak tersebut berfungsi diinginkan pelanggan.
  4. Evolution, evolusi perangkat lunak untuk memenuhi perubahan kebutuhan pelanggan

Software process model atau yang biasa disebut Software Development Life Cyctle (SDLC) adalah suatu representasi sederhana dari rangkaian proses pengembangan software. Dari proses model kita hanya melihat kerangka proses, tetapi tidak melihat detail dari aktivitas masing-masing proses tersebut.
Pada buku ini dijelaskan sejumlah model proses yang sangat umum (paradigma proses) dan biasa digunakan dalam membuat rekayasa perangkat lunak yang lebih spesifik. Berikut ini akan dijelaskan beberapa model proses yang umum digunakan:

1. The Waterfall Model
Tahapan pada model ini dari satu fase ke fase lainnya bersifat cascade, hal ini lah yang menjadikan proses model ini dikenal sebagai model waterfall.Berikut ini adalah tahapan pengembangan software pada model waterfall:

1. Requirements analysis and definition
Pada tahap ini dilakukan analisis requirement dan batasan-batasan pembuatan aplikasi. Hasil dari analisis akan didefinisikan sebagai spesifikasi dari sistem yang dibuat.
2. System and software design
Pada tahap ini dilakukan desain sistem dan aplikasi seperti membuat desain arsitektur sistem secara keseluruhan untuk hardware dan software yang digunakannya.
3. Implementation and unit testing
Tahap ini adalah pembangunan perangkat lunak, selama pembangunan perangkat lunak berlangsung dilakukan juga unit tes terhadap aplikasi untuk memastikan perangkat lunak yang dibuat memenuhi spesifikasi yang telah dibuat.
4. Integration and system testing
Pada tahap ini dilakukan integrasi dari modul-modul yang sudah dibuat sebelumnya dan diuji sebagai sebuah sistem yang lengkap. Pengujian dilakukan untuk memastikan perangkat lunak telah memenuhi semua requirement-nya. Setelah pengujian selesai, perangkat lunak diserahkan ke pelanggan.
5. Operation and maintenance
Pada tahap terakhir ini sistem diinstal di environment production untuk dijalankan. Selama sistem berjalan dilakukan pemeliharaan berupa perbaikan bug.

Model waterfall ini cocok untuk pengembangan software yang memerlukan banyak biaya produksi. Setiap proses yang dilakukan tidak saling tumpah tindih karena untuk melanjutkan fase berikutnya harus menunggu fase sebelumnya benar-benar selesai. Hal ini menjadikan model ini kurang cocok untuk diimplementasi dalam pembangunan software dengan kompleksitas yang tinggi.

2. Incremental Development
Pembangunan inkremental adalah pengembangan software yang dibuat berdasarakan rancangan awal yang dipecah menjadi beberapa fungsi atau bagian sehingga pengembangan software dilakukan secara bertahap. Untuk increment pertama dilakukan pengembangan fitur-fitur utama sesuai dengan spesifikasi kebutuhan aplikasi yang telah didefinisikan diawal pekerjaan. Beberapa modul atau fitur yang telah dibangun dapat langsung dievaluasi lebih awal oleh klien untuk dilihat apakah sistem sudah sesuai kebutuhan. Untuk modifikasi fitur yang lebih canggih dapat dikerjakan pada inkremen selanjutnya dengan tetap memperhatikan timeline penyelesaian proyek.
Dengan mengembangkan software secara bertahap ini akan lebih murah dari segi biaya dan mempermudah dalam melakukan perubahan pada software yang sedang dikembangkan. Tetapi model ini tidak cocok diimplementasi dalam pembangunan sistem yang besar, kompleks, dan berjangka watu yang panjang. Karena sistem yang besar memerlukan kerangka kerja dan arsitektur yang stabil.

3. Integration and Configuration
Proses ini melakukan pendekatan yang berorientasi penggunaan kembali software dengan mengintegrasikannya. Tahapan porses model ini yaitu:
Requirement Specification, tahap ini melakukan deskripsi singkat mengenai pesyaratan penting dan fitur sistem yang akan dibangun.

  1. Software discovery and evaluation, berdasarkan requirement yang sudah dibuat dilakukan pencarian komponen dan sistem yang menyediakan fungsionalitas yang diperlukan lalu dievaluasi untuk melihat apakah komponen tersebut benar-benar penting dan secara umum cocok diimplementasi pada sistem yang akan dibangun.
  2. Requirements refinement
  3. Application system configuration, jika sistem aplikasi siap pakai dan memenuhi persayaratan yang telah ada, maka sistem dapat dikonfigurasi dan digunakan dalam pembuatan sistem baru.
  4. Component adaption and integration, jika tidak ada sistem yang siap pakai, maka masing-masing komponen yang dapat digunakan kembali akan dimodifikasi dan komponen baru akan dikembangkan. Nantinya komponen-komponen ini akan dintegrasikan untuk membuat suatu sistem.
    Dengan menggunakan model ini maka dapat mengurangi biaya pengembangan dan delivery software cenderung lebih cepat.

Pada proses pengembangan software juga terdapat beberapa aktivitas untuk mengatasi perubahan. Hal ini dapat dilakukan dengan pembuatan Prototipe yang bisa membantu mengeksplorasi solusi software dan dalam pembuatan antarmuka. Atau bisa dengan melakukan proses penyampaian yang bertahap sehingga perubahan dapat dilakukan tanpa mengganggu sistem secara keseluruhan. Lalu lakukanlan proses improvement dari pengembangan software yang telah dilakukan sehingga dapat meningkatkan kualitas software yang dibuat.


Kesimpulan:
Pada buku ini dijelaskan proses model dan aktivitasnya yang umum digunakan dalam software development. Setiap tahapan pada masing-masing proses model dijelaskan dengan rinci sampai dengan keuntungan dan kekurangannya. Selain membahas proses model, pada buku ini dijelaskan aktivitas untuk mengatasi perubahan dalam pengambangan software, dan bagaimana kita melakukan proses improvement-nya. Sehingga buku ini dapat dijadikan referensi untuk mempelajari software processes model. Dengan mengetahui tentang beberapa proses model ini dapat memudahkan tim pengembang dalam memilih model proses yang sesuai dengan pekerjannya dan dapar menerapkan sehingga dapat membantu tim pengembang memahami keseluruhan proses bisnis dan proses pengembangan software dapat berjalan dengan efektif.