Jumat, 20 Desember 2013

Dasar pemprograman


                                                              

 Dasar pemprograman berdisiplin

P
enyelesaian persoalan memakai komputer memerlukan perngkat keras dan perangkat lunak. Perangkat  keras berisi komponen komponen fisik seperti CPU (central procesing unit), memori dan perangkat masukan/keluaran pembentuk sistem. Perngakat lunak mengacu ke program yang mengendalikan operasi operasi perangkat keras untuk menyelesaikan masalah.
7.1 Perangkat lunak : Seni, Sains dan Rekayasa
                             Pengembangan perangkat lunak merupakan proses yang kompleks, gabungan seni dan sains. Proses ini merupakan seni dalam arti memerlukan imajinasi, kreativitas dan kecerdikan untuk menghasilkan perangkat lunak yang mengesankan. Juga merupkan sains karena menggunakan teknik, kakasdan metodologi sistematik yang memenuhi kaidah dan aturan sains serta rekayasa. Rekayasa perangkat lunak (softwareengineering) merupakan disiplin yang mempelajari teknik, metodologi, dan manajemen untuk menghasilkan perangkat lunak berkualitas.
                             Tahap tahap yang di lalui pengembangan perangkat lunak berfariasi sesuai sifat aplikasi/sistem. Berikut adalah tahap tahap generik pengembangan perangkat lunak. Urutan dan jenis aktivitas aktivitasyang benar benar di lakukan sesuai model proses dan metodologi yang di pilih.
1.   Analisis dan spesifikasi masalah
2.   Perancangan sistem
3.   Pengkodean atau pemprograman, serta integrasi
4.   Verifikasi dan validasi
5.   Pemeliharaan sistem
Analisis dan Spesifikasi Masalah
                             Mula mula program harus di analisis dan di rumuskan dengan spesifikasi lengkap, presisi, jelas dan tidak teranbigu. Kitadapat merumuskan dengan kurang formal namun ampuh meski tidak seampuh cara formal spesifikasi kurang formal misalnyadengan spesifikasi melalui prakondisi (precondition), poskondisi (postcondition), dan invarian.
Perancangn Sistem
                             Begitu spesifikasi di hasilkan di aktivitas analisis, perancangn sistem di lakukan untuk memenuhi spesifikasi. Perancangan mengikuti kaidah kaidah perancangan seperti modularitas, kejelasan(claricity), guna ulang (reusability), keterbacaan (readibility) dan sebagainya. Kriteria kriteria yang bertentangan harus di kompromikan sehingga memperoleh kualitas sistem yang optimal berdasar waktu, biaya dan usaha.
Pengkodean atau pemprograman, serta integrasi


Berikut adalah praktek praktek pemprograman yang baik
1.   Rencanakan perancangn program
2.   Pengapsulan terhadap modul modul
3.   Gunakan bagian bagian program yang telah ada
4.   Jadilah pembuat perkakas bantu di mana potongan program melakukan suatu kerja tertentu, atau memberi manfaat tertentu dengan sangat baik sehinggadapat di gunakan secara umum. Misalnya membuat pengurutan maka di usahakan potongn program dapat di gunakan di program lain.
                             Proses persiapan program tidak hanya menguntungkan secara ekonomi dan ilmiah tapi juga merupakan pengalaman estetika yang mengasikan seperti seorang komposer menyusun music atau penyair mengarang puisi.
Verifikasi dan Validasi
                             Program telah di hasilkan harus di periksa terhadap pemenuhan spesifikasi. Untuk melakukan ini maka program perlu di uji secara black-box maupun white box. Pengujian di tunjukan untuk menemukan cacat di program.
Pemeliharaan Sistem
                             Program akan selalu di kelola agar dapat berevolusi mengikuti perubahan lingkungan.
                             Petunjuk pembangunan perangkat lunak berdisiplin dan menyeluruh mengikuti kaidah rekayasa perangkat lunak.
7.2 Bahasa pemprograman adalah kakas  
                             Pemprograman mengharuskan pemahaman. Bahasa pemprograman merupakan kakas perancangan dan pemprograman. Hanya denagn memahami gagasan keberadaan fasilitas di bahasa yang memungkinkan program menjadi mahir menggunakan bahsasa. Pemprogram adalah aktivitasi mplementasi.
                             Pada bahsa orientasi objek, program di organisasisebagai koleksi entitas (objek) ADT. Koleksi entitas berinteraksi, bekerja sama, masing masing mempresentasi instan ADT. Definisi mengarah ke bahasa yang mendukung entitas entitas indhependen, di sebut objek. Perilaku entitas (objek) harus di definisi tipe yang dapat di definisikan oleh pemprogram.
                             Bahasa orientasi dapat meningkatkan peluang kekeliruan pemprogram yang sembrono. Pemprogram yang baik memerlukan disiplin yangmenjalankan prinsip prinsip gaya pemprograman yang baik. Penulisan program tidak sekedar mengetahui bentukan bentukan bahasa dalam merakitnya menjadi program. Pemprogram yang baik mengikuti suatu disiplin. Pemprogram yang mengikuti rancangan yang baik cenderung menjadi mudah diguna ulang, di perluas dan di lakukan debugging.
7.3 Gaya Pemprograman
7.3.1 Guna ulang (Reusability)
                             Perangkat lunak dapat di guna ulang mereduksi ongkos perancangan, pengkodean dan pengujian. Reduksi kode juga menyederhanakan pemahaman. Guna ulang mungkin di lakukan di bahasa non orientasi objek, namun bahasa orientasi objek meningkatkanya.
Aturan aturan untuk guna ulang [RUM91]:
1.   Jaga agar operasi koheren. Operasi adalah koheren jika operasi melakukan satu fungsi tunggal atau sekelompok fungsi terhubung erat. Jika operasi melakukan dua hal atau lebih yang tidakberhubungan maka pecahmenjadi operasi operasi lebih kecil.

2.   Jaga agar operasi berurutan kecil. Jika operasi berukuran besar, pecahan menjadi operasi operasi lebih kecil. Operasi yang melebihi satu atau dua halaman adalah terlalu besar. Dengan memecah operasi menjadi bagian bagian lebih kecil, kita dapat mengguna ulang bebereapa bagian meski seluruh operasi tidak di guna ulang.
3.   Jaga agar operasi konsisten. Operasi operasi serupa seharusnya menggunakan nama,kondisi, urutan argumen, tipe data, nilai krim, dan kondisi kesalahan yang sama.
4.   Pemisahan kebijakan dan implementasi. Operasi kebijakan melakukan keputusan. Operasi kebijakan mengendali alih di antara operasi operasi implementasi. Operasi kebijkan harus memeriksa status dan kesalahan, tidak melakukan implementasi atau kalkulasi mentasi algoritma kompleks secarara langsung. Operasi kebijakan sangat bergantung aplikasi, sederhana dan mudah di pahami. Operasi implentasi melekukan operasi operasi rinci spesifik tanpa tahu kenapa melakukan. Jika operasi implementasi menemui kesalahan, operasi hanya melakukan setatus, tidak melakukan aksi kesalahan. Jangan menggabungkan operasi kebijakan dan  implementasi di satu operasi.
5.   Menyediakan cakupan yang seragam. Jika kondisi masukan dapat terjadi di beragam kombinasi, tulis operasi untuk seluruh kombinasi, tidak hanya untuk saat itu. Contoh jika kita ingin menulis operasi memperoleh elementerhair di list maka kitajuga menulis operasi memperoleh elemen pertama.
6.   Perlebar operasi sebesar mungkin. Coba untuk generalisasi tipe argumen, prekondisi dan konstrain, asumsi cara kerja operasi dan konteks operasi. Buat aksi berati untuk nilai kososng, nilai batas dan nilai di luar batas.
7.   Menghindari infor masi global. Meminimkan pengacuan eksternal.
7.3.2          Kemampuan Perluasan
Pengkapsulan Kelas  (ADT)
                     Kelas ADT di kapsulkan jika strutur internal tesembunyi dar ADT-ADT lain. Hanya metode metode di kelas ADT itu hanya mengakses implementasi.
Penyembunyian struktur data
                     Jangan mengeksport struktur data metode. Struktur data internal spesifik algoritma metode. Jika kita mengeksport, kita membatasi fleksibilitas untuk berubah bagi algoritma itu.
Pembedaan operasi publik dan privat
                     Kita harus membedakan operasi publik dan privat. Operasi publik tampak dari luar ADT dan antar muka di publikasikan. Sekali operasi publik di gunakan ADT lain maka sangat mahal untuk mengubah antarmuka. Operasi privat adalah internal ADT untuk membantu mengimplementasi operasi publik.
7.3.3          Ketangguhan
                     Kita memrogram dengan tujuan memperoleh efisiensi penulisan metode, namun tidak boleh mengorbankan ketangguhan. Metode disebut tegar jika tidak gagal meski menerima para meter tidak benar. Ketangguhan melawan bug dapat trade-of (bertentangan) denagan tujuan efisiensi. Ketangguhan terhadap kesalahan pemakai tidak boleh di korbankan hanya untuk memperoleh efisiensi.
Perlindungan dari kesalahan
                     Perangkat lunak seharusnya melindungi diri dari masukan tidak benar. Masukan tidak benar seharusnya tidak pernah membuat sistem menjadi crash. Sembarang metode yang menerima masukan harus melekukan validasi masukan sehingga dapat menghindari petaka yang di sebabkan masukan itu.
                     Perancangan metode harus mempedulikan dua macam kondisi kesalahan, yaitu :
1.   Kesalahan pemakai aplikasi, kesalahan ini di definisikan selama analisis dan laporan kondisi ini ada di domain masalah.
2.   Kesalahan sistem di level  rendah berkaitan dengan aspek pemprograman metode. Kesalahan ini antara lain di sebabkan kesalahan sistem operasi seperti kesalahan alokasi memori kesalahan masukan /keluaran file, dan kegagalan perangkat keras. Program harus memriksa kesalahan kesalahan ini dan mencoba mati dengan degradasi secara perlahan dan nyaman.
                             Bahasa pemrograman orientasi objek strongly-type menyediakan perlindungan lebih besar terhadap kesalahan tipe.
Optimasi dilakukan setelah program berjalan benar
                             Kita melakukan optimasi program setelah program berjalan berjalan. Jangan melakukan optimasi program sampai kita memperoleh program yang telah bekerja benar.
Validasi argumen
                             Operasi yang tersedia untuk pemakai harus memriksa argumen argumen untuk mencegah kegagalan. Metode internal dapat mengasumsi argumen di berikan secara absah untukalasan efisiensi.
Penghindaran batasan terdefinisi
                             Kita menghindari batasan terdefinisi lebih dulu. Bila mungkin gunakan alokasi memori diamis untuk mencipta struktur data yang tidak mempunyai batas. Selama perancangan, memprediksi kapasitas maksimum adalah halyang sulit.
Fasilitas debuging dan monitoring
                             Kita seharusnya melengkapi program dengan fasilitas debugging, statistik dan monotoring.
7.4 Petunjuk Pemprogram
                                 Pemprogram aplikasi yang besar dan kompleks memerlukan kerja tim yang kompak. Berikut inin adalah petunjuk bagus untuk pemprogram.
1.       Jangan memulai pemprogram bila belum siap. Adalah hal yang panting untuk melengkapi proses perancangan sebelum implementasisecara tuntas. Semua metodologi pengembangangan menekankan pentingnya perancangan memadahi lebih dulu, kemudian melakukan pengkodean.
2.       Jaga agar metode metode mudah di pahami. Metode mudah di pahami jika orang yang bukan pencipta metode dapat memahamikode yang di tulis. Menjaga metode berukuran kecil dan koheren membantu sasaran ini.
3.       Buat agar metode mudah di baca. Pemberian nama variabel yang memiliki arti membantu sasaran ini.
4.       Gunakan nama yang sama debgan yang di gunakan di model objek.
5.       Pilihlah nama identifier secara berhati hati.
6.       Gunakan petunjuk pemprogram yang telah di pakai tim.
7.       Lakaukan pemaketan ke modul. kelompokan fungsi fungsi serupamenjadi satu modul.
8.       Lakukan dokumentasi terhadap kelas (ADT) dan metode.
9.       Lakukan publikasi spesifikasi.
7.5 Pustaka dan “Don’t  Reinvent The Wheel”
                             Ketersediaan pustaka berarti banyak komponen tidak perlu di implementasi ulang oleh pemprogram. Struktur seperti set, dynamic array, list, queue, stack, dictionary, tree, dan sebagainya biasanya telah di sediakan paket kompilator. Ini biasa di sebut kelas wadah (container) yang berguna sebagai kerangka kerja untuk mengorganisasi koleksi.
                             Bashasa C++ memulai standirasi pustaka seperti STL (standart template library),. Selain itu lingkungan bahasa pemprograman seperti microsoft visual C++ menyediakan pustaka MFC (Microsoft foundation class), ATL (active template library), Borland C++ menyediakan OWL (object windows library), Delphi menyadiakan komponen, Java menyediakan JFC (Java foundation class).
                             Kita hendaklah memantfaatkan pustaka semaksimal mungkin. Bila tidak tersedia di pustaka standar, uahakan untuk dapat memperoleh pustaka pihak ketiga yang apat dihandalkan trutama yang terdapat kode sumber. Bila ternyaryata keperluan kita begitu spesifik maka buatlah pustaka sendiri berdasar analisis dan rancangan domain. Basis representasi adalah pustaka standart di bahasa yang di gunakan.
                             Jangan berusaha untuk menemukan roda pedati yang telah di temukan ber bentuk lingkaran. 

1 komentar:

Unknown mengatakan...

makasih sangat membantu gan :)

Posting Komentar