Rekayasa perangkat Lunak

download Rekayasa perangkat Lunak

of 65

description

Rekayasa perangkat Lunak

Transcript of Rekayasa perangkat Lunak

Microsoft Office

Reka NurbitonoRekayasa Perangkat LunakPerangkat LunakDefinisi Perangkat LunakPL adalah sekelompok item atau objek Yang membentuk konfigurasi dimana di dalamnya termasuk : instruksi/program dokumen struktur data ...

PL adalah Program-program komputer beserta dokumentasinya, seperti requirement, model desain dan user manual.

Arti Perangkat Lunak1. Instruksi atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.2. Struktur Data yang memungkinkan program memanipulasi informasi3. Dokumen yang menggambarkan operasi dan penggunaan program.Rekayasa Perangkat LunakDefinisi Rekayasa Perangkat LunakSoftware Engineering :Ilmu yang mempelajari teknik pembuatan software yang baik dengan pendekatan teknis (Engineering approach)Suatu disiplin rekayasa yang berkonsentrasi terhadap seluruh aspek produksi perangkat lunak.Mengadopsi pendekatan yang sistematis dan terorganisir dalam aktivitasnya dan menggunakan tool dan teknik yang sesuai yang ditentukan berdasarkan masalah yang akan dipecahkan, kendala pengembangan dan sumber daya yang tersedia

Evolusi Perangkat Lunak

Tahun-tahun PertamaBatch OrientationSuatu orientasi di mana proses dilakukan setelah data dikumpulkan dalam satuan waktu tertentu, atau proses dilakukan setelah data terkumpul, lawan dari batch adalah ONLINE atau Interactive Process. Keuntungan dari Interactive adalah mendapatkan data yang selalu up to date.Limmited distributionSuatu penyebaran software yang terbatas pada perusahaan-perusahaan tertentu.Custom softwareSoftware yang dikembangkan berdasarkan keinginan perusahaan-perusahaan tertentu.Era KeduaMulti userSuatu sistem di mana satu komputer digunakan oleh beberapa user pada saat yang sama.Real TimeSuatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second.DatabasePerkembangan yang pesat dari alat penyimpan data yang OnLine menyebabkan muncul generasi pertama DBMS (DataBase Management System).Product SoftwareAdalah software yang dikembangkan untuk dijual kepada masyarakat luas.Era KetigaDistributed systemSuatu sistem yang tidak hanya dipusatkan pada komputer induk (Host computer), daerah atau bidang lainnya yang juga memiliki komputer yang ukurannya lebih kecil dari komputer induk. Lawan dari distributed system adalah Centralized System.Embedded IntelegenceSuatu product yang diberi tambahan Intellegence dan biasanya ditambahkan mikroprocessor yang mutakhir. Contohnya adalah automobil, robot, peralatan diagnostic serum darah.Low Cost HardwareHarga hardware yang semakin rendah, ini dimungkinkan karena munculnya Personal Computer.Consumer ImpactAdanya perkembangan komputer yang murah menyebabkan banyaknya software yang dikembangkan, software ini memberi dampak yang besar terhadap masyarakat.Era KeempatExpert systemSuatu penerapan A.I. (Artificial Intellegence) pada bidang-bidang tertentu, misalnya bidang kedokteran, komunikasi, dll.AI MachineSuatu mesin yang dapat meniru kerja dari sebagian otak manusia. Misalnya mesin robot, komputer catur.Parallel ArchitectureArsitektur komputer yang memungkinkan proses kerja LAN paralel, yang dimungkinkan adanya prosesor berbeda dalam satu komputerSifat & Karakteristik SoftwareSoftware merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardwareElemen itu tidak aus, tetapi bisa rusak.Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardwareSoftware itu tidak bisa dirakit/disusun.Perangkat Lunak Berdasarkan PemakaiGenerik: Perangkat lunak yang bisa digunakan secara umumSpesifik: Perangkat lunak yang dibuat berdasarkan pesananPerangkat Lunak Berdasarkan FungsionalInterfacingOperating SystemPerangkat Lunak AplikasiCASE ToolsMacam-Macam Perangkat LunakGenerik: Perangkat lunak yang digunakan secara umum. Sebagai contoh:Operating System, seperti Microsoft Windows,Word Processing, seperti Microsoft Word, WordPadSpreadsheet, seperti Microsoft ExcellBeberapa aplikasi khusus bisa dibuat menjadi generik dengan membuatnya general dan mudah digunakan siapa saja seperti aplikasi akuntansi, aplikasi sekolah, dan lain-lainSpesifik: Perangkat lunak yang dibuat berdasarkan pesanan. Banyak Software House yang menghasilkan perangkat lunak ini berdasarkan proyek/pesanan tertentu. Sebagai contoh: Aplikasi Rumah Sakit, Aplikasi Pendidikan, Aplikasi Kesehatan, dan lain-lainPerangkat Lunak Berdasarkan PemakaiINTERFACING: Perangkat lunak ini menghubungkan suatu perangkat keras tertentu, seperti hardware driver, interfaces dengan perangkat keras lain. Misal: Driver untuk Kamera, Handphone atau perangkat keras lainnyaProgram interface seperti Sensor Suhu dengan LM555, PPI 8255, Komunikasi Serial RS232.

Perangkat Lunak Berdasarkan FungsionalnyaOPERATING SYSTEM: Perangkat lunak yang menjalankan sistem komputer dan merupakan interface dari sistem komputer dan program aplikasi yang berjalan diatasnya.Beberapa OS yang dikenal secara luas:Microsoft WindowsLinux dan varians-nya, seperti Redhat, SuSE, Mandrake, Debian, dsb.UnixFreeBSDMacintosh (Apple)

Perangkat Lunak Berdasarkan FungsionalnyaPROGRAM APLIKASI: program ini digunakan untuk keperluan tertentu, yang tujuannya membantu pekerjaan manusia menjadi lebih mudah. Program ini yang banyak dibahas dalam pembuatan perangkat lunak.Program Aplikasi ini tergantung pada kebutuhan dari program itu sendiri, seperti:Program OfficeProgram Graphics DesignProgram Multimediadan lain-lainPerangkat Lunak Berdasarkan FungsionalnyaPerangkat lunak harus memberikan bantuan dalam merepresentasikan dan mengakses file-file eksternal yang dibuat dengan alat bantu lain.Persyaratan Fungsional dan Non-FungsionalPersyaratan UserPersyaratan SistemDokumentasi Persyaratan Perangkat Lunak

Persyaratan Perangkat LunakPersyaratan Fungsional: Pernyataan layanan tentang bagaimana sistem harus bereaksi terhadap input, sistem harus berlaku pada situasi-situasi tertentu. Secara khusus menyatakan apa yang tidak boleh dilakukan sistem.Persyaratan Non Fungsional: Pernyataan tentang batasan layanan dan fungsi yang diberikan sistem.Persyaratan Domain: Persyaratan yang datang dari domain aplikasi sistem dan merefleksikan karakteristik domain tersebutPersyaratan Fungsional dan Non-FungsionalPersyaratan Produk: persyaratan yang diambil dari spesifikasi produk, seperti persyaratan hardware untuk mendukung kinerja.Persyaratan Organisasi: persyaratan yang berasal dari kebijakan dan prosedur pada organisasi.Persyaratan Eksternal: Persyaratan yang berasal dari faktor eksternal terhadap sistem dan proses pengembangannya.

Persyaratan Non FungsionalKecepatan dalam: Transaksi yang diproses/detik, waktu tanggal user/event atau waktu refresh layarUkuran dalam: KB atau jumlah Chip RAMKemudahan penggunaan dalam: waktu pelatihan atau jumlah frame helpKehandalan dalam: waktu rata-rata kegagalan, probabilitas ketidaksediaan, kecepatan terjadinya kegagalan, atau ketersediaanKetahanan dalam: waktu start ulang setelah kegagalan, prosentase event yang gagal, atau probabilitas korupsi dataPortabilitas dalam: prosentase pernyataan tergantung target, atau jumlah sistem target

Ukuran Persyaratan Non FungsionalMendeskripsikan persyaratan fungsional dan non-fungsional sehingga dapat dipahami oleh user yang tidak memiliki pengetahuan teknik.Persyaratan user harus ditulis memakai bahasa natural, formal dan diagram intuitif yang sederhana. Persyaratan user tidak boleh didefinisikan memakai model implementasi.Masalah yang sering muncul:Tidak Adanya KejelasanKesimpang-siuran PersyaratanPenggabungan Persyaratan

Persyaratan UserPersyaratan sistem ini lebih rinci dari persyaratan user, dan berfungsi sebagai dasar kontrak untuk implementasi sistem.Persyaratan sistem ini digunakan sebagai titik awal perancangan sistem.Bahasa natural banyak digunakan dalam mendefinisikan persyaratan sistemPersyaratan SistemAplikasi Perangkat LunakSystem SoftwareReal Time SoftwareBusiness SoftwareEngineering and sciencetific softwareEmbendded softwarePC software (Personal Computer)Artificial Intelegence softwareSystem SoftwareAdalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponen-komponen sistem operasi, driver dan prosesor telekomunikasi.Real Time SoftwareSoftware yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia. Elemen-elemen real time software terdiri dari:Komponen pengumpul data mengumpulkan dan menyusun informasi dari lingkungan external.Komponen analisis mentransformasikan informasi yang diperlukan oleh aplikasiKomponen kontrol memberikan respon kepada lingkungan externalKomponen monitor mengkoordinasi semua komponen-komponen lainnya, sehingga respons real time yang berkisar 1 milisecond sampai 1 menit dapat dipertahankan.Perlu dicatat bahwa istilah real time berbeda dari istilah interactive atau time sharing. Sistem real time harus memberikan respons pada waktu yang ditentukan, sedangkan pada sistem interactive atau time sharing respons time biasanya melebihi batas waktu yang ditentukan tanpa merusak hasil.Business SoftwareSoftware yang paling banyak digunakan dalam bidang aplikasi software. Software ini digunakan oleh manajemen untuk mengambil keputusan ( Decision Making ) dalam bidang bisnis. Contoh :DAC EASY ACCOUNTINGFINANCE MANAGEREngineering and Sciencetific SoftwareSoftware yang dicirikan dengan algoritma numerik, aplikasinya berkisar dari astronomi sampai vulkanologi, dari analis ketegangan otomotif sampai dinamika orbit ruang angkasa. Software ini banyak digunakan dalam bidang engineering dan science. Contoh CAD / CAM ( Computer Aided Design / Computer Aided Manufacture - Simulasi sistem )Embedded SoftwareSuatu software disimpan dalam memori tetap - ROM - Read Only Memory, dan digunakan untuk mengontrol product dan sistem software ini dijalankan dengan berbagai fungsi terbatas.PC software (Personal Computer)Software yang banyak digunakan di komputer pribadi (PC). Contoh :Word Processing : WS, WPSpreadsheet : Lotus, SupercalcComputer Graphics : Printshop, Print MagicGames : Paoman, Load RunnerDBMS : Dbase III+, Foxbase, ClipperNetwork : LAN, NovellArtificial Intelegence SoftwareSoftware yang banyak menggunakan algoritma non numerik dalam memecahkan masalah kompleks yang tidak dapat dianalisis dengan analisis komputasi biasa. Saat ini bidang AI yang paling aktif adalah expert system atau knowledge base system. Bidang aplikasi lain dari software AI adalah pengenalan citra dan suara ( image and voice pattern recognition ), teorema pembuktian dan permainan / games.Komponen Perangkat LunakBentuk BahasaBentuk TranslatorBentuk MesinBentuk BahasaTerbagi 3, yaituHigh Level, contoh JAVA, BASIC, PASCAL, COBOL, FORTRAN. Middle Level, contoh CLow Level, contoh Bahasa AssemblyBentuk TranslatorTerbagi 3 , yaitu :InterpreterMenerjemahkan dari bahasa tingkat tinggi ke bahasa tingkat rendah secara satu persatu (statemen demi statemen)CompilerMenerjemahkan secara keseluruhan, proses lebih cepat dari interpreterAssemblerMenerjemahkan dari bahasa rakitan ke bahasa mesinBentuk Mesin

Krisis Perangkat LunakAdalah sekumpulan masalah yang ditemukan dalam pengembangan software computer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang berhubungan dengan :Bagaimana mengembangkan software Bagaimana memelihara software yang ada, yang berkembang dalam jumlah besarBagaimana mengimbangi permintaan software yang makin besar.Masalah Perangkat LunakEstimasi jadwal dan biaya yang seringkali tidak tepatProduktivitas orang-orang software (programmer) yang tidak dapat mengimbangi permintaan kebutuhan software Kualitas software yang kurang baik.Penyebab Masalah Perangkat LunakKarakteristik software itu sendiriKarakteristik software adalah software yang bersifat logika dibandingkan fisik, oleh karena itu mengukur software harus merupakan suatu kesatuan, tidak seperti hardware. Software yang bersifat tidak aus ini menyebabkan kesalahan yang terjadi pada software. Umumnya terjadi pada tahap pengembangan. Manajer tingkat menengah dan tingkat atas yang tidak mempunyai latar belakang software, seringkali diberi tanggung jawab untuk mengembangkan software. Padahal tidak semua manajer itu dapat me-manage semua proyek. Praktisnya : software programmer atau software engineering mendapatkan latihan formal yang sedikit dalam hal tehnik baru pengembangan software.Kegagalan mereka yang bertanggung jawab dalam pengembangan software.Mitos Perangkat LunakMitos ManajemenMitos PelangganMitos Praktisi

Mitos ManajemenKita tidak perlu mengubah pendekatan terhadap pengembangan software, karena jenis pemrograman yang kita lakukan sekarang ini sudah kita lakukan 10 tahun yang lalu.Realitasnya : Walau hasil program sama, produktivitas dan kualitas software harus ditingkatkan dengan menggunakan pendekatan software developmentsKita sudah mempunyai buku yang berisi standarisasi dan prosedur untuk pembentukan software.Realitasnya : Memang buku tersebut ada, tetapi apakah buku tersebut sudah dibaca atau buku tersebut sudah ketinggalan jaman ( out of date ).Jika kita tertinggal dari jadwal yang ditetapkan, kita menambah beberapa programmer saja. Konsep ini sering disebut Mongolian harde concept.Mitos PelangganPernyataan tujuan umum sudah cukup untuk memulai penulisan program. Penjelasan yang lebih rinci akan menyusul kemudian.Realitasnya : Definisi awal yang buruk adalah penyebab utama kegagalan terhadap usaha-usaha pembentukkan software. Penjelasan yang formal dan terinci tentang informasi fungsi performance interface, hambatan desain dan kriteria validasi adalah penting. Karakteristik di atas dapat ditentukan hanya setelah adanya komunikasi antara customer dan developer.

Kebutuhan proyek yang terus menerus berubah dapat dengan mudah diatasi karena software itu bersifat fleksibel. Kenyataannya memang benar bahwa kebutuhan software berubah, tetapi dampak dari perubahan berbeda dari waktu kewaktu.Mitos PraktisiTidak ada metode untuk analisis disain dan testing terhadap suatu pekerjaan, cukup menuju ke depan terminal dan mulai coding.Realitasnya : Metode untuk analisis desain dan testing diperlukan dalam pengembangan software.Segera setelah software digunakan, pemeliharaan dapat diminimalisasikan dan diatasi dengan cara CATCH AS CATCH CAM.Realitasnya : Diperlukan budget yang besar dalam maintenance software. Pemeliharaan software harus diorganisir, direncanakan dan dikontrol seolah-olah sebagai suatu proyek besar dalam sebuah organisasi.Rekayasa Sistem berhubungan dengan semua aspek pengembangan sistem berbasis komputer, termasuk perangkat keras, perangkat lunak dan rekayasa proses.Rekayasa Perangkat Lunak adalah bagian dari Rekayasa Sistem

Perbedaan Rekayasa Perangkat Lunak dan Rekayasa SistemProses perangkat lunak adalah serangkaian kegiatan yang tujuannya untuk mengembangkan atau evolusi perangkat lunak.Kegiatan-kegiatan tersebut adalah:Spesifikasi perangkat lunak,Pengembangan perangkat lunak,Validasi perangkat lunak,Evolusi perangkat lunakProses Perangkat LunakModel proses perangkat lunak adalah representasi yang disederhanakan dari proses perangkat lunak yang dipresentasikan dari sudut pandang tertentuParadigma pengembangan model sistem :Waterfall Development ModelEvolutionary Development ModelSpiral Development ModelIncremental Development ModelModel Pengembangan SistemWaterfall Development Model

Development activities are performed in sequential order, with possibly minor overlap, and minimal or no iteration between activities. User needs are determined, requirements are defined, and the full system is designed, built, and tested for ultimate delivery at one point in time. Some people refer to this as a stage-wise model.Pendekatan Waterfall ModelEvolutionary Development ModelPenjelasan Garis BesarSpesifikasiPengembanganValidasiVersi AwalVersi MenengahVersi AkhirMasalah-masalah dalam Pengembangan EvolusionerProses tidak dapat dilihatSistem seringkali mempunyai struktur yang tidak baikMungkin diperlukan alat bantu khususModel pengembangan evolusioner ini cocok untuk aplikasi yang kecil dan life-cycle yang pendek.

Evolutionary Development ModelSpiral Development Model

Spiral Model DescriptionThe development spiral consists of four quadrantsQuadrant 1: Determine objectives, alternatives, and constraints.Quadrant 2: Evaluate alternatives, identify, resolve risks.Quadrant 3: Develop, verify, next-level product.Quadrant 4: Plan next phases.Spiral Development ModelIncremental Development Model

Proses perangkat lunak dibagi menjadi serangkaian increment yang dikembangkan secara bergantian.Keuntungan Pengembangan IncrementalUser tidak perlu menunggu seluruh sistem dikirimkan, karena increment pertama mempunyai persyaratan kritis dan perangkat lunak segera dapat digunakan.User dapat memakai increment pertama sebagai prototypeResiko kegagalan proyek secara keseluruhan lebih rendahPengujian paling ketat diberlakukan pada increment pertama.

Incremental Development ModelStudi KelayakanElisitasi dan Analisis PersyaratanSpesifikasi PersyaratanValidasi Persyaratan

Fase Utama Persyaratan Perangkat LunakSpesifikasi Persyaratan Perangkat LunakStudiKelayakanElisitasi danAnalisisPersyaratanSpesifikasiPersyaratanValidasiPersyaratanLaporanKelayakanModel SistemPersyaratanUser dan SistemDokumenPersyaratanPerancangan ArsitekturalSpesifikasi AbstrakPerancangan InterfacePerancangan KomponenPerancangan Struktur DataPerancangan Algoritma

Kegiatan Perancangan Perangkat LunakPerancangan dan ImplementasiPerangkat LunakSpesifikasiPersyaratanPerancanganArsitekturalSpesifikasiAbstrakPerancanganInterfacePerancanganKomponenPerancanganStruktur DataPerancanganAlgoritmaArsitekturSistemSpesifikasiPerangkat LunakSpesifikasiInterfaceSpesifikasiKomponenSpesifikasiStruktur dataSpesifikasiAlgoritmaValidasi Perangkat LunakPengujianUnitPengujianModulPengujianSub SistemPengujianSistem 1PengujianSistem 2PengujianKomponenPengujian IntegrasiPengujian UserEvolusi Perangkat LunakDefinisiPersyaratanSistemNilai SistemYang AdaPengajuanPerubahanSistemModifikasiSistemSistemYang AdaSistemBaruPemodelan Perangkat LunakPemodelan dan analisa dapat dianggap sebagai akar konsep dari semua displin teknik karena keutamaannya dalam mendokumentasikan dan mengevaluasi alternatif serta pilihan desain.Pemodelan dilakukan pada awal analisa, spesifikasi dan validasi persyaratan.Persyaratan yang dimaksud adalah semua kebutuhan pengguna, kustomer dan stakeholder yang harus dipenuhi oleh sistem. Dalam pembuatan persyaratan melibatkan :Analisa studi kelayakan dari sistem yang akan dibuat,Memperoleh dan menganalisa kebutuhan dari stakeholder Pembuatan gambaran yang akurat terhadap sistem tentang apa yang harus dilakukan sistem dan apa yang tidak.Validasi terhadap dokumen atau spesifikasi oleh stakeholder

Pemodelan Perangkat LunakInformation modeling (e.g. entity-relationship modeling, class diagrams, etc.)Behavioral modeling (e.g. structured analysis, state diagrams, use case analysis, interaction diagrams, failure modes and effects analysis, fault tree analysis etc.)Structure modeling (e.g. architectural, etc.)Domain modeling (e.g. domain engineering approaches, etc.)Functional modeling (e.g. component diagrams, etc.)Enterprise modeling (e.g. business processes, organizations, goals, etc.) Modeling embedded systems (e.g. real-time schedulability analysis, external interface analysis, etc.)Types of ModelsRational Rose UML PowerDesigner Data Modeling

Modeling CASE ToolTerima Kasih