Rekayasa Perangkat Lunak: Software Engineering

SOFTWARE ENGINEERING

Software engineering atau yang biasa kita sebut dengan rekayasa perangkat lunak dilakukan oleh seorang software engineer yang berpengetahuan dalam pembuatan software dengan tatacara yang ditentukan.

Ada banyak definisi tentang software engineering. Fritz Bauer menyatakan, Software engineering merupakan pembuatan dan penggunaan prinsip engineering dalam mendapatkan software yang ekonomis, handal, dan efisien. Sedangkan menurut IEEE, SE adalah pendekatan aplikasi yang sistematis, disiplin, terukur untuk mengembangkan, melakukan operasi dan perbaikan software.

PROSES, METODE, dan TOOL(alat)

Rekayasa perangkat lunak merupakan teknologi yang berlapis-lapis.  Manajemen kualitas dan kesamaan pendirian akan mengembangkan software itu dan akhirnya mengarah pada software yang berkualitas.

figure 2.1

Salah satu landasan dalam software engineering adalah Proses. Merupakan elemen penting yang menyatukan lapisan lainnya dan memungkinkan pengembangan yang rasional dan tepat waktu dari software.

Metode, merupakan cara yang dilakukan untuk membangun suatu software. Mencakup analisis kebutuhan, desain, konstruksi program, pengujian, dan support. Prinsip yang dilakukan oleh software engineer bergantung pada jenis masalah yang akan dibuat kedalam bentuk model.

Tools memberikan support untuk lapisan proses dan metode. Saat alat-alat saling terintegrasi, memungkinkan informasi yang dibuat oleh tool dapat digunakan oleh tool yang lain, sistem untuk pengembangan software, yang biasa di sebut Computer-aided software engineering telah terbentuk.

Fase pada SE

Pekerjaan yang berkaitan dengan rekayasa perangkat lunak dapat dikategorikan kedalam 3 fase generik. Setiap fase memiliki tujuan yang berbeda.

  • Definition phase, fokus ke apa. Selama fase ini seorang software engineer menncoba untuk mengidentifikasi informasi untuk diproses, apa fungsi-fungsi yang akan dibuat, sistem apa yang akan diterapkan, desain apa yang harus dibuat sehingga menghasilkan software yang bagus.
  • Development phase, fokus ke bagaimana. Dalam arsitektur perangkat lunak, bagaimana detail prosedural diimplementasikan, bagaimana interface dibangun, bagaimana desain engineer ditransalate kedalam sebuah bahasa program, dan bagaimana testing dilakukan. Umumnya ada 3 kegiatan yang selalu dilakukan software engineer ya itu : desain software, code generation, testing software.
  • Support phase, fokus ke perubahan. Fase ini isinya adalah pengulangan fase definisi dan development. Terjadi karena adanya perubahan yang memungkinkan baik dari user ataupun faktor lain. Lingkup dari aktifitas ini meliputi (umbrella activities):
    •  tracking dan kontrol software
    • review formal teknis
    • jaminan kualitas software
    • manajemen pengaturan software
    • dokumentasi persiapan dan pembuatan
    • manajemen penggunaan kembali
    • pengukuran
    • manajemen resiko

PROSES SOFTWARE

Software Engineering Institute (SEI) telah mengembangkan model yang komperehensif didasarkan pada kumpulan kegunaan software yang harusnya bisa hadir sebagai suatu organisasi yang mencapai proses kematangan software. Pendekatan SEI menetapkan lima tahapan tingkat kematangan suatu software sebagai berikut :

  1. Inisialisasi.  Proses software sangatlah panjang dan bahkan membuat stakeholder kualahan. Stakeholder adalah siapa saja yang ikut dalam proses software(manager, analist, programmer, user, dan client).  Sedikit proses yang didefinisikan dan keberhasilan dari software proses tergantung pada kemampuan individu.
  2. Dapat diulang. Manajemen dasar proyek dibentuk untuk mengetahui dan mengukur biaya, jadwal, dan kegunaan. Tujuannya adalah untuk memberikan kemudahan jika terdapat masalah atau proyek yang hampir sama.
  3. Jelas. Proses software untuk manajemen dan engineering (perekayasaan) akan didokumnetasi, distandardkan, dan di integrasi kedalam suatu organisasi besar dalam proses software.
  4. Teratur. Detail dari proses software dan kualitas produk telah diketahui. Keduanya diketahui seberapa besar ukurannya dengan menggunakan pengukuran yang detail.
  5. Optimal. Proses perbaikan yang berlanjut terus yang berasal dari feedback pada proses dan testing. Pada tahap ini berarti sudah menyakup tahap-tahap sebelumnya. Begitu juga pada tahap 4, berarti sudah menyakup tahap ke 3 begitu seterusnya.

MODEL PROSES SOFTWARE

Software enginer beserta timnya harus bekerjasama untuk  strategi pengembangan yang meliputi lapisan proses, metode, tools(alat) untuk memecahkan masalah sebenarnya dalam industri kini. Sebuah model proses untuk software engineering dipilih berdasarkan sifat proyek dan aplikasi, metode dan alat yang digunakan serta kontrol yang diperlukan.

figure 2.3

Semua pengembangan software dapat dicirikan sebagai lingkaran pemecahan masalah yang berbeda tempat dan tahapnya : status quo, problem definition (definisi masalah), technical development (pengembangan teknis), and solution integration (solusi). Penting untuk mengingat setiap model yang telah dicirikan membantu dalam kontrol dan koordinasi proyek pada software yang nyata.

MODEL SEKUENSIAL LINIER 

  • Biasanya disebut juga classic life cycle atau model air terjun (waterfall). Menunjukan pendekatan yang sistematis dan terurut untuk pengembangan software yang dimulai pada tingkat sistem dan kemajuan melalui analisis, desain, coding, testing dan support. 
  • Permodelan dan rekayasa sistem/informasi. Rekayasa sistem dan analisis meliputi pengumpulan bahan pada tingkat sistem dengan tingkat teratas dari desain dan analisis. Rekayasa informasi meliputi pengumpulan  pada tingkatan bisnis dan tingkatan area bisnis. figure 2.4
  • Analisis Persyaratan Software. Proses pengumpulan bahan/syarat khusus difokuskan pada software requirements untuk sistem maupun untuk dokumentasi dan review dengan customer.
  • Desain. Proses desain menerjemahkan requirement kedalam representasi software yang dapat dinilai kualitasnya sebelum dilakukan coding. Desain juga didokumentasikan dan menjadi bagian dari konfigurasi perangkat lunak (software configuration)
  • Code generation/ coding. Desain harus diterjemahkan ke bahasa program. Jika pada tahap sebelumnya sudah mendapatkan detail yang cukup, maka tahap ini mudah untuk dilakukan.
  • Testing/ Pengujian. Saat sekali saja code sudah digenerate/ dicompile, itu sudah termasuk ke dalam testing. Fokus pada logika internal pada software. Memperbaiki error dan bug yang didapat dan menghasilkan software dengan hasil output sesuai yang diinginkan.
  • Support. Sebuah software mengalami perubahan setelah dikirim ke customer (kecuali software yang in-built/embedded). Perubahan akan terlihat karena error akan ditemukan saat dilakukan pengujian. Software harus dapat beradaptasi dengan lingkungan elsternal.
  • Model ini termasuk yang paling tua dan banyak digunakan di banyak paradigma software engineering. Bagaimanapun, kritik tetap ada. Hal itu dikarenakan :
    • Proyek pada kenyataannya banyak yang keluar dari alur seperti pada gambar. Akibatnya, perubahan dapat menyebabkan kebingungan pada hasil proyek tim.
    • Banyak sekali customer yang sulit untuk menyatakan semua persyaratan / requirements yang dibutuhkan secara eksplisit.
    • Pelanggan harus sabar. Karena jika terjadi suatu kesalahan jika tidak terdeteksi sampai projek berakhir an sangat fatal.

MODEL PROTOTYPE 

figure 2.5

  • Idealnya prototype berfungsi sebagai sebuah mekanisme untuk mengidentifikasi kebutuhan perangkat lunak. Jika prototype kerja dibangun, pengembang mencoba menggunakan fragmen program dan tools (seperti report generator, windows manager) yang mempermudah dan memepermudah pekerjaan. Bisa juga prototype disebut sebagai “first system”. Namun model ini juga mempunyai banyak kendala seperti :
    • Para customer melihat apa yang ada pada software yang dibagun dari awal. Prototype ini akan di handle bersama-sama oleh pengembang dan customer. Setiap satu putaran siklus akan menghasilkan versi software yang lebih baik kualitasnya. Tapi ini akan membutuhkan waktu yang sangat panjang untuk membuatnya.
    • Pengembang sering berkompromi dengan implementasi agar prototype bekerja cepat.
    • Meskipun masalah pasti ada, prototype dapat menjadi paradigma yang efektif untuk rekayasa perangkat lunak. Kuncinya adalah definisikan peraturan di awal, itulah customer dan pengembang harus menyetujui pembuatan prototype untuk menjelaskan mekanisme untuk definisi requirements. Software yang sebenarnya haruslah yang berkualitas dan dapat diperbaharui.

MODEL RAD

  • Rapid application development (RAD) adalah sebuah model proses pengembangan software cepat yang menekankan siklus pengembangan sanat pendek. Model RAD adaptasi dengan kecepatan tinggi dari model linier sekuensial permodelan bisnis. Permodelan Data. Alur informasi didefinisikan sebagai bagian dari fase permodelan bisnis kedalam objek data yang dibutuhkan untuk menyokong bisnis. Atribut dari setiap objek teridentifikasi dan hubungan antara objek juga diketahui.
  • figure 2.6
  • Permodelan Proses. Objek data terdefinisi di fase permodelan yang ditransformasikan ke alur informasi untuk implementasi fungsi bisnis. Deskripsi proses dibuat untuk menambah, merubah, menghapus ataupun menerima objek data.
  • Generation aplikasi. RAD menyatakan penggunaan kembali komponen yang bisa digunakan ataupun pembuatan komponen yang reusable (bila diperlukan).
  • Pengujian dan omset. Sejak proses RAD menekankan tentang reuseable, banyak komponen program yang sudah di uji. Ini akan mengurangi waktu uji. Bagaimanapun komponen yang baru harus diuji dan semua interface harus disinkornkan.
  • Setiap fungsi utama dapat dibedakan oleh tim RAD dan diintegrasikan kemudian untuk digabungkan. Seperti semua model proses, pendekatan RAD memiliki kekurangan :• Untuk projek yang berskala, RAD membutuhkan sumber daya untuk membuat jumah tim yang cukup.• RAD membutuhkan pengembang dan customer yang setuju dengan aktifitas cepat untuk mendapatkan sistem dalam waktu relatif cepat. Jika tidak bisa, RAD akan gagal di tengah jalan.• Tidak emua tipe aplikasi dapat menggunakan model RAD. Jikasuatu sistem tidak ter modulisasi dengan benar, pembangunan komponen RAD akan menjadi masalah. Membutuhkan performa yang tinggi, jika tidak pendekatan RAD akan sia-sia.

    • RAD tidak sesuai saat resiko sangat tinggi. Saat aplikasi baru membuat kerja yang besar (lambat) dari teknologi atau saat  software baru membutuhkan spesifikasi komputer tinggi tapi dengan hanya komputer yang ada saat itu.

MODEL INCREMENT

  • Model increment menggabungkan elemen dari sekuensial linier dengan iterative prototype. Berdasarkan gambar, setiap sekuensial linier menghasilkan peningkatan software. figure 2.7

MODEL SPIRAL

  • Model spiral terdiri dari iteratif prototype dengan kontrol dan aspek sistematis dari model sekuensila linier. Model spiral dibagi menjadi beberapa kerangka aktifitas, yang juga disebut task region.
    • Customer communication, dibutuhkan untuk menetapkan komunikasi efektif antara developer dan customer.
    • Planning, dibutuhkan untuk mendefinisikan sumber, garis waktu dan informasi lain yang berhubungan dengan proyek.
    • Risk analysis, dibutuhkan untuk menilai manajemen resiko dan resiko teknik.
    • Engineering, dibutuhkan untuk membuat satu atau lebih representasi dari aplikasi.
    • Construction and release, dibutuhkan untuk membuat, menguji, menginstall dan menyediakan support bagi user(misalnya dokumentasi dan training).
    • Customer evaluation, dibutuhkan untuk memperoleh feedback (umpan balik) customer berdasarkan evaluasi software yang dibuat selama tahap rekayasa dan implementasi selama tahap instalasi.

MODEL SPIRAL WINWIN

  • Model WINWIN mendefinisikan kumpulan aktifitas disekitar siklus. Aktifitas yang dilakukan : 
  • figure 2.9
  1. Identifikasi sistem atau subsistem
  2. Tujuan dari stakeholder(semua orang yang terlibat dalam aktifitas ini)
  3. Negosiasi diantara stakeholder

MODEL PENGEMBANGAN BERSAMA

  • Model Proses bersamaan dapat diwakili bagan sebagai serangkaian kegiatan teknis utama, tugas, dan negara-negara yang terkait. Hal ini menghasilkananalisis acara koreksi model yang akan memicu aktivitas analisis dari negarayang dilakukan ke negara perubahan menunggu. Model Proses bersamaan sering digunakan sebagai paradigma untuk pengembangan client/server11 aplikasi (Bab 28). Pada kenyataannya, model proses konkuren ini berlaku untuk semua jenis pengembangan perangkat lunak dan memberikan gambaran yang akurat tentang keadaan saat ini proyek. figure 2.10

PEMBANGUNAN yang BERBASIS KOMPONEN

Teknologi yang berorientasi obyek menyediakan kerangka kerja teknis untuk proses model berbasis komponen untuk software. Paradigma orientasi obyek menekankan pembuatan kelas yang mengenkapsulasi data dan algoritma yang digunakan untuk manipulasi data. Jika didesain dan dibuat dengan benar kelas orientasi obyek dapat digunakan kembali meski dengan berbagai aplikasi dan arsitektur yang berbasis komputer.

figure 2.11

Model CBD (Compnent-Based Development) atau model pembangunan berbasis komponen menggabungkan banyak karakteristik dari model spiral. Pengembangan software yang terpadu adalah wakil dari sejumlah model pengembangan berbasis komputer yang diusulkan dalam dunia industri. Menggunakan UML (Unified Modelling Language), proses terpadu mendefinisikan komponen yang digunakan untuk membangun sistem dan interface yang akan menghubungkan komponen. Menggunakan kombinasi iteratif dan incremental, proses terpadu menyatakan fungsi sistem dengan menerapkan pendekatan berbasis skenario (dari sudut pandang pengguna).

RINGKASAN

Software engineering adalah disiplin yang mengintegrasikan proses, metode, dan alat untuk pengembangan perangkat lunak komputer. Sejumlah model proses yang berbeda untuk rekayasa perangkat lunak telah diusulkan, masing-masing kekuatan dan kelemahan telah ditunjukkan, tetapi semua memiliki serangkaian fase generik yang sama.

Referensi: Software Engineering:  A PRACTITIONER APPROACH’S ‘edisi 5. Roger S Pressman.

lanjutannya besok aja yah, ngantuk banget😛

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s