Konsep Pemrograman

Dari IgosCenter

Langsung ke: Navigasi, Cari

Pakai istilah gampang, pemrograman adalah kegiatan membuat perangkat lunak komputer. Pakai istilah keren, pemrograman adalah bagian pembuatan (implementasi) dari suatu siklus rekayasa perangkat lunak. Kalau anda ingin mempelajarinya dengan tuntas, pergilah kuliah di jurusan informatika atau ilmu komputer. Di padepokan, kita cukup tahu konsep globalnya, dan belajar yang praktis-praktis saja ok ;)

Daftar isi

Rekayasa Perangkat Lunak

Dulu, sekitar tahun 1990-an, masih banyak orang teknik yang berkata "Oh, hanya membuat software". Seolah software itu tidak ada apa-apanya dibanding hardware. Kini, software sudah demikian kompleks, menjadi cabang rekayasa sendiri yang elit.

Sebagai rekayasa, maka membuat software harus didukung dengan prosedur yang jelas. Untuk itu, para ahli telah mendefinisikan Software/System Development Life Cyle (SDLC) yang melingkupi lima tahap:

  • Analisis kebutuhan pengguna (user requirement analysis)
  • Desain sistem (system design)
  • Pembuatan (implementation / coding)
  • Pengujian (testing)
  • Pemasangan (deployment / acceptance)

Sayangnya membuat software tidak segampang menghitung jari begitu. Gambar ayunan diatas [2] menggambarkan interprestasi dalam pembuatan sebuah ayunan. Digambarkan bagaimana tiap divisi mempunyai interprestasi, gambaran dari konsumen, hasil akhir, dan kemauan sebenarnya dari konsumen tentang ayunan pesanannya. Ini adalah gambaran nyata tentang pemrograman di dunia nyata hingga saat masa kini, kesalahan seperti ini masih juga ada. Lihat Buat_apa_system_requirements,_emang_penting_?

Analisis Kebutuhan

Bayangkan anda ingin membuat rumah. Apa dulu yang perlu dibuat ? Kalau mau benar, mestinya kita akan mulai dengan menggambar arsitekturnya. Dalam gambar arsitektur tersebut, secara eksplisit terbayang bentuk fisiknya, dan secara implisit, terkandung fungsi rumah tersebut.

Gambar dari [1]

Sama seperti rumah, untuk membuat perangkat lunak anda juga perlu kenal arsitektur dasarnya. Menurut definisi (teoritis bentar ya ...), arsitektur perangkat lunak adalah struktur dari sistem, yang terdiri dari komponen perangkat lunak, sifat eksternal terlihat dari komponen-komponen, dan hubungan antara mereka. Arsitektur perangkat lunak juga adalah dokumentasi arsitektur perangkat lunak suatu sistem. Mendokumentasikan arsitektur perangkat lunak memudahkan komunikasi di antara para stakeholder, dokumen awal keputusan tentang desain tingkat tinggi, dan memungkinkan penggunaan kembali komponen desain dan pola antar proyek. [(Bass, Len; Paul Clements, Rick Kazman (2003). Software Architecture In Practice, Second Edition. Boston: Addison-Wesley. pp. 21–24.)] Penerapan praktisnya, perangkat lunak itu biasanya memiliki arsitektur:

  • Berlapis: ada lapis bawah yang sifatnya menyediakan layanan, dan lapis diatasnya memakai layanan yang disediakan lapis bawah. Ini seperti rumah yang ada pondasi dulu, baru badan, lalu atap.
  • Modular: sebisa mungkin terdiri dari unit-unit mandiri yang bisa di lepas pasang, ditambahkan hanya kalau perlu. Analogi dengan rumah, ada komponen pintu atau jendela.


Ada bisa langsung menyadari hal itu dengan memperhatikan bahwa saat menghidupkan komputer, perangkat lunak yang langsung berjalan adalah sistem operasi. Setelah itu, anda dengan bebas bisa menjalankan aplikasi diatas sistem operasi. Aplikasi tak akan bisa jalan tanpa adanya sistem operasi, karena sistem operasi adalah lapis bawah yang menyediakan layanan bagi aplikasi.

Pada kesempatan ini, sebagai pemrogram biasa, yang akan kita lakukan adalah membuat aplikasi. Kalau anda punya cita-cita membuat sistem operasi, membantu Linus Torvald atau Bill Gates, perlu belajar lebih keras tentang operating system programmer.

Fungsi Aplikasi

Sama seperti membuat rumah, dasar dari analisis kebutuhan adalah "apa fungsinya, bagaimana bentuknya, dan apa bahan dasarnya".

Beberapa fungsi yang diemban oleh perangkat lunak adalah:

  • Membuat dokumen
  • Membuat presentasi
  • Membuat laporan keuangan.

Anda tentu sudah familiar dengan fungsi itu, dan pernah memakai aplikasi untuk itu bukan ? Coba sebutkan fungsi-fungsi lain perangkat lunak, atau kalau jago, definisikan fungsi perangkat lunak yang belum pernah ada !

Bentuk Aplikasi

Hal kedua yang penting dalam arsitektur adalah bentuk. Kalau rumah, bentuk dasar bisa dibagi menjadi pondasi, badan dan atap. Kalau di software, ada data, proses bisnis dan antarmuka pemakai. Hanya saja yang sering diributkan pemakai adalah antarmukanya.

Console

Console atau Terminal komputer adalah suatu perangkat keras elektronik yang digunakan untuk memasukkan data ke dalam, dan menampilkan data dari, komputer atau sistem komputasi. Awal terminal adalah perangkat murah tapi sangat lambat dibandingkan dengan kartu menekan atau tape kertas untuk masukan, tetapi sebagai teknologi perbaikan dan video menampilkan diperkenalkan, terminal mendorong bentuk-bentuk interaksi yang lebih tua dari industri. Perkembangan sistem time sharing terkait, yang berkembang secara paralel dan dibuat untuk setiap inefisiensi kemampuan pengguna mengetik dengan kemampuan untuk mendukung beberapa pengguna pada mesin yang sama, masing-masing di terminal mereka sendiri. [3]

Gambar disamping memperlihatkan bentuk gnome-terminal yg merupakan konsol teks Pemrograman di lingkungan ini contohnya BASH, C, C++, pascal, basic



Graphics

Graphic User Interface (GUI) adalah jenis antarmuka pengguna yang memungkinkan orang untuk berinteraksi dengan program dengan cara yang lebih dari mengetik seperti komputer, perangkat genggam seperti MP3 player, portable media player atau perangkat game; peralatan rumah tangga dan peralatan kantor dengan gambar daripada perintah teks. Sebuah ikon GUI menawarkan grafis, dan indikator visual, sebagai lawan interface berbasis teks, mengetik perintah label atau navigasi teks untuk sepenuhnya mewakili informasi dan tindakan yang tersedia untuk pengguna. Tindakan ini biasanya dilakukan melalui manipulasi langsung dari elemen grafis [4] Gambar disamping menunjukkan GUI aplikasi game Didgdug

Pemrograman di lingkungan ini seperti SDL, Dialog, Clipper

Desktop

Dalam komputasi grafis, Desktop Environment (DE) umumnya mengacu pada gaya Graphic User Interface (GUI) yang didasarkan pada metafora desktop yang dapat dilihat pada komputer personal yang paling modern hari ini. Grafis antarmuka ini dirancang untuk membantu pengguna dalam mengakses dengan mudah dan mengkonfigurasi (atau memodifikasi) yang paling penting (atau yang sering diakses) yang spesifik Sistem Operasi (OS) fitur penuh, namun tidak dimaksudkan untuk memberikan akses ke seluruh fitur yang luas ditetapkan ditemukan dalam OS, alasan yang tradisional, namun kurang intuitif, antarmuka baris perintah (CLI) masih digunakan ketika kontrol penuh atas OS diperlukan. [5]

Sebuah lingkungan desktop umumnya terdiri dari ikon, jendela, toolbar, folder, wallpaper, pintas dan widget desktop. Gambar disamping menunjukkan GUI aplikasi F-Spot dan Dictionary diatas Desktop Gnome Pemrograman di lingkungan ini seperti GTK, Qt, dan Pemrograman Visual lain

Web

Aplikasi web adalah aplikasi yang diakses melalui jaringan seperti Internet atau intranet. Istilah ini juga dapat berarti sebuah aplikasi software komputer yang host di lingkungan browser yang dikuasai (misalnya Java applet) atau dikodekan dalam bahasa yang didukung oleh browser (seperti JavaScript, dikombinasikan dengan sebuah bahasa markup yang diberikan-browser seperti HTML) dan mengandalkan pada browser web umum untuk membuat aplikasi dieksekusi. [6] Gambar menunjukkan aplikasi web browser Firefox

Pemrograman di lingkungan ini seperti HTML, JavaScript




Distributed

Komputasi terdistribusi merupakan bidang ilmu komputer yang mempelajari sistem terdistribusi. Sebuah sistem terdistribusi terdiri dari beberapa komputer otonom yang berkomunikasi melalui jaringan komputer. Komputer yang saling berinteraksi untuk mencapai tujuan bersama. Suatu program komputer yang berjalan dalam sistem terdistribusi disebut program didistribusikan, dan didistribusikan pemrograman adalah proses menulis program tersebut. [7] [8] Gambar menunjukkan skema sistem monitoring terdistribusi

Pemrograman di lingkungan ini seperti PHP, MySQL, Ruby





Lingkungan Aplikasi

Hal terakhir yang masih jadi urusan arsitek adalah bahan dasar rumah, apakah mau batu, semen, kayu atau plastik. Kalau di software, ada tiga bahan dasar yaitu:

Native

Aplikasi native adalah aplikasi yang bisa dijalankan langsung di atas sistem operasi tertentu, sebagai program binari (kode mesin).

Gambar menunjukkan aplikasi native Nautilus diatas Desktop Gnome




Virtual Machine

Aplikasi virtual machine adalah program dalam bentuk kode portable, yang bisa dijalankan diatas berbagai sistem operasi, dengan menggunakan virtual machine. Contoh paling populer sistem ini adalah Java.







Scripting

Aplikasi scripting tersimpan sebagai program dalam bentuk kode teks, dan harus dieksekusi menggunakan interpreter. Beberapa contohnya adalah BASH, Perl, dan PHP.






Desain Sistem

Desain adalah tahap kedua dalam rekayasa. Kalau membuat rumah, ini urusannya insinyur sipil. Tanggung jawabnya, menghitung konstruksi supaya bisa membentuk dan menopang rumah dengan kuat, dan biaya serendah-rendahnya. Dalam hal software, kita harus meyakinkan bahwa software dapat melaksanakan fungsi yang diminta, dengan hasil yang benar. Untuk melakukan desain, perancang software biasanya memakai berbagai diagram.

Flowchart

Flowchart adalah tipe diagram umum algoritma atau proses, yang menunjukkan langkah-langkah sebagai kotak dan dihubungkan dengan anak panah. Representasi diagram ini bisa memberikan solusi langkah-demi-langkah untuk masalah tertentu. Flowchart digunakan dalam menganalisis, merancang, mendokumentasikan atau mengelola proses atau program di berbagai bidang. [9] [10][11]

Sterneckert (2003) menyarankan bahwa diagram alur dapat dimodelkan dari perspektif kelompok pengguna yang berbeda (seperti manajer, analis sistem dan panitera) dan bahwa ada empat tipe umum:

  • Document flowcharts, menunjukkan kontrol atas aliran-dokumen melalui sistem
  • Data flowcharts, kontrol menunjukkan melalui data mengalir dalam sistem
  • System flowcharts menunjukkan diagram alur pada tingkat fisik atau sumber daya
  • Program flowchart, menunjukkan kontrol dalam sebuah program dalam suatu sistem

Data Flow Diagram

[12]

Data flow diagram (DFD) adalah representasi grafis dari aliran data melalui sistem informasi. DFDs juga dapat digunakan untuk visualisasi data pengolahan (desain terstruktur).

Sebuah DFD tidak memberikan informasi tentang waktu proses, atau tentang apakah proses akan beroperasi secara berurutan atau paralel. Oleh karena itu, sangat berbeda dari suatu flowchart, yang menunjukkan aliran kontrol melalui suatu algoritma, yang memungkinkan pembaca untuk menentukan apa yang akan dilakukan operasi, dalam rangka apa, dan dalam keadaan apa, tapi tidak apa jenis data akan input dan output dari sistem, atau di mana data akan datang dari dan pergi ke, atau di mana data yang akan disimpan (semua yang ditunjukkan pada DFD).

Ini adalah praktek umum untuk menggambar diagram konteks aliran data tingkat pertama, yang menunjukkan interaksi antara sistem dan agen eksternal yang bertindak sebagai sumber data dan data tenggelam. Pada diagram konteks (juga dikenal sebagai 0 DFD) Tingkat interaksi sistem dengan dunia luar dimodelkan murni dalam hal data arus melintasi batas sistem. Diagram konteks menunjukkan seluruh sistem sebagai proses tunggal, dan tidak memberikan petunjuk untuk organisasi internal. [13]

E-R Diagram

[14]

Entity-relationship model (ERM) adalah representasi abstrak dan konseptual data. Model ini digunakan untuk menghasilkan jenis skema konseptual atau semantik data model sistem, database relasional, dan persyaratan dalam secara top-down. Diagram yang dibuat oleh proses ini disebut entity-relationship diagrams atau ER diagrams.

Tahap pertama dari rancangan sistem informasi menggunakan model-model selama analisis persyaratan untuk menggambarkan kebutuhan informasi atau jenis informasi yang akan disimpan dalam database. Teknik pemodelan data dapat digunakan untuk menggambarkan setiap ontologi (yaitu gambaran dan klasifikasi istilah yang digunakan dan hubungan mereka) untuk wilayah tertentu bunga. Dalam hal desain sistem informasi yang didasarkan pada database, model data konseptual adalah, pada tahap berikutnya (biasanya disebut desain logis), dipetakan ke model data logis, seperti model relasional; ini pada gilirannya dipetakan ke model fisik selama desain fisik. Catatan bahwa kadang-kadang, fase kedua disebut sebagai "desain fisik". [15]



Unified Modelling Language

[16]

Unified Modeling Language (UML) adalah untuk keperluan umum standar bahasa pemodelan di bidang rekayasa perangkat lunak.

Unified Modeling Language (UML) digunakan untuk menentukan, visualisasi, memodifikasi, membangun dan mendokumentasikan artifak dari perangkat lunak berorientasi objek sistem intensif dalam pengembangan UML. Menawarkan cara standar untuk memvisualisasikan cetak biru arsitektur sistem, termasuk elemen seperti sebagai:

  • actors
  • business processes
  • (logical) components
  • activities
  • programming language statements
  • database schemas
  • reusable software components.

UML menggabungkan teknik dari ER Diagram, Flowchart, pemodelan objek, dan pemodelan komponen. Hal ini dapat digunakan dengan semua proses, sepanjang siklus hidup pengembangan perangkat lunak, dan di implementasi teknologi yang berbeda. [17]

Pemrograman

Akhirnya, sampailah kita ke tahap pemrograman. Kalau tahap-tahap sebelumnya cuma membuat dokumen, tahap inilah yang benar-benar akan membuat software. Untuk membuat BARANG nyata ini, kita perlu bahan dan alat.

Bahasa Pemrograman

Bahan kita yang pertama adalah bahasa pemrograman. Sebuah bahasa pemrograman adalah tata cara penulisan yang dirancang untuk mengekspresikan perhitungan yang bisa dilakukan oleh mesin, khususnya komputer. Pemrograman bahasa dapat digunakan untuk membuat program yang mengontrol perilaku mesin, untuk mengekspresikan algoritma tepat, atau sebagai cara komunikasi manusia. Bahasa pemrograman juga dapat disebut notasi untuk menulis program, yang spesifikasi perhitungan atau algoritma.

Banyak bahasa pemrograman memiliki beberapa bentuk spesifikasi tertulis dari sintaks mereka (bentuk) dan semantik (makna). Beberapa bahasa yang didefinisikan oleh spesifikasi dokumen. Sebagai contoh, bahasa pemrograman C ditentukan oleh Standar ISO. Bahasa lain, seperti Perl, memiliki implementasi dominan yang digunakan sebagai referensi.

Bahasa-bahasa pemrograman yang paling awal mendahului penemuan komputer, dan digunakan untuk mengarahkan perilaku seperti mesin Jacquard tenun dan pemain piano. Ribuan bahasa pemrograman yang berbeda telah dibuat, terutama di bidang komputer, dengan banyak lagi yang diciptakan setiap tahun. Kebanyakan bahasa pemrograman menjelaskan perhitungan dengan gaya imperatif, yaitu, sebagai urutan perintah, meskipun beberapa bahasa, seperti yang yang mendukung pemrograman fungsional atau logika pemrograman, gunakan bentuk-bentuk alternatif deskripsi. [18]

Pustaka Pemrograman

Bahan kedua adalah pustaka, yaitu koleksi subrutin atau kelas yang digunakan untuk mengembangkan perangkat lunak. Perpustakaan berisi kode dan data yang memberikan layanan untuk program-program independen. Hal ini memungkinkan berbagi dan mengubah kode dan data dengan cara modular. Beberapa executables adalah kedua program mandiri dan perpustakaan, tetapi perpustakaan tidak executable. Executables dan perpustakaan membuat referensi dikenal sebagai link satu sama lain melalui proses yang dikenal sebagai link, yang biasanya dilakukan oleh sebuah linker. [19]

Alat Pemrograman

Sebuah tool pemrograman atau alat pengembangan perangkat lunak adalah program atau aplikasi yang pengembang perangkat lunak digunakan untuk membuat, debug, mempertahankan, atau mendukung program-program lain dan aplikasi. Istilah ini biasanya mengacu pada program yang relatif sederhana yang dapat dikombinasikan bersama untuk menyelesaikan tugas, lebih sebagai salah satu mungkin menggunakan peralatan tangan untuk memperbaiki beberapa objek fisik. [20] Beberapa alat dapat dilihat di Integrated_Development_Environment_(IDE)


Kontributor: Kocil, Estiyand

(c) Igos Center Bandung, 2009