Pengembangan software :

Fritz Bauer memberikan definisi Pengembangan Software atau disebut juga Rekayasa Perangkat Lunak merupakan pengembangan dan penggunaan prinsip pengembangan suara untuk memperoleh perangkat lunak secara ekonomis yang reliable dan bekerja secara efisien pada mesin nyata.

Sedangkan IEEE telah mengembangkan definisi yang lebih komperhensif yaitu bahwa rekayasa perangkat lunak :

  1. Aplikasi dari sebuah pendekatan kuantitatif, disiplin, dan sistematis kepada pengembangan, operasi, dan pemeliharaan perangkat lunak yaitu : aplikasi dari Rekayasa Perangkat Lunak.
  2. Studi tentang pendekatan – pendekatan seperti pada nomor 1.


Proses, Metode, dan Alat Bantu

Rekayasa perangkat lunak merupakan sebuah teknologi yang dibentangkan. Banyak pendekatan keteknikan yang harus berada pada sebuah komitmen dasar menuju kualitas. Batu landasan yang menopang rekayasa perangkat lunak merupakan fokus pada kualitas. Fondasi untuk rekayasa perangkat lunak merupakan bentangan proses. Proses – proses rekayasa perangkat lunak adalah perekat yang menjaga bentangan – bentangan teknologi secara bersama – sama dan memungkinkan perkembangan perangkat lunak komputer yang tepat waktu dan rasional. Metode – metode rekayasa perangkat lunak memberikan teknik untuk membangun perangkat lunak. Metode – metode itu menyangkut seragkaian tugas yang luas yang menyangkut analisis kebutuhan, konstruksi program, desain, pengujian, dan pemeliharaan. Rekayasa perangkat lunak mengandalkan pada serangkaian prinsip dasar yang mengatur setiap area teknologi dan menyangkut aktivitas permodelan serta teknik – teknik deskriptif yang lain.

Alat bantu dari rekayasa perangkat lunak memberikan topangan yang otomatis maupun semi-otomatis pada proses – proses dan metode – metode yang ada. Ketika tool – tool diintegrasikan sehingga informasi yang diciptakan oleh satu tool bias digunakan oleh yang lain, system untuk menopang perkembangan perangkat lunak yang disebut computer-aided software engineering (CASE) terbangun. CASE menggabungkan perangkat lunak, perangkat keras, dan database rekayasa perangkat lunak untuk menciptakan lingkungan rekayasa perangkat lunak yang analog dangan CAD/CAE (Computer Aided Design/Engineering) untuk perangkat keras.

Pandangan Umum Tentang Rekayasa Perangkat Lunak

Rekayasa merupakan analisis, desain, konstruksi, verifikasi, dan manajemen kesatuan teknik (atau sosial). Tanpa memperdulikan kesatuan yang dikembangkan, pertanyaan – pertanyaan berikut harus dimunculkan dan dijawab :

  1. Masalah apakah yang akan dipecahkan?
  2. Karakteristik kesatuan apakah yang dipakai untuk menyelesaikan masalah tersebut?
  3. Bagaimanakah kesatuan (pemecahan tersebut) diadakan?
  4. Bagaimanakah kesatuan tersebut dibangun?
  5. Pendekatan apakah yang akan dipakai untuk menemukan kesalahan – kesalahan yang dibuat didalam desain dan konstruksi dari kesatuan tersebut?
  6. Bagaimananakah kesatuan tersebut ditopang selama proses adaptasi yang lama, pada saat koreksi, serta ketika perbaikan dibutuhkan oleh para pemakai kesatuan tersebut.

Usaha yang berhubungan dengan rekayasa perangkat lunak dapat dikategorikan ke dalam tiga fase umum dengan tanpa memperdulikan area aplikasi, ukuran proyek, atau kompleksitasnya. Masing – masing fase akan memberi tekanan pada pertanyaan – pertanyaan yang telah ditulis diatas. Fase-fase tersebut antara lain:

  1. Fase definisi (Definition Phase) berfokus pada “apa”; dimana pada definisi ini pengembang perangkat lunak harus mengidentifikasi informasi apa yang akan diproses, fungsi dan unjuk kerja apa yang dibutuhkan, tingkah laku system seperti apa yang diharapkan, interface apa yang akan dibangun, batasan desain apa yang ada, dan kriteria validasi apa yang dibutuhkan untuk mendefinisikan sistem yang sukses.
  2. Fase pengembangan (Development Phase) berfokus pada how (bagaimana) yaitu dimana selama masa pengembangan perangkat lunak, teknisi harus mendefinisikan bagaimana dat dikonstruksikan, bagaimana fungsi – fungsi diimplementasikan, bagaimana interface ditandai, bagaimana rancangan akan diterjemahkan ke dalam bahasa pemrograman, serta bagaimana pengujian akan dilakukan.
  3. Fase pemeliharaan (Maintenance Phase) berfokus pada perubahan, yang dihubungkan dengan koreksi kesalahan, penyesuaian yang dibutuhkan ketika lingkungan perangkat lunak berkembang, serta perubahan sehubungan dengan perkembangan yang disebabkan oleh perubahan kebutuhan pelanggan. Fase pemeliharaan mengaplikasikan lagi langkah – langkah pada fase definisi dan fase pengembangan, tetapi semuanya tetap tergantung pada konteks perangkat lunak yang ada. Ada empat tipe perubahan yang terjadi selama masa fase pengembangan, yaitu:
  • Koreksi
  • Adaptasi
  • Perkembangan
  • Pencegahan
  1. Fase dan langkah – langkah yang berhubungan, seperti yang digambarkan pada pandangan umum kita tentang rekayasa perangkat lunak, harus diimbangi dengan sejumlah aktivitas pelindung (umbrella activities). Kegiatan – kegiatan khusus didalam kategori ini menyangkut :
  • Kontrol dan pelacakan proyek perangkat lunak
  • Review teknis formal
  • Jaminan kualitas perangkat lunak
  • Manajemen konfigurasi perangkat lunak
  • Penghasilan dan penyiapan dokumen
  • Manajemen reusabilitas
  • Pengukuran
  • Manajemen resiko

Proses Perangkat Lunak

Sebuah kerangka kerja proses umum dibangun dengan mendefinisikan sejumlah kecil aktivitas kerangka kerja yang bisa diaplikasikan ke semua proyek perangkat lunak, tanpa melihat ukuran atau kompleksitasnya. Sejumlah task set- tiap koleksi rekayasa perangkat lunak yang mengerjakan tugas – tugas, tonggak proyek, hasil usaha perangkat lunak dan bisa dipesan, serta titik jaminan kualitas- memungkinkan aktivitas kerangka kerja disesuaikan dengan karakteristik proyek perangkat lunak dan kebutuhan tim proyek. Akhirnya, aktivitas pelindung- seperti jaminan kualitas perangkat lunak, manajemen konfigurasi perangkat lunak- lampiran model proses. Aktivitas pelindung tidak tergantung pada satupun aktivitas kerangka kerja dan terjadi pada seluruh proses.

Gambar 1. Proses Software

Rekayasa perangkat lunak Institute (SEI) telah mengembangkan model komprehensif yang didasarkan atas sekumpulan kapabilitas rekayasa perangkat lunak yang harus ada sebagai organisasi yang mencapai tingkat kematangan proses yang berbeda. Untuk menentukan keadaan suatu organisasi dalam hal kematangan prosesnya, SEI menggunakan perkiraan kuesioner serta skema gradasi lima poin. Skema gradasi tersebut menentukan pemenuhan dengan sebuah model kematangan kapabilitas yang mendefiniskan aktivitas kunci yang dibutuhkan pada tingkat kematangan proses yang berbeda. Pendekatan SEI memberikan sebuah pengukuran terhadap efektivitas global dari sebuah praktek perekayasaan perangkat lunak perusaahaan dan membangun lima tingkat kematangan proses, yang didefinisikan dengan cara berikut :

  1. Level 1 Initial – Proses perangkat lunak yang ditandai sebagai ad hoc, dan bahkan kadang-kadang bersifat kacau.
  2. Level 2 Repeatable – Proses – proses manajemen proyek dasar dibangun untuk menulusuri masalah biaya, jadwal, dan fungsionalitas. Disiplin proses yang perlu ada untuk mengulangi sukses – sukses proyek yang terdahulu dengan penerapan yang sama.
  3. Level 3 Defined – Proses perangkat lunak, baik untuk aktivitas manajemen atau perekayasaan didokumentasikan, distandarkan, dan diintregasikan ke dalam proses perangkat lunak organisasi besar. Semua proyek menggunakan versi proses organisasi yang didokumentasikan dan disahkan untuk pengembangan dan pemeliharaan perangkat lunak. Tingkat ini menyangkut semua ciri yang didefinisikan pada tingkat 3.
  4. Level 4 Managed – Pengukuran detail terhadap proses perangkat lunak dan kualitas produksi dikumpulkan. Produk dan proses perangkat lunak dipahami secara kuantitatif dan dikontrol dengan menggunakan pengukuran secara detail. Tingkat ini termasuk semua karakteristik yang didefinisikan pada tingkat 3.
  5. Level 5 Optimizing – Pertambahan proses yang terus – menerus dimungkinkan oleh umpan balik kuantitatif dari prose dan dari gagasan inovatif pengujian serta teknologi. Tingkat ini termasuk semua ciri yang didefinisikan pada tingkat 4.

Lima tingkat yang didefinisikan oleh SEI ini disimpulkan dari sebuah konsekuensi respon evaluasi ke assessment questionnaire yang didasarkan pada CMM. Hasil dari kuesioner tersebut didestilasi menjadi sebuah tingkatan numeric tunggal yang memberikan identifikasi terhadap kematangan proses organisasi.

SEI telah menggabungkan area proses kunci dengan masing – masing tingkat kematangan. KPA menggambarkan fungsi – fungsi rekayasa perangkat lunak yang harus ada untuk memenuhi praktek yang baik pada suatu tingkat tertentu. Setiap KPA digambarkan dengan mengidentifikasikan ciri – ciri sebagai berikut :

  • Tujuan – objektif keseluruhan yang harus dicapai oleh KPA.
  • Komitmen – kebutuhan yang harus dipenuhi untuk mencapai tujuan, dan yang membuktikan dari maksud mencapai tujuan.
  • Kemampuan – hal – hal tersebut harus ada yang akan memungkinkan organisasi untuk memenuhi komitmennya.
  • Aktivitas – tugas – tugas khusus yang dibutuhkan untuk mencapai fungsi – fungsi dari KPA.
  • Metode untuk memonitor informasi – sikap dimana kegiatan dimonitor pada saat dipakai.
  • Metode – metode untuk memverifikasi informasi – sikap dimana praktek yang sesuai untuk KPA diverifikasi.

Model – Model Proses Perangkat Lunak

Untuk menyelesaikan masalah didalam suatu industri, rekayasa perangkat lunak atau tim perekayasa harus menggabungkan strategi pengembangan yang melingkupi lapisan proses, metode, dan alat – alat bantu serta fase – fase generik yang telah dijelaskan sebelumnya. Strategi ini sering diacukan sebagai model proses atau paradigma rekayasa perangkat lunak. Model proses untuk rekayasa perangkat lunak dipilih berdasarkan sifat aplikasi dan proyeknya, metode dan alat – alat bantu yang akan dipakai, dan kontrol serta penyampaian yang dibutuhkan.

Racoon (RAC95) mengusulkan sebuah model “chaos” yang menggambarkan “perkembangan perangkat lunak sebagai sebuah kesatuan dari pemakai ke pengembang dan ke teknologi”. Pada saat kerja bergerak maju menuju sebuah system yang lengkap, keadaan yang digambarkan di atas secara rekursif diaplikasikan kepada kebutuhan pemakai dan spesifikasi teknis perangkat lunak pengembang.

Pengembangan System Informasi

Pengembangan sistem informasi sering disebut sebagai proses pengembangan sistem (System Development). Pengembangan sistem didefinisikan sebagai aktivitas untuk menghasilkan sistem informasi berbasis komputer untuk menyelesaikan persoalan (problem) organisasi atau memanfaatkan  kesempatan (opportunities) yang timbul. Untuk menghasilkan sistem informasi tersebut terdiri dari:

  • System Analysis: upaya mendapatkan gambaran bagaimana sistem bekerja dan masalah-masalah apa saja yang ada pada sistem
  • System Development: langkah-langkah mengembangkan sistem informasi yang baru berdasarkan gambaran cara kerja sistem dan permasalahan yang ada

Gambar 2. Konteks Pengembangan Sistem

Metode Pengembangan Sistem

Banyak metode pengembangan sistem yang tersedia. Metode yang paling dikenal disebut juga sebagai System Development Life Cycle (SDLC) atau sering juga disebut sebagai Water Fall Method. Metode-metode lain yang dikenal antara lain: Prototyping, Application Software, End-User Development, Outsourcing, dan lain-lain.

Metode SDLC  atau Water Fall Method

SDLC merupakan metode pengembangan sistem paling tua. Sangat cocok untuk pengembangan sistem yang besar. Tidak sesuai atau tidak terlalu disarankan untuk small scale project karena: resource intensive, tidak fleksibel, sulit untuk aplikasi dengan perubahan cara pengambilan keputusan yang cepat.

Gambar 3. Diagram Typical System Development Life Cycle (SDLC).

Metode Prototyping

Pendekatan interaktif dalam pengembangan sistem dengan membuat prototype operasional sistem, menggunakan data aktual, edit input, melakukan komputasi dan semua manipulasi sehingga dihasilkan output yang nyata. Contoh prototype adalah pembuatan mock-up, mencobanya, kemudian memperbaiki, dan seterusnya.

Keuntungan:

    • Komunikasi user dan pengembang intensif
    • User terlibat aktif dalam menentukan requirement
    • Waktu pengembangan relatif singkat
    • Implementasi mudah karena pemakai mengetahui dari awal apa yang akan diperolehnya

Kelemahan:

    • Kemungkinan terjadi shortcut dalam pendefinisian masalah
    • Pemakai bisa terlalu berlebih menentukan requirement sehingga sulit dipenuhi
    • Kemungkinan tidak dihasilkan rancangan yang baik

Gambar 4. Prototyping Process

Metode Application Software

Alternatif lain dari pengembangan system informasi adalah dengan membeli software aplikasi yaitu paket software yang sudah jadi. Misalkan membeli SAP, MSProject, dll. Biasanya digunakan untuk aplikasi yang bersifat umum, misalkan payroll, akunting, dll. Namun pada saat ini software yang berbasis enterprise secara keseluruhan banyak tersedia (enterprise software) adalah semacam Oracle, Baan, SAP, dll. Metode ini sangat sesuai jika perusahaan yang mengembangkan sistem kekurangan tenaga IT.

Metode End-user Development

  • Pengembangan system dilakukan langsung oleh end-user. Hal ini menjadi semakin layak dengan tersedianya bahasa pemrograman yang mudah seperti MS Access, Delphi, dll. Dengan adanya keterlibatan langsung dari end-user akan sangat menguntungkan, karena memahami benar bagaimana sistem bekerja. Artinya tahap analisis sistem dapat dilakukan lebih cepat. Kelemahan dari metode ini adalah pada pengendalian mutu dan kecenderungan tumbuhnya “private” sistem informasi. Integrasi dengan sistem yang lain menjadi sulit.

Metode Outsourcing

  • Dilakukan kontrak dengan pihak luar untuk menangani baik pengembangan maupun operasi & maintenance sistem. Menguntungkan dari sisi kecepatan memperoleh hasil dan biaya. Namun ada resiko yaitu tidak dapat mengendalikan sistem secara langsung dan masalah keamanan data.

Prinsip Dasar Pengembangan Sistem

  • Prinsip 1: Pemilik dan Pengguna Sistem Harus terlibat dalam pengembangan.
  • Prinsip 2: Gunakan Pendekatan Pemecahan Masalah
  • Prinsip 3: Tentukan tahapan pengembangan
  • Prinsip 4: Tetapkan standard untuk pengembangan dan dokumentasi yang konsisten
  • Prinsip 5: Justifikasi sistem sebagai investasi
  • Prinsip 6: Jangan takut membatalkan atau merubah lingkup pekerjaan.
  • Prinsip 7: Bagi dan tundukkan
  • Prinsip 8: Rancang sistem untuk pertumbuhan dan perubahan