Looping Crew

Selasa, 25 Juni 2013

Rekayasa Perangkat Lunak



Rekayasa Perangkat Lunak
Tujuan
Mengenal masalah yang berkaitan dengan pembangunan software
Memahami kebutuhan perlunya pendekatan yang terstruktur untuk pembangunan software
Mampu mengambil kesimpulan tentang definisi software engineering (rekayasa perangkat lunak)

Kegagalan
Over budget / Anggaran yang membengkak
Over budget / Over schedule
-- anggaran dan jadwal yang membengkak

Lebih banyak lagi projek-projek yang gagal karena tidak menggunakan RPL. Kegagalan terjadi karena :
o        Ukuran projek tidak sebanding dengan usaha/SDM
o        Berhentinya personil  kunci
o        Gagal mengerti kebutuhan
o        Projek yang dihasilkan tidak sesuai dengan kualitas
o        Munculnya teknologi baru
o        dll

What makes software special?
  1. Sulit bagi klien untuk menentukan kebutuhan secara lengkap
  2. Sulit bagi pembangun untuk benar-benar mengerti keperluan klien
  3. Dalam memastikan dan memahami kebutuhan, khususnya perubahan kebutuhan, informasi yang banyak perlu dikomunikasikan dan dipahamikan secara terus-menerus.
  4. Software cenderung mudah untuk diubah
  5. Pembangunan software memerlukan pengalaman, pemikiran dan imaginasi
  6. Sulit menguji software secara teliti dan menyeluruh

q  Rekayasa Perangkat Lunak adalah
                cabang computer science yang                  berhubungan dengan pembangunan     sistem perangkat lunak yang besar                 dan        kompleks, sehingga dibangun    oleh suatu tim (Ghezzi).
v  Rekayasa Perangkat Lunak (IEEE) :
         aplikasi/penerapan dari pendekatan yang   sistematis, disiplin dan  terkuantifikasi untuk   mengembangkan, menjalankan dan          memelihara perangkat lunak
v  Rekayasa Perangkat Lunak (Fritz Baeur) :
                pembentukan dan penggunaan prinsip-prinsip teknik untuk mendapatkan perangkat lunak yang ekonomis yang dapat bekerja secara efisien pada mesin real.

Mitos-mitos dalam
Rekayasa Perangkat Lunak
v  Mitos Manajemen : mitos-mitos yang berkaitan dengan manajemen pembangunan software.
v  Mitos Klien : mitos-mitos yang berkaitan dengan kebutuhan-kebutuhan yang menentukan unjuk kerja software
v  Mitos Praktisi : mitos-mitos yang berkaitan dengan cara kerja dan pandangan praktisi terhadap kegiatan pembangunan software



Penutup
v  Banyak contoh kasus kegagalan rekayasa perangkat lunak
v  Kegagalan bisa karena sistem dibatalkan sebelum lengkap atau dihentikan karena beberapa alasan atau selesai tapi tidak lengkap, anggaran membengkak atau tidak tepat waktu
v  Software berbeda dari produk lain
v  Perlunya pendekatan yang teratur dalam pembangunan software
v  Software engineering memerlukan teori, metode dan alat-alat untuk membangun, mengatur, mengembangkan dan merawat produk software

TUJUAN RPL
—  Memberi kerangka kerja untuk membangun perangkat lunak yang berkualitas tinggi
—  Menghasilkan perangkat lunak yang terlihat dari segi biaya sangat efisien, berkualitas dengan sumber daya terbatas dan waktu terbatas
CIRI PERANGKAT LUNAK
—  Perangkat lunak tidak akan susut atau tidak memerlukan suku cadang
—  Perangkat lunak diperoleh dari proses pengembangan bukan pabrikasi
—  Dikembangkan melalui siklus pengembangan sistem
—  Rancangan yang buruk akan meningkatkan biaya pemeliharaan
—  Kegagalan pada perangkat lunak terjadi pada rancangan, bukan karena susut
CIRI PERANGKAT LUNAK YANG DIREKAYASA DENGAN BAIK
—  Mudah dirawat
P  Diberi dokumentasi
P  Perubahan dapat dilakukan dengan biaya minimum
—  Sistem yang dibangun dapat diandalkan atau bekerja seperti yang diharapkan
—  Bekerja efisien : tidak memboroskan sumber daya (memory, prosesor, dll)
—  Mempunyai antar muka yang baik (tampilannya sesuai dengan keinginan user)
APLIKASI DARI PERANGKAT LUNAK
—  Sistem Software (menangani program-program lain). Contoh : Windows, Linux, dll
—  Realtime Software (memonitor, menganalisa dan mengendalikan peristiwa yang terjadi saat itu juga)
—  Bussines Software (penggajian, penjualan, dll)
—  Enginering Scientific Software (astronomi, arkeologi, ramalan cuaca)
—  Embeded Software (tersimpan dalam memory ROM, mengatur perangkat keras)
—  Personal Computer Software (microsoft word, microsoft excel, dll)
—  Artificial Intellegence Software (bertindak seolah-olah seperti pakar, contoh : game simulasi pesawat terbang, deteksi manusia pada AC)

4 AKTIFITAS YANG DILAKUKAN OLEH PEREKAYASA
—  Spesifikasi (perancangan)
—  Pengembangan (mengembangkan sesuai spesifikasi)
—  Validasi / Testing (pengujian)
—  Evolusi (penyesuaian sesuai perubahan yang ada)
MODEL PERANGKAT LUNAK
WATERFALL
KEUNTUNGAN
—  Berurut-urutan
—  Paling banyak dipakai
—  Masih sesuai dengan jaman sekarang
PROBLEM
—  Mengalami perulangan bila ada perubahan
—  Kerja lambat
—  Tidak bisa dilakukan tanpa melihat urutan
—  Sulit mendefinisikan kebutuhan secara jelas
PROTOTYPE
—  Model ini dipakai apabila ditemui kondisi tertentu. Apabila user mendefinisikan kebutuhan secara umum, adanya ketidakpastian user, definisi user bersifat tidak rinci
—  Sistem ini sering digunakan karena adanya usaha menyamakan persepsi
KEUNTUNGAN
—  Adanya komunikasi antar user dan pengembang
—  Meminimalkan salah persepsi
—  Peran user menjadi meningkat
—  Pengembangan lebih cepat
—  User melihat pembuatan program tahap demi tahap
—  Implementasi lebih mudah
PROBLEM
—  Waktu yang dibutuhkan lebih banyak maka diperlukan komitmen untuk menyelesaikannnya
—  User berharap terlalu banyak ; user sering berubah keinginan
—  Bekerja tidak efisien ; hanya mementingkan program selesai sehingga kurang memperhatikan hal-hal lain
SPIRAL
Merupakan gabungan antara keunggulan waterfall dan prototype.
—   Customer communication
—   Planning
—   Analisis
—   Enginering
—   Evaluasi


MEREKAYASA KEBUTUHAN
TUJUAN
—  Mampu merekayasa kebutuhan
—  Mampu membedakan kebutuhan fungsional dan non-fungsional
Apa itu Kebutuhan???
—  Pernyataan gambaran pelayanan yang disediakan oleh sistem, batasan-batasan dari sistem atau definisi fungsi dari sistem.
—  Pernyataan dalam bahasa alami, ditambah dengan gambar tentang layanan yang disediakan sistem dan tentang batasan-batasan operasionalnya.
FUNGSI GANDA KEBUTUHAN
—  Menjadi dasar penawaran suatu kontrak
                à harus terbuka untuk masukkan, namun belum tentu disetujui
—  Menjadi dasar kontrak
                à harus didefinisikan secara detail
SPESIFIKASI KEBUTUHAN
Gambaran layanan sistem secara detail dan terstruktur. Ditulis sebagai kontrak.

MASALAH PENDEFINISIAN KEBUTUHAN
—  Sulit mengantisipasi efek dari sistem baru terhadap orang
—  Beda user, beda kebutuhan
—  End user sistem dan orang yang membiayai sistem berbeda kebutuhan
Masalah perbedaan bahasa alami
Bagaimana Kebutuhan Bisa Didapatkan?
—  Interview
P  Memberi informasi terbaik
P  Waktu
—  Questionnaires
P  Bagus jika banyak orang terlibat dan tersebar
P  Respon cenderung kurang baik
—  Observasi
P  Akurat, jika dilakukan dengan baik
P  Waktu
KEBUTUHAN FUNGSIONAL
—  Penjelasan tentang layanan yang perlu disediakan oleh sistem
—  Menggambarkan sistem kebutuhan secara detil, seperti input dan output
—  Harus komplit (kebutuhan layanan yang jelas dan lengkap) dan konsisten (tidak kontradiksi dengan yang didefinisikan)
Contoh kasus di perpustakaan
P  Bisa mencari informasi tentang buku
P  Memiliki pengenal yang unik (peminjam)
P  Sistem mampu mencatat transaksi secara lengkap
P  Hari libur sejak awal harus di-set dan bisa menerima perubahan dengan otoritas khusus
KEBUTUHAN NON-FUNGSIONAL
—  Berisi batasan-batasan layanan yang diperlukan sistem atau batasan-batasan pada pelayanan/fungsi yang disediakan oleh sistem. Contoh :
P  Kecepatan akses
P  Keamanan data
P  Besarnya kapasitas penyimpanan yang diperlukan
P  Privasi masing-masing profil / user account
P  Bahasa pemrograman & sistem operasi yang digunakan
—  Berkaitan dengan kebutuhan sistem secara keseluruhan

Pemodelan (Modeling)
Adalah proses merancang piranti lunak sebelum melakukan pengkodean (coding).
Model piranti lunak dapat dianalogikan seperti pembuatan blueprint pada pembangunan gedung.
Dengan menggunakan model, diharapkan pengembangan piranti lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat.
Kesuksesan suatu pemodelan perangkat lunak ditentukan oleh tiga unsur :

Memahami metode pemodelan tanpa mengetahui cara pemakaian yang sebenarnya (proses) akan membuat proyek gagal. Pemahaman terhadap metode pemodelan dan proses disempurnakan dengan penggunaan tool yang tepat.

APA ITU UML???
Unified Modelling Language (UML) adalah “bahasa” yang telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak.
Menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras dan jaringan apapun, dengan memperhatikan sistem operasi serta bahasa pemrogramannya.

METODE-METODE PEMODELAN
—  Use case diagram
terdiri dari : Use cases, actors, hubungan antar use case
—  Class diagram
terdiri dari: Class, objek, attribute, operasi/behaviour/methods
hubungan antar class atau objek: association,  aggregation, composition generalization/inheritance

USE CASE DIAGRAM
Digunakan untuk menjelaskan kebutuhan.
—  Actors adalah inisiator (tidak selalu orang)
—  Use case adalah  fungsi sistem atau transaksi yang dilakukan  atau merupakan gambaran lengkap dari fungsi sistem secara umum
ACTOR
—  Actor adalah entity luar yang berkomunikasi dengan sistem, bisa berupa:
User/ pengguna/orang
External system/sistem luar
—  Actor mempunyai nama yang unik dan terkadang dengan penjelasannya
—  Contoh:
Penumpang : orang di dalam kereta
GPS satellite : menyediakan koordinat GPS

 USE CASE
Use case mewakili suatu fungsi yang disediakan sistem sebagai aliran kejadian.
Use case terdiri dari :
—   Unique name
—   Participating actors
—   Entry conditions
—   Flow of events
 Exit conditions

Contoh uses case
Unique Name : Membeli tiket
Participating actor : Penumpang
Entry condition :
*   Penumpang antri depan loket
*   Penumpang menyediakan uang untuk beli tiket
Exit condition:
*   Penumpang sudah punya tiket.

Flow of event:
1. Penumpang pilih tujuan
2. Penjual tunjukkan harga
3. Penumpang masukan uang yang sesuai.
4. Penjual beri kembalian uang (kalau ada)
5. Penjual memberikan tiket.

Jenis-Jenis Hubungan Antara Actor Dan Use Case
Extend : hubungan yang menyatakan per-kecualian --”terjadi jika..”
—  Perkecualian terjadi untuk memberi kejelasan ttg apa yang terjadi
—  Perkecualian bisa terjadi lebih dari satu
—  Arah selalu ke use case dimana perkecualian terjadi
Include :
 use case yang bisa digunakan lagi, atau digunakan oleh use case lain (tidak karena ada per-kecualian)
—  Arah  include selalu ke use case yang digunakan

USE CASE DIAGRAM
•          Menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”.
•          Menggambarkan kebutuhan system dari sudut pandang user
•          Mengfokuskan pada proses komputerisasi (automated processes)
•          Menggambarkan hubungan antara use case dan actor
•          Use case menggambarkan proses system (kebutuhan system dari sudut pandang user)
•          Secara umum use case adalah:
–        Pola perilaku system
–        Urutan transaksi yang berhubungan yang dilakukan oleh satu actor
•          Use case diagram terdiri dari
–        Use case
–        Actors
–        Relationship
–        System boundary boxes (optional)
–        Packages (optional)

USE CASE
•          Use case dibuat berdasar keperluan actor, merupakan “apa” yang dikerjakan system, bukan “bagaimana” system mengerjakannya
•          Use case diberi nama yang menyatakan apa hal yang dicapai dari hasil interaksinya dengan actor.
•          Use case dinotasikan dengan gambar (horizontal ellipse)
•          Use case biasanya menggunakan  kata kerja
•          Nama use case boleh terdiri dari beberapa kata dan tidak boleh ada 2 use case yang memiliki nama yang sama
ACTOR
•          Actor menggambarkan orang, system atau external entitas / stakeholder yang menyediakan atau menerima informasi dari system
•          Actor menggambarkan sebuah tugas/peran dan bukannya posisi sebuah jabatan
•          Actor memberi input atau menerima informasi dari system
•          Actor biasanya menggunakan Kata benda
•          Tidak boleh ada komunikasi langsung antar actor kecuali bersifat turunan.
•          Indikasi <<system>> untuk sebuah actor yang merupakan sebuah system
•          Adanya actor bernama “Time” yang mengindikasikan scheduled events (suatu kejadian yang terjadi secara periodik/bulanan)
Letakkan actor utama anda pada pojok kiri atas dari diagram

ASSOCIATIONS
•          Associations bukan menggambarkan aliran data/informasi
•          Associations digunakan untuk menggambarkan bagaimana actor terlibat dalam use case
•          Ada 4 jenis relasi yang bisa timbul pada use case diagram
1.       Association antara actor dan use case
2.       Association antara use case
3.       Generalization/Inheritance antara use case
Generalization/Inheritance antara actors

Association antara actor dan use case
•          Ujung panah pada association antara actor dan use case mengindikasikan siapa/apa yang meminta interaksi dan bukannya mengindikasikan aliran data
•          Sebaiknya gunakan Garis tanpa panah untuk association antara actor dan use case   -----
•          association antara actor dan use case yang menggunakan panah terbuka untuk mengindikasikan bila actor berinteraksi secara pasif dengan system anda ----à

<<include>>       termasuk didalam use case lain (required) / (diharuskan)             
–        Pemanggilan use case oleh use case lain, contohnya adalah  pemanggilan sebuah fungsi program
–        Tanda panah terbuka harus terarah ke sub use case
–        Gambarkan association include secara horizontal
<<extend>> perluasan dari use case lain jika kondisi atau syarat terpenuhi
–        Kurangi penggunaan association Extend ini, terlalu banyak  pemakaian association ini membuat diagram sulit dipahami.
–        Tanda panah terbuka harus terarah ke parent/base use case
–        Gambarkan association extend secara vertical

Generalization/inheritance antara use case
•          Generalization/inheritance digambarkan dengan sebuah garis berpanah tertutup pada salah satu ujungnya yang menunjukkan lebih umum
•          Gambarkan generalization/inheritance antara use case secara vertical dengan inheriting use case dibawah base/parent use case
•          Generalization/inheritance dipakai ketika ada sebuah keadaan yang lain sendiri/perlakuan khusus (single condition)

Generalization/inheritance antara actor

•          Gambarkan generalization/inheritance antara actors secara vertical dengan inheriting actor dibawah base/parent use case
Use case System boundary boxes
•          Digambarkan dengan kotak disekitar use case, untuk menggambarkan jangkauan system anda (scope of of your system).
•          Biasanya digunakan apabila memberikan beberapa alternative system yang dapat dijadikan pilihan
•          System boundary boxes dalam penggunaannya optional

ACTIVITY DIAGRAM
•          Menggambarkan proses bisnis dan urutan aktivitas dalam sebuah proses
•          Dipakai pada business modeling untuk memperlihatkan urutan aktifitas proses bisnis
•          Struktur diagram ini mirip flowchart atau Data Flow Diagram pada perancangan terstruktur
•          Sangat bermanfaat apabila kita membuat diagram ini terlebih dahulu dalam memodelkan sebuah proses untuk membantu memahami proses secara keseluruhan
•          Activity diagram dibuat berdasarkan sebuah atau beberapa use case pada use case diagram

CLASS DIAGRAM
•          Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek.
•          Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi).
•          Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.
•          Class memiliki tiga area pokok :
–        1. Nama (dan stereotype)
–        2. Atribut
–        3. Metoda
•          Atribut dan metoda dapat memiliki salah satu sifat berikut :
–        Private, tidak dapat dipanggil dari luar class yang bersangkutan
–        Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang mewarisinya
Public, dapat dipanggil oleh siapa saja

HUBUNGAN ANTAR CLASS
. Asosiasi, yaitu hubungan statis antar class. Umumnya menggambarkan class yang memiliki atribut berupa class lain, atau class yang harus mengetahui eksistensi class lain. Panah navigability menunjukkan arah query antar class.
2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri atas..”).
3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat diturunkan dari class lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi.
4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-passing dari satu class kepada class lain. Hubungan dinamis dapat digambarkan dengan menggunakan sequence diagram yang akan dijelaskan kemudian.