Woensdag 17 April 2013

Peralatan Software Engineering


Peralatan Software Engineering
                Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode.
Contohnya :
       CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hardware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
       Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
       Contoh analogi dengan CASE pada hardware adalah : CAD, CAM, CAE

Prosedur Software Engineering
Terdiri dari :
        urut-urutan di mana metode tersebut diter apkan
        dokumen
        laporan-laporan
        formulir-formulir yang diperlukan
        mengontrol kualitas software
        mengkoordinasi perubahan yang terjadi pada software

Metode Software Enginnering



Metode Software Enginnering

                Metode software engineering memberikan teknik-teknik bagaimana membentuk software. 
Metode ini terdiri dari serangkaian tugas :
  •          Perencanaan & estimasi proyek
  •          Analisis kebutuhan sistem dan software
  •          Desain struktur data
  •          Arsitektur program dan prosedur algoritma
  •          Coding
  •          Testing dan pemeliharaan
1.      Classic Life Cycle Pradigm - Model Water Fall - Model Siklus Hidup Klasik


  1. System Engineering and Analysis:
             Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara \ menerap kan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan ele­men lain, seperti :
  •          Hardware 
  •          Software
  •          Database

  1. Analisis kebutuhan software:
            Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk soft­ware engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan inter­face terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas / ditinjau bersama-sama customer.

  1. Design
             Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu :
*         Struktur data
*        Arsitektur software
*        Rincian prosedur
Proses desain menterjemahkan kebutuhan ke dalam representasi software yang dapat diukur kualitasnya sebelum mulai coding. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.

  1. Coding
              Desain harus diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
  1. Testing
             Segera sesudah objek program dihasilkan, pengetesan program dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa semua pernyataan atau statements sudah dites dan lingkungan external menjamin bahwa definisi input akan menghasilkan output yang diinginkan.
  1. Maintenance
Software yang sudah dikirim ke customer data berubah karena
  •       Software mengalami error 
  •        Software harus diadaptasi untuk menyesuaikan dengan lingkungan external, misalnya adanya sistem  operasi baru atau peripheral baru.
  •         Software yang lebih disempurnakan karena adanya permintaan dari customer.
Masalah yang dihadapi dari model siklus hidup klasik adalah :
  •        Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pda aplikasi yang dibentuk oleh model ini.
  •      Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
  •      Customer harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek software sele­sai dalam waktu yang lama.

Masalah yang dihadapi dari model siklus hidup klasik adalah :
-Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini.  Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pada aplikasi yang dibentuk oleh model ini.
- Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
-Customer harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek software selesai dalam waktu yang lama.




2.Prototype Paradigm
                Seringkali seorang customer sulit menentukan input yang lebih terinci,  proses yang diinginkan dan output yang diharapkan. Tentu saja ini menyebabkan developer tidak yakin dengan efisiensi alogoritma yang di buatnya, sulit menyesuaikan sistem operasi, serta interaksi manusia dan mesin yang harus diambil. Dalam hal seperti ini, pen dekatan prototype untuk software engineering merupakan langkah yang terbaik. Prototype sebenarnya adalah suatu proses yang memungkinkan developer membuat sebuah model software.
Ada 2 bentuk dari model ini, yaitu :

A. Paper Prototype
Menggambarkan interaksi manusia dan mesin dalam sebuah bentuk yang memungkinkan user mengerti bagaimana interaksi itu terjadi.
B. Working Prototype
Adalah prototype yang mengimplementasikan beberapa bagian dari fungsi
software yang diinginkan seperti pada pendekatan pen gembangan software.
Model ini dimulai dengan :
 - Pengumpulan kebutuhan developer dan customer
 - Menentukan semua tujuan software
 - Mengidentifikasi kebutuhan-kebutuhan yang diketahui

Masalah yang dihadapi oleh prototyping paradigm ini adalah :
1. Customer hanya melihat pada apa yang dihasilkan oleh software, tidak peduli
pada hal-hal yang berhubungan dengan kualitas software dan pemeliharaan
jangka panjang.

2. Developer seringkali menyetujui apa yang diterangkan oleh cu stomer agar
prototype dapat dihasilkan dengan cepat. Akibatnya timbul pemilihan sistem
operasi / bahasa pemrograman yang tidak tepat.






3.      Fourth Generation Tehnique Paradigm - Model tehnik generasi   ke 4 / 4GT

                Istilah Fourth Generation Technique (4GT) meliputi seperangkat peralatan software yang memungkinkan seorang developer software menerapkan beberapa karakteristik software pada tingkat yang tinggi, yang kemudian menghasilkan source code dan object code secara otomatis sesuai dengan spesifikas i yang ditentukan developer. Saat ini peralatan / tools 4GT adalah bahasa non prosedur untuk :
                - DataBase Query
                - Pembentukan laporan ( Report Generation )
                - Manipulasi data
                - Definisi dan interaksi layar (screen)
                - Pembentukan object dan source ( Object and source generation )
                - Kemampuan grafik yang tinggi, dan
                - Kemampuan spreadsheet
Keterangan gambar :
*        Model 4GT untuk software engineering dimulai dengan rangkaian pengumpulan kebutuhan. Idealnya, seorang customer menjelaskan kebutuhan-kebutuhan yang selanjutnay diterjemahkan ke dalam proto­type. Tetapi ini tidak dapat dilakukan karena customer tidak yakin dengan apa yang diperlukan, tidak jelas dalam menetapkan fakta-fakta yang diketahui dan tidak dapat menentukan informasi yang diing­inkan oleh peralatan 4GT.
*        Untuk aplikasi kecil adalah mungkin bergerak langsung dari langkah pengumpulan kebutuhan ke im­plementasi yang menggunakan bahasa non prosedur fourth generation (generasi ke 4). Tetapi untuk proyek besar, pengembangan strategi desain sistem tetap diperlukan, sekalipun kita menggunakan 4GL. Penggunaan 4GT tanpa desain untuk proyek besar akan menyebabkan masalah yang sama yang ditemui dalam pengembangan software yang menggunakan pendekatan konvensional.
*        Implementasi yang menggunakan 4GL memungkinkan developer software menjelaskan hasil yang diing­inkan yang kemudian diterjemahkan ke dalam bentuk source code dan object code secara otomatis.
*        Langkah yang terakhir adalah mengubah implementasi 4GT ke dalam sebuah product. Selanjutnya de­veloper harus melakukan pengetesan, pengembangan dokumentasi dan pelaksanaan semua aktifitas lainnya yang diwujudkan dalam model software engineering.

Masalah yang dihadapi dalam model 4GT adalah adanya sebagian orang yang beranggapan bahwa :
1. peralatan 4GT tidak semudah penggunaan bahasa pemrograman,
2. source code yang dihasilkan oleh peralatan ini tidak efisien,
3. pemeliharaan sistem software besar yang dikembangkan dengan 4GT masih
merupakan tanda tanya


4.Model Kombinasi - Combining Paradigm

Keterangan :
              Model ini menggabungkan keuntungan-keuntungan dari beberapa model sebelumnya. Seperti pada model sebelumnya, model kombinasi ini dimulai dengan langkah pengumpulan kebutuhan.
             Pendekatan yang dapat diambil adalah pendekatan siklus hidup klasik (Analisis sistem dan analisis kebu­tuhan software) atau dapat juga menggunakan pendekatan seperti prototyping jika definisi masalahnya tidak terlalu formal.
             Jika kebutuhan untuk fungsi dan performance software diketahui dan dimengerti, pendekatan yang dianjur­kan adalah model siklus hidup klasik. Sebaliknya, jika aplikasi software menuntut interaksi yang sering antara manusia dan mesin,  membutuhkan algoritma yang tidak dapat dibuktikan, atau membutuhkan tehnik output / kontrol, maka pendekatan yang dianjurkan adalah model prototyping.
             Pada kasus seperti ini, 4GL dapat digunakan untuk mendapat prototype dengan cepat. Segera sesudah pro­totype dievaluasi dan disempurnakan, langkah desain dan implementasi dalam siklus hidup klasik diterap­kan.

Dari model yang disebut di atas dapat diambil suatu kesimpulan, bahwa proses pengembangan software terdiri dari 3 fase, yaitu :
1.      Fase Definisi
2.      Fase Pengembangan (Development)
3.      Fase Pemeliharaan (Maintenance)

1.      Fase Definisi
Fase definisi memfokuskan pada “What”. Selama definisi ini, developer software berusaha untuk :
  •         Mengidentifikasi informasi apa yang dikerjakan proses 
  •         Fungsi dan performance apa yang diinginkan
  •         Interface apa yang dibutuhkan
  •        Hambatan desain apa yang ada, dan
  •         Kriteria validasi apa yang dibutuhkan untuk menetapkan keberhasilan sistem.

A.     Sistem Analis
Sistem analis menetapkan peranan dari setiap elemen dalam sistem berbasis komputer, terutama menga­lokasikan peranan software.
B.     Sistem Software Planning
Dalam sistem ini, setelah lingkungan software dialokasikan, maka langkah dari sistem software plan­ning ini adalah :
  •          Pengalokasian sumber / resource
  •          Estimasi biaya
  •          Penetapan tugas pekerjaan dan jadual.
C.     Requirement Analysis
Penetapan lingkup untuk software memberikan petunjuk / arah. Namun definisi yang lebih rinci dari in­formasi dan fungsi software diperlukan sebelum pekerjaan dimulai.

2.      Fase Pengembangan
Fase pengembangan berfokus pada “How”. Selama pengembangan, developer software berusaha menjelas­kan :
  •          Bagaimana struktur data dan arsitektur software yang didesain
  •          Bagaimana rincian prosedur diimplementasikan ( diterapkan )
  •          Bagaimana desain diterjemahkan ke dalam bahasa pemrograman atau bahasa non prosedur, dan
  •          Bagaimana pengetesan akan dilaksanakan.

A.     Desain software  ( Software Design )
Desain menterjemahkan kebutuhan-kebutuhan software ke dalam sekumpulan representasi (grafik, ta­bel, diagram, atau bahasa yang menjelaskan struktur data, arsitektur software dan prosedur algoritma).
B.     Coding
Representasi desain harus diterjemahkan ke dalam bahasa tiruan / artificial language yang menghasilkan perintah-perintah yang dapat dieksekusi oleh komputer.
C.     Software Testing
Segera sesudah software diimplementasikan dalam bentuk yang dapat dieksekusi oleh mesin, software perlu ditest untuk menemukan kesalahan ( merupakan fungsi logika dan implementasi ).



3.      Fase Pemeliharaan
Fase pemelihaaan berfokus pada “Change” atau perubahan. Ini dapat disebabkan :
A.     Perubahan karena software error ( Corective Maintenance )
B.     Perubahan karena software disesuaikan / diadaptasi dengan lingkungan external, misalnya munculnya CPU baru, sistem operasi baru ( Adaptive Maintenance )
C.     Perubahan software yang disebabkan customer / user meminta fungsi tambahan, misalnya fungsi grafik, fungsi matematik, dll ( Perfective Maintenance )