Senin, 24 Oktober 2016

Rekayasa Perangkat Lunak


REKAYASA PERANGKAT LUNAK

Rekayasa perangkat lunak telah berkembang sejak pertama kali diciptakan pada tahun 1940-an hingga kini. Focus utama pengembangannya adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan produktivitas para praktisi pengembang perangkat lunak dan kualitas aplikasi yang dapat digunakan oleh pemakai.



SEJARAH SOFTWARE ENGINEERING

Istilah software engineering digunakan pertama kali pada akhir 1950-an dan awal 1960-an. Saat itu, masih terdapat perdebatan tajam mengenai aspek engineering dari pengembangan perangkat lunak. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap pengembangan rekayasa perangkat lunak. Banyak yang menganggap dua konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak.

Pada tahun 1960-an hingga 1980-an, banyak masalah yang ditemukan para praktisi pengembangan perangkat lunak. Banyak project yang gagal, hingga masa ini disebut sebagai krisis perangkat lunak. Kasus kegagalan pengembangan perangkat lunak terjadi mulai dari project yang melebihi anggaran, hingga kasus yang mengakibatkan kerusakan fisik dan kematian. Salah satu kasus yang terkenal antara lain meledaknya roket Ariane akibat kegagalan perangkat lunak. Selama bertahun-tahun, para peneliti memfokuskan usahanya untuk menemukan teknik jitu untuk memecahkan masalah krisi perangkat lunak.

Berbagai teknik, metode, alat, proses diciptakan dan diklaim sebagai senjata pamungkas untuk memecahkan kasus ini. Mulai dari pemrograman terstruktur, pemrograman berorientasi objek, perangkat pembantu pengembangan perangkat lunak (CASE tools), berbagai standar, UML hingga metode formal diagung-agungkan sebagai senjata pamungkas untuk menghasilkan software yang benar, sesuai anggaran dan tepat waktu. Pada tahun 1987, Fred Brooks menulis artikel No Silver Bullet, yang berproposisi bahwa tidak ada satu teknologi atau praktek yang sanggup mencapai 10 kali lipat perbaikan dalam produktivitas pengembanan perngkat lunak dalam tempo 10 tahun.

PENGERTIAN DASAR

Istilah Reakayasa Perangkat Lunak (RPL) secara umum disepakati sebagai terjemahan dari istilah Software engineering. Istilah Software Engineering mulai dipopulerkan pada tahun 1968 pada software engineering Conference yang diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak (software) dan program komputer.

Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien, 1999).

RPL sendiri adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Dari pengertian ini jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program komputer. Pernyataan ”semua aspek produksi” pada pengertian di atas, mempunyai arti semua hal yang berhubungan dengan proses produksi seperti manajemen proyek, penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan pengguna merupakan bagian dari RPL.

TUJUAN REKAYASA PERANGKAT LUNAK

Secara umum tujuan RPL tidak berbeda dengan bidang rekayasa yang lain. Hal ini dapat kita lihat pada Gambar di bawah ini.



Dari Gambar di atas dapat diartikan bahwa bidang rekayasa akan selalu berusaha menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian yang tepat. Secara lebih khusus kita dapat menyatakan tujuan RPL adalah:

  • Memperoleh biaya produksi perangkat lunak yang rendah
  • Menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu
  • Menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform
  • Menghasilkan perangkat lunak yang biaya perawatannya rendah

RUANG LINGKUP

Sesuai dengan definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL dapat digambarkan sebagai berikut:



  • Software Requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak
  • Software Desain mencakup proses penampilan arsitektur, komponen, antar muka, dan karakteristik lain dari perangkat lunak
  • Software Construction berhubungan dengan detail pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian dan pencarian kesalahan
  • Software Testing meliputi pengujian pada keseluruhan perilaku perangkat lunak
  • Software Maintenance mencakup upaya-upaya perawatan ketika perangkat lunak telah dioperasikan
  • Software Configuration Management berhubungan dengan usaha perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu
  • Software Engineering management berkaitan dengan pengelolaan dan pengukuran RPL, termasuk perencanaan proyek perangkat lunak
  • Software Engineering Tools And Methods mencakup kajian teoritis tentang alat bantu dan metode RPL
  • Software Engineering Process berhubungan dengan definisi, implementasi pengukuran, pengelolaan, perubahan dan perbaikan proses RPL
  • Software Quality menitik beratkan pada kualitas dan daur hidup perangkat lunak











Phyton



Python

PYTHON - Pengenalan Singkat
Sejarah Singkat
Pada awalnya kita akan beranggapan bahwa penamaan bahasa pemrograman ini didasarkan pada binatang melata, anggapan tersebut salah. Penamaan bahasa pemrograman ini berdasarkan pembuatnya ketika dia menonton acara komedi di televisi di BBC yang bernama Monty Python's Flying Circus. Pembuat bahasa pemrograman ini adalah Guido van Rossum dari Amsterdam, Belanda. Pada awalnya, motivasi pembuatan bahasa pemrograman ini adalah untuk bahasa skrip tingkat tinggi pada sistem operasi terdistribusi Amoeba.
Bahasa pemrograman ini menjadi umum digunakan untuk kalangan engineer seluruh dunia dalam pembuatan perangkat lunaknya, bahkan beberapa perusahaan menggunakan python sebagai pembuat perangkat lunak komersial.
Sejak muncul tahun 1991 di domain public, bahasa pemrograman ini berkembang dengan dukungan komunitas pengguna dan pengembangnya, seperti Python Software Activity, internet newsgroup comp.lang.python, dan organisasi informal lainnya.
Python merupakan bahasa pemrograman yang freeware atau perangkat bebas dalam arti sebenarnya, tidak ada batasan dalam penyalinannya atau mendistribusikannya. Lengkap dengan source codenya, debugger dan profiler, antarmuka yang terkandung di dalamnya untuk pelayanan antarmuka, fungsi sistem, GUI (antarmuka pengguna grafis), dan basis datanya. Python dapat digunakan dalam beberapa sistem operasi, seperti kebanyakan sistem UNIX, PCs (DOS, Windows, OS/2), Macintosh, dan lainnya. Pada kebanyakan sistem operasi linux, bahasa pemrograman ini menjadi standarisasi untuk disertakan dalam paket distribusinya.
Filosofi Python
Bahasa pemrograman ini mempunyai filosofi sendiri, atara lain adalah:
Coherence. Bahasa pemrograman skrip tidaklah menjadi sulit untuk dibaca, ditulis, dan dimaintain.
Power (kekuatan). Bahasa pemrograman ekstensi tidaklah mempunyai fungsi yang terbatas.
Scope (jangkauan). Bahasa pemrograman dinamis dapat digunakan untuk berbagai macam tugas. Tidak ada alasan bahwa bahasa pemrograman tidak dapat menyediakan tanggapan yang cepat selama masa pembuatan sistem aplikasi dan juga mempunyai kelebihan yang membuatnya berguna untuk membuat lebih daripada sistem aplikasi tingkat tinggi.
Object. Pemrograman berorientasi objek dapat menjadi paradigma yang berguna, karena pemrograman berorientasi objek mempunyai kekuatan dalam strukturnya dan penggunaan kembali kode yang telah ada. Bahasa pemrograman berorientasi objek tidak perlu untuk menjadi kompleks atau sulit untuk digunakan.
Integration(integrasi). Tidak ada bahasa pemrograman yang menjadi pulau. Penyediaan dari kekuatan bahasa pemrograman dinamis, dan antarmuka yang terdefenisi dengan baik untuk bahasa pemrograman lainnya, python membantu sistem hibrid yang secara simultan pengungkitan kecepatan perubahan dari python, dan efisiensi dari C.
Perlu diketahui pula bahasa pemrograman python cenderung untuk menyerupai bahasa pemrograman tradisional seperti C dan Pascal, daripada bahasa permrograman skrip seperti Perl dan Tcl. Pada kenyataannya, Python adalah suatu dari bahasa pemrograman skrip dalam samaran dari bahasa perograman tradisional. Ada pendapat lain yang menyatakan bahwa Python merupakan jembatan antara bahasa skrip dan C.
Kelebihan Python
Bahasa pemrograman ini mempunyai kelebihan dari beberapa bahasa pemrograman skrip dan bahasa pemrograman C.
Kelebihan
Keuntungan
Tidak ada tahapan kompilasi dan penyambungan (link).
Kecepatan perubahan pada masa pembuatan sistem aplikasi.
Tidak ada deklarasi tipe.
Program menjadi lebih sederhana, singkat, dan lebih fleksible.
Manajemen memori otomatis.
Kumpulan sampah memori sehingga dapat menghindari pencatatan kode.
Tipe data dan operasi tingkat tinggi.
Kecepatan pembuatan sistem aplikasi menggunakan tipe objek yag telah ada.
Pemrograman berorientasi objek.
Penstrukturan kode dan penggunaan kembali, integrasi C++.
Pelekatan dan perluasan dalam C.
Integrasi C, sistem bahasa campuran
Kelas, Modul, Eksepsi.
Dukungan pemrograman skala besar secara modular.
Pemuatan dinamis modul C.
Ekstensi yang sederhana, serta berkas biner yang lebih kecil.
Pemuatan kembali secara dinamis modul Python.
Memodifikasi aplikasi tanpa menghentikannya.
Model objek universal kelas satu.
Fewer restriction dan special-case rules.
Konstruksi pada saat aplikasi berjalan.
Handle unforeseen need, end-user coding.
Interaktif, dinamis alamiah.
Incremental development and testing.
Akses hingga informasi interpreter.
Metaprogramming, introspective object.
Portabilitas secara luas.
Pemrograman antar platform tanpa ports.
Kompilasi untuk portabel kode byte.
Kecepatan eksekusi, melindungi kode sumber.
Antarmuka terpasang untuk pelayanan keluar.
Perangkat bantu sistem, GUI, persistence, database, dan lain sebagainya.
Secara jujur, Python merupakan konglomerat dari kelebihan yang dibawa dari bahasa pemrograman lainnya, termasuk element dari C, C++, Modula-3, ABC, Icon, dan lainya. Modul python datang dari modula, dan potongan operasi dari Icon.
Apa yang baik bagi Python ?
Penggunaan python pada lingkungan yang berbagai macam ragam, sulit untuk menjawab secara resmi terhadap pertanyaan di atas. Pada bagian bawah ini merupakan rangkuman dari beberapa bidang yang menggunakan python pada saat ini:
  • Perangkat bantu shell. Tugas-tugas sistem administrator, program baris perintah.
  • Kerja bahasa ekstensi. Antarmuka untuk pustaka C/C++, kustomisasi
  • Pembuatan prototipe secara cepat/pembuatan sistem aplikasi. Prototipe yang dapat dibuang atau sesuai dengan permintaan.
  • Modul berdasarkan bahasa pemrograman. Pengganti dari penulisan parser khusus.
  • Antarmuka pengguna grafis. Penggunaan GUI API sederhana dan canggih.
  • Pengaksesan basisdata. Penyimpanan objek tetap, antarmuka sistem SQL.
  • Pemrograman terdistribusi. Penggunaan API mekanisme client/server terintegrasi.
  • Skrip internet. Skrip CGI, antarmuka HTTP, Aplet WWW, dan lainnya.
Pada pengertian umum, python memberikan pelayanan terhadap jangkauan bidang:
  • Bahasa pemrograman dinamis, untuk situasi dimana salah satu tahap link atau kompilasi tidak memungkinkan (modifikasi di tempat klien), atau tidak nyaman (pembuatan prototipe, pembuatan aplikasi secara cepat, perangkat bantu shell).
  • Bahasa pemrograman yang powerful tetapi sederhana, untuk situasi dimana kompleksitas dari bahasa pemrograman yang besar is sometimes a liability (prototipe, pengkodean pada pemakai akhir).
  • Generalized language tool, untuk situasi dimana dibutuhkan untuk menanamkan dan implementasi bahasa pemrograman kecil lainnya (antarmuka sistem yag dapat di program, perangkat bantu konfigurasi).
Berdasarkan properti umum yang diberikan, python dapat di terapkan pada area mana saja ynag kita ingin kan, dengan meningkatkannya dengan pustaka pada bidangnya, melekatkannya dengan sistem aplikasi, atau menggunakannya secara sendiri.
Pada tabel di bawah ini terdapat beberapa ektensi python yang populer.
Bidang
Ekstensi
Pemrograman sistem
Soket, thread, signal, pipe, pemanggil RPC, POSIX binding.
Antarmuka pengguna grafis
X11, Tk, Tix, MFC, STDWIN
Antarmuka basisdata
Oracle, Sybase, PostGres, mSQL, persistence ("pickling"), dbm
Perangkat bantu microsoft windows
MFC, OLE
Perangkat bantu internet
Grail web browser(aplet), parser HTML, antarmuka CGI.
Objek terdistribusi
ILU (CORBA)
Perangkat bantu populer lainnya
Expect, ekspresi regula, ekstensi numerik, kriptograpi.
Apa yang telah kita lihat, arsitektur python yang terbuka mendukung bentuk pembuatan sistem aplikasi dan produknya secara dinamis. Pada python pula, kita dapat mencampurkan prototipe, pembuatan sistem aplikasi secara cepat, dan engineering perangkat lunak secara tradisional, berdasarkan pada permintaan dalam suatu projek. Penggunaan python sebagai perangkat bantu pembuat skrip, kita dapat membuka sebagian dari sistem untuk modifikasi oleh pemakai akhir.
Apa yang kurang baik bagi Python ?
Beberapa penugasan terdapat diluar dari jangkauan python, seperti bahasa pemrograman dinamis lainnya, python tidak secepat atau efisien sebagai statis, tidak seperti bahasa pemrograman kompilasi seperti bahasa C. Pada beberapa bidang hal ini tidak menjadi pertimbangan utama, tetapi dalam bidang lainnya, efisiensi menjadi prioritas tertinggi.
Disebabkan python merupakan interpreter, python bukan merupakan perangkat bantu terbaik untuk pengantar komponen performa kritis. Sebaliknya, penggunaan operasi komputasi intensif dapat diimplementasikan sebagai ekstensi kompilasi bagi python, dan dikodekan dalam bahasa pemrograman tingkat rendah seperti bahasa C. Python tidak dapat digunakan sebagai dasar bahasa pemrograman implementasi untuk beberapa komponen, tetapi dapat bekerja dengan baik sebagai bagian depan skrip antarmuka untuk mereka.
Python memberikan efisiensi dan fleksibilitas tradeoff by dengan tidak memberikannya secara menyeluruh. Python menyediakan bahasa pemrograman optimasi untuk kegunaan, bersama dengan perangkat bantu yang dibutuhkan untuk diintegrasikan dengan bahasa pemrograman lainnya. Sementara python unlikely that it'll ever be secepat bahasa C, kecepatan python dalam pembuatan sistem aplikasi paling tidak menjadi penting sebagaimana kecepatan eksekusi bahasa C.
Pilihan ada di tangan anda
Penggunaan bahasa pemrograman python akhirnya ditentukan oleh penggunanya yang didasarkan pada kebutuhannya dan bidang yang dapat ditangani oleh pyhton. Python dapat digunakan secara menyeluruh pada sistem yang tebuka terhadap penggunaan antarmuka yang ada dan tidak mengorbankan unsur penting lainnya yang akhirnya akan menurunkan hasil akhir yang ingin dicapai.
Pemandangan menyeluruh terhadap tiap unsur atau bagian yang ada secara detail dalam pembuatan suatu sistem aplikasi pada tahap analisa akan memudahkan kita pada tahap pemrograman selanjutnya.