SlideShare a Scribd company logo
1 of 12
Download to read offline
PENDAHULUAN
1.1 REKAYASAERANGKAT
           P       LUNAK
        Pada tanggal 15 Januari 1990 jaringan jarak jauh manual AT&T mengalami
    gangguan selama sembilan jam karena adanya kerusakan software. Jutaan
    hubungan telepon terputus. Dengan sendirinya bisnis seperti biro-biro travel yang
    menggantungkan pada jaringan tersebut juga mengalami gangguan. Peristiwa ini
    merupakan salah satu petunjuk akan pentingnya perangkat lunak serta dampaknya
    yang berpengaruh pada masyarakat bila terjadi kerusakan padanya.
         Ilmu yang membicarakan masalah seperti diatas adalah Rekayasa Perangkat
    Lunak. Rekayasa Perangkat Lunak telah dikenal sebagai bidang ilmu sejak tahun
    1960-an. Ole~ karena itu ini masih relatif baru, maka Rekayasa Perangkat Lunak
    ini belum memiliki banyak dasar-dasar ilmiah ( scientific basis ). Sebenarnya
    para pakar perangkat lunak ini tidak setuju dengan definisi Rekayasa Perangkat
    Lunak itu sendiri. Rekayasa Perangkat Lunak kita definisikan sebagai disiplin
    managerial dan teknis yang berhubungan dengan penemuan sistematik, produksi
    dan maintenance sistem software yang berkualitas tinggi, disampaikan pada waktu
    yang tepat serta memiliki harga yang mahal.
         Rekayasa Perangkat Lunak meninjau teori dari berbagai bidang seperti
    manajemen, ekonomi, matematik dan komputer science. Kita memfokuskan pada
    salah satu dari bidang yang luas ini - cara menggunakan lingkungan pemrograman
    untuk menghasilkan .>isteinperangkat lunak yang berkualitas tinggi. Khususnya
    kita akan membicarakan cara menulis, sistem seperti ini dalam lingkungan bahasa
    C sistem UNIX. Dengan sendirinya penekanan kita adalah pada sisi teknis
    Rekayasa Perangkat Lunak, bukan sisi managerial.




                       C
1.2. SISTEMUNIXDANBAHASA

         UNIX adalah sistem operasi time-shared (dapat dipakai bersama-sama) yang
    pertama kali ditulis oleh Ken Thompson dari Bell Laboratories pada tahun 1969.
    UNIX memiliki dua bagian utama. Kernel UNIX merupakan satu set fungsi yang
    sering dipakai yang tersimpan dalam main memori. Kernel ini menjadualkan
    pekerjaan, kontrol, perangkat keras, serta mengatur input dan output. UNIX akan
    menginterpretasikan perintah yang dikirim kedalam sistem. UNIX juga sering
    dipakai untuk menunjukkan set perangkat dan utilitas - editor , compiler,
2
Software Engineering Tool, dan sebagainya - yang khusus ada pada sistem
    tersebut. Terdapat versi UNIX sistem yang dikenal adalah AT & T UNIX sistem
    V, dan Berkeley UNIX yang secara resmi dikenal sebagai UCB 4XBSD.
    Versi-versi UNIX semuanya mirip, namun mereka berbeda dalam implementasi
    dan piranti-piranti serta utilitas-utilitas yang mereka sediakan.Sebagai contoh,
    terdapat shell UNIX : Bourne Shell, C Shell, dan Korn Shell. Semua shell ini
    dapat dipakai dengan kernel yang berbeda.
         Bahasa C ditulispada tahun 1970oleh DennisRitchieThompson,dan Ritchie
    menulis kembali kernel UNIX dalam C pada awal tahun 1970, dan sejak itu,
    UNIX dan C telah digabungkau.Bahasa C pada awalnya ditulis sebagai alternatif
    bagi bahasa rakitan pemrograman sistem. Hal ini karena C memberikan banyak
    kebebasan bagi pemrograman.
         Bahasa ini memungkinkan kita untuk mengakses tingkat rendah kedalam
    mesin. C dikenal sebagai bahasa yang dapat dipakai untuk menghasilkan kode
    yang cepat dan efisien.Bahasa C telah menjadi begitu terkenal, disamping
    pemrogramansistem,C dipakaijuga untukmembuatsistemsoftwareuntuk aplikasi
    yang besar. Generasi terakhir dari sistem switeling pada B~ll Laboratories yang
    berisikan jutaan baris kode, ditulis dalam C.
         Pendapat bahwa C merupakanbahasa yang baik untuk engineering sistem
    berskala besar, masih diperdebatkan. Dengan adanya data empiris yang cukup
    terkumpul, maka kita dapat mengetahui bahwa bahasa ini telah dapat dipakai
    dengan baik untuk membuat sistem yang besar.
         Bukti bahwa UNIX I C telah begitu terkenal adalah adanya banyak buku
    yang membahas UNIXIC tersebut. Buku ini menjelaskan tentang bahasa C dan
    sistem UNIX serta memberikan bimbingan yang rinei tentang pemakaiannya.
    Namun dalam buku ini tidak terdapat bimbingan rinei tentang .penggunaan
    perangkatdan teknik yang kita bicarakan.Tujuan kita adalah untuk menempatkan
    UNIXIC dalam konteks sistem engineering software yang besar - untuk
    menunjukkancara penggunaanUNIXICmelalui seluruh tahap untuk mendukung
    proyek engineering perangkat lunak.




1.3. BENI DALAMREKAYASA PERANGKAT LUNAK
          Meskipun telah banyak sumbangan teknis yang dibuat bagi Rekayasa
     Perangkat Lunak (misalnya,pengembanganbahasa pemrograman tingkat tinggi)
     seni dalam bidang ini masih jauh dari yang diinginkan para Rekayasa Perangkat

                                                                                  3
Lunak. Praktek yang sering dipakai biasanya lebih buruk. Proyek pengembangan
    software sering menghasilkan produktifitas yang rendah, dan produk software
    biasanya penuh kesalahan dan tidak memenuhi kehendak pemakai. Untuk
    menggambarkan masalah ini, mari kita pelajari tentang penemuan studi dari
    sembilan kontrak pengembangan Software Departemen Pertahanan USA, yang
    bertotaI $ 6,8 juta.
    .    Untuk softwareyang telah di kirim namun tidakpemah dapat dipakai dengan
         baik diperlukan $ 3,2 juta.
    .    Untuk Software yang telah dibayar tetapi tidak terkirim, diperlukan $ 1,95
        juta.
    .   Untuk software yang telah dikirim dan dipakai namun harns diperbaiki
        sebanyak $ 1,3 juta.
    .   Dari $ 6,8 juta, $ 119.000dipakaiuntuk softwareyang dipakaitanpa diadakan
        perubahan lagi.
        Namun sayangnya, pemborosan seperti ini merupakan hal yang umum.
    Sebagian besar organisasi teknis yang besar sering terjadi kerusakan software.
    Meskipun kegagalan proyek software sering disebabkan terutama oleh masalah
    managerial, pemborosan sumber teknis, sebab-sebab inilah yang menyebabkan
    biaya menjadi tinggi. Misalnya, salah satu sumber pemborosan yang terkenal
    dalam masalah teknis adalah kegagalan untuk menggunakan software kembali.
         ~mareo memperkirakanbahwarata-rataproyekhanyamelakukanpemakaian
    ulang sebanyak 5 % kode, meskipun sebenarnya bahwa kode .yang jumlahnya
    lebih banyak dapat digunakan. Masalah teknis ientang eara melakukan desain,
    katalog, penyimpanan dan pemanggilan kembali perangkat lunak yang dapat
    dipakai ulang masih belum terpecahkan.
         Salah satu aIasan dikembangkannya perangkat lunak UNIX karena UNIX
    berisikan banyak piranti keeil yang dapat dipakai kembali.HaIini sangat penting
    dalam Rekayasa Perangkat Lunak. Kepustakaan fungsi yang dapat digunakan
    kembali merupakan kelebihan yang terdapat pada bahasa C. Kita membahas
    masalah ini lebih secara rinei pada bab 6.
         Apa yang dapat dilakukan terhadap keadaan Rekayasa Perangkat Lunak
    yang belum lengkap tersebut ? Salah satu metodenya adalah dengan mempelajari
    secara lebih baik lagi mengenai masalah RekayasaPerangkat Lunak serta tentang
    teknik dan piranti terbaik yang ada untuk memecahkannya.
         Tugas ini tidaklah cukup bila hanya dibebankan dalam pelajaran akademik
    dan industri' tentang pemrograman dan Rekayasa Perangkat Lunak. Dalam
    pengalaman kita bahwa membuat serta mengajarkanRekayasa Perangkat Lunak.

4
memperkerjakan dan mengarahkan para insinyur software serta berkomunikasi
     dengan para pembuat software dalam berbagai proyek dapat diketahui bahwa
     terdapat banyak kekurangan pengetahuan tentang masalah Rekayasa Perangkat
     Lunak, serta terdapat praktek yang tidak benar. Beberapa observasi yang tidak
     benar mengikuti:
     .   Manajer yang tidak mempunyai latar belakang Rekayasa Perangkat Lunak
         yang bertanggungjawab pada pekerjaan teknis sebagian besar proyek soft-
         ware.
     .   Para pekerja yang hanya memiliki pengalaman sedikit dibidang Rekayasa
         PerangkatLunak yang bertanggung jawab pada tugas teknis yang sulit, seperti
         merancang dan mengimplementasikan sebagian besar sistem software, dengan
         tidak memiliki petunjuk dan latihan teknis yang cukup.
     .   Para lulusan program komputer science pada sebagian besar universitas yang
         belum pemah mengenal Rekayasa Perangkat Lunak, yang tidak menggunakan
         teknik dan piranti dalam membuat produk software yang berkualitas tinggi.
         Banyak program komputer science yang tidak memberikan pelajaran Rekayasa
     Perangkat Lunak, bila mereka memberikannya pelajaran tersebut bersifat pilihan
     dan titik utamanya pada pemrograman.




1.4. PROYEK, METODOLOGI DAN PROD UK SOFT-
     WARE

          Software adalah obyek tertentu yang dapat dijalankan seperti kode sumber,
     kode obyek, atau sebuah program yang lengkap. Produk software adalah soft-
     ware ditambah dengan semua item dan pelayanan pendukung yang secara
     keseluruhan dapat memenuhi kebutuhan pemakai.
         Produk software memiliki banyak bagian yang meliputi manual, referensi,
    tutorial, instruksi instalasi, data sampel, pelayanan pendidikan, pelayanan
    pendukung teknis dan sebagainya. Para insinyur software menghasilkan produk
    software, bukan hanya software.
        Semua yang dihasilkan oleh proyek software adalah produk kerja (work
    product). Produk kerja meliputi (1) Dokumen engineering yang dipakai untuk
    menentukan, mengontrol, dan memantau usaha kerja ; (2) Obyek yang dijalankan
    seperti prototipe, kendali test (test harness), dan piranti pengembangan tujuan
                                                                                  5
khusus ; dan (3) Data yang digunakan untuk testing, rnelacak proyek dan
                       sebagainya.Para insinyursoftwarernernbantumenghasilkansebagianOOsar roduk
                                                                                            p
                       kerja karena rnereka rnernilikikemarnpuan teknis. Kenyataannya para insinyur
                       software sering rnenggunakan waktu yang lama untuk pekerjaan produk kerja
                       non-software, khususnya dokurnen, daripada rnengerjakan pekerjaan software.




    1.5. TIPEDANUKURANPROYEKSOFTWARE




.
                            Proyek software rnerniliki berbagai ukuran. Salah satu cara untuk
                       rnenggolongkan ukuran tersebut adalah dengan baris kode seperti dalam taOOI
                       1.1.

u ...............__.
....................
    uuu.u




                       KATEGORI UKURAN PROYEK
lI
.
    .                                                                      u      un---nn




                                         !~~tlll~liil!liii!I~~II:i:ili::!i!ii!~~:lii:i
                                                                                               n




                                                                              ~Ili:iilillillilll.!'
                                                                                                   _.   _0000




                         Tidak penting                        0-4 Minggu                                        Utilitas pendek
                         Keeil                                1-6 Bulan                                         Pustaka fungsi
                         Sedang                               0.5-2 Thn                                         Produksi Compiler C
                         Besar                                2-3 Tahun                                         Sistem Operasi keeil
                         Sangat besar                         4-5 Tahun                                         Sistem Operasi besar
                         Besar sekali                          5-10 Tahun                                       Sistem switching




                            Proyek software yang paling besar ini memerlukan ribuan programer, manajer
                       dan personal pendukung. Fungsi dan me sistern jumlahnya .puluhan dari ribuan
                       dan dapat didistribusikan. ke banyak rnesin. Perubahan yang dilakukan terhadap
                       sebuah file dapat rnengakibatkan ratusan file lainnya - dan sernua orang yang
                       OOkerjadengan file-file tersebut. Inilah kerumitan pada hubungan intern diantara
                       sernua elernen sistern ini yang rnernbedakan Rekayasa Perangkat Lunak. Kasus
                       ini akan sulit bagi rnereka yang OOlurnpernah OOkerjadilingkungan proyek besar,
                       untuk rnenerirna kerumitan tersebut. Ini adalah salah satu penghalang dalam
                       pengajaran Rekayasa Perangkat Lunak.


6
Mereka yang telah faham dengan teknik Rekayasa Perangkat Lunak untuk
proyek keeil mungkin mengira bahwa teknik tersebut akan cukup bila dipakai
untuk proyek besar. Pendapat ini biasanya tidaklah benar misalnya piranti Rekayasa
Perangkat Lunak kadang-kadang tidak dapat dipakai untuk sistem terdistribusi.
Teknik manajemen perubahan informal untuk kelompok yang terdiri dari lima
pembuat program tidak dapat dipakai untuk kelompok yang berjumlah 50 orang.
     Praktek Rekayasa Perangkat Lunak merupakan hal yang penting untuk proyek
pada semua ukuran. Untuk proyek yang sangat besar dan besar sekali praktek
tersebut sangat diperlukan karena sistem yang berukuran besar seperti ini tidak
akan dapat dibuat tanpa diadakannya praktek diatas. Terdapat bukti empiris bahwa
ukuran proyek memiliki pengaruh yang besar pada atribut proyek penting seperti
produktifitas programer individual, yang menurun drastis pada saat ukuran tim
pengembangan dan sistem meningkat. Akibat ini disebabkan karena kurangnya
koordinasi dan komunikasi pada proyek besar. Conte dan kawan-kawan
memberikan pembahasan yang menarik tentang studi empiris dari faktor yang
mempengaruhi proyek software.
     Faktor lain yang disebabkan oleh ukuran proyek adalah jumlah dokumentasi
yang diperlukan. Sebagai contoh proyek yang tidak penting misalnya program
metrik kode sumber yang sederhana seperti account, mungkin tidak memerlukan
dokumen engineering apapun, dan tidak memerlukan dokumentasi pemakai yang
lebih banyak selain halaman manual. Namun sebaliknya, proyek berukuran sedang,
seperti compiler C, hendaknya memiliki satu set dOkumen engineering yang
paling tidak meliputi eksplorasi konsep dan dokumen kelayakan, dokumen
persyaratan, rencana proyek, dokumen disain, test plan, dan ringkasan proyek.
Paling tidak pemakai memerlukan manual, tutorial, kartu referensi cepat, instruksi
instalasi dsb.
     Merupakan hal yang tidak berguna bila kita menuntut dokumentasi utilitas
metrik sebanyak compiler C tersebut. Namun demikian tuntutan semacam ini
kadang-kadang dapat terpenuhi. Hal ini merupakan contoh yang umum tentang
praktek Rekayasa Perangkat Lunak yang tidak tepat pemakaiannya.
     Proyek-proyek juga berbeda dalam hal tipenya. Tuntutan unjuk kerja, disain,
strategi implementasi, metode pengujian dan maslah yang timbul secara substansial
berbeda untuk program sistem operasi, program aplikasi keilmuan, program aplikasi.
bisnis serta sistem real-time. Perbedaan produktifitas diantara proyek software
yang berbeda telah di obsevasi. Praktek-praktek Rekayasa Perangkat Lunak harus
disesuaikan dengan proyek-proyek yang memiliki ruang lingkup yang berbeda.
    Set dari piranti teknik serta metode yang digunakan oleh para insinyur soft-
ware dalam proyek software disebut metodologi proyek. Memilih metodologi

                                                                                 7
yang tepat untuk sebuah proyek bukanlah hal yang mudah. Pimpinan insinyur
     software hams membentukmetodologiproyek dengan memilih dari berbagai alat
     teknik dan metode yang ada yang sesuai untuk proyek mereka.




1.6. TAHAP-TAHAP
               PEMBUATANOFTWARE
                       S      SERTA
    MODELNYA
          Metodologi proyek diterapkan dalam konteks tahap-tahap pengembangan
     software (software ~ive cycle) - urut-urutan tahap pengembangan, yang disebut
     fase, yang merupakan tahapan yang hams dilalui oleh produk software dari konsep
     awal sampai tahap terakhir. Model tahap-tahap tersebut merupakan penyajian
     dari tahap-tahap pengembangan software yang juga dapat berisikan alur informasi,
     saat penentuan keputusan dsb. Kita menekankan bahwa model tahap-tahap tersebut
     hanyalah merupakan model. Tidak ada proyek sesungguhnya yang berlaku secara
     tepat sebagaimana yang ditunjukkan oleh suatu model dan penyimpangan ini
     akan banyak.
          Fase-fase dari model tahapan penyusunan dapat merupakan fase temporal-
     yang membentuk urutan dalam waktu - atau fase logis - yang menunjukkan
     tahap-tahap bukan rriembentuk urutan temporal. Sebagai contoh impleroentasi
     secara logis akan mendahului pepguj,ian namun bagian fase implementasi dan
     pengujian dapat terjadi secara serempak. Jadi model tahapan yang menggunakan
     fase logis dapat memiliki fase implementasi sebelum fase pengujian, sedangkan
     model yang menggunakan fase temporal mungkin fase-fase ini akan bertumpang
     tindih. Model tahapan ini dapat digunakan secara tertulis untuk memberikan
     tugas pada kejadian tahapan pengembangan atau secara deskriptif untuk merecord
     peristiwa-peristiwa pada tahapan tersebut. Banyak model tahap pengembangan
     sistem yang telah diajukan. Sebagian besar model-model tersebut memiliki
     kesamaan pada tahap-tahap fundamental, tetapi berbeda dalam hal terminologi,
     penekanan, keluwesan dan cakupannya.
          Model temporal prekriptif yang rinci bermanfaat dalam suatu rencana proyek
     karena model ini memetakan jalannya proyek yang dikehendaki. Model temporal
     deskriptifbermanfaat dalam pelaksanaan dokumentasi tahap-tahap pengembangan
     serta dalam menganalisa proyek bila telah selesai.
          Model tahapan pengembangan yang kita pakai dalam buku ini adalah model
     logis preskriptif umum. Model ini bersifat umum karena hanya memberikan

8
urutan Jogis tentang fase-fase pengembangan. Meskipun model ini akan lebih
    baik untuk menyajikantemporal khusus namun tidak ada model seperti ini yang
    dapat untuk semua proyek software. Seperti bagian-bagian lain dari metodologi
    software, model tahap pengembangankhusus harus dibentuk untuk proyek soft-
    ware khusus.
         Model kita adalah model air terjun ( waterfall ) standard yang berisikan
    fase-fase logis berikut :
    .    Fase analisis kelayakan dan eksplorasi konsep. MengidentifIkasikebutuhan
         untuk melakukan otomatisasi proses dan menganalisa kelayakan proyek.
    .   Fase spesifIkasipersyaratan.Menganalisadan mendokumentasikan
        persyaratansistem.Dokumentasipersyaratansecarajelas harus menyebutkan
        apa yang akan dilakukan oleh sistem yang diproyeksikan, unsur apa yang
        akan diperlukan oleh produk software serta karakteristik apa yang harus
        dimiliki oleh unsur produk.
    .   Fase disain. Mendisain sistem dan mendokumentasikan sistem. Dokumen
        disain menentukan eara pembuatan sistem software untuk memenuhi
        persyariltantersebut.
    .   Fase implementasi. Menulis software.
    .   Fase pengujian.Meneoba softwareuntuk mengetahuiapakahtelah memenuhi
        persyaratannya.
    .   Fase perawatan.Mengikutipenempatanproduk software.membetulkan
         kesalahan; mengubah dan memperluas sistem.
         Model ini seperti model lainnya hanya memberikan cara yang sebenarnya
    dikerjakan oleh suatu proyek ( gambar 1.1 )..
         Sangat banyak hal yang tidak dlramalkan terjadi pada proyek software untuk
    semua model yang lebih banyak daripada petunjuk umum. Model waterfall sering
    dikritik karena hanya sedikit yang sama dengan kenyataan proyek. Namun model
    ini merupakan model yang banyak dipakai dalam proyek besar. Lebih lanjut
    model ini bermanfaat bagi segi pedagogis, itulah sebabnya kita menggunakan
    model tersebut.




1.7 ATRIBUT
          KUALITASOFTWARE
                 S
        Kualitas dihubungkan dengan pemenuhan tuntutan pemakai. Salah satu eara
    menghubungkan kualitas dengan pemakai adalah dengan mengikuti Juran dalam

                                                                                  9
mendefinisikan kuaIitas sebagai (kecocokan penggunaan). Juran membedakan
       dua aspek keeocokan penggunaan: Koleksi kemampuan produk yang memenuhi
       tuntutan pemakai dan bebas dari kekurangan. Sebuah produk dengan koleksi
       kemampuan yang dapat memenuhi tuntutan pemakai maka dapat memberikan
       kepuasan pembeli. Terbebas dari kekurangan dapat menghindari ketidakpuasan
       pembeli. Kedua aspek ini dapat memenuhi tuntutan pemakai ( kualitas tinggi ).


                Concept exploretlon
                          and
                 feasibility ene'ysls




                                        Gambar   1.1




Model pengembangan software waterfall.
            KuaIitas produk software yang telah selesai terutama tergantung pada kuaIitas
       produk kerja yang dihasilkan selama pengembangan dan perawatan. Pengertian
       kuaIitas sebagai fitness for use menghasilkan atribut untuk mengevaIuasi kuaIitas
       produk kerja yang berdasarkan pada tuntutan pemakai dari produk tersebut.
       Misalnya, dokumen spesifikasi tuntutan dipakai oleh pembeli dan pembuat untuk
       merecord keputusan dan persertujuan tentang .produk .yang akan dibuat, oleh
       disainer sebagai sumber definitif tenteng informasi produk yang. akan didisain,
       bagi dokumenter merupakan sumber informasi tentang eara kerja produk tersebut
       serta earn pemakaiannya, bagi penguji merupakan sumber informasi tentang earn
       sistem tersebut berlaku hubungannya untuk meneoba data, dan tentang parameter
       unjuk kerja. Tuntutan ini memberikan motifasi pada atribut kuaIitas khusus untuk

10
dokumen spesiftkasituntutan - misalnyasemua persyaratandapat di test, tepat,
dan jelas; bahwa keterbatasan unjuk ketja harus secara jelas ditunjukkan; dsb.
Atribut kualitas yang hampir sarna dapat dihasilkan untuk semua produk kerja;
temyata sebagian produk ketja memiliki atribut kualitas yang meneakup :
.   Betul. Deftnisi betul beragarn.Misalnya dokumen tuntutan betul bila seeara
    tepat dapat menjelaskan fungsi dan kekayaan yang diperlukan oleh suatu
    produk; Softwaredikatakanbenarjika telah memenuhipersyarataninput dan
    outputnya; dokumentasi program dikatakan betul bila secara akurat dapat
    menjelaskan program.
.   Eftsien.Atributini menunjukkanentangearapemakaian
                                 t                   sumberkomputasi
    secara baik. Sebagai eontoh, Quietsort lebih eftsien daripada Bubblesort sebab
    didapat melakukan sort daftar dengan instruksi mesin yang lebih sedikit.
.   Perawatan. Atribut ini dapat diterapkan untuk semua produk keIja tapi sebagian
    besar sering diaplikasikan untuk software. Perawatan ini menunjukkan betapa
    mudahnya eara melakukan perbaikan, perubahan atau perluasan.
.   Mudah dipindahkan (Portable). Atribut ini menunjukkan betapa mudahnya
    software dapat dipindah tergantung dari jenis lingkungan.
.   Mudah dibaea (Readable). Atribut ini berlaku untuk semua produk kerja
    tekstual atribut ini menunjukkan betapa mudahnya kita memahami produk
    kerja.
.   Dapat dipereaya (Reliable).Atribut ini biasanya berlakuunlJk software serta
    'mengaeu pada kemampuan software untuk dijalankan sesuai dengan
    permintaan untuk periode pemakaian tambahan.
.   Dapatdipakailagi (Reuseable).Atributini biasanyaditerapkanpada perangkat
    lunak dan berkaitan dengan seberapa baik program dapat melanjutkan
    operasinya seeara betul dalam mengatasi masukkan yang salah.
.   Kuat (Rebost). Atribut ini untuk software serta mengaeueara suatu program
    meneruskan operasinya dengan benar.
.   Dapat di uji (Testable).Atribut ini menunjukbetapa mudahnya produk kerja
    dieoba seeara penuh, akurat, efisien dan sistimatisuntuk mengetahuiapakah
    dia memenuhi persyaratan.
.   Memilikidokumentasiyang baik (Welldokumented).Atributini menunjukkan
    betapa baiknya produk softwaredidukung oleh materialyang seeara lengkap
    menjelaskan instalasinya, operasi, perawatan, perbaikan, pengembangan,
    konstruksi dan evolusi.



                                                                               11
Atribut kualitas memiliki hubungan yang kompleks. Misalnya kode yang
     sangat dioptimalkan sering padat tapi sukar dibaca. Kode yang sukar dibaca
     biasanya perawatannya kurang. Sebaliknya kode yang dioptimalkan biasanya
     lebih efisien.
         Progamer dapat meningkatkan atribut kualitas tertentu pada programnya,
     meskipun biasanya mengorbankanbagian yang lain. Para insinyur software hams
     memutuskan atribut kualitas mana yang paling penting untuk proyek mereka.
     Misalnya, bila sebuah sistem diharapkan dapat tahan lama maka kemampuan
     perawatandapat merupakanhal yang terpenting,sedangkanefisiensidapat bersifat
     kurang penting. Teknik standard dan praktek Rekayasa Perangkat Lunak dapat
     dipakai untuk mempromosikan perawatan dan portabilitas, meskipun mungkin
     mengorbankan efisiensi. Pembahasan ini sekali lagi menunjukkan arti penting
     dan kesulitan dalam menentukan metodologi proyek yang tepat.




12

More Related Content

What's hot

Evolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunakEvolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunakFebry San
 
Produk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat LunakProduk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat LunakLusiana Diyan
 
Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)
Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)
Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)Ambar Fidianingsih
 

What's hot (6)

Evolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunakEvolusi perkembangan rekayasa perangkat lunak
Evolusi perkembangan rekayasa perangkat lunak
 
Pengenalan RPL
Pengenalan RPLPengenalan RPL
Pengenalan RPL
 
Konsep Rekayasa Perangakat Lunak
Konsep Rekayasa Perangakat LunakKonsep Rekayasa Perangakat Lunak
Konsep Rekayasa Perangakat Lunak
 
ETS MPPL E
ETS MPPL EETS MPPL E
ETS MPPL E
 
Produk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat LunakProduk Rekasaya Perangkat Lunak
Produk Rekasaya Perangkat Lunak
 
Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)
Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)
Analisis Teknologi & Analisis Situasi (Dua Langkah dari Desain Multimedia)
 

Similar to Bab1

Materi rekayasa-perangkat-lunak
Materi rekayasa-perangkat-lunakMateri rekayasa-perangkat-lunak
Materi rekayasa-perangkat-lunakoktafianoandreas
 
Operasi dasar dan peralatan
Operasi dasar dan peralatanOperasi dasar dan peralatan
Operasi dasar dan peralatanseptyanandanq
 
Operasi dasar dan peralatan
Operasi dasar dan peralatanOperasi dasar dan peralatan
Operasi dasar dan peralatanseptyanq
 
Pendahuluan Interaksi Manusia dan Komputer
Pendahuluan Interaksi Manusia dan KomputerPendahuluan Interaksi Manusia dan Komputer
Pendahuluan Interaksi Manusia dan KomputerDENDIKURNIADITIF
 
Pendahuluan imk
Pendahuluan imkPendahuluan imk
Pendahuluan imkfatahlity
 
Dianvs.blogspot.com perangkat lunak
Dianvs.blogspot.com perangkat lunakDianvs.blogspot.com perangkat lunak
Dianvs.blogspot.com perangkat lunaksuleman ganteng
 
pengenalan komputer
pengenalan komputerpengenalan komputer
pengenalan komputerdiana isya
 
Operasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerOperasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerryan_satrya
 
Operasi dasar dan peralatan
Operasi dasar dan peralatanOperasi dasar dan peralatan
Operasi dasar dan peralatanlestaripuj
 
Lanjutan Pert 2.pptx
Lanjutan Pert 2.pptxLanjutan Pert 2.pptx
Lanjutan Pert 2.pptxmerisipahutar
 
Makalah perkembangan teknologi informasi
Makalah perkembangan teknologi informasiMakalah perkembangan teknologi informasi
Makalah perkembangan teknologi informasiAsty Rusintta
 
Materi knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdf
Materi knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdfMateri knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdf
Materi knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdfmerinovamarito7
 
SOFTWARE (PERANGKAT LUNAK) MCR.pptx
SOFTWARE (PERANGKAT LUNAK) MCR.pptxSOFTWARE (PERANGKAT LUNAK) MCR.pptx
SOFTWARE (PERANGKAT LUNAK) MCR.pptxM Chairul Ramadhan
 
03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx
03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx
03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptxIsmaNurul
 
Operasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerOperasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerbagja21
 
Operasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerOperasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerbagja21
 
Materi 2 : Perangkat lunak (software)
Materi 2 : Perangkat lunak (software)Materi 2 : Perangkat lunak (software)
Materi 2 : Perangkat lunak (software)Nanang Kurniawan
 

Similar to Bab1 (20)

Materi rekayasa-perangkat-lunak
Materi rekayasa-perangkat-lunakMateri rekayasa-perangkat-lunak
Materi rekayasa-perangkat-lunak
 
Operasi dasar dan peralatan
Operasi dasar dan peralatanOperasi dasar dan peralatan
Operasi dasar dan peralatan
 
Operasi dasar dan peralatan
Operasi dasar dan peralatanOperasi dasar dan peralatan
Operasi dasar dan peralatan
 
Pendahuluan Interaksi Manusia dan Komputer
Pendahuluan Interaksi Manusia dan KomputerPendahuluan Interaksi Manusia dan Komputer
Pendahuluan Interaksi Manusia dan Komputer
 
Pendahuluan imk
Pendahuluan imkPendahuluan imk
Pendahuluan imk
 
Dianvs.blogspot.com perangkat lunak
Dianvs.blogspot.com perangkat lunakDianvs.blogspot.com perangkat lunak
Dianvs.blogspot.com perangkat lunak
 
pengenalan komputer
pengenalan komputerpengenalan komputer
pengenalan komputer
 
Operasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerOperasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputer
 
Operasi dasar dan peralatan
Operasi dasar dan peralatanOperasi dasar dan peralatan
Operasi dasar dan peralatan
 
Lanjutan Pert 2.pptx
Lanjutan Pert 2.pptxLanjutan Pert 2.pptx
Lanjutan Pert 2.pptx
 
RPL T01 120103256 listyowatik
RPL T01 120103256 listyowatikRPL T01 120103256 listyowatik
RPL T01 120103256 listyowatik
 
Makalah perkembangan teknologi informasi
Makalah perkembangan teknologi informasiMakalah perkembangan teknologi informasi
Makalah perkembangan teknologi informasi
 
Materi knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdf
Materi knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdfMateri knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdf
Materi knm,nmjnm,,,mbnkjbmnmm,n,m1 RPL.pdf
 
SOFTWARE (PERANGKAT LUNAK) MCR.pptx
SOFTWARE (PERANGKAT LUNAK) MCR.pptxSOFTWARE (PERANGKAT LUNAK) MCR.pptx
SOFTWARE (PERANGKAT LUNAK) MCR.pptx
 
03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx
03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx
03.-JENIS_SOFTWARE_KOMPUTER MANAJEMEN.pptx
 
Operasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerOperasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputer
 
Operasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputerOperasi dasar dan peralat peyusun koputer
Operasi dasar dan peralat peyusun koputer
 
Materi 2 : Perangkat lunak (software)
Materi 2 : Perangkat lunak (software)Materi 2 : Perangkat lunak (software)
Materi 2 : Perangkat lunak (software)
 
Perangkat lunak
Perangkat lunakPerangkat lunak
Perangkat lunak
 
materi 2..pptx
materi 2..pptxmateri 2..pptx
materi 2..pptx
 

More from Ratzman III

Tugas Tutorial EKSI4202 Hukum Pajak
Tugas Tutorial EKSI4202 Hukum PajakTugas Tutorial EKSI4202 Hukum Pajak
Tugas Tutorial EKSI4202 Hukum PajakRatzman III
 
Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I  -  EKSI4202 - Hukum PajakTugas Wajib Tutorial I  -  EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I - EKSI4202 - Hukum PajakRatzman III
 
Review Artikel Tinjauan Pustaka
Review Artikel Tinjauan PustakaReview Artikel Tinjauan Pustaka
Review Artikel Tinjauan PustakaRatzman III
 
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya IlmiahMICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya IlmiahRatzman III
 
Format laporan Tutor Universitas Terbuka 2014
Format laporan Tutor Universitas Terbuka 2014Format laporan Tutor Universitas Terbuka 2014
Format laporan Tutor Universitas Terbuka 2014Ratzman III
 
Arduino Ch3 : Tilt Sensing Servo Motor Controller
Arduino Ch3 : Tilt Sensing Servo Motor Controller Arduino Ch3 : Tilt Sensing Servo Motor Controller
Arduino Ch3 : Tilt Sensing Servo Motor Controller Ratzman III
 
Arduino - Ch 2: Sunrise-Sunset Light Switch
Arduino - Ch 2: Sunrise-Sunset Light SwitchArduino - Ch 2: Sunrise-Sunset Light Switch
Arduino - Ch 2: Sunrise-Sunset Light SwitchRatzman III
 
Arduino - CH 1: The Trick Switch
Arduino - CH 1: The Trick SwitchArduino - CH 1: The Trick Switch
Arduino - CH 1: The Trick SwitchRatzman III
 
Bab 3 - Kalkulus Relasional
Bab 3 -  Kalkulus RelasionalBab 3 -  Kalkulus Relasional
Bab 3 - Kalkulus RelasionalRatzman III
 
Bab 2 Aljabar Relasional
Bab 2   Aljabar RelasionalBab 2   Aljabar Relasional
Bab 2 Aljabar RelasionalRatzman III
 
Bab 1 RDBMS Review
Bab 1   RDBMS ReviewBab 1   RDBMS Review
Bab 1 RDBMS ReviewRatzman III
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data utsRatzman III
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data utsRatzman III
 
Modul my sql tutorial part 6
Modul my sql tutorial part 6Modul my sql tutorial part 6
Modul my sql tutorial part 6Ratzman III
 
Modul my sql tutorial part 5
Modul my sql tutorial part 5Modul my sql tutorial part 5
Modul my sql tutorial part 5Ratzman III
 

More from Ratzman III (20)

Tugas Tutorial EKSI4202 Hukum Pajak
Tugas Tutorial EKSI4202 Hukum PajakTugas Tutorial EKSI4202 Hukum Pajak
Tugas Tutorial EKSI4202 Hukum Pajak
 
Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I  -  EKSI4202 - Hukum PajakTugas Wajib Tutorial I  -  EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
 
Review Artikel Tinjauan Pustaka
Review Artikel Tinjauan PustakaReview Artikel Tinjauan Pustaka
Review Artikel Tinjauan Pustaka
 
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya IlmiahMICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
 
Format laporan Tutor Universitas Terbuka 2014
Format laporan Tutor Universitas Terbuka 2014Format laporan Tutor Universitas Terbuka 2014
Format laporan Tutor Universitas Terbuka 2014
 
Arduino Ch3 : Tilt Sensing Servo Motor Controller
Arduino Ch3 : Tilt Sensing Servo Motor Controller Arduino Ch3 : Tilt Sensing Servo Motor Controller
Arduino Ch3 : Tilt Sensing Servo Motor Controller
 
Arduino - Ch 2: Sunrise-Sunset Light Switch
Arduino - Ch 2: Sunrise-Sunset Light SwitchArduino - Ch 2: Sunrise-Sunset Light Switch
Arduino - Ch 2: Sunrise-Sunset Light Switch
 
Arduino - CH 1: The Trick Switch
Arduino - CH 1: The Trick SwitchArduino - CH 1: The Trick Switch
Arduino - CH 1: The Trick Switch
 
Bab 3 - Kalkulus Relasional
Bab 3 -  Kalkulus RelasionalBab 3 -  Kalkulus Relasional
Bab 3 - Kalkulus Relasional
 
Bab 2 Aljabar Relasional
Bab 2   Aljabar RelasionalBab 2   Aljabar Relasional
Bab 2 Aljabar Relasional
 
Bab 1 RDBMS Review
Bab 1   RDBMS ReviewBab 1   RDBMS Review
Bab 1 RDBMS Review
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data uts
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data uts
 
Modul my sql tutorial part 6
Modul my sql tutorial part 6Modul my sql tutorial part 6
Modul my sql tutorial part 6
 
Nilai lab 01pt3
Nilai lab 01pt3Nilai lab 01pt3
Nilai lab 01pt3
 
Format sap
Format sapFormat sap
Format sap
 
Tugas i
Tugas iTugas i
Tugas i
 
Modul my sql tutorial part 5
Modul my sql tutorial part 5Modul my sql tutorial part 5
Modul my sql tutorial part 5
 
1088
10881088
1088
 
1152
11521152
1152
 

Bab1

  • 2. 1.1 REKAYASAERANGKAT P LUNAK Pada tanggal 15 Januari 1990 jaringan jarak jauh manual AT&T mengalami gangguan selama sembilan jam karena adanya kerusakan software. Jutaan hubungan telepon terputus. Dengan sendirinya bisnis seperti biro-biro travel yang menggantungkan pada jaringan tersebut juga mengalami gangguan. Peristiwa ini merupakan salah satu petunjuk akan pentingnya perangkat lunak serta dampaknya yang berpengaruh pada masyarakat bila terjadi kerusakan padanya. Ilmu yang membicarakan masalah seperti diatas adalah Rekayasa Perangkat Lunak. Rekayasa Perangkat Lunak telah dikenal sebagai bidang ilmu sejak tahun 1960-an. Ole~ karena itu ini masih relatif baru, maka Rekayasa Perangkat Lunak ini belum memiliki banyak dasar-dasar ilmiah ( scientific basis ). Sebenarnya para pakar perangkat lunak ini tidak setuju dengan definisi Rekayasa Perangkat Lunak itu sendiri. Rekayasa Perangkat Lunak kita definisikan sebagai disiplin managerial dan teknis yang berhubungan dengan penemuan sistematik, produksi dan maintenance sistem software yang berkualitas tinggi, disampaikan pada waktu yang tepat serta memiliki harga yang mahal. Rekayasa Perangkat Lunak meninjau teori dari berbagai bidang seperti manajemen, ekonomi, matematik dan komputer science. Kita memfokuskan pada salah satu dari bidang yang luas ini - cara menggunakan lingkungan pemrograman untuk menghasilkan .>isteinperangkat lunak yang berkualitas tinggi. Khususnya kita akan membicarakan cara menulis, sistem seperti ini dalam lingkungan bahasa C sistem UNIX. Dengan sendirinya penekanan kita adalah pada sisi teknis Rekayasa Perangkat Lunak, bukan sisi managerial. C 1.2. SISTEMUNIXDANBAHASA UNIX adalah sistem operasi time-shared (dapat dipakai bersama-sama) yang pertama kali ditulis oleh Ken Thompson dari Bell Laboratories pada tahun 1969. UNIX memiliki dua bagian utama. Kernel UNIX merupakan satu set fungsi yang sering dipakai yang tersimpan dalam main memori. Kernel ini menjadualkan pekerjaan, kontrol, perangkat keras, serta mengatur input dan output. UNIX akan menginterpretasikan perintah yang dikirim kedalam sistem. UNIX juga sering dipakai untuk menunjukkan set perangkat dan utilitas - editor , compiler, 2
  • 3. Software Engineering Tool, dan sebagainya - yang khusus ada pada sistem tersebut. Terdapat versi UNIX sistem yang dikenal adalah AT & T UNIX sistem V, dan Berkeley UNIX yang secara resmi dikenal sebagai UCB 4XBSD. Versi-versi UNIX semuanya mirip, namun mereka berbeda dalam implementasi dan piranti-piranti serta utilitas-utilitas yang mereka sediakan.Sebagai contoh, terdapat shell UNIX : Bourne Shell, C Shell, dan Korn Shell. Semua shell ini dapat dipakai dengan kernel yang berbeda. Bahasa C ditulispada tahun 1970oleh DennisRitchieThompson,dan Ritchie menulis kembali kernel UNIX dalam C pada awal tahun 1970, dan sejak itu, UNIX dan C telah digabungkau.Bahasa C pada awalnya ditulis sebagai alternatif bagi bahasa rakitan pemrograman sistem. Hal ini karena C memberikan banyak kebebasan bagi pemrograman. Bahasa ini memungkinkan kita untuk mengakses tingkat rendah kedalam mesin. C dikenal sebagai bahasa yang dapat dipakai untuk menghasilkan kode yang cepat dan efisien.Bahasa C telah menjadi begitu terkenal, disamping pemrogramansistem,C dipakaijuga untukmembuatsistemsoftwareuntuk aplikasi yang besar. Generasi terakhir dari sistem switeling pada B~ll Laboratories yang berisikan jutaan baris kode, ditulis dalam C. Pendapat bahwa C merupakanbahasa yang baik untuk engineering sistem berskala besar, masih diperdebatkan. Dengan adanya data empiris yang cukup terkumpul, maka kita dapat mengetahui bahwa bahasa ini telah dapat dipakai dengan baik untuk membuat sistem yang besar. Bukti bahwa UNIX I C telah begitu terkenal adalah adanya banyak buku yang membahas UNIXIC tersebut. Buku ini menjelaskan tentang bahasa C dan sistem UNIX serta memberikan bimbingan yang rinei tentang pemakaiannya. Namun dalam buku ini tidak terdapat bimbingan rinei tentang .penggunaan perangkatdan teknik yang kita bicarakan.Tujuan kita adalah untuk menempatkan UNIXIC dalam konteks sistem engineering software yang besar - untuk menunjukkancara penggunaanUNIXICmelalui seluruh tahap untuk mendukung proyek engineering perangkat lunak. 1.3. BENI DALAMREKAYASA PERANGKAT LUNAK Meskipun telah banyak sumbangan teknis yang dibuat bagi Rekayasa Perangkat Lunak (misalnya,pengembanganbahasa pemrograman tingkat tinggi) seni dalam bidang ini masih jauh dari yang diinginkan para Rekayasa Perangkat 3
  • 4. Lunak. Praktek yang sering dipakai biasanya lebih buruk. Proyek pengembangan software sering menghasilkan produktifitas yang rendah, dan produk software biasanya penuh kesalahan dan tidak memenuhi kehendak pemakai. Untuk menggambarkan masalah ini, mari kita pelajari tentang penemuan studi dari sembilan kontrak pengembangan Software Departemen Pertahanan USA, yang bertotaI $ 6,8 juta. . Untuk softwareyang telah di kirim namun tidakpemah dapat dipakai dengan baik diperlukan $ 3,2 juta. . Untuk Software yang telah dibayar tetapi tidak terkirim, diperlukan $ 1,95 juta. . Untuk software yang telah dikirim dan dipakai namun harns diperbaiki sebanyak $ 1,3 juta. . Dari $ 6,8 juta, $ 119.000dipakaiuntuk softwareyang dipakaitanpa diadakan perubahan lagi. Namun sayangnya, pemborosan seperti ini merupakan hal yang umum. Sebagian besar organisasi teknis yang besar sering terjadi kerusakan software. Meskipun kegagalan proyek software sering disebabkan terutama oleh masalah managerial, pemborosan sumber teknis, sebab-sebab inilah yang menyebabkan biaya menjadi tinggi. Misalnya, salah satu sumber pemborosan yang terkenal dalam masalah teknis adalah kegagalan untuk menggunakan software kembali. ~mareo memperkirakanbahwarata-rataproyekhanyamelakukanpemakaian ulang sebanyak 5 % kode, meskipun sebenarnya bahwa kode .yang jumlahnya lebih banyak dapat digunakan. Masalah teknis ientang eara melakukan desain, katalog, penyimpanan dan pemanggilan kembali perangkat lunak yang dapat dipakai ulang masih belum terpecahkan. Salah satu aIasan dikembangkannya perangkat lunak UNIX karena UNIX berisikan banyak piranti keeil yang dapat dipakai kembali.HaIini sangat penting dalam Rekayasa Perangkat Lunak. Kepustakaan fungsi yang dapat digunakan kembali merupakan kelebihan yang terdapat pada bahasa C. Kita membahas masalah ini lebih secara rinei pada bab 6. Apa yang dapat dilakukan terhadap keadaan Rekayasa Perangkat Lunak yang belum lengkap tersebut ? Salah satu metodenya adalah dengan mempelajari secara lebih baik lagi mengenai masalah RekayasaPerangkat Lunak serta tentang teknik dan piranti terbaik yang ada untuk memecahkannya. Tugas ini tidaklah cukup bila hanya dibebankan dalam pelajaran akademik dan industri' tentang pemrograman dan Rekayasa Perangkat Lunak. Dalam pengalaman kita bahwa membuat serta mengajarkanRekayasa Perangkat Lunak. 4
  • 5. memperkerjakan dan mengarahkan para insinyur software serta berkomunikasi dengan para pembuat software dalam berbagai proyek dapat diketahui bahwa terdapat banyak kekurangan pengetahuan tentang masalah Rekayasa Perangkat Lunak, serta terdapat praktek yang tidak benar. Beberapa observasi yang tidak benar mengikuti: . Manajer yang tidak mempunyai latar belakang Rekayasa Perangkat Lunak yang bertanggungjawab pada pekerjaan teknis sebagian besar proyek soft- ware. . Para pekerja yang hanya memiliki pengalaman sedikit dibidang Rekayasa PerangkatLunak yang bertanggung jawab pada tugas teknis yang sulit, seperti merancang dan mengimplementasikan sebagian besar sistem software, dengan tidak memiliki petunjuk dan latihan teknis yang cukup. . Para lulusan program komputer science pada sebagian besar universitas yang belum pemah mengenal Rekayasa Perangkat Lunak, yang tidak menggunakan teknik dan piranti dalam membuat produk software yang berkualitas tinggi. Banyak program komputer science yang tidak memberikan pelajaran Rekayasa Perangkat Lunak, bila mereka memberikannya pelajaran tersebut bersifat pilihan dan titik utamanya pada pemrograman. 1.4. PROYEK, METODOLOGI DAN PROD UK SOFT- WARE Software adalah obyek tertentu yang dapat dijalankan seperti kode sumber, kode obyek, atau sebuah program yang lengkap. Produk software adalah soft- ware ditambah dengan semua item dan pelayanan pendukung yang secara keseluruhan dapat memenuhi kebutuhan pemakai. Produk software memiliki banyak bagian yang meliputi manual, referensi, tutorial, instruksi instalasi, data sampel, pelayanan pendidikan, pelayanan pendukung teknis dan sebagainya. Para insinyur software menghasilkan produk software, bukan hanya software. Semua yang dihasilkan oleh proyek software adalah produk kerja (work product). Produk kerja meliputi (1) Dokumen engineering yang dipakai untuk menentukan, mengontrol, dan memantau usaha kerja ; (2) Obyek yang dijalankan seperti prototipe, kendali test (test harness), dan piranti pengembangan tujuan 5
  • 6. khusus ; dan (3) Data yang digunakan untuk testing, rnelacak proyek dan sebagainya.Para insinyursoftwarernernbantumenghasilkansebagianOOsar roduk p kerja karena rnereka rnernilikikemarnpuan teknis. Kenyataannya para insinyur software sering rnenggunakan waktu yang lama untuk pekerjaan produk kerja non-software, khususnya dokurnen, daripada rnengerjakan pekerjaan software. 1.5. TIPEDANUKURANPROYEKSOFTWARE . Proyek software rnerniliki berbagai ukuran. Salah satu cara untuk rnenggolongkan ukuran tersebut adalah dengan baris kode seperti dalam taOOI 1.1. u ...............__. .................... uuu.u KATEGORI UKURAN PROYEK lI . . u un---nn !~~tlll~liil!liii!I~~II:i:ili::!i!ii!~~:lii:i n ~Ili:iilillillilll.!' _. _0000 Tidak penting 0-4 Minggu Utilitas pendek Keeil 1-6 Bulan Pustaka fungsi Sedang 0.5-2 Thn Produksi Compiler C Besar 2-3 Tahun Sistem Operasi keeil Sangat besar 4-5 Tahun Sistem Operasi besar Besar sekali 5-10 Tahun Sistem switching Proyek software yang paling besar ini memerlukan ribuan programer, manajer dan personal pendukung. Fungsi dan me sistern jumlahnya .puluhan dari ribuan dan dapat didistribusikan. ke banyak rnesin. Perubahan yang dilakukan terhadap sebuah file dapat rnengakibatkan ratusan file lainnya - dan sernua orang yang OOkerjadengan file-file tersebut. Inilah kerumitan pada hubungan intern diantara sernua elernen sistern ini yang rnernbedakan Rekayasa Perangkat Lunak. Kasus ini akan sulit bagi rnereka yang OOlurnpernah OOkerjadilingkungan proyek besar, untuk rnenerirna kerumitan tersebut. Ini adalah salah satu penghalang dalam pengajaran Rekayasa Perangkat Lunak. 6
  • 7. Mereka yang telah faham dengan teknik Rekayasa Perangkat Lunak untuk proyek keeil mungkin mengira bahwa teknik tersebut akan cukup bila dipakai untuk proyek besar. Pendapat ini biasanya tidaklah benar misalnya piranti Rekayasa Perangkat Lunak kadang-kadang tidak dapat dipakai untuk sistem terdistribusi. Teknik manajemen perubahan informal untuk kelompok yang terdiri dari lima pembuat program tidak dapat dipakai untuk kelompok yang berjumlah 50 orang. Praktek Rekayasa Perangkat Lunak merupakan hal yang penting untuk proyek pada semua ukuran. Untuk proyek yang sangat besar dan besar sekali praktek tersebut sangat diperlukan karena sistem yang berukuran besar seperti ini tidak akan dapat dibuat tanpa diadakannya praktek diatas. Terdapat bukti empiris bahwa ukuran proyek memiliki pengaruh yang besar pada atribut proyek penting seperti produktifitas programer individual, yang menurun drastis pada saat ukuran tim pengembangan dan sistem meningkat. Akibat ini disebabkan karena kurangnya koordinasi dan komunikasi pada proyek besar. Conte dan kawan-kawan memberikan pembahasan yang menarik tentang studi empiris dari faktor yang mempengaruhi proyek software. Faktor lain yang disebabkan oleh ukuran proyek adalah jumlah dokumentasi yang diperlukan. Sebagai contoh proyek yang tidak penting misalnya program metrik kode sumber yang sederhana seperti account, mungkin tidak memerlukan dokumen engineering apapun, dan tidak memerlukan dokumentasi pemakai yang lebih banyak selain halaman manual. Namun sebaliknya, proyek berukuran sedang, seperti compiler C, hendaknya memiliki satu set dOkumen engineering yang paling tidak meliputi eksplorasi konsep dan dokumen kelayakan, dokumen persyaratan, rencana proyek, dokumen disain, test plan, dan ringkasan proyek. Paling tidak pemakai memerlukan manual, tutorial, kartu referensi cepat, instruksi instalasi dsb. Merupakan hal yang tidak berguna bila kita menuntut dokumentasi utilitas metrik sebanyak compiler C tersebut. Namun demikian tuntutan semacam ini kadang-kadang dapat terpenuhi. Hal ini merupakan contoh yang umum tentang praktek Rekayasa Perangkat Lunak yang tidak tepat pemakaiannya. Proyek-proyek juga berbeda dalam hal tipenya. Tuntutan unjuk kerja, disain, strategi implementasi, metode pengujian dan maslah yang timbul secara substansial berbeda untuk program sistem operasi, program aplikasi keilmuan, program aplikasi. bisnis serta sistem real-time. Perbedaan produktifitas diantara proyek software yang berbeda telah di obsevasi. Praktek-praktek Rekayasa Perangkat Lunak harus disesuaikan dengan proyek-proyek yang memiliki ruang lingkup yang berbeda. Set dari piranti teknik serta metode yang digunakan oleh para insinyur soft- ware dalam proyek software disebut metodologi proyek. Memilih metodologi 7
  • 8. yang tepat untuk sebuah proyek bukanlah hal yang mudah. Pimpinan insinyur software hams membentukmetodologiproyek dengan memilih dari berbagai alat teknik dan metode yang ada yang sesuai untuk proyek mereka. 1.6. TAHAP-TAHAP PEMBUATANOFTWARE S SERTA MODELNYA Metodologi proyek diterapkan dalam konteks tahap-tahap pengembangan software (software ~ive cycle) - urut-urutan tahap pengembangan, yang disebut fase, yang merupakan tahapan yang hams dilalui oleh produk software dari konsep awal sampai tahap terakhir. Model tahap-tahap tersebut merupakan penyajian dari tahap-tahap pengembangan software yang juga dapat berisikan alur informasi, saat penentuan keputusan dsb. Kita menekankan bahwa model tahap-tahap tersebut hanyalah merupakan model. Tidak ada proyek sesungguhnya yang berlaku secara tepat sebagaimana yang ditunjukkan oleh suatu model dan penyimpangan ini akan banyak. Fase-fase dari model tahapan penyusunan dapat merupakan fase temporal- yang membentuk urutan dalam waktu - atau fase logis - yang menunjukkan tahap-tahap bukan rriembentuk urutan temporal. Sebagai contoh impleroentasi secara logis akan mendahului pepguj,ian namun bagian fase implementasi dan pengujian dapat terjadi secara serempak. Jadi model tahapan yang menggunakan fase logis dapat memiliki fase implementasi sebelum fase pengujian, sedangkan model yang menggunakan fase temporal mungkin fase-fase ini akan bertumpang tindih. Model tahapan ini dapat digunakan secara tertulis untuk memberikan tugas pada kejadian tahapan pengembangan atau secara deskriptif untuk merecord peristiwa-peristiwa pada tahapan tersebut. Banyak model tahap pengembangan sistem yang telah diajukan. Sebagian besar model-model tersebut memiliki kesamaan pada tahap-tahap fundamental, tetapi berbeda dalam hal terminologi, penekanan, keluwesan dan cakupannya. Model temporal prekriptif yang rinci bermanfaat dalam suatu rencana proyek karena model ini memetakan jalannya proyek yang dikehendaki. Model temporal deskriptifbermanfaat dalam pelaksanaan dokumentasi tahap-tahap pengembangan serta dalam menganalisa proyek bila telah selesai. Model tahapan pengembangan yang kita pakai dalam buku ini adalah model logis preskriptif umum. Model ini bersifat umum karena hanya memberikan 8
  • 9. urutan Jogis tentang fase-fase pengembangan. Meskipun model ini akan lebih baik untuk menyajikantemporal khusus namun tidak ada model seperti ini yang dapat untuk semua proyek software. Seperti bagian-bagian lain dari metodologi software, model tahap pengembangankhusus harus dibentuk untuk proyek soft- ware khusus. Model kita adalah model air terjun ( waterfall ) standard yang berisikan fase-fase logis berikut : . Fase analisis kelayakan dan eksplorasi konsep. MengidentifIkasikebutuhan untuk melakukan otomatisasi proses dan menganalisa kelayakan proyek. . Fase spesifIkasipersyaratan.Menganalisadan mendokumentasikan persyaratansistem.Dokumentasipersyaratansecarajelas harus menyebutkan apa yang akan dilakukan oleh sistem yang diproyeksikan, unsur apa yang akan diperlukan oleh produk software serta karakteristik apa yang harus dimiliki oleh unsur produk. . Fase disain. Mendisain sistem dan mendokumentasikan sistem. Dokumen disain menentukan eara pembuatan sistem software untuk memenuhi persyariltantersebut. . Fase implementasi. Menulis software. . Fase pengujian.Meneoba softwareuntuk mengetahuiapakahtelah memenuhi persyaratannya. . Fase perawatan.Mengikutipenempatanproduk software.membetulkan kesalahan; mengubah dan memperluas sistem. Model ini seperti model lainnya hanya memberikan cara yang sebenarnya dikerjakan oleh suatu proyek ( gambar 1.1 ).. Sangat banyak hal yang tidak dlramalkan terjadi pada proyek software untuk semua model yang lebih banyak daripada petunjuk umum. Model waterfall sering dikritik karena hanya sedikit yang sama dengan kenyataan proyek. Namun model ini merupakan model yang banyak dipakai dalam proyek besar. Lebih lanjut model ini bermanfaat bagi segi pedagogis, itulah sebabnya kita menggunakan model tersebut. 1.7 ATRIBUT KUALITASOFTWARE S Kualitas dihubungkan dengan pemenuhan tuntutan pemakai. Salah satu eara menghubungkan kualitas dengan pemakai adalah dengan mengikuti Juran dalam 9
  • 10. mendefinisikan kuaIitas sebagai (kecocokan penggunaan). Juran membedakan dua aspek keeocokan penggunaan: Koleksi kemampuan produk yang memenuhi tuntutan pemakai dan bebas dari kekurangan. Sebuah produk dengan koleksi kemampuan yang dapat memenuhi tuntutan pemakai maka dapat memberikan kepuasan pembeli. Terbebas dari kekurangan dapat menghindari ketidakpuasan pembeli. Kedua aspek ini dapat memenuhi tuntutan pemakai ( kualitas tinggi ). Concept exploretlon and feasibility ene'ysls Gambar 1.1 Model pengembangan software waterfall. KuaIitas produk software yang telah selesai terutama tergantung pada kuaIitas produk kerja yang dihasilkan selama pengembangan dan perawatan. Pengertian kuaIitas sebagai fitness for use menghasilkan atribut untuk mengevaIuasi kuaIitas produk kerja yang berdasarkan pada tuntutan pemakai dari produk tersebut. Misalnya, dokumen spesifikasi tuntutan dipakai oleh pembeli dan pembuat untuk merecord keputusan dan persertujuan tentang .produk .yang akan dibuat, oleh disainer sebagai sumber definitif tenteng informasi produk yang. akan didisain, bagi dokumenter merupakan sumber informasi tentang eara kerja produk tersebut serta earn pemakaiannya, bagi penguji merupakan sumber informasi tentang earn sistem tersebut berlaku hubungannya untuk meneoba data, dan tentang parameter unjuk kerja. Tuntutan ini memberikan motifasi pada atribut kuaIitas khusus untuk 10
  • 11. dokumen spesiftkasituntutan - misalnyasemua persyaratandapat di test, tepat, dan jelas; bahwa keterbatasan unjuk ketja harus secara jelas ditunjukkan; dsb. Atribut kualitas yang hampir sarna dapat dihasilkan untuk semua produk kerja; temyata sebagian produk ketja memiliki atribut kualitas yang meneakup : . Betul. Deftnisi betul beragarn.Misalnya dokumen tuntutan betul bila seeara tepat dapat menjelaskan fungsi dan kekayaan yang diperlukan oleh suatu produk; Softwaredikatakanbenarjika telah memenuhipersyarataninput dan outputnya; dokumentasi program dikatakan betul bila secara akurat dapat menjelaskan program. . Eftsien.Atributini menunjukkanentangearapemakaian t sumberkomputasi secara baik. Sebagai eontoh, Quietsort lebih eftsien daripada Bubblesort sebab didapat melakukan sort daftar dengan instruksi mesin yang lebih sedikit. . Perawatan. Atribut ini dapat diterapkan untuk semua produk keIja tapi sebagian besar sering diaplikasikan untuk software. Perawatan ini menunjukkan betapa mudahnya eara melakukan perbaikan, perubahan atau perluasan. . Mudah dipindahkan (Portable). Atribut ini menunjukkan betapa mudahnya software dapat dipindah tergantung dari jenis lingkungan. . Mudah dibaea (Readable). Atribut ini berlaku untuk semua produk kerja tekstual atribut ini menunjukkan betapa mudahnya kita memahami produk kerja. . Dapat dipereaya (Reliable).Atribut ini biasanya berlakuunlJk software serta 'mengaeu pada kemampuan software untuk dijalankan sesuai dengan permintaan untuk periode pemakaian tambahan. . Dapatdipakailagi (Reuseable).Atributini biasanyaditerapkanpada perangkat lunak dan berkaitan dengan seberapa baik program dapat melanjutkan operasinya seeara betul dalam mengatasi masukkan yang salah. . Kuat (Rebost). Atribut ini untuk software serta mengaeueara suatu program meneruskan operasinya dengan benar. . Dapat di uji (Testable).Atribut ini menunjukbetapa mudahnya produk kerja dieoba seeara penuh, akurat, efisien dan sistimatisuntuk mengetahuiapakah dia memenuhi persyaratan. . Memilikidokumentasiyang baik (Welldokumented).Atributini menunjukkan betapa baiknya produk softwaredidukung oleh materialyang seeara lengkap menjelaskan instalasinya, operasi, perawatan, perbaikan, pengembangan, konstruksi dan evolusi. 11
  • 12. Atribut kualitas memiliki hubungan yang kompleks. Misalnya kode yang sangat dioptimalkan sering padat tapi sukar dibaca. Kode yang sukar dibaca biasanya perawatannya kurang. Sebaliknya kode yang dioptimalkan biasanya lebih efisien. Progamer dapat meningkatkan atribut kualitas tertentu pada programnya, meskipun biasanya mengorbankanbagian yang lain. Para insinyur software hams memutuskan atribut kualitas mana yang paling penting untuk proyek mereka. Misalnya, bila sebuah sistem diharapkan dapat tahan lama maka kemampuan perawatandapat merupakanhal yang terpenting,sedangkanefisiensidapat bersifat kurang penting. Teknik standard dan praktek Rekayasa Perangkat Lunak dapat dipakai untuk mempromosikan perawatan dan portabilitas, meskipun mungkin mengorbankan efisiensi. Pembahasan ini sekali lagi menunjukkan arti penting dan kesulitan dalam menentukan metodologi proyek yang tepat. 12