DESAIN PERANGKAT LUNAK & REKAYASA PERANGKAT LUNAK Tugas ke 8 Rekayasa Perangkat Lunak
Dibuat oleh : Dekha Sundhawati (41813120217) Dosen Pengampu : Wachyu Hari Haji, S.Kom,MM
JURUSAN SISTEM INFORMASI FAKULTAS ILMU KOMPUTER UNIVERSITAS MERCU BUANA
1
REKAYASA PERANGKAT LUNAK & DESAIN PERANGKAT LUNAK
Rekayasa Perangkat Lunak Rekayasa
perangkat
Engineering atau SE)
adalah
lunak satu
(RPL, bidang
atau
dalam bahasa
profesi
yang
inggris
:
Software
mendalami
cara-cara
pengembangan perangkat lunak termasuk pembuatan, pemeliharaan, manajemen organisasi pengembanganan perangkat lunak dan manajemen kualitas. IEEE Computer Society mendefinisikan rekayasa perangkat lunak sebagai penerapan suatu pendekatan yang sistematis, disiplin dan terkuantifikasi atas pengembangan, penggunaan dan pemeliharaan perangkat lunak, serta studi atas pendekatan-pendekatan ini, yaitu penerapan pendekatan engineering atas perangkat lunak. Kriteria yang dapat digunakan sebagai acuan dalam merekayasa perangkat lunak: 1. Dapat terus dirawat dan dipelihara(maintainability) 2. Dapat mengikuti perkembangan teknologi(dependability) 3. Dapat mengikuti keinginan pengguna(robust) 4. Efektif dan efisien dalam menggunakan energi dan penggunaannya 5. Dapat memenuhi kebutuhan yang diinginkan(usability) Ada juga pengertian lain dari rekayasa perangkat lunak yang dapat kita ketahui, antara lain: 1. Pengertian dari Perangkat Lunak adalah kumpulan beberapa perintah komputer yang dieksekusi oleh mesin komputer dalam menjalankan pekerjaannya yaitu memproses informasi. perangkat lunak ini merupakan catatan bagi mesin komputer untuk menyimpan perintah, maupun dokumen serta arsip lainnya. Perangkat lunak tidak dapat disentuh dan
2
dilihat secara fisik, software memang tidak tampak secara fisik dan tidak berwujud benda tapi bisa di operasikan. 2. Pengertian Rekayasa Perangkat Lunak (RPL) adalah aplikasi ilmu komputer untuk membangun sistem perangkat lunak praktis 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.
Tujuan Rekayasa Perangkat Lunak Perangkat lunak merupakan ilmu yang paling penting untuk diperdalam karena teknologi ini memberikan stabilitas, kontrol, dan organisasi aktifitas. Beberapa tujuan yang dilakukan rekayasa perangkat lunak antara lain: 1. Untuk membangun software yang benar dan benar sebuah software (Right, Software and Software Right). 2. Untuk membangun software yang tepat (Correct). 3. Dikelola dengan baik untuk pemeliharaan kebenarannya (Correctness). 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 Rekayasa Perangkat Lunak
Software requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak.
Software design mencakup proses penentuan arsitektur, komponen, antarmuka, dan karakteristik lain dari perangkat lunak.
Software construction berhubungan dengan detil pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian, dan pencarian kesalahan.
Software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak.
3
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.
Pengertian Desain Perangkat Lunak Desain perangkat lunak adalah tugas, tahapan atau aktivitas yang difokuskan pada spesifikasi detil dari solusi berbasis komputer (Whitten et al, 2004:58). Desain perangkat lunak sering juga disebut sebagai physical design. Jika tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka sebaliknya desain perangkat lunak fokus pada sisi teknis dan implementasi sebuah perangkat lunak (Whitten et al 2004:58). Output utama dari tahapan desain perangkat lunak adalah spesifikasi desain. Spesifikasi ini meliputi spesifikasi desain umum yang akan disampaikan kepada stakeholder sistem dan spesifikasi desain rinci yang akan digunakan pada tahap implementasi. Spesifikasi desain umum hanya berisi gambaran umum agar stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun. Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting dibagian ini. Spesifikasi desain rinci atau kadang disebut desain arsitektur rinci perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi yang baik. Proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya. Desain arsitektur ini terdiri dari desain database, desain proses, desain user interface yang mencakup desain input, output form dan report, desain hardware, software dan jaringan. Desain proses merupakan kelanjutan dari pemodelan proses yang dilakukan pada tahapan analisis.
4
Menurut E. S. Taylor Desain adalah langkah pertama dalam fase pengembangan bagi setiap produk atau sistem yang direkayasa. Desain dapat didefinisikan sebagai proses aplikasi berbagai teknik dan prinsip bagi tujuan pendefinisian suatu perangkat, suatu proses atau sistem dalam detail yang memadai untuk memungkinkan realisasi fisiknya. Tujuan desainer adalah untuk menghasilkan suatu model atau representasi dari entitas yang kemudian akan dibangun. Proses dimana model dikembangkan, menggabungkan intuisi dan penilaian berdasarkan pengalaman dalam membangun entitas yang sama, serangkaian prinsip dan atau heuristik yang menuntun cara dimana model disusun, serangkaian kriteria yang memungkinkan penilaian terhadap kualitas dan terhadap suatu proses iterasi yang membawa kepada suatu representasi nilai akhir. Desain perangkat lunak berada pada inti teknik dari proses rekayasa perangkat lunak dan diaplikasikan tanpa memperhatikan model proses perangkat lunak yang digunakan. Begitu persyaratan perangkat lunak telah mulai dianalisis dan ditentukan, maka desain perangkat lunak menjadi yang pertama dari tiga aktivitas teknik – desain, pembuatan kode dan pengujian yang diperlukan untuk membangun dan menguji perangkat lunak. Persyaratan perangkat lunak, yang dimanifestasi oleh data, fungsional, dan model-model perilaku, mengisi langkah desain. Dengan menggunakan satu dari sejumlah metode desain, langkah desain menghasilkan : a.
desain data
b.
desain arsitektur
c.
desain interface
d.
desain prosedural
Metode Desain
Desain digambarkan sebagai proses multi-langkah dimana representasi struktur data, struktur program, karakteristik interface dan detail prosedur disintesis dari persyaratan informasi. Menurut Freman , desain adalah sebuah aktivitas berkaitan dengan pembuatan keputusan mayor, sering bersifat Struktural. Desain juga memperhatikan abstraksi dari representasi informasi dan urutan pemrosesan, tetapi dengan tingkat detail yang berbeda. Desain membangun representasi program yang koheren serta direncanakan dengan baik, yang berkonsentrasi pada interrelasi dari bagian-bagian dari tingkat yang lebih tinggi dan operasi logis yang dilibatkan pada tingkat yang lebih rendah.
5
Desain merupakan informasi yang terkendali, metode desain perangkat lunakditarik dari pertimbanganyang masing-masing terdiri dari tiga domain model analisis. Domain data, fungsi dan perilaku yang berfungsisebagai panduan pembuatan desain. Metode yang dibutuhkan untuk membuat masing-masing lapisan model desain adalah untuk memberikan suatu pendekatan sistematis bagi penarikan desain – cetak biru yang dari sana perangkat lunak di produksi.
1. Desain Data Desain data adalah aktivitas pertama dari empat aktivitas desain yang dilakukan selama rekayasa perangkat lunak. Pengaruh struktur data pada struktur program dan kompleksitas prosedural menyebabkan desain data berpengaruh penting terhadap kualitas perangkat lunak, konsep penyembunyian informasi dan abstraksi data memberi dasar pendekatan terhadap desain data. Tanpa melihat teknik desain yang akan digunakan, data yang di desain dengan baik dapat membawa kepada struktur program dan modularitas yang lebih baik, serta mengurangi kompleksitas prosedural. Wasserman mengusulkan serangkaian prinsip yang dapat digunakan untuk menentukan dan mendesain data. Pada Kenyataannya desain data dimulai selama pembuatan model analis. Karena analisis persyaratan perangkat lunak dan desain seringkali overlap. Serangkaian prinsip untuk spesifikasi data : a.
Prinsip analisis sistematik yang diaplikasikan pada fungsi dan perilaku seharusnya diaplikasikan juga pada data. Representasi dari objek data, hubungan, aliran data, dan isi juga harus dikembangkan dan dikaji, organisasi data alternatif harus dipertimbangkan dan pengaruh permodelan data pada desain perangkat lunak harus dievaluasi.
b. Semua struktur data dan operasi yang akan dilakukan pada masing – masing struktur data harus diidentifikasi. Desain dari sebuah struktur data yang efisien harus mencakup operasi yang akan dilakukanpada struktur data. c. Kamus data harus dibangun dan digunakan untuk menentukan baik data maupun desain program. Algoritma yang harus memanfaatkan hubungan khusus dapat lebih mudah ditetapkan jika ada spesifikasi data yang menyerupai kamus. d. Keputusan desain data tingkat rendah harus ditunda sampai akhir proses desain. Proses penyaringan stepwise dapat digunakan untuk desain basis data, yaitu keseluruhan organisasi data dapat ditetapkan selama analisis persyaratan, disaring
6
selama pengerjaan, desain pendahuluan, dan ditentukan secara detail selama pengerjaaan pendahuluan dan itersasi desain selanjutnya. e. Representrasi struktur data hanya boleh diketahui oleh modul-modul yang harus menggunakan secar langsung data yang diisikan didalam struktur tersebut. Konsep penyembunyian informasi dan konsep yang berkaitan mengenai perangkaian, memberikan wawasan yang penting mengenai kualitas desain perangkat lunak. f. Pustaka struktur data dan operasi yang berna yang dapat diaplikasikan pada struktur data tersebut harus dikembangkan. Struktur dan operasi data harusdi pandang sebagai sumber daya untuk desain perangkat lunak. Struktur data dapat didesain untuk dapat digunakan kembali. Tipe data abstrak dapat mengurangi baik spesifikasi maupun desain data. g. Desain perangkat lunak dan bahasa pemrograman harus mendukung spesifikasi dan realisasi dari tipe-tipe data abstrak. Implementasi struktur data yang canggih sangat sulit dilakukan jika tidak ada alat untuk spesifikasi langsung terhadap struktur yang ada. Prinsip- prinsip tersebut membentuk basis bagi pendekatan desain data yang dapat diintegrasikan ke dalam fase definisi dan pengembangan proses rekayasa perangkat lunak. Definisi yang jelas mengenai informasi sangatlah penting bagi keberhasilan pengembangan perangkat lunak. 2. Desain Arsitektur Sasaran utama desain arsitektur adalah untuk mengembangkan struktur program modular dan merepresentasikan hubungan kontrol antar modul. Desain arsitektur juga membentuk struktur program dan struktur data dengan menentukan interface yang memungkinkan data mengalir melalui program. Langkah – langkah desain: 1. Jadilah model sistem yang fundamental 2. Kaji dan saringlah diagram aliran data untuk perangkat lunak. 3.
Tentukan apakah DFD memiliki karakteristik aliran transaksi formasi dan transaksi.
4.
Isolasi pusat informasi dengan mengkhususkan batas aliran masuk dan keluar.
5.
Lakukan “pemfaktoran tingkat pertama.”
6.
Lakukan “pemfaktoran tingkat kedua.”
7.
Saringlah struktur protram iterasi pertama dengan menggunakan heuristik desain
7
3. Desain Interface Desain interface memfokuskan diri pada tiga area perhatian : 1. Desain interface antara modul –modul perangkat lunak. 2. Desain interface antara perangkat lunak dan prosedur dan konsumen informasi bukan yang lainnya. 3. Desain interface seorang manusia (user) dan komputer.
4. Desain procedural Desain prosedural terjadi setelah data, desain arsitektur dan interface dibangun. Dalam dunia yang ideal, spesifikasi prosedural diperlukan untuk menetapkan detail algoritma yang akan dinyatakan dalam suatu bahasa ibu, seperti bahasa inggris. Desain prosedural harus menentukan detail desain prosedural tanpa ada ambiguitas. Ciri – ciri program yang baik/ terstruktur : 1.
Dapat dijalankan dengan baik dan benar.
2. Dapat dijalankan secara efektif dan efisien dengan tidak banyak menggunakan syntaks yang tidak perlu. 3. Mudah di baca dan dipahami oleh orang lain maksud dan tujuan objek yang akan ditampilkan. 4.
Mudah diperbaiki jika terjadi kesalahan.
5.
Biaya pengujian yang dibutuhkan rendah.
6.
Memiliki dokumentasi yang baik.
7.
Biaya perawatan dan dokumentasi yang dibutuhkan rendah.
8. Program hanya terdiri dari tiga struktur kontrol. Yaitu struktur urut, struktur seleksi, dan sturkutr repetisi atau reiterasi.
8
PRINSIP DAN KONSEP DESAIN Prinsip Desain Desain perangkat lunak berupa model dan proses. Proses desain adalah serangkaian langkah iteratif yang memungkinkan desainer menggambarkan semua aspek perangkat lunak yang dibangun. Model desain adalah ekivalen rencana arsitek untuk sebuah “rumah”, yang dimulai dengan menyajikan totalitas dari hal yang akan dibangun. Prinsip desain dasar memungkinkan perekayasa perangkat lunak untuk mengendalikan proses desain. ·
Proses desain tidak boleh menderita karena “tunnel vision”. Desainer yang baik harus memperhatikan pendekatan – pendekatan alternatif, menilai masing-masing pendekatan berdasarkan persyaratan masalah,
·
Desain harus dapat ditelusuri sampai model analisis.
·
Desain tidak boleh berulang. Sistem dibangun dengan menggunakan serangkain pola desain, beberapa diantaranya kemungkinan telah ditemukan sebelumnya.
·
Desain harus “meminimalkan kesenjangan intelektual” di antara perangkat lunak dan masalah yang ada di dunia nyata. Ini menyatakan bahwa struktur desain perangkat lunak harus mencerminkan struktur domain permasalahan.
·
Desain harus mengungkap keseragaman dan integrasi.desain seragam bila desain memperlihatkan bahwa satu orang mengembangkankeseluruhannya.
·
Desain harus terstruktur untuk mengakomodasi perubahan.
·
Desain harus terstruktur untuk berdegradasi dengan baik, bahkan pada saat data dan eventevent menyimpang, atau menghadapi kondisi operasi. Program komputer yang telah dirancang dengan baik seharusnya tidak pernah “Meledak”
·
Desain bukanlah pengkodean, dan pengkodean bukanlah desain. Bahkan bila dibuat desain prosedural detail bagi komponen – komponen program.
·
Desain harus dinilai kualitasnya pada saat desain dibuat, bukan setelah jadi. Ada berbagai konsep desaindan pengukuran desain untuk membantu desainer menilai kualitas.
·
Desain harus dikaji untuk meminimalkan kesalahan- kesalahan konseptual (semantik). Kadang – kadang ada kecendrungan untuk memfokuskan pada hal-hal yang remeh pada saat desain dikaji, sehingga hal yang lebih penting luput dari perhatian. Desainer harus memastikan bahwa elemen-elemen konseptual mayor dari desain (penghilangan, ambiguitas, inkonsistensi) telah ditekankan sebelum mengkhawatirkan sintaks model desain
9
Konsep Desain 1.
Abstraksi Abstraksi memungkinkan desainer menentukan prosedur dan data, dan masih menekan detail tingkat rendah. Terdapat 3 macam bentuk abstraksi, yaitu :
·
Abstraksi prosedural. Merupakan urutan instruksi yang diberi nama yang mempunyai fungsi tertentu dan terbatas.
·
Abstraksi data. Kumpulan data yang bernama yang menggambarkan obyek data.
·
Abstraksi kontrol. Mengimplikasikan suatu mekanisme kontrol program tanpa menentukan detail-detail Internal
2.
Penyaringan Penyaringan stepwise (dengan serangkaian langkah) adalah strategi desain top-down yang diusulkan oleh Wiklaus Wirth. Kajian dari konsep tersebut adalah “Pada setiap langkah (penyaringan), satu atau beberapa instruksi dari program yang diberikan didekomposisi ke dalam instruksi-instruksi yang lebih detail. Dekomposisi berurutan atau penyaringan spesifikasi berhenti bila semua instruksi diekspresikan dalam bentuk bahasa pemrograman atau komputer yang mendasar. Jika tugas-tugas disaring, maka data harus disaring juga, didekomposisi atau distruktur, dan adalah wajar untuk menyaring program dan spesifikasi data secara paralel” . Abstraksi dan penyaringan adalah konsep kompementer. Kedua konsep tersebut membantu desainer dalam menciptakan suatu model desain lengkap jika desain berkembang.
3.
Modularitas Modularitas merupakan atribut tunggal dari perangkat lunak yang memungkinkan sebuah program untuk dikelola secara intelektual. Meyer menyebutkan 5 kriteria yang memungkinkan kita untuk mengevaluasi suatu metode desain dengan merujuk pada kemampuannya untuk menentukan sistem modular yang efektif. a. Dekomposisi modular. b. Komposabilitas modular. c. Kemampuan pemahaman modular. d. Kontinuitas modular.
10
e. Proteksi modular. 4.
Arsitektur Perangkat Lunak Arsitektur perangkat lunak mencakup “struktur keseluruhan perangkat lunak dan cara dimana struktur memberikan integrasi konseptual bagi suatu sistem”. Shaw dan Garlan menjelaskan sekumpulan properti yang seharusnya ditetapkan sebagai bagian dari desain arsitektural : a. Properti struktural. Menentukan komponen suatu sistem dan cara dimana komponenkomponen tersebut dikemas dan berinteraksi satu dengan yang lain. b. Properti ekstra-fungsional. Menekankan pada bagaimana arsitektur desain memenuhi persyaratan kinerja, kapasitas, reliabilitas, keamanan, adaptibilitas, dan karakteristik sistem yang lain. c. Keluarga dari sistem yang berhubungan. Desain harus memiliki kemampuan untuk memakai lagi blok bangunan arsitektural tersebut.
5.
Hirarki Kontrol Hirarki kontrol, disebut juga struktur program merepresentasikan organisasi komponen program serta mengimplikasikan suatu hirarki kontrol. Hirarki kontrol tidak mengimplikasikan aspek prosedural dari perangkat lunak, seperti urutan proses, kejadian/urutan dari keputusan, atau pengulangan operasi.
6.
Partisi Struktural Struktur progam harus dipartisi baik secara horizontal maupun vertikal. Partisi horizontal menentukan cabang-cabang terpisah dari hirarki modular untuk setiap fungsi program mayor. Keuntungannya :
a. menghasilkan perangkat lunak yang lebih mudah diuji. b. Membawa kepada perangkat lunak yang lebih mudah dipelihara. c. Menghasilkan penyebaran efek samping yang lebih sedikit. d. Menghasilkan suatu perangkat lunak yang lebih mudah untuk diperluas. Partisi vertical menyatakan bahwa kontrol dan kerja harus didistribusikan secara top-down dalam arsitektur program. 7.
Struktur Data Struktur data adalah representasi dari hubungan logis antara elemen-elemen data individual.
11
8.
Prosedur Perangkat Lunak Prosedur perangkat lunak berfokus pada detail-detail pemrosesan dari masing-masing modul secara individual. Prosedur harus memberikan spesifikasi yang teliti terhadap pemrosesan, mencakup urutan event, poin-poin keputusan nyata, operasi repetitif, dan organisasi struktur data.
9.
Penyembunyian Informasi Prinsip penyembunyian informasi menyatakan bahwa bahwa modul ditandai dengan keputusan desain tersembunyi dari semua desain lain.
Model Desain Prinsip dan konsep desain disini dimaksudkan membangun sebuah fondasi untuk pembuatan model desain yang mencakup representasi data, arsitektur, interface, dan prosedural. Seperti model analisis sebelumnya. Pada model desain, masing-masing representasi desain diikatkan dengan yang lainnya, dan semua dapat ditelusuri balik ke persyaratan perangkat lunak. Banyak pemrogram terus menerus mendesain secara implisit, dengan melakukan desain prosedural pada saat dikodekan. Hal itu sama dengan mengambil desain piramid dan mendirikannya pada titiknya, hasil desain yang sangat tidak stabil. Perubahan yang paling kecil dapat menyebabkan piaramid tersebut (dan program) tumbang
Desain Modular Afektif
1.
Independensi fungsional Merupakan hasil pertumbuhan langsung dari modularitas dan konsep abstraksi dan penyembunyian informasi. Independensi fungsional dicapai dengan mengembangkan modul dengan fungsi “single-minded” dan suatu “aversi” ke interaksi eksesif dengan modul yang lain.
2.
Kohesi Kohesi adalah suatu ekstensi natural dari konsep penyembunyian informasi. Modul kohesi melakukan suatu tugas tunggal pada suatu prosedur perangkat lunak yang memerlukan sedikit interaksi dengan prosedur yang sedang dilakukan di bagian lain dari suatu program.
12
3.
Perangkaian Perangkaian adalah pengukuran interkoneksi diantara modul-modul pada sebuah struktur progam. Perangkaian tergantung pada kompleksitas interface diantara modul-modul, titik dimana entri atau referensi dibuat untuk sebuah modul dan data yang dilewatkan pada interface tersebut.
13