Belajar Kilo Line of Code (KLOC)

 

Rekayasa Software

Definisi :

Apa yang dimaksud dengan Rekayasa Perangkat Lunak  / software engineering  ?

Ada banyak definisi mengenai rekayasa software (RPL) Tetapi hal-hal mendasar tentang rekayasa perangkat lunak (RPL) adalah tentang :

  1. Pengembangan perangkat lunak secara tim (kelompok) dan bukan secara perorangan
  2. Memanfaatkan prinsip-prinsip rekayasa dalam pengembangan system
  3. Termasuk aspek teknis dan non teknis.

Tujuan :

Tujuan dari Rekayasa Perangkat Lunak (RPL) adalah sama seperti pengertian rekayasa dalam bidang-bidang lainnya, tujuan dari Rekayasa Perangkat Lunak adalah menghasilkan produk perangkat lunak, dilihat dari segi biaya, secara efektif.

Produk perangkat lunak dapat dikelompokkan menjadi dua jenis, yaitu :

  1. Produk Generik, perangkat lunak, yang dikembangkan oleh sebuah perusahaan dengan ciri dapat berdiri sendiri dan dijual kepada siapapun dipasar terbuka, Artinya produk tidak dikhususkan untuk sebuah perusahaan saja.
  2. Produk Spesifik, perangkat lunak pesanan sebuah perusahaan, dikembangkan khusus untuk perusahaan tersebut oleh pihak kontraktor. Sehingga produk menjadi khas hanya untuk perusahaan tersebut saja.

Ciri dari perangkat lunak yang telah direkayasa dengan baik adalah :

  1. Mudah dirawat , perangkat lunak harus dapat disesuaikan dengan perkembangan/ perubahan kebutuhan user. Artinya perangkat lunak harus  terdokumentasi dengan baik, sehingga mudah untuk melakukan perubahan.
  2. Dapat diandalkan, perangkat lunak harus bekerja sesuai dengan yang diharapkan. Tidak mengakibatkan kerugian baik fisik maupun materi saat terjadi kegagalan.
  3. Efisien, perangkat lunak harus tidak memboroskan baik memory maupun processor cycle.
  4. Mudah dipakai, perangkat lunak harus mempunyai user interface yang baik dengan dokumentasi yang memadai.

Seorang Perekayasa perangkat lunak harus mempunyai kemampuan :

  1. Menguasai teknik-teknik komputerisasi
  2. Juga harus memiliki kemampuan berkomunikasi baik secara lisan maupun tertulis
  3. Tanggap terhadap pentingnya manajemen proyak
  4. Dapat memahami kesulitan yang dihadapi oleh pemakai (user) dalam berinteraksi dengan perangkat lunak yang tidak mereka pahami bagaimana cara kerjanya.

Prototype

Ada dua macam prototype yaitu :

  1. Tipe pertama, prototype yang nantinya akan dikembangkan menjadi system operasional, bentuk ini sering disebut sebagai evolutionary protoyipe.
  2. Tipe kedua, prototype yang hanya akan menjadi cetak biru (blue print) dari system yang dikembangkan, bentuk ini sering disebut sebagai throwaway prototype.

Manfaat digunakannya prototype adalah membuat pengembang system dan pemakai mempunyai ide tentang bagaimana bentuk akhir dari system akan bekerja.

Adapun kegiatan menghasilkan prototype disebut juga dengan prototyping.

Tahap proses pembuatan prototype pertama  (evolutionary prototype)

Tahap-tahap proses pembuatan prototype tipe pertama (evolutionary prototype)

  1. Tentukan kebutuhan. Tentukan apa kebutuhan user. Analis system mewawancarai user untuk mendapatkan ide tentang apa yang diinginkan oleh user dari system yang akan dikembangkan.
  2. Buat prototype. Analis system bekerja sama dengan ahli computer yang lain, dengan memanfaatkan satu atau beberapa alat bantu untuk pembuatan prototype, mengembangkan prototype.
  3. Evaluasi. Analis system memperkenalkan prototype kepada user, menuntun user untuk mengenali karakteristik dari prototype. Dari kesempatan uji coba ini, user akan memberikan pendapatnya pada analis system. Kalau prototype diterima dilanjutkan ke tahap 4. Kalau ada perbaikan maka langkah berikutnya adalah mengulangi tahap1, 2 dan 3 dengan pengertian  yang lebih baik tentang apa yang diinginkan oleh user.
  4. Gunakan Prototype. Prototype menjadi system yang operasional.

Tahap proses pembuatan prototype kedua (throwaway prototype)

Tahap-tahap proses pembuatan prototype tipe kedua (throwaway prototype)

  1. Tentukan kebutuhan. Tentukan apa kebutuhan user. Analis system mewawancarai user untuk mendapatkan ide tentang apa yang diinginkan oleh user dari system yang akan dikembangkan.
  2. Buat prototype. Analis system bekerja sama dengan ahli computer yang lain, dengan memanfaatkan satu atau beberapa alat bantu untuk pembuatan prototype, mengembangkan prototype.
  3. Evaluasi. Analis system memperkenalkan prototype kepada user, menuntun user untuk mengenali karakteristik dari prototype. Dari kesempatan uji coba ini, user akan memberikan pendapatnya pada analis system. Kalau prototype diterima dilanjutkan ketahap 4. Kalau ada perbaikan maka langkah berikutnya adalah mengulangi tahap1, 2 dan 3 dengan pengertian yang lebih baik tentang apa yang diinginkan oleh user.
  4. Program system. Pemrogram memanfaatkan prototype sebagai pedoman untuk mengembangkan system yang operasional.

Persamaan dan perbedaan dari dua prototype tersebut adalah :

  1. Pada tipe pertama, prototype yang dibuat akan menjadi system operasional. Artinya prototype dikembangkan sesuai dengan karakteristik dan bentuk akhir dari produk yang diinginkan.
  2. Pada tipe kedua, prototype yang dibuat hanya akan memperlihatkan perkiraan bentuk sistemnya saja, tidak berisi komponen-komponen penting lainnya.

Manfaat prototyping untuk pengembangan system , untuk system skala kecil, prototyping dapat menggantikan daur hidup pengembangan system. Tetapi pada system skala besar, prototyping menjadi bagian dalam daur hidup pengembangan system.

Apa yang menarik dari prototyping ?

Baik user maupun pengembang system seringkali sangat menyukai prototyping karena :

  1. Terjadi peningkatan kumunikasi antara user dengan pengembang system
  2. Analis system dapat bekerja lebih baik dalam menentukan kebutuhan user
  3. Peningkatan peran user pada pengembangan system
  4. System dapat dikembangkan lebih cepat
  5. Tahap implementasi menjadi lebih mudah, karena user sudah mengenali apa yang dapat dihasilkan oleh system yang dikembangkan.

Hal-hal negative yang terdapat dalam pemenfaatan prototyping antara lain :

  1. Keinginan untuk cepat selesai, seringkali mengabaikan definisi masalah, evaluasi maupun dokumentasi yang baik
  2. User bisa berharap terlalu banyak dari system yang sedang dikembangkan
  3. Prototyp (tipe yang pertama) seringkali bekerja tidak efisien.

Sebagai bagian dari daur hidup pengembangan system, prototyping dapat dimanfaatkan pada :

Tahapan

Pemanfaatan

Perencanaan

Penentuan masalah


Penentuan tujuan dari system

Analisa

Penentuan kebutuhan informasi

Perancangan

Mempersiapkan rancangan rinci


Evaluasi alternative konfigurasi sistem

Ciri-ciri prototype yang baik adalah :

  1. Beresiko tinggi. Problemnya tidak terstruktur dengan baik, perubahan-perubahan sering terjadi sepanjang waktu, dan kebutuhan datanya tidak tentu.
  2. Dialog User – Komputer. Tampilan layar sebagai sarana interaksi antara user dengan computer.
  3. Banyak User. Kesepakatan untuk rancangan rinci sulit diperoleh tanpa ebuah bentuk yang dapat diperlihatkan kepada user.
  4. Ingin cepat selesai. User ingin segera melihat bagimana system bekerja
  5. SIngkat. Sistem hanya dipakai untuk jangka waktu yang singkat saja.
  6. Inovatif.  Sistem adalah sesuatu yang sangat inovatif, me-manfaatkan teknologi perangkat keras maupun perangkat lunak yang canggih (terbaru).
  7. Berubah-ubah. Sistem memahami apa yang diinginkan oleh user Aplikasi yang tidak mempunyai cirri-ciri seperti diatas, umumnya dapat dikembangkan dengan Daur Hidup Pengangmabnag Sistem Tradisional (klasik).

Dur Hidup Pengembangan Sistem tradisional atau disebut juga Daur Hidup Pengembangan Sistem  klasik, model yang paling awal dipakai dan tetap banyak dipakai sampai saat ini Model Water Fall (air terjun), pola peralihan dari satu tahapan ke tahap lainnya  dapat dibayangkan seperti sebuab air terjun.

Kelemahan dari Daur Hidup Pengambangan Sistem Tradisional (klasik)  adalah :

  1. Bentuk kerja dari system yang dibuat baru dapat dilihat menjelang akhir dari jangka waktu proyek.
  2. Proyek jarang sekali berjalan sesuai dengan alur yang digambarkan. Pengulangan-pengulangan seperti yang di modelkan seringkali harus dilakukan sehingga sering  menimbulkan problema tersendiri.
  3. Acapkali sulit bagi user untuk menyatakan secara jelas semua kebutuhannya.  Sedangkan paradigm ini sangat membutuhkan hal tersebut diawal tahapannya.

Daur Hidup Pengebangan Sistem tradisional (klasik) dapat dilihat :

  1. Definisi Kebutuhan. Perangkat lunak seringkali adalah bagian dari system yang lebih besar. Sehingga selalu diawali dengan menentukan  kebutuhan untuk semua komponen system, baru kemudian mengalokasikan sebagian dari kebutuhan itu ke dalam perngkat lunak.
  2. Analisa Kebutuhan Perangkat Lunak. Penentuan spesifikasi kebutuhan system yang diperlukan untuk program yang akan dibuat, fungsi-fungsi apa saja yang harus ada, unjuk kerja (performance) yang diharapkan dan antarmuka (interfacing) dengan system lain.
  3. Perancangan. Perancangan sesungguhnya adalah sejumlah langkah-langkah yang difokuskan pada atribut dari program yaitu : struktur data, arsitektur perangkat lunak, prosedur rinci, karakteristik dari antar muka. Perancangan menerjemahkan kebutuhan menjadi gambaran bentuk program sebelum dikembangkan.
  4. Konstruksi. Rancangan harus diterjemahkan ke bentuk yang dipahami oleh mesin (ke bentuk program). Rancangan yang dibuat rinci akan memudahkan tahap pembuatan program.
  5. Pengujian. Dimulai semenjak program selesai dibuat. Pengujian dilakukan untuk memastikan semua perintah berjalan dengan benar, dan untuk menemukan kesalahan yang mungkin ada. Pengujian dilakukan untuk memastikan apa yang dihasilkan telah sesuai dengan yang diinginkan.
  6. Perawatan. Tidak diragukan lagi bahwa suatu saat setelah digunakan oleh user, perangkat lunak akan membutuhkan perubahan. Perubahan dilakukan karena ditemukannya kesalahan, karena adanyanperubahan kebutuhan, atau karena perubahan lingkungan (system operasi, peralatan, dll). Perawatan adalah mengulang tahapan yang telah dilalui untuk perbaikan, dan bukan membuat sebuah program baru.

Proses pengembangan perangkat lunak dapat dikelompokkan  dalam tiga tahapan proses yaitu :

  1. Definisi (definition)
  2. Pengembangan (development)
  3. Perawatan (maintenance)

Pada tahapan Definisi :

Tahap penetapan kebutuhan utama (kunci) dari system. Terfokus pada pertanyaan  apa (what). Informasi apa yang akan diproses, Fungsi dan unjuk kerja yang diinginkan, Antar muka apa yang harus tersedia, Apa batasan rancangan yang ada, Validasi seperti apa yang diperlukan.

Kegiatan yang dilakukan pada tahapan definisi yaitu :

  1. Analisa system. Analisa system menentukan peran dari masing-masing komponen dalam system informasi yang terkomputerisasi, terutama tentang apa yang dapat dilakukan oleh perangkat lunak yang akan dikembangkan.
  2. Perencanaan Proyek Perangkat Lunak. Setelah cakupan dari perangkat lunak ditetapkan, dan resiko telah dianalisa. Maka sumber daya mulai diatur, biaya diperkitakan dan tugas maupun jadwal kerja ditetapkan.
  3.  Analisa Kebutuhan Sistem. Cakupan perangkat lunak menentukan arah pengembangan, tetpi definisi yang lebih terinci dari lingkup informasi maupun kemampuan perangkat lunak sangat diperlukan sebelum pengembangan dapat dilakukan.

Pada tahapan Pengembangan :

Tahap ini diterfokuskan pada pertanyaan bagaimana (how). Pengembang perangkat lunak berusaha untuk menetapkan bentuk struktur data, dan arsitektur dari system yang akan dirancang, bagaimana mengimplementasikan prosedur-prosedur yang diinginkan, bagaimana rancangan diterapkan dalam bahasa pemrograman, bagaimana pengujian akan dilakukan.

Kegiatan yang dilakukan pada tahapan pengembangan yaitu :

  1. Perancangan perangkat lunak. Rancangan adalah menerjemahkan kebutuhan dari perangkat lunak ke dalam bentuk-bentuk (kadang berbentuk grafik, table, atau kebentuk spesifik lainnya) yang mendefinisikan tentang struktur data, arsitektur perangkat lunak, algoritman dari prosedur, dan karakteristik dari antar muka.
  2. Pengkodean (coding). Bentuk rancangan haruslah dialihkan ke bahasa computer (baik procedural maupun on-prosedural language), yang dapat dilaksanakan (dipakai bekerja) oleh computer).
  3. Pengujian Perangkat Lunak. Setelah perangkat lunak selesai, haruslah dilakukan pengujian untuk menemukan penyimpangan yang ada baik pada fungsi-fungsinya, logikanya maupun pada penerapannya.

Pada tahapan Perawatan :

Tahap ini terfokuskan pada perubahan, yang dikaitkan dengan : Perbaikan kesalahan , adaptasi yang diperlukan, sesuai dengan perubahan kebutuhan pemakai.

Kegiatan yang dilakukan pada tahapan perawatan yaitu :

  1. Koreksi. Sekalipun telah diterapkan aktifitas untuk menjamin kualitas dari perangkat lunak, tetp ada kemungkinan bahwa pemakai akan menemukan cacat di dalam perangkat lunak yang dibuat. Koreksi (corrective maintenance) dilakukan untuk memperbaiki kesalahan-kesalahan yang ditemukan.
  2. Adaptasi. Dalam perjalanan waktu, lingkungan (CPU, system operasi, peralatan) dimana perangkat lunak dipakai akan mengalami perubahan. Adaptasi (adaptive maintenance) dilakukan untuk memungkinkan perangkat lunak tetap dipakai walaupun lingkupan lainnya telah mengalami perubahan.
  3. Peningkatan. Selama pemakaian perangkat lunak, pemakai akan merasakan kebutuhan tambahan yang diperlukan. Peningkatan (perfective maintenance) dilakukan untuk menumbuhkan fungsi-fungsi baru diluar cakupan kebutuhan awal dari perangkat lunak.

Manajemen Proyek Perangkat Lunak.

Manajemen Proyek Perangkat Lunak memberikan pengertian tentang :

  • Cakupan pekerjaan yang harus diselesaikan
  • Resiko yang harus dihindari
  • Sumberdaya yang dibutuhkan
  • Tugas-tugas yang harus diselesaikan
  • Patokan/pedoman yang harus diikuti
  • Biaya yang dapat dimanfaatkan
  • Jadwal yang harus dipenuhi

Manajemen Proyek Perangkat Lunak sangat penting dalam kaitannya agar proyek bisa berjalan dengan sukses. MPPL dimulai sebelum pekerjaan teknis dimulai, berlangsung selama perangkat lunak berevolusi dari konsep kebentuk nyata, dan hanya berakhir ketika perangkat lunak sudah tidak lagi dipakai.

Software Metrics

Software metrics mengandung pengertian pengukuran terhadap perangkat lunak terutama sekali yang berkaitan dengan produktifitas dan kualitas.

Seperti pengukuran dalam dunia nyata, maka ada dua kategori pengukuran perangkat lunak yaitu pengukuran langsung dan pengukuran tidak langsung.

Pengukuran langsung adalah

  • Menghitung banyaknya baris program yang dihasilkan (LOC – Line of Code)
  • Kecepatan proses
  • Ukuran memory yang dipakai

Pengukuran tidak langsung adalah

  • Fungsionalitas
  • Kualitas
  • Kompleksitas
  • Efisien
  • Kehandalan

Pengukuran terhadap perangkat lunak bertujuan untuk :

  1. Mengetahui kualitas dari perangkat lunak
  2. Menilai produktifitas pembuat perangkat lunak
  3. Menilai manfaat (dilihat dari sisi produktifitas dan kualitas) yang diperoleh dari pemanfaatan metoda rekayasa yang baru
  4. Dijadikan dasar melakukan perkiraan
  5. Membantu memutuskan apakah diperlukan peralatan baru ataupun pendidikan tambahan.

Kategori yang terdapat didalam Software Metric

  1. Productivity Metrics – difokuskan pada keluaran dari proses rekayasa perangkat lunak
  2. Quality Metrics – memperlihatkan indikasi sejauh mana secara langsung maupun tidak perangkat lunak sesuai dengan kebutuhan dari pelanggan
  3. Technical Metrics – difokuskan pada karakteristik dari perangkat lunak, kerumitan logika maupun tingkat modularity.
  4. Size Oriented Metrics – adalah pengukuran langsung terhadap perangkat lunak. Dipakai untuk memperoleh nilai keluaran dan kualitas dari rekayasa perangkat lunak, misalnya LOC/KLOC (Line Of Code / Kilo Line Of Code). Besar kecilnya perangkat lunak yang dikembangkan dilihat dari berapa banyak baris instruksi yang harus ditulis (LOC – Line Of Code). Atau KLOC – Kilo Line Of Code). Produktivitas pengembang perangkat lunak  dihitung dengan formula :

Produktivitas  = KLOC / orang

Artinya banyaknya baris instruksi dibagi dengan jumlah yang mengerjakannya.

Kualitas perangkat lunak dihitung dengan formula

Kualitas = Kesalahan /KLOC

Artinya jumlah kesalahan yang ditemukan setelah perangkat lunak dipakai dibagi dengan banyaknya baris instruksi.

  1. Function Oriented Metrics – adalah pengukuran tidak langsung terhadap perangkat lunak. Difokuskan pada fungsionalitas dan utilitas dari program. Function Point diperoleh dari penghitungan terhadap nilai-nilai yang dapat diukur dari perangkat lunak, dan evaluasi terhadap tingkat kerumitan perangkat lunak.

Function Point diperoleh dari menghitung lima karakteristik yang terdapat di dalam sebuah perangkat lunak. Kelima karakteristik tersebut adalah :

  1. Jumlah user input  – semua user input yang dibutuhkan oleh tiap aplikasi dihitung. Bedakan user input dari inquiry.
  2. Jumlah user output – semua keluaran dihitung. Keluaran disini maksudnya adalah laporan, tampilan layar, pesan kesalahan dll.
  3. Jumlah user enquiries – semua enquiry dihitung. Inquiry adalah masukan secara on-line yang mengakibatkan respon keluaran secara on-line
  4. Jumlah file – semua file yang ada dihitung, sekalipun file-file tersebut pada akhirnya membentuk sebuah basis data.
  5. Jumlah antar muka eksternal – semua bentuk antarmuka (bias file di dalam tape atau disk) terhadap system yang lain.

Feature – Oriented Metrics – sama seperti Function Oriented Metrics adalah pengukuran tidak langsung terhadap perangkat lunak. Difokuskan pada pengukuran terhadap fungsionalitas dan utilitas dari program. Terutama untuk aplikasi dengan algoritma yang rumit, seperti misalnya yang terdapat pada aplikasi real-time, process control dan embedded software. Pada Feature Oriented Metrics juga dikenal Feature Point.

Feature Point diperoleh dari menghitung enam karakteristik yang terdapat didalam sebuah perangkat lunak. Keenam karakteristik tersebut adalah :

  1. Jumlah user input – semua user input yang dibutuhkan oleh tiap aplikasi dihitung. Bedakan user input dari inquiry
  2. Jumlah user output – semua keluaran dihitung. Keluaran disini maksudnya adalah laporan, tampilan layar, pesan kesalaah dll
  3. Jumlah user enquiries – semua enquiry dihitung. Inquiry adalah masukan secara on-line yang mengakibatkan respon keluaran secara on-line
  4. Jumlah file – semua file yang akan dihitung, sekalipun file-file tersebut pada akhirnya membentuk sebuah basis data
  5. Jumlah antarmuka ekseternal – semua bentuk antamuka (bias file didalam tape atau disk) terhadap system yang lain.
  6. Jumlah algoritma – semua algoritma penanganan permasalahan yang terdapat di dalam program (manipulasi matrix, penanganan interrupt, dll).
  1. Human Oriented Metrics – memperlihatkan tingkah laku manusia saat mengembangkan perangkat lunak, dan persepsi pengembang terhadap efektifitas dari metode dan tool yang dipakai.

Faktor-faktor yang harus dimiliki oleh sebuah pernagkat lunak untuk dapat dikatakan mempunyai kualitas yang baik. Yaitu :

  1. Correctness – bekerja dengan baik dan benar
  2. Maintainability – mudah dirawat : baik itu diperbaiki, disesuaikan ataupun ditingkatkan.
  3. Integrity – mempunyai tingkat pengamanan yang baik, dan tahan gangguan
  4. Usabiity – mudah digunakan, ramah terhadap pemakai (user friendly)

Correctness

Adalah perangkat lunak bekerja dengan benar dan baik. Maksudnya adalah tingkat kebenaran yang dicapai oleh perangkat lunak untuk melaksanakan fungsi-fungsi yang telah ditentukan. Nilai Correctness dihitung dengan : Kesalahan /KLOC (Kilo Line of Code). Kesalahan adalah penyimpangan yang ditemukan / diperoleh dari laporan user setelah  perangkat lunak dipakai.

Maintainability

Adalah mudah dirawat; baik itu diperbaiki bila ada kesalahan, disesuaikan bila dibutuhkan perubahan, ataupun ditingkatkan bila ada fungsi-fungsi baru yang ingin ditambahkan. Pengukuran secara tidak langsung untuk maintainability adalah dengan MTTC (mean time to change). Waktu yang dibutuhkan untuk menganalisa perubahan, merancang perubahan yang diinginkan, implementasi perubahan tersebut, pengujian, dan mendistribusikan kepada user. Perangkat lunak yang mudah dirawat akan mempunyai nilai MTTC yang kecil.

Integrity

Adalah mempunyai tingkat pengamanan yang baik dan tahan gangguan. Maksudnya adalah mempunyai tingkat security yang baik terhadap gangguan yang disengaja, maupun yang tidak disengaja dari hacker maupun virus computer. Gangguan  bias terjadi pada program, data maupun dokumen.

Usability

Adalah mudah digunakan ; ramah terhadap pemakai (user friendly). Usability adalah usaha untuk ramah terhadap pemakai, hal ini bias diukur dari empat karakteristik yang ada yaitu : kemampuan fisik maupun intelektual minimal yang harus dimiliki waktu yang dibutuhkan untuk menguasai peningkatan produktifitas yang dicapai penerimaan oleh user.

Pada perencanaan Proyek perangkat lunak ada dua aktifitas utama yang dilakukan yaitu :

  1. Menentukan Cakupan Perangkat Lunak (software scope) yang meliputi :
    1. Function – fungsi-fungsi apa saja yang harus ada
    2. Performance – unjuk kerja seperti apa yang diinginkan
    3. Constraint – keterbatasan perangkat lunak yang diakibatkan oleh perangkat keras yang tersedia, ataupun system lain yang ada.
    4. Interface – antarmuka dengan system lainnya
    5. Reliability – tingkat keandalan yang dikehendaki
  1. Estimasi / perkiraan kebutuhan sumber daya. Sumber daya yang dimaksud terdiri dari :
    1. Perangkat keras
    2. Perangkat lunak
    3. Manusia / pekerja informasi

Rencana Proyek Perangkat Lunak

Rencana proyek perangkat lunak berisi : sumber daya yang tersedia untuk proyek . uraian pekerjaan, jadwal pelaksanaan.

Langkah persiapan dalam merekayasa perangkat lunak yakni :

  1. Definisi Kebutuhan Sistem (system requirement definition) adalah pernyataan, biasanya dalam bentuk kalimat, yang menyatakan apa yang diharapkan oleh user dari system yang akan dikembangkan.
  2. Spesifikasi Kebutuhan Sistem (system requirement specification) adalah dokumen menjelaskan secara rinci tentang apa yang diinginkan user dari system yang akan dikembangkan. Dokumen ini harus menjelaskan secara rinci  dan tepat sehingga dimengerti  secara teknis baik oleh user maupun pihak pengembang.
  3. Spesifikasi Perangkat Lunak (software specification) adalah deskripsi abstrak dari perangkat lunak, yang akan menjadi dasar dalam perancangan dan pengembangan. Harus ada kaitan yang jelas antara dokumen ini dengan Spesifikasi Kebutuhan Sistem. Tetapi [erbedaan yang nyata adalah dokumen ini ditujukan terutama sekali kepada perancang perangkat lunak, dan bukan untuk user maupun pihak manajemen.

Kebutuhan user dapat diformulasikan berdasarkan tahapan-tahapan seperti pada diagram berikut :

Tahapan yang terdapat pada kegiatan merancang (design) perangkat lunak beserta hasil dari tiap tahapan dapat dilihat pada diagram berikut :

  •  Rancangan arsitektur – sub system –sub system yang membentuk system secara keseluruhan diidentifikasikan dan di dokumentasikan
  • Spesifikasi Abstrak – untuk tiap sub system, spesifikasi abstrak tentang kemampuan yang diinginkan dan lingkungan operasinya ditentukan.
  • Rancangan antarmuka – untuk tiap sub system, antarmuka dengan sub system lainnya dirancang dan di dokumentasikan
  • Rancangan komponen – kemampuan dari tiap sub system disebarkan ke dalam komponen-komponen yang membentuk sub system
  • Rancangan struktur data – struktur data yang dipakai didalam system dirancang dan di spesifikasikan secara rinci
  • Rancangan algoritma – algoritma untuk pelaksanaan tugas di rancang dan di spesifikasikan secara rinci

Ada dua pendekatan / strategi yang dapat diterapkan dalam merancang perangkat lunak adalah rancangan yang berorientasi Fungsional (Function Oriented design) dan Rancangan yang berorientasi Objek (Object Oriented Design)

  • Rancangan berorientasi Fungsional (Functional Oriented Design) adalah system dirancang dengan pendekatan fungsional, mulai dari rancangan global kemudian menurun secara bertahap sampai diperoleh rancangan rinci. Proses disusun secara sentralisasi, dan dibagi-bagi kedalam tiap fungsi. Strategi ini yang dipakai pada Rancangan Terstruktu
  •  Rancangan yang berorientasi Objek (Object Oriented Design) adalah system dilihat sebagai kumpulan daro objek. Proses disusun secara desentralisasi dan tiap objek mengatur informasinya sendiri. Objek berkomunikasi dengan objek lainnya dengan jalan saling mempertukarkan informasi. Ide dasar dari rancangan yang berorientasi objek adalah menyembunyikan informasi (Information Hiding).

Tergantung dari aplikasi dan kebutuhan, rancangan yang baik adalah

  • Rancangan yang memungkinkan dihasilkannya program yang efisien
  • Rancangan minimal yang pada implementasinya dapat dilakukan dengan sangat kompak
  • Rancangan yang akan sangat mudah dirawat (maintainable design)

Rancangan yang mudah dirawat (maintainable design) adalah rancangan yang siapn (mudah) diadaptasi, dalam pengertian diubah fungsi

Apa yang dimaksud dengan Software Reusability ?

Software Resaubility adalah karakteristik penting dari sebuah komponen perangkat lunak. Maksudnya adalah komponen harus dirancang dan di implementasikan sedemikian rupa agar dapat dimanfaatkan oleh beberapa program.

Apa yang dimaksud dengan System Software ?

System Software adalah sekumpulan dari program yang dibuat untuk melayani/mengatur program-program lainnya. Dengan karakteristik umum yaitu banyak berinteraksi dengan perangkat keras computer. Contohnya : compiler, editor, file management utility, operation system, driver, telecommunication processor.

Apa yang dimaksud dengan real-time software ?

Real-time software adalah perangkat lunak yang memonitor, menganalisa, mengontrol kejadian atau peristiwa yang sedang terjadi.

Komponen dari real-time software  terdiri daro :

  1. Komponen penerima data, mengumpulkan dan memformat informasi dari lingkungan luar.
  2. Komponen penganalisa, yang menghasilkan informasi seperti yang dibutuhkan oleh aplikasinya.
  3. Komponen control/output, yang member respon/tanggapan untuk lingkungan luar
  4. Komponen pengendali, mengkoordinasikan komponen lainnya agar dapat memberikan respon secara real-time.

Apa yang dimaksud dengan interaktif software ?

Interaktif Software adalah perangkat lunak yang didalam kegiatn/aktifitas prosesnya membutuhkan respon dari pemakai.

Apa yang dimaksud dengan Perangkat Lunak / software ?

Perangkat  lunak bukan hanya berarti program untuk aplikasi atau produk tertentu. Tetapi juga termasuk dokumentasi yang dibutuhkan untuk memasang (install), memakai, mengambangkan dan memlihara program tersebut.

Kohesi adalah salah satu nilai untuk mengukur seberapa jauh keterkaitan antara aktifitas di dalam sebuah modul dengan aktifitas di dalam modul yang lainnya. Semakin terpisah aktifitas di dalam sebuah modul dengan aktifitas pada modul lainnya, semakin tinggi (baik) kohesinya.

Kopling adalah salah satu nilai untuk mengukur seberapa bersih modul-modul rancangan terpisah satu dengan lainnya (kualitas hubungan antar modul). Semakin terpisah sebuah modul dari modul lainnya semakin rencah (baik) koplingnya.

Kohesi dan kopling adalah sama-sama cara untuk mengukur seberapa baik sebuah rancangan telah diuraikan kedalam modul-modul yang lebih rinci. Tingkat Kohesi diantara modul-modul rancangan seringkali menentukan bagaimana tingkat kopling yang terjadi. membuat modul-modul dengan tingkat kohesi yang tinggi adalah cara terbaik untuk menimalkan kopling yang terjadi diantara modul-modul yang ada.

Jenis-jenis kohesi menurut tingkatan dari yang paling baik :

  1. Functional Cohesion
  2. Sequential Cohesion
  3. Communicational Cohesion
  4. Procedural Cohesion
  5. Temporal Cohesion
  6. Logical Cohesion
  7. Coincidental Cohesion

Sebuah modul dikatakan mempunyai Functional Cohesion bila komponen yang terdapat didalam modul tersebut hanya melaksanakan / mengerjakan satu tugas saja.

Sebuah modul dikatakan mempunyai Sequential Cohesion bila keluaran (output) dari modul tersebut menjadi masukan (input) bagi modul lainnya

Sebuah modul dikatakan mempunyai Communicational Cohesion bila komponen-komponen di dalam modul beroperasi dengan masukan ataupun atau keluaran yang sama.

Sebuah modul dikatakan mempunyai Procedural Cohesion bila terdapat komponen didalam modul yang terlibat pada beberapa aktifitas yang berbeda, ataupun aktifitas yang tidak saling berhubungan.

Sebuah modul dikatakan mempunyai Temporal Cohesion bila sejumlah komponen yang terkait karena kesamaan waktu terkelompok didalam sebuah modul

Sebuah modul dikatakan mempunyai Logical Cohesion bila semua komponen didalam modul melaksanakan proses yang serupa.

Sebuah modul dikatakan mempunyai Coincidental Cohesion bila beberapa komponen yang melaksanakan tugas yang berbeda dikumpulkan dalam sebuah modul.

Salah satu cara untuk menentukan tingkat kohesi sebuah modul adalah dengan menggunakan penelusuran dari diagram pohon seperti yang terlihat pada penjelasan dibawah ini. Dengan melakukan penelusuran berdasarkan kondisi yang ditemui pada akhirnya dapat ditentukan kohesi yang terdapat di dalam sebuah modul.

Ada tiga kelompok besar kopling yaitu :

  1. Normal Coupling
  2. Common Coupling
  3. Content Coupling

Dalam konsep rancangan yang baik maka :

  1. Normal Coupling adalah kopling yang baik dan dapat diterima
  2. Common Coupling adalah kopling yang tidak dapat diterima
  3. Content Coupling adalah kopling yang tidak boleh ada

Kopling yang termasuk di dalam kelompok Normal Coupling adalah :

  1. Data Coupling
  2. Stamp Coupling
  3. Control Coupling

Dua modul dikatakan mempunyai Data Coupling bila saling berkomunikasi melalui parameter dan tiap parameternya adalah sebuah data elementer.

Dua modul dikatakan mempunyai Stamp Coupling bila saling berkomunikasi melalui sekumpulan data yang terstruktur (record).

Dua modul dikatakan mempunyai Control Coupling bila sebuah modul mengirimkan informasi dengan tujuan mengontrol logika didalam modul yang lain.

Dua modul dikatakan mempunyai Common Coupling atau kadang disebut juga Global Coupling bila menggunakan struktur data yang ataupun elemen data yang berada pada sebuah area data global.

Dua modul dikatakan mempunyai Content Coupling atau kadang disebut juga Pathological Coupling bila dari dalam sebuah modul terdapat perintah yang langsung menunjuk kepada instruksi didalam modul lainnya.

Rancangan Berorientasi Objek (Object Oriented Design)

Dasar dari rancangan berorientasi objek adalah penyembunyian informasi (information hiding)

Rancangan berorientasi objek mempunyai tiga karekteristik utama yaitu :

  • Tidak ada area data yang dipakai bersamaan. Objek berkomunikasi dengan saling mempertukarkan berita (messages), bukan dengan variable. Hal ini menurunkan tingkat kopling secara umum, karena tidak akan terjadi perubahan terhadap informasi yang dipakai bersama-sama.
  • Objek adalah entitas yang setiap saat dapat dimodifikasi. Karena semua status maupun informasi berada didalam objek tersebut.  Tidak akan pernah terjadi sebuah informasi secara tidak sengaja dipakai oleh objek yang lain.
  • Objek bisa tersebar dimana saja, dan eksekusi terhadap objek bisa berlangsung secara sequensial maupun paralel.

Rancangan Berorientasi Objek mempunyai keunggulan antara lain :

  1. Sistem yang dikembangkan akan mudah dirawat, karena objek bersifat independen. Objek bisa dipahami dan dimodifikasi sebagai sesuatu yang berdiri sendiri (stand-alone entity). Perubahan yang dilakukan maupun penambahan aktifitas didalam objek tidak akan mempengaruhi objek yang lain.
  2. Objek adalah sebuah komponen yang dapat dipakai ulang (reusable). Rancangan dapat memanfaatkan objek-objek yang telah dikembangkan untuk rancangan yang sebelumnya (lainnya).
  3. Untuk sistem tertentu, objek seringkali adalah gambaran dunia nyata. Hal ini meningkatkan kemudahan memahami sistem yang dirancang.

Rancangan berorientasi Objek  tidak terlepas dari kelemahan juga, kelemahan utamanya adalah : Mengidentifikasi sebuah objek didalam sistem kadang kala tidak mudah. Karena secara alami sistem seringkali dilihat dari segi fungsinya, sehingga mengadaptasikan kedalam pandangan sebagai sebuah objek menjadi tidak mudah.

Rancangan Berorientasi Fungsional (Functional Oriented Design)

Pada rancangan berorientasi fungsional sistem dilihat sebagai kumpulan dari objekyang saling berinteraksi.

Rancangan yang berorientasi fungsional adalah :

  • Rancangan menggunakan strategi dimana sistem didekomposisikan kedalam sejumlah fungsi yang saling berinteraksi, dimana tiap fungsi melakukan tugasnya masing-masing.
  • fungsi mempunyai status yang sifatnya lokal, tetapi status dari sistem bersifat sentralisasi dan dapat diakses oleh semua fungsi yang ada.

Rancangan berorientasi fungsional menggunakan dua tool yang utama yaitu :

  1. Diagram Aliran Data (Data Flow Diagram) untuk emnjelaskan tentang logika proses terhadap data
  2. Diagram Terstruktur (Structure Chart) untuk memperlihatkan struktur dari perangkat lunak

Diagram Aliran Data menggambarkan bagaimana data di transformasikn menjadi keluaran melalui serangkaian fungsi-fungsi yang melakukan transformasi.

Diagram Aliran Data mempunyai keunggulan utama yaitu dapat memperlihatkan transformasi yang terjadi dengan tidak membuat asumsi tentang bagaimana implementasi akan dilakukan. Contohnya adalah, sistem yang dirancang bisa diimplementasikan sebagai sebuah program saja, artinya memanfaatkan unit-unit program untuk mengimplementasikan tiap transformasi yang ada. Atau dapat juga diimplementasikan sebagai sejumlah modul yang saling berinteraksi.

Diagram Terstruktur (Structure Chart) adalah bentuk grafik yang memperlihatkan struktur dari komponen sistem secara hierarki. Artinya memperlihatkan bagaimana elemen dari Diagram Aliran Data (Data Flow Diagram) dapat direalisasikan sebagai unit-unit program.

Diagram Terstruktur dapat dipakai sebagai deskripsi program secara visual. Sekalipun hanya memperlihatkan organisasi rancangan secara statis.

Rancangan Antarmuka Pemakai (User Interface)

Prinsip-prinsip yang harus diterapkan dalam merancang Antarmuka Pemakai (User Interface) adalah :

  1. Antarmuka (interface) harus memakai  konsep dan istilah yang telah dikenal oleh user.
  2. Antarmuka (interface) harus konsisten
  3. Lakukan verifikasi untuk kegiatan yang destruktif
  4. User jangan sampai dikejutkan (surprise) oleh sistem yang dipakai
  5. Antarmuka (interface) harus mempunyai mekanisme yang memungkinkan user terselamatkan dari kesalahan yang dilakukannya
  6. Antarmuka (interface) harus memiliki fasilitas petunjuk untuk user
Sumber Link : https://umarmansyuri.wordpress.com/2011/05/12/rekayasa-software/