city lake

city lake

Sabtu, 11 Juni 2016

Hal yang Perlu diperhatikan Jika Kita membuat Disain Sistem/Software


Beberapa hal yang perlu diperhatikan dalam mendesai system atau software yaitu antara lain :

1.         Cohesion
Cohesion berarti adalah seberapa fokus modul tersebut pada tugasnya. Kalau method methodnya mirip dalam berbagai aspek, maka dikatakan sebagai high cohesion. Cohesion akan turun dilihat bila sebuah method mengakses data yang tidak relevan dengan fungsinya. 

2.         Complexity
Salah satu cara melihat maintainability adalah kompleksitas kode. Cara ini sering disebut sebagai Cyclomatic Complexity, atau lebih dikenal dengan McCabe, atau juga dikenal sebagai Path Testing. Pada McCabe, yang diperhatikan adalah berapa banyak entry point, exit point, dan berapa banyak branch yang harus dilakukan program. Semakin kompleks sebuah code, maka rating McCabe semakin tinggi. Kode seperti ini biasanya tingkat kohesinya rendah. Kode yang tingkat kohesinya tinggi, biasanya menggunakan prosedur prosedur yang cukup simple. Pada rating McCabe yang tinggi, biasanya ada banyak return, ada banyak elseif, dan nested if..
Program dengan rating yang tinggi, cenderung juga untuk develop bug, dan terkenal sulit diperbaiki dan dilacak bugnya. Bila melakukan sebuah hal yang kompleks, lebih baik dipecah ke beberapa tahap atau module module yang masing masing spesialis melakukan tugasnya (lihat functional cohesion)

3.         Extensibility
Adalah hal penting dalam maintainability. Apabila dalam suatu point, misalnya client membutuhkan untuk promosi kartu kredit yang BCA misalnya, berapa banyak code yang harus dirubah? Atau client meminta program untuk compile laporan dari beberapa divisi yang berkaitan, misalnya gudang dan retail, berapa sulit dan berapa banyak yang harus dirubah?

4.         Scalability
Menentukan berapa lama program tersebut akan bisa bertahan seiring dengan perkembangan perusahaan. Program dengan scalability tinggi, sekali dibuat, walaupun untuk sebuah toko kelontong, tetapi akan tetap bisa digunakan sewaktu toko kelontong tersebut suatu saat menjadi sebuah hypermarket besar. Hal ini juga tidak terlepas dari peran efisiensi dari kode. Jangan banyak melakukan function function yang tidak perlu, lakukan caching, dan hindari repetition. Kalau seandainya harus ada repetition, lebih baik pisahkan menjadi subroutines yang terpisah. Perhatikan juga memory leaks, atau overflow error. Jangan ambil data yang tidak perlu. Misalnya hanya membutuhkan 1000 rows, tetapi yang difetch adalah 10000 rows pada client, kemudian melakukan join pada client program menggunakan LINQ atau HQL misalnya. Hal ini akan cepat membuat server wear-off, kecapean, dan overload, atau bahkan bisa terjadi network congestion.

5.         Reliability
Definisi reliability adalah kemungkinan terjadinya error dalam environment yang ideal untuk waktu yang tertentu. Kalau kemarin ada yang bilang mengenai virus tidak termasuk, maka kalau program dia bisa berfungsi tanpa henti tanpa error, itu termasuk dalam reliability testing. Pada intinya, adalah bagaimana program bisa berfungsi dalam situasi yang ideal.

6.         Robustness
Ini adalah tahap berikutnya dari reliability, atau bisa dikategorikan bagaimana reliability program pada situasi yang TIDAK ideal. Test yang dilakukan biasa disebut sebagai fuzzy test. Fuzz test dilakukan dengan memasukkan random data ke program, atau sengaja melakukan perusakan pada bagian program, dan mencatat defect-nya. Misalnya dengan melakukan direct API call ke bagian bagian yang tidak seharusnya di-call, atau melakukan perubahan perubahan pada database, atau misalnya menyuruh program untuk menghitung pembagian dengan sebuah array yang kosong, atau menularkan virus ke program, atau bahkan sampai merusak databasenya.

Biasanya pada robustness testing, akan terlihat bugs, seperti memory leak, crash, atau kegagalan transaction pada database, atau kadang sama sekali tidak mau start. Bila terjadi kerusakan disini, biasa bisa dilakukan reproduksi untuk melihat dimana program crash, untuk kemudian memperbaikinya.

7.         FaultTolerance
Tahap berikutnya dalam reliability testing adalah Fault Tolerance. Tidak semua programmer bisa merancang Fault Tolerance program, tetapi program program yang critical harus melalui Fault Tolerance testing. Fault Tolerance mentargetkan system self-stabilization, sebuah situasi dimana sebuah system akan sanggup membuat dirinya error free dalam lingkungan yang penuh error. Beberapa cara yang umum digunakan adalah

a. Replikasi. Yaitu membuat beberapa instance yang identik, dan mengirimkan task secara paralel, kemudian memilih hasil yang tepat sesuai quorum atau hasil terbanyak.
b. Redundancy. Adalah cara untuk mengimplementasikan identical instances, dan melakukan switch apabila salah satu dari instance tersebut mengalami kegagalan. Konsep ini juga biasa dikenal sebagai failover
c. Diversity. Yaitu membuat beberapa implementasi yang berbeda untuk spesifikasi yang sama, dan menggunakan modul modul tersebut sesuai dengan situasi yang terjadi di lapangan. Misalnya sebuah modul yang biasa bekerja pada hard drive, pada waktu terjadi kegagalan hard disk, maka aplikasi akan melakukan penggantian modul yang bekerja melalui ramdisk.

Inti dari fault tolerance adalah tidak ada single point of repair. Artinya, aplikasi harus tetap beroperasi tanpa terinterupsi oleh kegagalan sembari melakukan proses self repair. Selama dia melakukan repair, tugas diserahkan kepada modul modul yang sesuai untuk menangani situasi tersebut, mengisolasi titik titik failure point, dan melakukan rekonstruksi data, kemudian melakukan resume setelah repair selesai dilaksanakan. NIST mengkategorikan kerusakan komponen berdasarkan lokalisasinya, penyebabnya, efeknya, dan lama perbaikannya. Dari sana bisa program harus menentukan tindakan yang bisa diambil untuk menghindari dirinya tidak berfungsi. Terkadang sebuah failure bisa menyebar ke tempat lain, misalnya kerusakan database, yang menyebabkan pemrosesan data yang keliru, dan menyebabkan program untuk mengirim data yang salah ke module lain, yang pada gilirannya juga memproses data yang keliru. Hal ini berpotensi menimbulkan system-wide-failure. Sebuah aplikasi yang memiliki fault tolerance tingkat lanjut biasanya bisa mengenali kelainan kelainan ini, dan mengisolirnya, sehingga kerusakan tidak menyebar.

8.         Security
Security adalah bagaimana aplikasi anda memproteksi terhadap akses yang tidak semestinya. Apakah user bisa melangkahi role-nya? Apakah anda telah memperhitungkan semua kemungkinan yang bisa terjadi di lingkungan aplikasi bekerja? Misalnya aplikasi finance, apakah ada orang lain yang bisa merubah data payroll?

9.         Understandibilty
Lebih ke arah teknik programming. Aplikasi yang baik, codenya lebih baik mudah dimengerti, sehingga memudahkan maintenance nantinya. Kode yang mudah dibaca akan mudah dirubah. Programmer akan bisa menemukan lokasi yang akan dirubah dengan cepat dan mudah.

10.       Usability
Adalah aspek biasa, yang terlalu sering dibahas disini. Aspek ini adalah berapa mudah aplikasi anda digunakan oleh user? GUI yang bagus, AI yang pandai, bantuan bantuan bagi pemakai, akan membantu kualitas software anda. Karena aspek ke-10 ini adalah yang paling sering dibahas disini, ane rasa ane tidak perlu lagi membahas.

Perlunya Melakukan Kegiatan Desain Sebelum Melakukan Pemograman, dan Apa Saja Persiapannya


Ya tentu saja perlu dilakukan kegiatan desain sebelum melakukan pemograman, diantara hal yang haru dipersiapkan adalah :

1. Perencanaan
Langkah pertama kita adalah membuat perencanaan(planning).
Perencanaan adalah membuat semua rencana yang berkaitan dengan proyek sistem informasi. kalau kita ingin membangun rumah maka kita akan melakukan perencanaan bagaimana pondasinya , bagaimana struktur bangunannya, mau memakai material apa saja, apa warna dindingnya, tak ketinggalakan pula merencanakan anggaran budget yang harus kita keluarkan.

2. Analisa
Setelah perencanaan selesai, langkah berikutnya adalah membuat analisa (analyst). Analisa adalah menganalisa workflow sistem informasi yang sedang berjalan dan mengindentifikasi apakah workflow telah efisien dan sesuai standar tertentu.
Analisa dilakukan oleh Business Processs Analyst (BPA) yang berpengalaman dan/atau memahami workflow sistem manajemen di area yang sedang dianalisa.

3. Desain
Setelah proses analisa selesai, selanjutnya adalah membuat desain (desgin). Desain adalah langkah yang sangat penting dalam siklus SDLC karena langkah ini menentukan fondasi sistem informasi. kesalahan dalam desain dapat menimbulkan hambatan bahkan kegagalan proyek.
Ada 2 jenis desain yang dibuat di langkah ini, yaitu desain proses bisnis dan desain pemrograman.
a. Desain Proses Bisnis
b. Desain Pemrograman
Desain pemrograman dilakukan oleh Sistem Analis (SA) yaitu membuat desain yang diperlukan untuk pemrograman berdasarkan desain proses bisnis yang telah dibuat oleh BPA. desain ini akan menjadi pedoman bagi programmer untuk menulis source code. Desain pemrograman meliputi :
1). Desain database
2). Desain Screen Layout
3). Desain Diagram Proses
4). Desain Report Layout

4. Pengembangan
Pekerjaan yang dilakukan di tahap pengembangan (development) adalah pemrograman. Pemrograman adalah pekerjaan menulis program komputer dengan bahasa pemrograman berdasarkan algoritma dan logika tertentu. orangnya disebut Programmer.

5. Testing
Tak ada gading yang tak retak, sebuah peribahasa yang berarti tidak ada yang sempurna di dunia ini.Hal ini berlaku juga pada sistem informasi buatan manusia. oleh sebab itu, perlu suatu proses untuk menguji mutu sistem informasi . proses ini lazim disebut testing.
Testing adalah proses yang dibuat sedemikian rupa untuk mengidentifikasi ketidaksesuaian hasil sebuah sistem informasi dengan hasil yang diharapkan.

6. Implementasi
Implementasi adalah proses untuk menerapkan sistem informasi yang telah dibangun agar user menggunakannya menggantikan sistem informasi yang lama.
Proses Implementasi :
a. Memberitahu user
b. Melatih user
c. Memasang sistem (install system)
d. Entri/Konversi data
e. Siapkan user ID

7. Pengoperasian dan Pemeliharaan
Langkah Paling akhir adalah pengoperasian dan pemeliharaan.  selama sistem informasi beroperasi, terdapat beberapa pekerjaa rutin yang perlu dilakukan terhadap sistem informasi, antara lain :
a. System Maintenance
b. Backup & Recovery
c. Data Archive