hallo..Selamat datang di blog kami, tempat kita ngobrol santai tapi penuh manfaat tentang teknologi, kususnya perangkat lunak (software). Dalam dunia yang semakin terkoneksi, software bukan lagi sekedar alat tapi sudah jadi partner hidup kita sehari-hari. mulai dari aplikasi chating,tool kerja yang biikin produktivitas meningkat, hingga game jadi hiburan, semua adalah bagian dari perangkat lunak yang memudahkan hidup kita.

    di artikel ini, kami mengajak kalian untuk mengenal lebih dekat dunia software. apa sih sebenarnya perangkat lunak itu? Apa saja karakterristiknya?dan bagaimana prosesnya? dengan bahasa yang ringan dan mudah dipahami kita bahas topik ini dari berbagai sisi, termasuk sampai penghitungan anggaran proyek pengembangan perangkat lunak.

Pengertian Perangkat Lunak (Software)

Perangkat Lunak atau Software adalah kumpulan intruksi atau program yang dirancang untuk menjalankan tugas tertentu pada perangkat keras komputer (Hardware). Software memungkinkan pengguna untuk berinteraksi dengan komputer, memproses data dan menjalankan berbagai fungsi. contoh sofware meliputi sistem operasi, aplikasi, dan perangkat lunak pengolahan data.

Karakteristik Perangkat Lunak

Perangkat Lunak membutuhkan pendekatan rekayasa (engeneering), bukan manufaktur (produksi) karena:

  1. Sifat Tidak Berwujud 

      Tidak seperti produk fisik, sofware tidak memiliki bentuk fisik. hal ini membuat lebih fokus pada desain, pengembangan, dan pengujian daripada produksi massal.

  2. Pentingnya Desain dan Pemeliharaan 

      Pengembangan Software memerlukan perancangan dan desain matang. setelah dirilis, software sering memerluukan pemeliharaan, pembaruan, dan peningkatan yang jarang terjadi pada produk manufaktur.

  3. Tidak Ada Biaya Produksi Massal

    Setelah Software dibuat, menggandakan salinan software hampir tidak memerlukan biaya tambahan. ini berbeda dengan manufaktur yang membutuhkan bahan mentah dan proses produksi untuk setiap unit.

  4. Evolusi dan Adaptasi

     software dirancang untuk beradaptasi dengan kebutuhan yang terus berkembang, seperti integrasi dengan teknologi baru, menyesuaikan dengan permintaan pengguna dan menghadapi ancaman keammanan.

Kerangka Kerja atau Metodologi Perangkat Lunak

SDLC (Software Development Life Cycle) adalah kerangka kerja atau metodologi yang digunakan untuk mengelola, merancang, mengembangkan, menguji, dan memelihara perangkat lunak secara sistematis dan terstruktur. salah satu model populer dalam SDLC adalah Model Waterfall.

🔘 Model Waterfall


Model Waterfall adalah pendekatan pengembangan sofware terstruktur dan sistematis. Prosesnya terdiri dari tahapan yang berjalan secara berurutan dan linier, yaitu :
 
  1. Requirement Analysis ( Analisis Kebutuhan)
      mengumpulkan kebutuhan dari pengguna dan mendokumentasikannya.

  2. System Design (Perencanaan Sistem)     
   Setelah kebutuhan diidentifikasi, fase desain dimulai. disini, arsitektur sistem dan spesifikasi teknis diciptakan. ini termasuk desain antarmuka pengguna basis data, dan sistem keseluruhan.

  3. Implementation (Implementasi)
     Pada tahap ini, desain yang telah dibuat akan diimplementasikan menjadi kode. Tim pemograman menulis kode sesuai dengan spesifikasi yang telah ditetapkan sebelumnya.
  
  4. Testing (Pengujian)
     Setelah Implementasi, perangkat lunak diuji untuk menemukan dan memperbaiki bug atau kesalahan . ini termasuk pengujian fungsional,integrasi, sistem, dan pengujian penerimaan.

  5. Deployment (Penerapan)
      Setelah pengujian selesai dan perangkat lunak dinyatakan siap, produk diluncurkan kepada pengguna. ini bisa termasuk pelatihan pengguna dan pemasangan perangkat lunak. 

  6. Maintenance (Pemeliharaan)
      Setelah peluncuran, perangkat lunak memerlukan pemeliharaan dan dukungan. ini termasuk perbaikan bug,pembaruan, dan penyelesaian sesuai kebutuhan pengguna.

Analisis Kebutuhan Perangkat Lunak
Dalam rekayasa perangkat lunak, kebutuhan dibagi menjadi dua kategori utama yaitu Kebutuhan fungsional dan kebutuhan non fungsional sebagai berikut:

⏩ Kebutuhan Fungsional
Kebutuhan fungsional adalah spesifikasi mengenai apa yang harus dilakukan oleh sistem perangkat lunak. ini menggambarkan fungsi, fitur dan perilaku sistem operator yang diharapkan.
kebutuhan fungsional biasanya mencakup:

• Proses dan fungsi
• Interkasi Pengguna
• Pengolahan Data
• Aturan Bisnis

Contoh Kebutuhan Fungsional :
• Sistem harus memungkinkan penguna untuk membuat akun dan login.
• Pengguna dapat mencari item di dalam katalog dan menambahkannya ke keranjang belanja
• Sistem harus mengirim email konfirmasi setelah transaksi selesai. 


⏩ Kebutuhan Non-Fungsional
Kebutuhan non-fungsional disisilain, menetapkan kriteria kualitas dan atribut yang harus dipenuhi oleh sistem. kebutuhan ini berfokus pada aspek seperti kinerja, keamanan, dan ketahanan, yang tidak terkait dengan fungsi spesifik tetapi sangat penting untuk pengalaman pengguna secara keseluruhan. Beberapa kategori kebutuhan non-fungsional meliputi:

Kinerja: Waktu respons sistem, kecepatan pemrosesan, dan kapasitas.
Keamanan: Fitur seperti otentikasi, enkripsi data dan perlindungan dari akses tidak sah.
Ketersediaan : Seberapa sering sistem harus tersedia untuk pengguna, terkadang dinyatakan dalam presentasi waktu krja.
Usability (Keterjangkauan): Seberapa mudah dan menyenangkan sistem digunakan.

Contoh Kebutuhan Non-Fungsional
• Sistem harus dapat memproses 100 transaksi per detik.
• Pengguna harus dapat login dalam waktu kurang dari 2 detik.
• Sistem harus memiliki tingkat ketersediaan 99.9% per bulan.


Contoh Use Diagram Pada Mesin ATM

                                              -Contoh use case diagram pada mesin ATM

     Contoh use case diagram yang ada pada gambar diatas yaitu pada sistem mesin ATM. Pada diagram tersebut aktor yang terlibat ada 3 yaitu nasabah,pihak bank, dan operator ATM. Sementara use case yang ada meliputi transaksi, cek saldo, tarik tunai, transfer,session, system startup, dan system shutdown. untuk penjelesanny sebagaiberikut :

• Session diawali saat nasabah memasukan kartu ke dalam mesin ATM sampai kartu tersebut dikeluarkan dari mesin ATM.
• Transaksi dapat dilakukan oleh nasabah termasuk cek saldo, tarik tunai, dan transfer.
• Cek Saldo digunakan untuk mendapat informasi terkait jumlat saldo milik nasabah.
• Tarik Tunai digunakan untuk menarik uang tunai dari mesin ATM disesuaikn dengan saldo milik nasabah.
• Transfer digunakan untuk mengirimkan sejumlah uang dari rekening nasabah ke rekening lain.
• System Starup adalah sistem yang dinyalakan oleh operator dengan ditandai dengan swich menjadi 'on'. Operatordapat memasukan sejumlah uang ke dalam brankas ATM sehingga mesin  terkoneksi ke Bank. Dengan system Starup nasabah bisa melakukan transaksi pada mesin ATM.
• System shutdown adalah sistem yang akan dimatikan ketika Maintenance akan dilakukan. selain itu sistem akan mengalami system shutdown saat operator memastikan tidak ada lagi nasabah yang munggunakan mesin ATM. Operator akan mengubah switch menjadi  'OFF'.

Contoh Perhitungan Anggaran Proyek Pengembangan Perangkat Lunak
dibawah ini saya akan berikan contoh perhitungan anggaran untuk proyek pengembangan perangkat lunak. kita megasumsikan proyek ini melibatkan tim kecil dengan berbagai peran dan kegiatan. Misalkan proyek ini adalah pengembanan aplikasi mobile sederhana.

Contoh Proyek: Pengembangan Aplikasi Mobile Sederhana

Rincian Anggaran
   
    1. Gaji Tim Pengembang
        Pengembang (2 orang):
          ▪ Gaji Tim Pengembang:
             Rp 10.000.000/bulan
           Total Gaji untuk 3 bulan:
             2 x Rp10.000.000 x 3 =
             Rp60.000.000
         Desainer UI/UX:
          ▪ Gaji: Rp8.000.000/bulan
          ▪ Total Gaji untuk 3 bulan:
             ▪ Rp8.000.000 x 3 =
               Rp24.000.000
         ◦ Manager Proyek:
           ▪ Gaji: Rp12.000.000/bulan
           ▪ Total Gaji untuk 3 bulan:
             ▪ Rp12.000.000 x 3 =
               Rp36.000.000

    2. Biaya Infrastruktur dan Alat
        ◦ Server dan Hosting:
          ▪ Biaya per bulan: Rp1.500.000
          ▪ Total untuk 3 bulan:
             ▪ Rp1.500.000 x 3 = Rp.4.500.000
        ◦ Lisensi Software dan Alat Pengembangan
          ▪ Total Biaya: Rp5.000.000

    3. Biaya Lain-lain
        ◦ Pelatihan Tim:
          ▪ Total biaya: Rp3.000.000
        Kontinjensi (10% dari total biaya)

Perhitungan Total Anggaran
    1. Total Gaji Tim Pengembang:
         ◦ Pengembang: Rp60.000.000
         ◦ Desainer: Rp24.000.000
         ◦ Manager Proyek: Rp36.000.000
         Subtotal Gaji: Rp120.000.000

     2. Total Biaya Insfrastruktur dan Alat:
          ◦ Server dan Hosting: Rp4.5000.000
          ◦ Lisensi: Rp5.000.000
          Subtotal Insfrastruktur: Rp9.5000.000
    
     3. Total Biaya Lain-lain:
         ◦ Rp3.000.000
 
Total Anggaran Awal
Total Anggaran Awal = Subtotal Gaji + Subtotal Infrastruktur + Tital Biaya Lain-lain
                                  = Rp120.000.000 + Rp9.500.000 + Rp3.000.000
                                  = Rp132.500.000

Kontinjensi 
Kontinjensi = 10% x Total Anggaran Awal
                   = 0,1 x Rp132.500.000
                   = Rp13.250.000
 
Ringkasan Anggaran

Total Gaji Tim: Rp120.000.000
Total Infrastruktur: Rp9.5000.000
Total Biaya Lain-lain: Rp3.000.000
Kontinjensi: Rp13.250.000
• Total Anggaran Ahir: Rp145.750.000

diatas adalah contoh sederhana yang kami buat. Anggaran dapat bervariasi tergantung pada skala,kompleksitas, dan spesifikasi proyek.

     Dalam artikel ini, kita telah membahas berbagai aspek penting mengenai perangkat lunak.Dari pengertian dasar dan karakteristik yang membedakannya, hingga proses pengembangan yang terstruktur dan berbagai kategori perangkat lunak yang ada. Tidak lupa, kita juga telah mempelajari contoh penghitungan anggaran proyek perangkat lunak yang dapat menjadi panduan bagi para pengembang dan manajer proyek.

    Dengan pemahaman yang mendalam tentang perangkat lunak, kita diharapkan dapat menghadapi tantangan dalam dunia teknologi yang terus berkembang. Pengetahuan ini bukan hanya penting bagi para profesional di bidang teknologi informasi, tetapi juga bermanfaat bagi siapa saja yang ingin mengeksplorasi potensi perangkat lunak dalam meningkatkan efisiensi dan inovasi dalam kehidupan sehari-hari.

    Semoga artikel ini memberikan wawasan dan inspirasi bagi Anda dalam memahami dan mengembangkan perangkat lunak yang berkualitas. Jika Anda memiliki pertanyaan atau ingin berbagi pengalaman terkait perangkat lunak, jangan ragu untuk meninggalkan komentar di bawah. Terima kasih telah membaca!