REKAYASA PERANGKAT LUNAK (RPL)
REKAYASA PERANGKAT LUNAK
(SOFTWARE ENGINEERING)
Software Engineering :
Suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal requirement capturing (analisa kebutuhan pengguna), specification (menentukan spesifikasi dari kebutuhan pengguna), design, coding, testing sampai pemeliharaan sistem setelah digunakan.
Definisi Software Engineering menurut IEEE1 pada projek SWEBOK2adalah aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software; dapat disimpulkan sebagai teknik aplikasi untuk perangkat lunak.
Latar belakang munculnya software engineering ketika adanya krisis software di era tahun 1960-an. Krisis tersebut akibat dari lahirnya komputer generasi ke III yang ditandai dengan
penggunaan IC (Integrated Circuit).
Kemampuan hardware yang meningkat, membuat adanya kebutuhan untuk memproduksi software yang lebih baik. Akibatnya software yang dihasilkan menjadi menjadi beberapa kali lebih besar
dan kompleks.
Pendekatan informal yang digunakan dalam pengembangan perangkat lunak pada saat itu, menjadi tidak cukup efektif (secara biaya, waktu dan kualitas). Biaya hardware mulai jatuh dan biaya perangkat lunak menjadi naik cepat. Oleh karena itu muncul pemikiran untuk menggunakan pendekatan yang lebih efektif,
standard dan terukur dalam mengembangan perangkat lunak.
Krisis software adalah sekumpulan masalah yang ditemukan dalam pengembangan software komputer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang berhubungan dengan :
a. Bagaimana mengembangkan software.
b. Bagaimana memelihara software yang ada, yang berkembang dalam jumlah besar.
c. Bagaimana mengimbangi permintaan software yang makin besar.
Dalam membuat softrare yang baik, ada beberapa cara :
1. Fase Perencanaan (Planning) :
a) Rencana software
b) Analisa kebutuhan software
c) Analisa cost banefit (Salah satu bagian dari studi kelayakan)
2. Fase Pengembangan (Development) :
a) Coding
b) Testing
Macam-macam test program :
i) Unit test (Test per modul)
ii) Integreated test (Test penggabungan dari modul-modul yang telah diuji)
iii) Validated test (Diuji dengan data sebenarnya)
iv) System test (Test dilakukan dengan lingkungan sebenarnya)
v) Topdown test (Test gabungan dari atas ke bawah)
vi) Bottom up test (Test gabungan dari bawah ke atas)
3. Fase Pemeliharaan (Maintenance) :
Jenis-jenis maintenance
a) Koreksi (Corection)
b) Adaptasi (Adaptive)
Software dikembangkan sesuai dengan tuntutan perkembangan jaman
c) Adaptasi yang berkembang pada dewasa ini terbagi atas :
i) Sistem Operasi
Pengarahan sistem operasi yang bersifat multi user. Contoh : UNIX
Sistem operasi yang bersifat jaringan. Contoh : NOVELL
ii) RDBMS - Relational DataBase Management System
Berkembang dalam bentuk bahasa SQL (Structure Query Language).
iii) Bahasa
Mengarah pada perkembangan bahasa generasi ke empat (4GL - Fourth Generation Language)
Bahasa 4GL adalah suatu bahasa yang dibuat untuk meningkatkan produktifitas programmer dan end user. Contoh :
a) INFORMIX - Dapat dijalankan pada PC dengan minimum RAM 4MB + 640KB dan disk sto¬r¬age > 40MB
b) ORACLE
c) INGRES
d) AS / SET - Digunakan pada IBM AS 400
e) POWER HOUSE - digunakan pada HR 3000
iv) Perfective
Menyempurnakan software yang ada biasanya dilakukan karena permin¬taan / saran / kritik user.
SOFTWARE AND SOFTWARE ENGINEERING
Selama tiga dekade pertama dari era komputerisasi, tantangan utama adalah mengembangkan hardware kom¬puter yang dapat mengurangi biaya pengolahan dan penyimpanan data. Selama dekade tahun 1980 an, kemajuan yang pesat dari mikro elektronik menghasilkan kemampuan komputer yang lebih baik pada tingkat biaya yang lebih rendah. Namun masalah sekarang berbeda. Tantangan utama adalah mengurangi biaya dan memperbaiki kualitas solusi berbasis komputer (Solusi yang diimplementasikan dengan mempergunakan software). Software merupakan faktor kunci dalam keberhasilan suatu usaha, software dapat membedakan satu perusahaan dari per¬usahan saingannya.
EVOLUSI PERKEMBANGAN SOFTWARE
Evolusi software
Tahun-tahun awal :
Batch orientation
Limmited distribution
Custummer software
Era kedua :
Multi user
Real time
Database
Era ketiga
Distibuted system
Embedded intellegence
Low cost hardware
Consumer infact
Era keempat :
Expert system
A I Machine
Parallel architecture
TAHUN-TAHUN PERTAMA :
Batch Orientation
Suatu 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 distribution
Suatu penyebaran software yang terbatas pada perusahaan-perusahaan tertentu.
Custom software
Software yang dikembangkan berdaasarkan perusahaan-perusahaan tertentu.
ERA KEDUA :
Multi user
Suatu sistem di mana satu komputer digunakan oleh beberapa user pada saat yang sama.
Real Time
Suatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second.
Database
Perkembangan yang pesat dari alat penyimpan data yang OnLine menyebabkan muncul generasi pertama DBMS (DataBase Management System).
Product Software
Adalah software yang dikembangkan untuk dijual kepada masyarakat luas.
ERA KETIGA :
Distributed system
Suatu sistem yang tidak hanya dipusatkan pada komputer induk (Host computer), daerah atau bidang lain¬nya yang juga memiliki komputer yang ukurannya lebih kecil dari komputer induk. Lawan dari distributed system adalah Centralized System.
Embedded Intelegence
Suatu product yang diberi tambahan “Intellegence” dan biasanya ditambahkan mikroprocessor yang mutak¬hir. Contohnya adalah automobil, robot, peralatan diagnostic serum darah.
Low Cost Hardware
harga hardware yang semakin rendah, ini dimungkinkan karena munculnya Personal Computer.
Consummer Inpact
Adanya perkembangan komputer yang murah menyebabkan banyaknya software yang dikembangkan, soft¬ware ini memberi dampak yang besar terhadap masyarakat.
ERA KEEMPAT :
Expert system
Suatu penerapan A.I. (Artificial Intellegence) pada bidang-bidang tertentu, misalnya bidang kedokteran, komunikasi, dll.
AI Machine
Suatu mesin yang dapat meniru kerja dari sebagian otak manusia. Misalnya mesin robot, komputer catur.
Parallel Architecture
Arsitektur komputer yang memungkinkan proses kerja LAN paralel, yang dimungkinkan adanya prosesor berbeda dalam satu komputer
ARTI SOFTWARE
1. Instruksi
Atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.
2. Struktur data
Yang memungkinkan program memanipulasi informasi
3. Dokumen
Yang menggambarkan operasi dan penggunaan program.
SIFAT DAN KARAKTERISTIK SOFTWARE
1. Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardware
2. Elemen itu tidak aus, tetapi bisa rusak.
3. Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware
4. Software itu tidak bisa dirakit.
KOMPONEN SOFTWARE
1. Bentuk bahasa
Terbagi 2, yaitu
A. High Level, contoh PASCAL, COBOL, FORTRAN.
B. Middle Level, contoh C
2. Bentuk translator
Terbagi 3 , yaitu :
A. Interpreter
Menerjemahkan dari bahasa tingkat tinggi ke bahasa tingkat rendah secara satu persatu (statemen demi statemen)
B. Compiler
Menerjemahkan secara keseluruhan, proses lebih cepat dari interpreter
C. Assembler
Menerjemahkan dari bahasa rakitan ke bahasa mesin
3. Bentuk mesin :
APLIKASI SOFTWARE
1. Sistem Software
Adalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponen-komponen sistem operasi, driver dan prosesor telekomunikasi.
2. Real Time software
Software yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia. Ele-men-elemen real time software terdiri dari :
A. Komponen pengumpul data
Yang mengumpulkan dan menyusun informasi dari lingkungan external.
B. Komponen analisis
Yang mentransformasikan informasi yang diperlukan oleh aplikasi
C. Komponen kontrol
Yang memberikan respon kepada lingkungan external
D. Komponen monitor
Yang 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.
3. Business software
Software yang palinmg banyak digunakan dalam bidang aplikasi software. Software ini digunakan oleh manajemen untuk mengambil kepitusan ( Decision Making ) dalam bidang bisnis. Contoh :
DAC EASY ACCOUNTING
FINANCE MANAJER
4. Engineering and sciencetific software
Software 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 - Ssimulasi sistem )
5. Emdebed software
Suatu software disimpan dalam memori tetap - ROM - Read Only Memory, dan digunakan untuk mengon¬trol product dan sistem software ini dijalankan dengan berbagai fungsi terbatas.
6. PC software (Personal Computer)
Software yang banyak digunakan di komputer pribadi (PC). Contoh :
Word Processing : WS, WP
Spreadsheet : Lotus, Supercalc
Computer Graphics : Printshop, Print Magic
Games : Paoman, Load Runner
DBMS : Dbase III+, Foxbase, Clipper
Network : LAN, Novell
7. Artificial Intelegence software
Software 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.
KRISIS SOFTWARE
Adalah 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 :
1. Bagaimana mengembangkan software
2. Bagaimana memelihara software ynag ada, yang berkembang dalam jumlah besar
3. Bagaimana mengimbangi permintaan software yang makin besar.
MASALAH
Krisis software oleh beberapa masalah :
1. Estimasi jadual dan biaya yang seringkali tidak tepat
2. Produktivitas orang-orang software yang tidak dapat mengimbangi permintaan software
3. Kualitas software yang kurang baik.
Penyebab :
Masalah yang berhubungan dengan krisis software disebabkan oleh :
1. Karakteristik software itu sendiri
Karakteristik 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 tang¬gung 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.
2. Kegagalan mereka yang bertanggung jawab dalam pengembangan software.
MITOS SOFTWARE
1. Mitos managements
A. Kita 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 developments
B. Kita 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 ).
C. Jika kita tertinggal dari jadwal yang ditetapkan, kita menambah beberapa programmer saja. Konsep ini sering disebut Mongolian harde concept.
2. Mitos Langganan / Customer
A. Pernyataan 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 pem-bentukkan software. Penjelasan yang formal dan terinci tentang informasi fungsi performance interface, hambatan desain dan kriteria validasi adalah penting. Karakteristik di atas dapat ditentukan hanya sete¬lah adanya komunikasi antara customer dan developer.
B. 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 peru¬bahan berbeda dari waktu ke waktu.
Kesimpulan : Jika perubahan mendekati akhir penyelesaian, maka biaya akan lebih besar.
3. Mitos Praktisi
A. Tidak 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.
B. 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 or¬ganisasi.
MODEL SOFTWARE ENGINEERING
Krisis software tidak dapat hilang dalam satu satu malam, di mana tidak ada suatu pendekatan yang baik dalam mengatasi krisis software, namun gabungan dari metode untuk semua fase dalam pengembangan siftware seperti peralatan yang lebih baik untuk mengautomatisasi metode-metode ini, tehnik yang lebih baik untuk mengontrol kualitas, dan filosofi untuk koordinasi kontrol, serta manajemen dipelajari dalam suatu disiplin ilmu yang kita sebut software engineering.
Definisi :
Menurut Fritz Badar, software engineering adalah disiplin ilmu yang menerapkan prinsip-prinsip engineering agar mendapatkan software yang ekonomis yang dapat dipercaya dan bekerja lebih efisien pada mesin yang se¬benarnya.
Software engineering terdiri dari 3 elemen kunci, yaitu :
1. Metode,
2. Peralatan (tools),
3. Prosedur,
yang memungkinkan manajer mengontrol proses pengembangan software dan memberikan praktisi dasar yang baik untuk pembentukan software berkualitas tinggi.
1. Metode Software Enginnering
Metode software engineering memberikan tehnik-tehnik 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
2. Peralatan Software Engineering
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hard¬ware, 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.
Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE
3. Prosedur Software Engineering
Terdiri dari :
urut-urutan di mana metode tersebut diterapkan
dokumen
laporan-laporan
formulir-formulir yang diperlukan
mengontrol kualitas software
mengkoordinasi perubahan yang terjadi pada software
Dalam penguasaan atas model software engineering atau software engineering paradigm, dikenal ada 3 metode yang luas dipergunakan, yaitu :
1. Classic Life Cycle Pradigm - Model Water Fall - Model Siklus Hidup Klasik
Keterangan :
A. 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
B. 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.
C. 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.
D. Coding
Desain harus diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
E. 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.
F. 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.
2. Prototype Paradigm
Keterangan :
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, pendekatan prototype untuk software engineering merupakan langkah yang terbaik. Proto¬type 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 pengembangan software. Model ini dimulai dengan :
Pengumpulan kebutuhan developer dan customer
Menentukan semua tujuan software
Mengidentifikasi kebutuhan-kebutuhan yang diketahui
Hasil dari pengumpulan kebutuhan diteruskan pada Quick Design. Quick Design ini memfokuskan pada representasi aspek-aspek software yang dapat dilihat oleh user, misalnya format input dan output, selanjutanya dari desain cepat diteruskan pada pembentukan prototype (langkah ke 3). Prototype ini dievaluasi oleh customer / user dan digunakan untuk memperbaiki kebutuhan-kebutuhan software. Proses iterasi terjadi agar prototype yang dihasilkan memenuhi kebutuhan customer, juga pada saat yang sama developer mengerti lebih baik tentang apa yang harus dikerjakan.
Masalah yang dihadapi oleh prototyping paradigm ini adalah :
Customer hanya melihat pada apa yang dihasilkan oleh software, tidak peduli pada hal-hal yang ber¬hubungan dengan kualitas software dan pemeliharaan jangka panjang.
Developer seringkali menyetujui apa yang diterangkan oleh customer 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 ke¬mudian menghasilkan source code dan object code secara otomatis sesuai dengan spesifikasi yang ditentu¬kan 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 :
A. peralatan 4GT tidak semudah penggunaan bahasa pemrograman,
B. source code yang dihasilkan oleh peralatan ini tidak efisien,
C. 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 )
BAB II
COMPUTER SYSTEM ENGINEERING
Computer system engineering (Rekayasa Sistem Komputer) terdiri atas 2 bagian, yaitu :
Hardware engineering
Software engineering
Setiap disiplin ini berusaha menunjukkan pengembangan sistem berbasis komputer tehnik engineering. Untuk hardware komputer telah sedemikian maju dan relatif jenuh. Sebaliknya software komputer mulai berkembang, dan saat ini menggantikan peranan hardware sebagai elemen sistem yang sulit direncanakan, sedikit kemung¬kinan untuk berhasil dengan biaya rendah dan waktu yang cepat, serta paling sukar untuk dikelola.
Apa Sistem itu ?
Sistem adalah sekumpulan elemen yang saling berinteraksi untuk mencapai suatu tujuan. Sedangkan Computer Based System diorganisir untuk mendapatkan beberapa metode, prosedur atau pengontrolan dengan cara mengelola informasi.
Elemen-elemen dari sistem berbasis komputer adalah :
1. Software
Program komputer, struktur data dan dokumentasi yang saling berhubungan dan memberikan efek pada me¬tode, prosedur dan kontrol yang diinginkan.
2. Hardware
Peralatan elektronik, (misalnya CPU, memory) yang memberikan kemampuan komputasi serta peralatan elektromedia (misalnya sensor, motor, pompa) yang memberikan fungsi external.
3. People / Brainware
User dan operator dari hardware dan software
4. Database
Sekumpulan informasi yang besar, yang diorganisir agar dapat diakses oleh software dan merupakan bagian integral dari fungsi sistem.
5. Prosedur
Langkah-langkah yang menetapkan pemakaian khusus untuk setiap elemen sistem.
Keterangan :
Computer system engineering adalah suatu aktifitas pemecahan masalah fungsi sistem yang diinginkan, ditemu¬kan, dianalisis, dan dialokasikan ke elemen-elemen sistem individu.
Computer System Engineering disebut juga Sistem Analis, dimulai dengan :
1. Penetapan tujuan customer
2. Hambatan-hambatan dan representasi fungsi performance yang dapat dialokasikan ke masing-masing elemen sistem.
Segera setelah fungsi performance, hambatan dan interface ditetapkan, system engineering selanjutnya melaku¬kan pekerjaan alokasi. Selama pengalokasian fungsi diserahkan kepada satu / lebih elemen sistem (misalnya software, hardware, people, dll) seringkali alokasi alternatif diusulkan dan dievaluasi.
Fungsi yang dialokasikan maksudnya adalah menentukan mana yang masuk ke hardware, ke software dan ke brainware
Berikut ini adalah kriteria pemilihan konfigurasi sistem berdasarkan alokasi fungsi dan performance ke elemen sistem :
1. Project Consideration - Pertimbangan Proyek
Dapatkah konfigurasi dihasilkan dengan biaya dan jadual yang ditetapkan lebih awal ?
2. Business Consideration - Pertimbangan Bisnis
Dapatkah konfigurasi memberikan solusi yang paling menguntungkan ?
Dapatkah dipasarkan dengan sukses ?
Pertimbangan ini yang paling penting.
3. Technical Consideration - Pertimbangan tehnik
Apakah ada tehnologi untuk mengembangkan semua elemen sistem ?
Dapatkah fungsi performance dijamin ?
Dapatkah konfigurasi dipelihara dengan cukup baik ?
4. Manufacturing Evaluation - Evaluasi Pabrikasi
Apakah fasilitas dan peralatan manufaktur tersedia ?
Apakah ada komponen yang diperlukan dengan segera ?
Apakah jaminan kualitas dapat dipercaya ?
5. Human Issues - Hal-hal yang berhubungan dengan manusia
Apakah tenaga kerja terlatih untuk pengembangan dan manufaktur tersedia ?
Apakah customer mengerti dengan apa yang akan dicapai oleh sistem ?
6. Environmental Interface - Berhubungan dengan lingkungan
Apakah konfigurasi yang diusulkan sudah cukup berhubungan dengan lingkungan external dari sistem ?
Apakah komunikasi mesin manusia dan manusia mesin sudah ditangani dengan baik ?
7. Legal Consideration - Pertimbangan hukum
Apakah pertimbangan yang dihasilkan sudah dilindungi oleh hukum ?
PERTIMBANGAN HARDWARE
Computer System Engineering selalu mengalokasikan satu / lebih fungsi sistem ke hardware komputer.
Elemen-elemen hardware
1. CPU - Cenral Processing Units
2. Adalah unit yang melakukan pekerjaan aritmatik, logika, dan fungsi pengontrol serta berinteraksi dengan komponen lainnya. Sekarang ini, beberapa arsitektur komputer ditambahkan ko-prosesor untuk melakukan fungsi pengolahan khusus ( fungsi kalkulasi ) sehingga performance CPU dapat ditingkatkan.
3. BUS
4. Adalah alat komunikasi yang menghubungkan elemen satu dengan elemen lainnya untuk pengiriman in¬struksi, data dan informasi pengontrolan.
5. Memory
6. Memory memberikan tempat penyimpanan instruksi dan data yang dapat diakses langsung / tidak langsung melalui perintah yang dieksekusi oleh CPU dan ko-prosesornya.
Memory terbagi menjadi 2 bagian, yaitu :
A. Memori Primer / Primary Memory / Main Memory
Adalah memory yang terdapat di dalam komputer, terdiri atas 2 bagian yaitu :
i. RAM - Random Access Memory
Untuk menyimpan data / instruksi yang bersifat temporary
ii. ROM - Read Only Memory / Firmware
Untuk menyimpan perintah dan / atau data yang permanen.
ROM terbagi atas 2 golongan
a. PROM - Programmabel Read Only Memory
Memory ROM yang dapat ditulis / diprogram dan dapat dihapus dengan cara :
EEPROM - Eraseble Electrical Programmabel ROM
Dihapus dengan kejutan listrik tertentu
UVPROM - Ultra Violet Programmabel ROM
Dihapus dengan sinar ultra violet
b. MASK ROM
ROM yang terjual sudah diprogram pada saat dibuat oleh pabriknya.
B. Memory Sekunder
Sifat yang menonjol dari memory jenis ini adalah :
i. Waktu akses lambat
ii. Kapasitas besar sekali dibandingkan dengan memory primer
iii. Waktu akses berkisar milidetik dengan kapasitas antara 400.000 sampai 1 billion byte
iv. Contoh : Floppy disk, harddisk, hardcard, optical disk
APLIKASI HARDWARE
Dapat dikelompokan dalam 3 bagian besar, yaitu :
1. Pengelolahan informasi
2. Pengontrolan proses dan aplikasi real time
3. Tambahan intelegensi
REKAYASA HARDWARE
Untuk komputer digital yang dikembangkan dari perancangan elektronik, proses perancangannya terdiri dari 3 tahap :
1. Perencanaan dan spesifikasi
2. Perencanaan dan implementasi prototype
3. Manufaktur distribusi dan pelayanan
Segera / sesudah analisis dan definisi dijalankan, fungsi dialokasikan ke hardware.
Fase I : Perencanaan dan Spesifikasi
Fase I terdiri dari :
1. Perencanaan pengembangan
2. Analisis hardware
Perencanaan pengembangan dilaksanakan untuk menetapkan lingkup-lingkup dari usaha-usaha terhadap hardware, oleh karena itu menimbulkan beberapa pertanyaan, antara lain :
1. Jenis hardware apa yang terbaik untuk fungsi yang ditentukan?
2. Hardware yang mana yang tersedia untuk dijual, bagaimana biayanya, jenis interface yang diperlukan, dan apa yang harus dilakukan untuk merancang dan membangun ?
Fase II : Perencanaan dan Implementasi Prototype
Kebutuhan analisis dan konfigurasi hardware mulai dirancang, dilakukan tinjauan tehnis demi mendapatkan spesifikasi rancangan yang benar. Komponen mulai dibuat dan prototype mulai diralat. Prototype diuji un¬tuk menjamin bahwa prototype telah memenuhi semua persyaratan. Namun prototype sering menghadapi ketidakmiripan dengan prosedur yang dibuat. Karena itu perlu adanya spesifikasi pabrikasi
Fase III : Manufacture Distribution dan Pelayanan
Mulai dihasilkan prosedur-prosedur dengan penekanan pada kualitas produk. Dengan mekanisme distribusi produk terhadap fase ini, juga dibentuk bagian perbaikan dan maintenance
perencanaan sistem
Tahap perencanaan dari siklus hidup software adalah suatu proses definisi, analis, spesifikasi, estimasi dan review.
Definisi sistem merupakan langkah pertama dalam fase perencanaan.
Tujuan dari definisi sistem ini adalah :
1. Evaluasi konsep sistem : feasibility, cost benefit, dan businness needs
2. Jelaskan interface, function, dan performance sistem
3. Alokasi fungsi pada hardware, software dan elemen tambahan.
Tujuan dari perencanaan software adalah mengestimasi biaya dan waktu pengembangan. Untuk mencapai ini, lingkup software harus dimengerti dengan sempurna, dan sumber harus ditentukan dengan tepat.
Analisis kebutuhan software memperjelas :
1. Software interfaces
2. Atribut fungsional
3. Karakteristik performance
4. Kendala desain
5. Kriteria validasi
Timbul pertanyaan :
1. Berapa besar usaha yang akan diberikan pda fase perencanaan ?
10 s/d 20 % dari usaha keseluruhan proyek diberikan pada perencanaan dan analisis kebutuhan software.
2. Siapa yang mengerjakannya ?
Analis yang berpengalaman dan terlatih memperkerjakan hampir semua pekerjaan yang berhubungan dengan fase perencanaan. Untuk proyek yang sangat besar, dapat dibentuk sebuah tim analis.
3. Mengapa begitu sulit ?
Konsep yang tidak jelas harus ditransformasikan ke dalam elemen yang jelas.
feasibility studi ( studi kelayakan )
Semua proyek layak bila sumber dan waktunya tidak terbatas. Kenyataannya, pengembangan sistem berbasis komputer dibatasi oleh sumber dan waktu.
Ada 4 bidang utama yang menjadi konsentrasi dari feasibility studi, yaitu :
1. Economic Feasibility :
Evaluasi biaya (cost) dan manfaat (benefit) dalam pengembangan sistem.
2. Tehcnical feasibilitu :
Studi tentang fungsi, performance, dan hambatan yang berpengaruh terhadap kemampuan mendapatkan sistem yang baik.
3. Legal Feasibility :
Penentuan berbagai pelanggaran, kewajiban yang dapat terjadi dari pengembangan sistem.
4. Alternative :
Evaluasi sebagai alternatif untuk mengembangkan sistem
Analisis cost benefit
Menggambarkan biaya pengembangan proyek dan mempertimbangkan keuntungan sistem, baik yang tangible maupun intangible (dapat diukur dan tidak dapat diukur).
Analis cost benefit ini tergantung dari karakteristik sistem yang akan dikembangkan, ukuran relatif proyek (besar kecil proyek), dan ROI (Return On Invesment) yang diharapkan dari proyek.
Keuntungan dari sistem baru selalu dibandingkan dengan keuntungan dari sistem yang ada.
Contoh soal :
Suatu CAD (Computer Aided Design) akan menggantikan cara manual dalam membuat gambar-gambah tehnik. Misalkan :
t = waktu rata-rata menggambar = 4 jam
c = biaya gambar perjam = $20
n = banyaknya gambar pertahun = 8000
p = persentase gambar yang dihasilkan dengan sistem CAD = 60%
Penurunan waktu gambar menjadi 1/4 nya dengan adanya sistem CAD.
Jadi :
Biaya yang dapat ditekan (dihemat) sebesar :
Bila untuk sistem CAD harus dikeluarkan biaya sebesar :
biaya pengembangan / membeli = $204,000,
biaya pemeliharaan = $32,000 per tahun,
maka masa pengembalian / payback periode dari proyek CAD ini adalah :
Biaya pengeluaran (cost ) = biaya penghematan ( benefit )
204,000 + x • 32,000 = 96,000 • x
64,000 • x = 204,000
x = 3.2 tahun
Ini berarti setelah 3.2 tahun, barulah proyek CAD ini memberikan titik impas (break even). Setelah ini barulah memberikan keuntungan.
Grafik :
PERENCANAAN software
Untuk melaksanakan pengembangan proyek software dan berhasil, kita harus mengerti :
1. Ruang lingkup pekerjaan yang dilakukan
2. Sumber yang diinginkan
3. Usaha dan biaya
4. Jadual yang dikehendaki
Perencanaan software adalah :
Langkah kedua dalam fase perencanaan, tetapi merupakan langkah pertama dalam proses rekayasa software yang akan memberikan pengertian kepada 4 hal di atas.
Perencanaan software mengkombinasikan 2 tugas, yaitu :
1. Riset
2. Estimasi
Tujuan perencanaan software :
Memberikan suatu kerangka yang memungkinkan manajer membuat estimasi yang beralasan tentang sumber, biaya dan jadual.
Contoh soal :
TUGAS USAHA,
per orang per bulan
Requirement 1.5
Design 3.0
Code 1.0
Test 3.5
Usaha yang dihasilkan 9.0
Dari usaha ini, dihasilkan 2,900 LOC (banyaknya baris program). 200 LOC digunakan simulasi, dan testing tidak termasuk bagian dari software yang dioperasikan.
Produktivitasnya :
= 300 LOC per orang per bulan.
Ada 4 orang software engineering yang masing-masing mampu menghasilkan 4000 LOC per tahun.
Bila mereka dipekerjakan dalam 1 team, maka proyek ada 6 jalur komunikasi yang mungkin (communication path). Setiap jalur komunikasi memerlukan waktu yang seharusnya digunakan untuk pengembangan Loding sebesaar 240 LOC per tahun.
Bila proyek 1 tahun tersebut mengalami keterlambatan jadwal dan tinggal 1 bulan lagi, perlu penambahan 3 orang lagi kedalam team tersebut.
Bila dianggap terjadi pengurangan produktivitas team, untuk setiap jalur komunikasi adalah sama, baik untuk pegawai lama dan baru.
Hitung berapa produktivitas team sebelum dan sesudah penambahan 3 orang tersebut, sekaligus jangka waktunya berbeda !!!
Jawab :
Jalur komunikasi 4 orang ada 6 jalur (lihat gambar).
Produktivitas sebelum penambahan : = ( 4 4,000 ) - ( 240 6 ) = 16,000 - 1,440 = 14,560 LOC per tahun
Produktivitas setelah penambahan :
Jika jalur komunikasinya berbeda :
=
= 16000 + 2000 - ( 1440 + 600 )
= 18000 - 2040
= 16960
Jika jalur komunikasinya dianggap sama :
=
= 16000 + 2000 - ( 1440 + 3600 )
= 18000 - 5040
= 12960
proses desain software
Desain dalam fase pengembangan merupakan langkah pertama, di mana fase pengembangan merupakan fase kedua dalam siklus hidup software.
Segera sesudah kebutuhan software ditetapkan, dimulailah fase pengembangan yang terdiri dari 4 langkah berbeda :
1. Desain awal (preliminary design)
2. Detailed Design (Desain primeir)
3. Coding
4. Testing
Aliran informasi selama fase pengembangan dapat dilihat pada gambar di bawah ini.
Kebutuhan software & aliran informasi ( Structure Information Software ) memulai langkah desain awal dengan menggunakan 1 dari beberapa metode desain struktur software untuk dikembangkan. Struktur software yang juga disebut Arsitektur Software ini menjelaskan tentang hubungan antar elemen utama dari sebuah program. Desain terinci menterjemahkan elemen-elemen struktural ke dalam penjelasan software ( prosedur software ).
Source Code dihasilkan dan pengetesan awal dilakukan selama langkah pengkodean dan pengetesan unit hasilnya berupa model-model program yang sudah ditest.
Langkah terakhir dalam fase pengembangan adalah dilakukannya pengetesan integrasi dan validasi.
Fase pengembangan paling sedikit menyerap 75% dari biaya software baru. Ini berarti pengambilan keputusan dalam fase ini akan sangat mempengaruhi keberhasilan dalam implementasi software dan kemudahan dalam pemeliharaan software.
defect aplication model ( dam )
DAM digunakan untuk memberikan gambaran tentang pembentukan dan pendeteksian error selama desain awal dari Desain Terinci dan Pengkodean.
Dengan model ini, kita dapat membandingkan besarnya biaya yang dikeluarkan dengan adanya error, baik untuk review maupun tanpa review.
Contoh DAM tanpa REVIEW :
Cara Kerja :
2. 6 + ( 4 1,5 ) + 25 = 37
37 0% = 0
37 - 0 = 37
3. 40 + ( 27 3 ) + 25 = 116
116 20% = 2320% = 23,2 23
116 - 23 = 93
4. 93 + 0 + 0
93 50% = 4650% = 46,5 46
93 - 46 = 47
5. 46 + 0 + 0 = 46
46 50% = 2300% = 23
46 - 23 = 23
6. 23 + 0 + 0 = 23
23 50% = 1150% = 11,5 11
23 - 11 = 12
Contoh DAM dengan REVIEW :
1. ( 10 + 0 ) 70% = 7
2. 5 + ( 1 1,5 ) + 25 = 28,5
28,5 50% = 1425% = 14,25 14
28,5 - 14 = 14,5 15
3. ( 10 3 ) + 5 + 25 = 60
60 60% = 3600% = 26
60 - 36 = 24
4. 0 + 0 + 24 = 24
24 50% = 1200% = 12
24 - 12 = 12
5. 12 + 0 + 0 = 12
12 50% = 600% = 6
12 - 6 = 6
6. 6 + 0 + 0 = 6
6 50% = 3
6 - 3 = 3
KEGIATAN BIAYA per ERROR NON REVIEW REVIEW
Selama desain 1 0 x 1 = 0 21 x 1 = 21
Sebelum test ( coding ) 5 23 x 5 = 115 36 x 5 = 180
Selama test ( validated & integrated test ) 10 82 x 10 = 820 21 x 10 = 210
Setelah dipasarkan ( error laten ) 100 11 x 100 = 1100 3 x 100 = 300
Total biaya 2035 711
Soal Latihan no. 1 :
Diketahui :
5 software engineering masing-masing mampu menyelesaikan 4000 LOC per tahun bila bekerja secara individu. Mereka bekerja sama dalam 1 team. Bila proyek 1 tahun tersebut mengalami keterlambatan dan tinggal 1 bulan lagi, perlu tambahan 1 software engineering lagi ke dalam team tersebut. Pengurangan produktivitas team untuk setiap jalur komunikasi adalah sama ( 200 LOC per tahun ) untuk menunjuk adanya proses belajar bagi staff baru.
Ditanya :
Hitung produktivitas team sebelum dan sesudah penambahan seorang software engineering !!!
Jawab :
Sebelum :
= ( 4000 x 5 ) - ( 10 x 200 )
= 20000 - 2000 = 18000 LOC / tahun
Sesudah
Jalur sama :
=
= { (20000+333,3) - 3000 }
= 20333,3 - 3000 = 17333,3 LOC / tahun
Jalur beda :
=
= 20333,3 - 2083,3 = 18250 LOC / tahun
Soal Latihan No. 2a :
Gambar dan buatlah perbandingan biaya, baik untuk Review maupun NonReview dari ilustrasi berikut ini:
1. Pada tahap rancangan awal :
A. Kesalahan yang timbul = 10
B. Efisiensi dengan review = 70%
2. Pada tahap rancangan terinci :
A. Sebanyak 50%, kesalahan dilewatkan, sisanya diperkuat dengan faktor penguat = 2
B. Kesalahan baru yang muncul = 25
C. Efisiensi dengan review = 50%
3. Pada tahap coding / unit test
A. sebanyak 40% kesalahan dilewatkan, dan sisanya diperkuat dengan faktor penguat 3.
B. Efisiensi dengan review 80%, dan non review 50%.
C. Kesalahan baru yang muncul = 20%.
4. Pada tahap selanjutnya dilakukan perbaikan dengan efisiensi masing-masing = 50%
5. Biaya yang harus ditanggung untuk setiap kesalahan adalah :
A. Selama rancangan = 2 satuan harga
B. Sebelum test = 5 satuan harga
C. Selama test = 20 satuan harga
D. Setelah dipasarkan = 60 satuan harga
Jawab :
TABEL PERBANDINGAN BIAYA ANTARA DENGAN REVIEW & NON REVIEW
KEGIATAN BIAYA per ERROR NON REVIEW REVIEW
Selama desain
Sebelum test ( coding )
Selama test ( validated & integrated test )
Setelah dipasarkan ( error laten )
Total biaya
Soal Latihan No. 2b :
Gambar dan buatlah perbandingan biaya, baik untuk Review maupun NonReview dari ilustrasi berikut ini:
1. Pada tahap rancangan awal :
A. Kesalahan yang timbul = 10
B. Efisiensi dengan review = 80%
2. Pada tahap rancangan terinci :
A. Sebanyak 60%, kesalahan dilewatkan, sisanya diperkuat dengan faktor penguat = 3
B. Kesalahan baru yang muncul = 20
C. Efisiensi dengan review = 40%
3. Pada tahap coding / unit test
A. sebanyak 30% kesalahan dilewatkan, dan sisanya diperkuat dengan faktor penguat 2.
B. Efisiensi dengan review 75%, dan non review 45%.
C. Kesalahan baru yang muncul = 25%.
4. Pada tahap selanjutnya dilakukan perbaikan dengan efisiensi masing-masing = 60%
5. Biaya yang harus ditanggung untuk setiap kesalahan adalah :
A. Selama rancangan = 3 satuan harga
B. Sebelum test = 10 satuan harga
C. Selama test = 30 satuan harga
D. Setelah dipasarkan = 70 satuan harga
Jawab :
TABEL PERBANDINGAN BIAYA ANTARA DENGAN REVIEW & NON REVIEW
KEGIATAN BIAYA per ERROR NON REVIEW REVIEW
Selama desain
Sebelum test ( coding )
Selama test ( validated & integrated test )
Setelah dipasarkan ( error laten )
Total biaya
SOFTWARE PROJECT PLANNING
Agar proyek pembuatan perangkat lunak dapat berhasil dengan baik, maka harus dipahami hal berikut :
1. Batasan dari tugas / pekerjaan yang akan dikerjakan.
2. Sumber daya yang diperlukan.
3. Tugas-tugas yang akan diselesaikan
4. Milestore yang muncul.
5. Usaha ( biaya ) yang akan diperluas
6. Jadwal kerja yang dipakai
Perencanaan Proyek Perangkat Lunak menyangkut tugas-tugas research dan estimation.
RESEARCH :
Mendefinisikan batasan dari elemen-elemen Perangkat lunak dalam sistem berbasis komputer.
ESTIMATION :
Menyangkut perkiraan, di mana kita melihat ke depan.
estimation risk
PROJECT COMPLEXITY :
Sangat besar pengaruhnya terhadap ketidaktentuan yang ada pada tahap perencanaan Perangkat lunak.
PROJECT SIZE :
Faktor penting yang dapat mempengaruhi kecermatan dan kemajuan / ketepatan dari estimasi yang dilakukan.
DEGREE OF PROJECT :
Juga berpengaruh terhadap resiko estimasi, yaitu terhadap struktur, definisi, dan variabel.
Sasaran / tujuan dari perencanaan proyek Perangkat lunak adalah :
Menyediakan suatu kerangka kerja, sehingga manajer dapat membuat estimasi yang reasonable sumber daya, biaya dan jadwal.
KEGIATAN DALAM PERENCANAAN PROYEK PERANGKAT LUNAK :
1. SOFTWARE SCOPE ( BATASAN PERANGKAT LUNAK )
Fungsi dan unjuk kerja harus dialokasikan sehingga proyek tidak bersifat mendua, dan dapat dimengerti oleh manajer dan staff tehnik dari pelaksana proyek.
Batasan ini mencakup
Jumlah pemakai / User
Ukuran dari kemampuan memori
Waktu maksimum dari response time
Biaya
Beberapa hal yang harus diperhatikan dalam mengerjakan Perangkat lunak :
Function
Fungsi dari Perangkat lunak yang akan dibuat harus dievaluasi agar diperoleh fungsi secara rinci.
Performance
Unjuk kerja ( kelebihan perangkat lunak, memori, dependensi terhadap mesin lain ) dari perangkat lunak.
Interface
Perangkat keras yang dipakai dalam proses pembuatan perangkat lunak
Perangkat lunak yang telah ada
Pemakai yang akan menggunakan perangkat lunak tersebut melalui terminal atau piranti I/O
Prosedur pemakaian perangkat lunak
Reliability
Kehandalan perangkat lunak yang dihasilkan.
DEFINING SCOPE
2. SUMBER DAYA
Memperkirakan sumber daya yang diperlukan dalam proses penyelesaian proyek.
Perencanaan sumber daya :
Perencanaan Sumber Daya Manusia,
Perencanaan Sumber Daya Perangkat Lunak
Perencanaan Sumber Daya Perangkat Keras
PERENCANAAN SUMBER DAYA MANUSIA
Sumber daya utama / vital
Dimulai dengan mengevaluasi batasan dan memilih keahlian yang diperlukan untuk pengembangan
Proyek besar membedakan keahlian menjadi 2
1. Posisi organisasi : manajer, staf engineering, dan lain-lain.
2. Spesialis : ahli telekomunikasi, ahli database, dan lain-lain.
Management & Staff participation
PERENCANAAN SUMBER DAYA PERANGKAT KERAS
1. Development System
Komputer dan periperal yang akan digunakan selama pengembangan sistem
2. Target Machine
Prosesor / perangkat keras yang dipakai untuk mengeksekusi perangkat lunak
3. Other hardware Elements
Elemen tambahan perangkat lunak yang diperlukan pada saat eksekusi perangkat lunak yang digunakan oleh user.
PERENCANAAN SUMBER DAYA PERANGKAT LUNAK :
Digunakan perangkat lunak bantu
3 Kategori perangkat lunak bantu dalam bidang rekayasa perangkat lunak
Categorizing Software Tools
FUTURE TOOLS :
Alat bantu perangkat lunak yang dapat dipergunakan, masih dalam taraf uji coba dan pengembangan.
pengukuran perangkat lunak
Tujuan :
1. Untuk menentukan kualitas perangkat lunak
2. Untuk mengukur produktivitas pengembangan
3. Untuk menilai kelebihan / kekurangan suatu metodelogi dan perkakas (tools) pengembangan perangkat lunak.
4. Sebagai patokan dasar dalam melakukan estimasi
5. Sebagai pertimbangan dalam menentukan penambahan perkakas baru dan training tambahan, guna lebih meningkatkan kualitas perangkat lunak.
Metode Pengukuran :
1. Secara langsung lebih mudah dilakukan
2. Secara tidak langsung sukar dilakukan
Pengukuran Secara Langsung :
1. Biaya pengembangan
2. Usaha (efforts) yang dilakukan untuk pengembangan
3. Jumlah baris dari program ( Line Of Code - LOC )
4. Kecepatan eksekusi program (speed)
5. Jumlah kesalahan (errors)
Pengukuran Secara Tidak Langsung :
1. Fungsi-fungsi yang terkandung ( function )
2. Mutu perangkat lunak ( quality )
3. Tingkat kerumitan ( complexity )
4. Efficiency
5. Kehandalan perangkat lunak ( reliability )
6. Kemudahan dalam merawat ( maintainability )
kategori ukuran perangkat lunak
PRODUCTIVITY
METRICS QUALITY
METRICS TECHNICAL
METRICS
SIZE - ORIENTED
METRICS
FUNCTION - ORIENTED METRICS
HUMAN - ORIENTED METRICS
PRODUCTIVITY METRICS :
Merupakan indikator terhadap produktivitas pengembangan perangkat lunak
QUALITY METRICS :
merupakan indikator yang menggambarkan seberapa jauh perangkat lunak yang dihasilkan menjawab kebutuhan pemakai.
TECHNICAL METRICS :
merupakan indikator yang menggambarkan teknologi yang terkandung pada perangkat lunak.
Misal : tingkat modularitas, tingkat kerumitan.
SIZE - ORIENTED METRICS :
merupakan ukuran perangkat lunak yang diperoleh secara langsung.
FUNCTION - ORIENTED METRICS :
merupakan ukuran perangkat lunak yang diperoleh secara tidak langsung.
HUMAN - ORIENTED METRICS :
merupakan ukuran perangkat lunak yang ditinjau dari kondisi perangkat lunak dan persepsinya terhadap metodelogi dan perkakas bantu yang dipergunakan.
size - oriented metrics
Langsung
Tergantung pada “bahasa”
KLOC Kilo Lines Of Codes
; di mana EFFORT adalah jumlah orang per bulan
PROJECT EFFORT COST ($) LOC PAGES ERRORS PEOPLE
aaa - 01 24 168 12,1 365 29 3
ccc - 01 62 440 27,2 1224 86 5
fff - 03 43 314 20,2 1050 64 6
function - oriented metrics
Langsung
Tergantung pada “bahasa”
FP ( Function Point ) Count_total [ 0,65 + 0,01 sum ( Fi ) ]
; di mana EFFORT adalah jumlah orang per bulan
INFORMATION COUNT WEIGHTING FACTOR FP
DOMAIN ITEM SIMPLE AVG COMPLEX
NUMBER OF USER INPUTS 3 4 6
NUMBER OF USER OUTPUT 4 5 7
NUMBER OF USER INQUIRIES 3 4 6
NUMBER OF FILES 7 10 15
NUMBER OF EXT. INTERFACE 5 7 10
Fi Jumlah range jawaban dari 14 pertanyaab berikut :
0 1 2 3 4 5
tidak
berpengaruh kurang
penting cukup
penting rata -
rata penting sangat
penting
Beberapa pertanyaan :
1. Apakah sistem yang dibuat memerlukan backup dan tingkat keamanannya dapat diandalkan ?
2. Apakah dalam penerapan perangkat lunak diperlukan fasilitas komunikasi data ?
3. Apakah dalam penerapan perangkat lunak menggunakan fasilitas proses pengolahan terbagi ?
4. Apakah kriteria unjuk kerja digunakan dalam pembuatan perangkat lunak ?
5. Apakah sistem yang dibuat akan dijalankan pada lingkungan operasi yang telah ada ?
6. Apakaah sistem yang dibuat memerlukan pemasukan data secara on-line ?
7. Apakah pemasukkan data secara on-line memerlukan lebih dari satu terminal ?
8. Apakah file master diperbaharui secara on-line ?
9. Apakah sistem yang dibuat mempunyai masukan, keluaran, dan pertanyaan yang kompleks ?
10. Apakah sistem yang dibaut pemrosesan datanya dalam memori kompleks ?
11. Apakah program yang telah dibuat akan cepat diperbaharui ?
12. Apakah konversi dan pemasangan sistem yang dibuat termasuk dalam perancangan ?
13. Apakah sistem yang dibuat dirancang untuk organisasi yang berbeda ?
14. Apakah hasil dari sistem yang dibuat mempunyai fasilitas pengubahan dan mudah digunakan ?
software project estimation
Estimasinya meliputi :
Biaya pengembangan ( cost )
Usaha untuk mengembangkan ( effort )
Estimasi perangkat lunak belum / tidak ada ilmu yang eksak untuk melakukan estimasi, tetapi melalui suatu tahapan yang tersusun.
Tidak adanya ilmu yang eksakta disebabkan oleh terlalu banyak faktor yang mempengaruhinya, misalnya : manusia, teknologi, lingkungan, politik, situasi dunia bisnis.
Metode Estimasi : “DIVIDE AND CONQUER” ( DECOMPOSITION )
Proyek dibagi menjadi beberapa “fungsi” utama yang sesuai dengan kaidah software engineering.
Estimasi secara empiris :
Sangat dipengaruhi oleh data-data dari proyek sebelumnya
Semakin berpengalaman dalam mengembangkan perangkat lunak, semakin tepat estimasi yang bisa dilakukan.
Estimasi berdasarkan LOC dan FP
Untuk proyek yang akan dikerjakan LOC dan FP merupakan variabel yang harus ditentukan.
LOC dan FP dari proyek terdahulu merupakan acuan dalam melakukan estimasi.
Rumus : ; di mana
a = optimistic
m = most likely
b = pessimistic
E = Estimate Cost Berdasarkan unit cost
E = Estimate Effort Berdasarkan productivitas.
FUNCTION OPTIMISTIC MOST LIKELY PESSIMISTIC EXPECTED $ / LINE LINE / MONTH COST MONTS
User Interface control 1800 2400 2650 2340 14 315 32760 7.4
2-D geometric analysis 4100 5200 7400 5380 20 220 107600 24.4
3-D geometric analysis 4600 6900 8600 6800 20 220 136000 30.9
Data structure management 2950 3400 3600 3350 18 240 60300 13.9
Computer graphics display 4050 4900 6200 4950 22 200 108900 24.7
Periperal control 2000 2100 2450 2140 28 140 59920 15.2
Design analysis 6600 8500 9800 8400 18 300 151200 28.0
33360
656680
144.5
Estimated LOC Estimated Project Cost ($) Estimate Effort Required
Tabel Estimasi
TASK REQUIREMENTS DESIGN CODE TEST TOTALS *
FUNCTION ANALYSIS
UICF 1.0 2.0 0.5 3.5 7
2DGA 2.0 10.0 4.5 9.5 26
3DGA 2.5 12.0 6.0 11.0 31.5
DSM 2.0 6.0 3.0 4.0 15
CGDF 1.5 11.0 4.0 10.5 27
PCF 1.5 6 3.5 5 16
DAM 4 14 5 7 30
TOTAL * 14.5 61 26.5 50.5 152.5
RATE ($) 5200 4800 4250 4500
COST ($) 75400 292800 112625 227250 708075
Effort Estimation Tabel
Keterangan Effort Estimation Tabel
* All estimates are in person-months except where otherwise noted.
Estimated effort for all tasks = 152.5
Estimated cost for all tasks = 708.075
TASKS TOTALS
FUNCTIONS Estimates in
person - months
TOTAL
RATE ($)
COST ($)
Develop a cost matrix
cocomo model - CONSTRUCTIVE COST MODEL - BY BARRY BOEHM
1. Model 1 : Static Single Valued Model (Basic)
Digunakan untuk menghitung EFFORT dan COST
Model ini merupakan fungsi dari “LOC”
2. Model 2 : Intermediate
Merupakan fungsi dari LOC dan “Cost Driver”
Cost Driver : penilaian subyektif terhadap hal-hal berikut :
Product
Hardware
Personel
Project Attributes
3. Model 3 : Advanced
Modul Intermediate dan assessment cost driver terhadap setiap tahapan dalam sofware engineeing. Contoh : Analysis, Design, dan lain-lain.
MODEL 1 : BASIC COCOMO
EFFORT : E = ab ( KLOC ) exp ( bb )
DEVELOPMENT TIME (MONTH) : D = Cb ( E ) exp ( db )
SOFTWARE PROJECT ab bb cb db
ORGANIC 2.4 1.05 2.5 0.38
SEMI - DETACHED 3.0 1.12 2.5 0.35
EMBEDDED 3.6 1.20 2.5 0.32
Catatan :
Organic Small, Simple project
Semi - Detached Intermediate in size & complexity. Ex. : Transaction processing
Embedded s/n must be developed. Ex. Flight Control.
MODEL 2 : COST DRIVER ATTRIBUTES
Terbagi atas 4 kategori :
1. Product :
Ukuran kehandalan proyek
Ukuran dari aplikasi database
Kekompleksan produk
2. Hardware :
Kendala performasi run time
Kendala memori
Lingkungan dari volatibility
Waktu perputaran yang diperlukan
3. Personel :
Kemampuan sistem analis
Kemampuan software engineering
Pengalaman aplikasi
Pengalaman virtual mesin
Pengalaman bahasa pemrograman
4. Project :
Pemakaian alat bantu perangkat lunak
Metode aplikasi software engineering
Jadwal pengembangan
Rumus :
E = ai ( KLOC ) exp (bi ) EAF ; EAF = Effort Ajustment Factor
SOFTWARE PROJECT ab bb
ORGANIC 3.2 1.05
SEMI - DETACHED 3.0 1.12
EMBEDDED 2.8 1.20
MODEL ESTIMASI PUTNAM
Model dinamik multi variabel dengan asumsi dari spesifik distribusi effort selama proyek pengembangan / pengerjaan perangkat lunak
Rumus : L = Ck K1/3 td4/3 ; K = L3 / Ck td4
Di mana :
Makin rendah K, semakin produktif
Ck = konstanta dari keadaan teknologi yang digunakan
Ck = 2000 untuk lingkungan pengembangan perangkat lunak yang buruk
Ck = 8000 untuk lingkungan pengembangan perangkat lunak yang baik
Ck = 11000 untuk lingkungan yang terbaik, menggunakan alat bantu otomatis
K = perluasan effort dalam seluruh daur kehidupan pengembang & pemeliharaan perangkat lunak
td = waktu pengembangan dalam tahun
PERKIRAAN BIAYA PENGEMBANGAN :
Faktor-faktor yang mempengaruhi biaya pengembangan perangkat lunak :
1. Kemampuan programmer dan tenaga kerja
2. Kekompleksan produk
3. Ukuran produk
4. Waktu yang tersedia
5. Kehandalan yang diperlukan
6. Teknologi yang dipergunakan
PERENCANAAN PENJADWALAN PENGEMBANGAN PERANGKAT LUNAK :
Tanggal penyelesaian proyek pengembangan perangkat lunak
Penjadwalan ditentukan berdasarkan tugas, perencanaan tenaga kerja dan tanggal penyelesaina
Pada pengembangan perangkat lunak yang besar, memerlukan banyak tenaga kerja, sehingga aktivitas pengembangan dapat dilakuka secaa paralel (bersama-sama).
A typical task network for a software engineering. Bold lines and boxes represent the “critical path”
Gant chart for software engineering project tasks. Shaded areas imply slack time and Bom indicate milestones.
TASK STATUS TABLE
TASK NAME DAYS EARLIEST START EARLIEST FINISH LASTEST START LASTEST FINISH FIXED COST RESOURCE COST
1 Initial customer meetings 5 1/15/85 1/22/85 1/15/85 1/22/85 0 1750
2 Product description 12 1/22/85 2/7/85 1/22/85 2/7/85 0 15000
3 Review with marketing group 1 2/7/85 2/8/85 2/11/85 2/12/85 0 350
4 Review with internal staff - development 3 2/7/85 2/12/85 2/7/85 2/12/85 0 2700
5 Initial customer review 3 2/12/85 2/15/85 2/12/85 2/15/85 0 1050
6 Detailed analysis of system requirements 14 2/15/85 3/8/85 2/15/85 3/8/85 0 13860
7 Allocation of hardware & software function 4 3/8/85 3/14/85 3/8/85 3/14/85 0 3960
8 Hardware / software function defined 0 3/14/85 3/14/85 3/14/85 3/14/85 0 0
9 Specify hardware & software function in spec. 8 3/14/85 3/26/85 3/14/85 3/26/85 0 7920
10 Review function with customer 1 3/26/85 3/27/85 3/27/85 3/28/85 0 350
11 Review hardware function 2 3/26/85 3/28/85 3/26/85 3/28/85 0 930
12 Review software function 2 3/26/85 3/28/85 3/26/85 3/28/85 0 1050
13 Quality assurance review 2 3/26/85 3/28/85 3/26/85 3/28/85 0 800
14 Modification based on reviews 10 3/28/85 4/11/85 3/28/85 4/11/85 0 9900
15 System spec. is approved 0 4/11/85 4/11/85 1/11/85 4/11/85 0 0
16 Specify control / computing algorithms 6 4/11/85 4/19/85 5/2/85 5/10/85 0 3000
17 Software project planning - cost / schedule estimates 3 4/11/85 4/16/85 5/9/85 5/14/85 0 3375
18 Requirements gathering for human interface & graphics display 2 4/11/85 4/15/85 4/11/85 4/15/85 0 0
19 Project plan review 1 4/16/85 4/17/85 5/14/85 5/15/85 0 600
20 Review algorithms with technical staff 1 4/19/85 4/22/85 5/10/85 5/13/85 0 500
21 Use new code & graphic tools to design interface prototype 7 4/15/85 4/24/85 4/15/85 4/24/85 0 6300
22 Build prototype 10 4/24/85 5/8/85 4/24/85 5/8/85 0 9750
23 Begin project tracking 4 4/17/85 4/23/85 5/15/85 5/21/85 0 2400
24 Control / computation specification algorithms 0 4/22/85 4/22/85 5/13/85 5/13/85 0 0
25 User “test” interface with feedback to developer 3 5/8/85 5/13/85 5/8/85 5/13/85 0 1575
26 Test planning for software 4 5/8/85 5/14/85 6/18/85 6/24/85 0 1600
27 Preliminary design control 3 4/22/85 4/25/85 5/13/85 5/16/85 0 1500
28 Modify prototype 6 5/13/85 5/21/85 5/13/85 5/21/85 0 2700
29 Preliminary design review 1 4/25/85 4/26/85 5/16/85 5/17/85 0 900
30 Test plan reviewed & approved 0 5/14/85 5/14/85 6/24/85 6/24/85 0 0
31 Modification based on review results 2 4/26/85 4/30/85 5/17/85 5/21/85 0 1000
32 Prototype accepted 0 5/21/85 5/21/85 5/21/85 5/21/85 0 0
RESOURCE ALLOCATION TABLE - for Tasks 34 - 62
34 Preliminary design complete
35 Project tracking sw mgr
36 Create test procedure sw engr #4
37 Detailed design of control sw engr #2 sw engr #5
38 Detailed design of computation sw engr #2 sw engr #6
39 Detailed design / refinement of input interface sw engr #1
40 Detailed design of graphics sw engr #3
41 Design walkthroughts and resultant interation sw engr #1 sw engr #2 sw engr #3 sw engr #4 sw engr #5 sw engr #6
42 Review and approve test
43 Detail design complete
44 Integration test planning, revised schedule sw engr #4 sw engr #1 sw engr #3
45 Code of control modules sw engr #2
46 Code of computational modules sw engr #5
47 Code of input interface (use element of interface) sw engr #1
48 Code of graphics output sw engr #3
49 Algorithm coding complete
50 Coding of interface complete
51 Coding of output system
52 Unit test of control modules sw engr #5
53 Unit test of computation modules sw engr #6
54 Unit test of interface sw engr #1
55 Unit test of graphics output sw engr #3
56 Integration of software sw engr #1 sw engr #2 sw engr #3
57 Update user and installation sw engr #5 sw engr #6
58 Integrated software
59 Validation testing and SQA sw engr #1 sqa marketing
60 Software audit prior to release sqa
61 Modifications base on audit sw engr #5 sw engr #6 sw engr #1
62 Beta site release of software
DISTRIBUSI EFFORT ( USAHA )
Contoh : Software Project Plan Outline ( Outline rencana proyek perangkat lunak )
1. SCOPE
Project Objectives
Major Functions
Other Characteristic
A Development Scenario
2. RESOURCE
Human Resources
Hardware Resources
Software Resources
Availability Window
3. COST
4. SCHEDULE
Task Network
Gantt Chart
Task - Resource Table
REQUIREMENTS ANALYSIS FUNDAMENTALS
Spesifikasi yang lengkap mengenai “Keperluan Perangkat Lunak” merupakan hal yang penting bagi tercapainya kesuksesan dalam usaha pengembangan perangkat lunak
Tugas-tugas analisa kebutuhan meliputi proses penemuan dan perbaikan.
Diperlukan komunikasi yang aktif antara “developer” dan “customer”
Custumer “merumuskan ulang” segala sesuatu konsep yang samar-samar mengenai fungsi dan performasi perangkat lunak ke dalam konsep ynga lebih detail / jelas dan rinci.
Developer berlaku sebagai “Pemeriksa”, “konsultan” dan “pemecah masalah”.
Analisa kebutuhan dan spesifikasi kelihatannya merupakan suatu tugas yang sederhana. Padahal tidak !!!!
analisa kebutuhan
Adalah tugas rekayasa perangkat lunak yang menjembatani kesenjangan antara “system level software allocation” and “software design”
Overlap of the analysis task
Memungkinkan “system engineer” mengspesifikasikan fungsi dan unjuk kerja (performansi) perangkat lunak, menentukan antar muka perangkat lunak dengan elemen sistem lain, dan menetapkan kendala-kendala dalam proses pengdesainan perangkat lunak.
Memungkinkan “Analyst” untuk menghaluskan alokasi perangkat lunak dan menggambarkan domain informasi yang akan disajikan dengan perangkat lunak.
Memberikan gambaran kepada desainer tentang informasi dan fungsi yang dapat diterjemahkan ke dalam : data, arsitektur dan desain prosedur
Memberikan kepada developer dan customer tantang perkiraan kualitas perangkat lunak yang akan dibuat / dikembangkan / dibangun.
tugas-tugas analisis
Analisa keperluan / kebutuhan perangkat lunak dapat dibagi dalam 4 bidang usaha
1. Pengenalan masalah
2. Evaluasi dan sintesa
3. Spesifikasi
4. Peninjauan ulang
Keterangan :
1. Pengenalan masalah :
Analisis mempelajari spesifikasi sistem dan rencana proyek perangkat lunak.
Penting untuk memahami perangkat lunak dalam konteks sistem dan meninjau ulang batasan perangkat lunak yang digunakan untuk menggenerate perencanaan perkiraan.
Komunikasi dalam proses analisa harus ditetapkan sehingga “masalah” dapat dikenali dengan pasti.
2. Evaluasi dan sintesa :
Analisis harus melakukan evaluasi “aliran” dan “struktur” dari informasi, menghaluskan semua fungsi perangkat lunak, menetapkan karakteristik antarmuka, dan menemukan kendala-kendala dalam desain.
Proses evaluasi dan sintesa berlangsung sampai analis dan customer merasa yakin bahwa perangkat lunak dapat dibuat spesifikasinya untuk tahap pengembangan.
3. Spesifikasi :
Melakukan proses penentuan spesifikasi perangkat lunak, sehingga memudahkan pengerjaan pada tahap pengembangan.
4. Peninjauan ulang
Proses meninjau kembali terhadap spesifikasi yang dihasilkan, sehingga diperoleh spesifikasi perangkat lunak yang lebih rinci dan jelas dengan maksud untuk menghasilkan perangkat lunak yang baik.
analis
Analis harus mempunyai kemampuan :
1. Menganalisa konsep yang belum jelas
2. Menyerap fakta / informasi
3. Mengerti lingkungan pemakai
4. Menerapkan elemen sistem dari perangkat lunak maupun perangkat keras pada lingkungan pemakai
5. Berkomunikasi baik dalam bentuk tulisan maupun lisan.
Role of the analyst
problem areas
Analisa keperluan merupakan aktivitas komunikasi yang dilakukan secara intensif
Permasalahan yang mungkin ditemukan pada proses analisa keperluan adalah :
Kesulitan untuk menggabungkan informasi yang didapat
Penanganan permasalahan yang kompleks
Perubahan-perubahan yang akan terjadi selama atau sesudah analisis.
Hal-hal yang menyebabkan permasalahan pada tahap analisa kebutuhan :
Kurang komunikasi antara pemakai dan analis
Tehnik yang dipakai kurang baik, juga alat bantu yang digunakan tidak tepat.
Kecendrungan mempersingkat waktu untuk melakukan analisa
Gagal mempertimbangkan alternatif pemecahan masalah.
prinsip-prinsip analisa
Prinsip-prinsip dasar metode analisa :
1. Domain informasi
2. Permasalahan harus dipartisi
3. Gambaran dari logikal dan fisikal sistem harus dikembangkan.
1. DOMAIN INFORMASI
Domain informasi berisi 3 pandangan yang berbeda dari data yang diproses oleh program komputer :
a. Aliran informasi :
Menggambarkan bagaimana perubahan data dari satu proses ke proses lain.
Information flow
b. Isi informasi :
Menggambarkan item-item data yang menyusun item yang lebih besar dan berisikan informasi yang lengkap
Contoh :
Record mahasiswa terdiri dari item : nomor mahasiswa , nama mahasiswa , alamat mahasiswa , dan lain-lain
c. Struktur informasi :
Menggambarkan organisasi data secara logika
data-data disusun dalam bentuk tabel, hirarki, atau tree
Yang diperhatikan pada struktur informasi adalah bagaimana data item yang ada saling berhubungan.
2. PERMASALAHAN HARUS DIPARTISI
Partisi dilakukan agar masalah yang besar bisa dimengerti dengan mudah
Keuntungan
Membantu meningkatkan pengertian permasalahan sampai detail / rinci
Memudahkan untuk penganalisaan
Partisi horisontal dan partisi vertikal.
3. PANDANGAN LOGIKAL DAN FISIKAL
Pandangan logikal :
Gambaran dari fungsi perangkat lunak yang diperlukan telah ditentukan dan informasi yang akan diproses tanpa memandang penerapannya sampai detail / rinci
Pandangan fisikal :
Bagaimana penerapan fungsi pemrosesan dan struktur informasi
object-oriented analysis
Pendekatan object-oriented untuk pendefinisian masalah dan partisi cukup baik diterapkan sebagai bagian dari analisa kebutuhan
Pendefinisian dari objek dan operasi adalah cara yang baik untuk memulai analisa terhadap fungsi dan domain informasi
Objek : bisa dipandang sebagai suatu item informasi
Operasi : sebagai suatu proses atau fungsi yang diterapkan pada satu / lebih objek
Pendekatan analisa object-oriented :
1. Sistem / software dialokasikan menggunakan strategi formal, yaitu dengan memakai bahasa untuk mendeskripsikan. Strategi formal dapat dibuat dalam bentuk paragraf tunggal dengan tatabahasa yang benar.
2. Objek diberi garis bawah (kata benda, atau anak kalimat yang bersifat sebagai kata benda) dan kemudian dimasukkan ke dalam tabel. Sinonim dicatat. Jika objek diperlukan untuk mengimplementasikan status solusi, maka object tersebut merupakan bagian dari “solution space”. Jika objek hanya diperlukan untuk mendeskripsikan status solusi, maka objek tersebut merupakan bagian dari “problem space”
3. Atribut dari objek diidentifikasi dengan menggarisbawahi semua kata sifat dan kemudian menghubungkannya dengan kata benda (objek) masing-masing.
4. Operasi ditetapkan dengan menggarisbawahi semua kata kerja, anak kalimat kata kerja dan predikat, serta menghubungkan setiap operasi dengan objek yang sesuai.
5. Attribut dari operasi diidentifikasikan dengan menggarisbawahi semua kata keterangan dan mengasosiasikan mereka dengan operasi ( kata kerja ) masing-masing.
Contoh masalah CLSS
Berdasarkan deskripsi perangkat lunak sebagai strategi informal, kita terapkan langkah pertama :
CLSS software will receive input information from a bar code reader at time intervals that conform to the conveyor line speed. Bar code data will be decoded into box identification format. The software will do a lookup in a 1000 entry database to determine proper bin location for the box currently at the reader (sorting station). A FIFO list will be use to keep track of shunt positions for each box as it moves past the sorting station.
CLSS software will also receive input from a pulse tachometer that will be use to synchronize the control signal to the shunting mechanism. Based on the number of pulses that will be generate between the sorting station and the shunt, the software will produce a control signal to the shunt to properly position the box .............
Bar code data , bin location , dan control signal solution space
Lainnya problem space
Setiap objek mewakili sebuah item informasi yang harus diproses oleh software
Penentuan proses :
CLSS software will receive input information from a bar code reader at time intervals that conform to the conveyor line speed. Bar code data will be decoded into box identification format. The software will do a lookup in a 1000 entry database to determine proper bin location for the box currently at the reader (sorting station). A FIFO list will be use to keep track of shunt positions for each box as it moves past the sorting station.
CLSS software will also receive input from a pulse tachometer that will be use to synchronize the control signal to the shunting mechanism. Based on the number of pulses that will be generate between the sorting station and the shunt, the software will produce a control signal to the shunt to properly position the box .............
Solution space : receive , look-up , produce
Problem space : moves , synchronize
OBJECT ATTRIBUTE CORRESPONDING OPERATION
Data Bin Code Decode
Location Bin Determine
Signal Control Synchronize ; produce
Input Pulse Tach. Receive
List FIFO Keep Track
Positions Shunt Keep Track
Intervals Time Conform
Format Box ID Decode
Database 1000 - entry Do a look up
Pulses Tach Generate
Objek dan Operasi
Software prototyping
Tujuan pembuatan “Software Prototyping” :
Membantu mengevaluasi apakah desain telah memenuhi spesifikasi fungsional maupun non fungsional
Prototype diuji dan disempurnakan sebelum dilakukan produksi software yang sebenarnya.
Dalam perekayasaan perangkat lunak, pembuatan prototype merupakan proses produksi
Pembuatan prototype bisa membantu :
1. Pendefinisian dan spesifikasi desain yang akan dibuat
2. Pemilihan metode dan algoritma yang akan digunakan dalam desain
3. Pendefinisian spesifikasi interface dengan pemakai
Langkah-langkah yang dapat diterapkan untuk menghasilkan prototype perangakat lunak :
1. Mengevaluasi permintaan / pemesanan perangkat lunak dan menentukan apakah perangkat lunak yang dikembangkan mempunyai peluang yang baik untuk dibuat prototypenya.
2. Setelah “calon proyek” dapat diterima, analis mengembangkan garis besar keperluan / kebutuhan
3. Setelah representasi kebutuhan ditinjau ulang, maka dibuat desain spesifikasi untuk pembuatan prototype
4. Lakukan testing dan penghalusan / perbaikan terhadap prototype perangkat lunak.
5. Prototype perangkat lunak yang sudah ditest, diperlihatkan kepada customer untuk dilakukan uji coba
6. Langkah 4 dan 5 diulangi sampai customer puas dan kriteria validasi terpenuhi.
Metoda dan alat bantu pembuatan prototype :
1. Fourth Generation Techniques
2. Reusable software component
Menggunakan komponen perangkat lunak yang sudah ada :
Struktur data (database)
Komponen arsitektur program (program)
Komponen prosedural (modul)
3. Formal specification and prototyping environments
Metoda ini banyak menggunakan bahasa formal untuk mengembangkan proses interaktif dengan lingkungan luar;
Memungkinkan analis membuat spesifikasi untuk mengembangkan proses secara interaktif
Menggunakan alat bantu otomatis yang dapat menterjemahkan kode executable
Memungkinkan pelanggan menggunakan prototype “executable code” untuk proses penghalusan dalam hal kebutuhan yang diinginkan.
An automated software engineering paradigm
specification
Prinsip-prinsip dalam penyusunan spesifikasi perangkat lunak :
1. Memisahkan fungsi dari implementasi
2. Spesifikasi sistem berorientasi kepada keperluan sistem
3. Spesifikasi harus memuat sistem dari perangkat lunak yang merupakan komponen
4. Spesifikasi harus termasuk di mana sistem akan dioperasikan
5. Spesifikasi sistem harus berupa model kognitif
6. Spesifikasi dapat dilaksanakan
7. Spesifikasi sistem harus bertoleransi terhadap ketidaklengkapan dan kemungkinan perluasan sistem
8. Spesifikasi harus dibatasi dan keterkaitannya longgar
representation
Digunakan untuk menjelaskan metoda yang dipakai untuk menganalisa kekuatan.
Petunjuk pembuatan representasi :
Format representasi dan isinya harus relevan dengan masalah yang akan dijelaskan
Informasi diisi dengan spesifikasi yang dapat bersarang
Menggunakan simbol / bentuk yang terbatas jumlahnya dan digunakan secara konsisten
Representari dapat direvisi
software requirements specification
1. Introduction
a. System reference
b. Business objectives
c. S / W project constraints
2. Information description
a. Information flow representation
b. Information content representation
c. Information structure representation
d. System interface description
3. Functional desciption
a. Functional partitioning
b. Functional description
< 1 > Processing narative
< 2 > Restrictions / limitations
< 3 > Performance requirements
< 4 > Design constraints
< 5 > Supporting diagrams
4. Validation criteria
a. Performance bounds
b. Classes of tests
c. Expected S / W response
d. Special considerations
5. Bibliography
6. Appendix
(SOFTWARE ENGINEERING)
Software Engineering :
Suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal requirement capturing (analisa kebutuhan pengguna), specification (menentukan spesifikasi dari kebutuhan pengguna), design, coding, testing sampai pemeliharaan sistem setelah digunakan.
Definisi Software Engineering menurut IEEE1 pada projek SWEBOK2adalah aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software; dapat disimpulkan sebagai teknik aplikasi untuk perangkat lunak.
Latar belakang munculnya software engineering ketika adanya krisis software di era tahun 1960-an. Krisis tersebut akibat dari lahirnya komputer generasi ke III yang ditandai dengan
penggunaan IC (Integrated Circuit).
Kemampuan hardware yang meningkat, membuat adanya kebutuhan untuk memproduksi software yang lebih baik. Akibatnya software yang dihasilkan menjadi menjadi beberapa kali lebih besar
dan kompleks.
Pendekatan informal yang digunakan dalam pengembangan perangkat lunak pada saat itu, menjadi tidak cukup efektif (secara biaya, waktu dan kualitas). Biaya hardware mulai jatuh dan biaya perangkat lunak menjadi naik cepat. Oleh karena itu muncul pemikiran untuk menggunakan pendekatan yang lebih efektif,
standard dan terukur dalam mengembangan perangkat lunak.
Krisis software adalah sekumpulan masalah yang ditemukan dalam pengembangan software komputer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang berhubungan dengan :
a. Bagaimana mengembangkan software.
b. Bagaimana memelihara software yang ada, yang berkembang dalam jumlah besar.
c. Bagaimana mengimbangi permintaan software yang makin besar.
Dalam membuat softrare yang baik, ada beberapa cara :
1. Fase Perencanaan (Planning) :
a) Rencana software
b) Analisa kebutuhan software
c) Analisa cost banefit (Salah satu bagian dari studi kelayakan)
2. Fase Pengembangan (Development) :
a) Coding
b) Testing
Macam-macam test program :
i) Unit test (Test per modul)
ii) Integreated test (Test penggabungan dari modul-modul yang telah diuji)
iii) Validated test (Diuji dengan data sebenarnya)
iv) System test (Test dilakukan dengan lingkungan sebenarnya)
v) Topdown test (Test gabungan dari atas ke bawah)
vi) Bottom up test (Test gabungan dari bawah ke atas)
3. Fase Pemeliharaan (Maintenance) :
Jenis-jenis maintenance
a) Koreksi (Corection)
b) Adaptasi (Adaptive)
Software dikembangkan sesuai dengan tuntutan perkembangan jaman
c) Adaptasi yang berkembang pada dewasa ini terbagi atas :
i) Sistem Operasi
Pengarahan sistem operasi yang bersifat multi user. Contoh : UNIX
Sistem operasi yang bersifat jaringan. Contoh : NOVELL
ii) RDBMS - Relational DataBase Management System
Berkembang dalam bentuk bahasa SQL (Structure Query Language).
iii) Bahasa
Mengarah pada perkembangan bahasa generasi ke empat (4GL - Fourth Generation Language)
Bahasa 4GL adalah suatu bahasa yang dibuat untuk meningkatkan produktifitas programmer dan end user. Contoh :
a) INFORMIX - Dapat dijalankan pada PC dengan minimum RAM 4MB + 640KB dan disk sto¬r¬age > 40MB
b) ORACLE
c) INGRES
d) AS / SET - Digunakan pada IBM AS 400
e) POWER HOUSE - digunakan pada HR 3000
iv) Perfective
Menyempurnakan software yang ada biasanya dilakukan karena permin¬taan / saran / kritik user.
SOFTWARE AND SOFTWARE ENGINEERING
Selama tiga dekade pertama dari era komputerisasi, tantangan utama adalah mengembangkan hardware kom¬puter yang dapat mengurangi biaya pengolahan dan penyimpanan data. Selama dekade tahun 1980 an, kemajuan yang pesat dari mikro elektronik menghasilkan kemampuan komputer yang lebih baik pada tingkat biaya yang lebih rendah. Namun masalah sekarang berbeda. Tantangan utama adalah mengurangi biaya dan memperbaiki kualitas solusi berbasis komputer (Solusi yang diimplementasikan dengan mempergunakan software). Software merupakan faktor kunci dalam keberhasilan suatu usaha, software dapat membedakan satu perusahaan dari per¬usahan saingannya.
EVOLUSI PERKEMBANGAN SOFTWARE
Evolusi software
Tahun-tahun awal :
Batch orientation
Limmited distribution
Custummer software
Era kedua :
Multi user
Real time
Database
Era ketiga
Distibuted system
Embedded intellegence
Low cost hardware
Consumer infact
Era keempat :
Expert system
A I Machine
Parallel architecture
TAHUN-TAHUN PERTAMA :
Batch Orientation
Suatu 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 distribution
Suatu penyebaran software yang terbatas pada perusahaan-perusahaan tertentu.
Custom software
Software yang dikembangkan berdaasarkan perusahaan-perusahaan tertentu.
ERA KEDUA :
Multi user
Suatu sistem di mana satu komputer digunakan oleh beberapa user pada saat yang sama.
Real Time
Suatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second.
Database
Perkembangan yang pesat dari alat penyimpan data yang OnLine menyebabkan muncul generasi pertama DBMS (DataBase Management System).
Product Software
Adalah software yang dikembangkan untuk dijual kepada masyarakat luas.
ERA KETIGA :
Distributed system
Suatu sistem yang tidak hanya dipusatkan pada komputer induk (Host computer), daerah atau bidang lain¬nya yang juga memiliki komputer yang ukurannya lebih kecil dari komputer induk. Lawan dari distributed system adalah Centralized System.
Embedded Intelegence
Suatu product yang diberi tambahan “Intellegence” dan biasanya ditambahkan mikroprocessor yang mutak¬hir. Contohnya adalah automobil, robot, peralatan diagnostic serum darah.
Low Cost Hardware
harga hardware yang semakin rendah, ini dimungkinkan karena munculnya Personal Computer.
Consummer Inpact
Adanya perkembangan komputer yang murah menyebabkan banyaknya software yang dikembangkan, soft¬ware ini memberi dampak yang besar terhadap masyarakat.
ERA KEEMPAT :
Expert system
Suatu penerapan A.I. (Artificial Intellegence) pada bidang-bidang tertentu, misalnya bidang kedokteran, komunikasi, dll.
AI Machine
Suatu mesin yang dapat meniru kerja dari sebagian otak manusia. Misalnya mesin robot, komputer catur.
Parallel Architecture
Arsitektur komputer yang memungkinkan proses kerja LAN paralel, yang dimungkinkan adanya prosesor berbeda dalam satu komputer
ARTI SOFTWARE
1. Instruksi
Atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.
2. Struktur data
Yang memungkinkan program memanipulasi informasi
3. Dokumen
Yang menggambarkan operasi dan penggunaan program.
SIFAT DAN KARAKTERISTIK SOFTWARE
1. Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardware
2. Elemen itu tidak aus, tetapi bisa rusak.
3. Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware
4. Software itu tidak bisa dirakit.
KOMPONEN SOFTWARE
1. Bentuk bahasa
Terbagi 2, yaitu
A. High Level, contoh PASCAL, COBOL, FORTRAN.
B. Middle Level, contoh C
2. Bentuk translator
Terbagi 3 , yaitu :
A. Interpreter
Menerjemahkan dari bahasa tingkat tinggi ke bahasa tingkat rendah secara satu persatu (statemen demi statemen)
B. Compiler
Menerjemahkan secara keseluruhan, proses lebih cepat dari interpreter
C. Assembler
Menerjemahkan dari bahasa rakitan ke bahasa mesin
3. Bentuk mesin :
APLIKASI SOFTWARE
1. Sistem Software
Adalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponen-komponen sistem operasi, driver dan prosesor telekomunikasi.
2. Real Time software
Software yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia. Ele-men-elemen real time software terdiri dari :
A. Komponen pengumpul data
Yang mengumpulkan dan menyusun informasi dari lingkungan external.
B. Komponen analisis
Yang mentransformasikan informasi yang diperlukan oleh aplikasi
C. Komponen kontrol
Yang memberikan respon kepada lingkungan external
D. Komponen monitor
Yang 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.
3. Business software
Software yang palinmg banyak digunakan dalam bidang aplikasi software. Software ini digunakan oleh manajemen untuk mengambil kepitusan ( Decision Making ) dalam bidang bisnis. Contoh :
DAC EASY ACCOUNTING
FINANCE MANAJER
4. Engineering and sciencetific software
Software 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 - Ssimulasi sistem )
5. Emdebed software
Suatu software disimpan dalam memori tetap - ROM - Read Only Memory, dan digunakan untuk mengon¬trol product dan sistem software ini dijalankan dengan berbagai fungsi terbatas.
6. PC software (Personal Computer)
Software yang banyak digunakan di komputer pribadi (PC). Contoh :
Word Processing : WS, WP
Spreadsheet : Lotus, Supercalc
Computer Graphics : Printshop, Print Magic
Games : Paoman, Load Runner
DBMS : Dbase III+, Foxbase, Clipper
Network : LAN, Novell
7. Artificial Intelegence software
Software 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.
KRISIS SOFTWARE
Adalah 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 :
1. Bagaimana mengembangkan software
2. Bagaimana memelihara software ynag ada, yang berkembang dalam jumlah besar
3. Bagaimana mengimbangi permintaan software yang makin besar.
MASALAH
Krisis software oleh beberapa masalah :
1. Estimasi jadual dan biaya yang seringkali tidak tepat
2. Produktivitas orang-orang software yang tidak dapat mengimbangi permintaan software
3. Kualitas software yang kurang baik.
Penyebab :
Masalah yang berhubungan dengan krisis software disebabkan oleh :
1. Karakteristik software itu sendiri
Karakteristik 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 tang¬gung 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.
2. Kegagalan mereka yang bertanggung jawab dalam pengembangan software.
MITOS SOFTWARE
1. Mitos managements
A. Kita 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 developments
B. Kita 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 ).
C. Jika kita tertinggal dari jadwal yang ditetapkan, kita menambah beberapa programmer saja. Konsep ini sering disebut Mongolian harde concept.
2. Mitos Langganan / Customer
A. Pernyataan 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 pem-bentukkan software. Penjelasan yang formal dan terinci tentang informasi fungsi performance interface, hambatan desain dan kriteria validasi adalah penting. Karakteristik di atas dapat ditentukan hanya sete¬lah adanya komunikasi antara customer dan developer.
B. 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 peru¬bahan berbeda dari waktu ke waktu.
Kesimpulan : Jika perubahan mendekati akhir penyelesaian, maka biaya akan lebih besar.
3. Mitos Praktisi
A. Tidak 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.
B. 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 or¬ganisasi.
MODEL SOFTWARE ENGINEERING
Krisis software tidak dapat hilang dalam satu satu malam, di mana tidak ada suatu pendekatan yang baik dalam mengatasi krisis software, namun gabungan dari metode untuk semua fase dalam pengembangan siftware seperti peralatan yang lebih baik untuk mengautomatisasi metode-metode ini, tehnik yang lebih baik untuk mengontrol kualitas, dan filosofi untuk koordinasi kontrol, serta manajemen dipelajari dalam suatu disiplin ilmu yang kita sebut software engineering.
Definisi :
Menurut Fritz Badar, software engineering adalah disiplin ilmu yang menerapkan prinsip-prinsip engineering agar mendapatkan software yang ekonomis yang dapat dipercaya dan bekerja lebih efisien pada mesin yang se¬benarnya.
Software engineering terdiri dari 3 elemen kunci, yaitu :
1. Metode,
2. Peralatan (tools),
3. Prosedur,
yang memungkinkan manajer mengontrol proses pengembangan software dan memberikan praktisi dasar yang baik untuk pembentukan software berkualitas tinggi.
1. Metode Software Enginnering
Metode software engineering memberikan tehnik-tehnik 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
2. Peralatan Software Engineering
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hard¬ware, 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.
Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE
3. Prosedur Software Engineering
Terdiri dari :
urut-urutan di mana metode tersebut diterapkan
dokumen
laporan-laporan
formulir-formulir yang diperlukan
mengontrol kualitas software
mengkoordinasi perubahan yang terjadi pada software
Dalam penguasaan atas model software engineering atau software engineering paradigm, dikenal ada 3 metode yang luas dipergunakan, yaitu :
1. Classic Life Cycle Pradigm - Model Water Fall - Model Siklus Hidup Klasik
Keterangan :
A. 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
B. 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.
C. 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.
D. Coding
Desain harus diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
E. 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.
F. 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.
2. Prototype Paradigm
Keterangan :
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, pendekatan prototype untuk software engineering merupakan langkah yang terbaik. Proto¬type 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 pengembangan software. Model ini dimulai dengan :
Pengumpulan kebutuhan developer dan customer
Menentukan semua tujuan software
Mengidentifikasi kebutuhan-kebutuhan yang diketahui
Hasil dari pengumpulan kebutuhan diteruskan pada Quick Design. Quick Design ini memfokuskan pada representasi aspek-aspek software yang dapat dilihat oleh user, misalnya format input dan output, selanjutanya dari desain cepat diteruskan pada pembentukan prototype (langkah ke 3). Prototype ini dievaluasi oleh customer / user dan digunakan untuk memperbaiki kebutuhan-kebutuhan software. Proses iterasi terjadi agar prototype yang dihasilkan memenuhi kebutuhan customer, juga pada saat yang sama developer mengerti lebih baik tentang apa yang harus dikerjakan.
Masalah yang dihadapi oleh prototyping paradigm ini adalah :
Customer hanya melihat pada apa yang dihasilkan oleh software, tidak peduli pada hal-hal yang ber¬hubungan dengan kualitas software dan pemeliharaan jangka panjang.
Developer seringkali menyetujui apa yang diterangkan oleh customer 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 ke¬mudian menghasilkan source code dan object code secara otomatis sesuai dengan spesifikasi yang ditentu¬kan 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 :
A. peralatan 4GT tidak semudah penggunaan bahasa pemrograman,
B. source code yang dihasilkan oleh peralatan ini tidak efisien,
C. 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 )
BAB II
COMPUTER SYSTEM ENGINEERING
Computer system engineering (Rekayasa Sistem Komputer) terdiri atas 2 bagian, yaitu :
Hardware engineering
Software engineering
Setiap disiplin ini berusaha menunjukkan pengembangan sistem berbasis komputer tehnik engineering. Untuk hardware komputer telah sedemikian maju dan relatif jenuh. Sebaliknya software komputer mulai berkembang, dan saat ini menggantikan peranan hardware sebagai elemen sistem yang sulit direncanakan, sedikit kemung¬kinan untuk berhasil dengan biaya rendah dan waktu yang cepat, serta paling sukar untuk dikelola.
Apa Sistem itu ?
Sistem adalah sekumpulan elemen yang saling berinteraksi untuk mencapai suatu tujuan. Sedangkan Computer Based System diorganisir untuk mendapatkan beberapa metode, prosedur atau pengontrolan dengan cara mengelola informasi.
Elemen-elemen dari sistem berbasis komputer adalah :
1. Software
Program komputer, struktur data dan dokumentasi yang saling berhubungan dan memberikan efek pada me¬tode, prosedur dan kontrol yang diinginkan.
2. Hardware
Peralatan elektronik, (misalnya CPU, memory) yang memberikan kemampuan komputasi serta peralatan elektromedia (misalnya sensor, motor, pompa) yang memberikan fungsi external.
3. People / Brainware
User dan operator dari hardware dan software
4. Database
Sekumpulan informasi yang besar, yang diorganisir agar dapat diakses oleh software dan merupakan bagian integral dari fungsi sistem.
5. Prosedur
Langkah-langkah yang menetapkan pemakaian khusus untuk setiap elemen sistem.
Keterangan :
Computer system engineering adalah suatu aktifitas pemecahan masalah fungsi sistem yang diinginkan, ditemu¬kan, dianalisis, dan dialokasikan ke elemen-elemen sistem individu.
Computer System Engineering disebut juga Sistem Analis, dimulai dengan :
1. Penetapan tujuan customer
2. Hambatan-hambatan dan representasi fungsi performance yang dapat dialokasikan ke masing-masing elemen sistem.
Segera setelah fungsi performance, hambatan dan interface ditetapkan, system engineering selanjutnya melaku¬kan pekerjaan alokasi. Selama pengalokasian fungsi diserahkan kepada satu / lebih elemen sistem (misalnya software, hardware, people, dll) seringkali alokasi alternatif diusulkan dan dievaluasi.
Fungsi yang dialokasikan maksudnya adalah menentukan mana yang masuk ke hardware, ke software dan ke brainware
Berikut ini adalah kriteria pemilihan konfigurasi sistem berdasarkan alokasi fungsi dan performance ke elemen sistem :
1. Project Consideration - Pertimbangan Proyek
Dapatkah konfigurasi dihasilkan dengan biaya dan jadual yang ditetapkan lebih awal ?
2. Business Consideration - Pertimbangan Bisnis
Dapatkah konfigurasi memberikan solusi yang paling menguntungkan ?
Dapatkah dipasarkan dengan sukses ?
Pertimbangan ini yang paling penting.
3. Technical Consideration - Pertimbangan tehnik
Apakah ada tehnologi untuk mengembangkan semua elemen sistem ?
Dapatkah fungsi performance dijamin ?
Dapatkah konfigurasi dipelihara dengan cukup baik ?
4. Manufacturing Evaluation - Evaluasi Pabrikasi
Apakah fasilitas dan peralatan manufaktur tersedia ?
Apakah ada komponen yang diperlukan dengan segera ?
Apakah jaminan kualitas dapat dipercaya ?
5. Human Issues - Hal-hal yang berhubungan dengan manusia
Apakah tenaga kerja terlatih untuk pengembangan dan manufaktur tersedia ?
Apakah customer mengerti dengan apa yang akan dicapai oleh sistem ?
6. Environmental Interface - Berhubungan dengan lingkungan
Apakah konfigurasi yang diusulkan sudah cukup berhubungan dengan lingkungan external dari sistem ?
Apakah komunikasi mesin manusia dan manusia mesin sudah ditangani dengan baik ?
7. Legal Consideration - Pertimbangan hukum
Apakah pertimbangan yang dihasilkan sudah dilindungi oleh hukum ?
PERTIMBANGAN HARDWARE
Computer System Engineering selalu mengalokasikan satu / lebih fungsi sistem ke hardware komputer.
Elemen-elemen hardware
1. CPU - Cenral Processing Units
2. Adalah unit yang melakukan pekerjaan aritmatik, logika, dan fungsi pengontrol serta berinteraksi dengan komponen lainnya. Sekarang ini, beberapa arsitektur komputer ditambahkan ko-prosesor untuk melakukan fungsi pengolahan khusus ( fungsi kalkulasi ) sehingga performance CPU dapat ditingkatkan.
3. BUS
4. Adalah alat komunikasi yang menghubungkan elemen satu dengan elemen lainnya untuk pengiriman in¬struksi, data dan informasi pengontrolan.
5. Memory
6. Memory memberikan tempat penyimpanan instruksi dan data yang dapat diakses langsung / tidak langsung melalui perintah yang dieksekusi oleh CPU dan ko-prosesornya.
Memory terbagi menjadi 2 bagian, yaitu :
A. Memori Primer / Primary Memory / Main Memory
Adalah memory yang terdapat di dalam komputer, terdiri atas 2 bagian yaitu :
i. RAM - Random Access Memory
Untuk menyimpan data / instruksi yang bersifat temporary
ii. ROM - Read Only Memory / Firmware
Untuk menyimpan perintah dan / atau data yang permanen.
ROM terbagi atas 2 golongan
a. PROM - Programmabel Read Only Memory
Memory ROM yang dapat ditulis / diprogram dan dapat dihapus dengan cara :
EEPROM - Eraseble Electrical Programmabel ROM
Dihapus dengan kejutan listrik tertentu
UVPROM - Ultra Violet Programmabel ROM
Dihapus dengan sinar ultra violet
b. MASK ROM
ROM yang terjual sudah diprogram pada saat dibuat oleh pabriknya.
B. Memory Sekunder
Sifat yang menonjol dari memory jenis ini adalah :
i. Waktu akses lambat
ii. Kapasitas besar sekali dibandingkan dengan memory primer
iii. Waktu akses berkisar milidetik dengan kapasitas antara 400.000 sampai 1 billion byte
iv. Contoh : Floppy disk, harddisk, hardcard, optical disk
APLIKASI HARDWARE
Dapat dikelompokan dalam 3 bagian besar, yaitu :
1. Pengelolahan informasi
2. Pengontrolan proses dan aplikasi real time
3. Tambahan intelegensi
REKAYASA HARDWARE
Untuk komputer digital yang dikembangkan dari perancangan elektronik, proses perancangannya terdiri dari 3 tahap :
1. Perencanaan dan spesifikasi
2. Perencanaan dan implementasi prototype
3. Manufaktur distribusi dan pelayanan
Segera / sesudah analisis dan definisi dijalankan, fungsi dialokasikan ke hardware.
Fase I : Perencanaan dan Spesifikasi
Fase I terdiri dari :
1. Perencanaan pengembangan
2. Analisis hardware
Perencanaan pengembangan dilaksanakan untuk menetapkan lingkup-lingkup dari usaha-usaha terhadap hardware, oleh karena itu menimbulkan beberapa pertanyaan, antara lain :
1. Jenis hardware apa yang terbaik untuk fungsi yang ditentukan?
2. Hardware yang mana yang tersedia untuk dijual, bagaimana biayanya, jenis interface yang diperlukan, dan apa yang harus dilakukan untuk merancang dan membangun ?
Fase II : Perencanaan dan Implementasi Prototype
Kebutuhan analisis dan konfigurasi hardware mulai dirancang, dilakukan tinjauan tehnis demi mendapatkan spesifikasi rancangan yang benar. Komponen mulai dibuat dan prototype mulai diralat. Prototype diuji un¬tuk menjamin bahwa prototype telah memenuhi semua persyaratan. Namun prototype sering menghadapi ketidakmiripan dengan prosedur yang dibuat. Karena itu perlu adanya spesifikasi pabrikasi
Fase III : Manufacture Distribution dan Pelayanan
Mulai dihasilkan prosedur-prosedur dengan penekanan pada kualitas produk. Dengan mekanisme distribusi produk terhadap fase ini, juga dibentuk bagian perbaikan dan maintenance
perencanaan sistem
Tahap perencanaan dari siklus hidup software adalah suatu proses definisi, analis, spesifikasi, estimasi dan review.
Definisi sistem merupakan langkah pertama dalam fase perencanaan.
Tujuan dari definisi sistem ini adalah :
1. Evaluasi konsep sistem : feasibility, cost benefit, dan businness needs
2. Jelaskan interface, function, dan performance sistem
3. Alokasi fungsi pada hardware, software dan elemen tambahan.
Tujuan dari perencanaan software adalah mengestimasi biaya dan waktu pengembangan. Untuk mencapai ini, lingkup software harus dimengerti dengan sempurna, dan sumber harus ditentukan dengan tepat.
Analisis kebutuhan software memperjelas :
1. Software interfaces
2. Atribut fungsional
3. Karakteristik performance
4. Kendala desain
5. Kriteria validasi
Timbul pertanyaan :
1. Berapa besar usaha yang akan diberikan pda fase perencanaan ?
10 s/d 20 % dari usaha keseluruhan proyek diberikan pada perencanaan dan analisis kebutuhan software.
2. Siapa yang mengerjakannya ?
Analis yang berpengalaman dan terlatih memperkerjakan hampir semua pekerjaan yang berhubungan dengan fase perencanaan. Untuk proyek yang sangat besar, dapat dibentuk sebuah tim analis.
3. Mengapa begitu sulit ?
Konsep yang tidak jelas harus ditransformasikan ke dalam elemen yang jelas.
feasibility studi ( studi kelayakan )
Semua proyek layak bila sumber dan waktunya tidak terbatas. Kenyataannya, pengembangan sistem berbasis komputer dibatasi oleh sumber dan waktu.
Ada 4 bidang utama yang menjadi konsentrasi dari feasibility studi, yaitu :
1. Economic Feasibility :
Evaluasi biaya (cost) dan manfaat (benefit) dalam pengembangan sistem.
2. Tehcnical feasibilitu :
Studi tentang fungsi, performance, dan hambatan yang berpengaruh terhadap kemampuan mendapatkan sistem yang baik.
3. Legal Feasibility :
Penentuan berbagai pelanggaran, kewajiban yang dapat terjadi dari pengembangan sistem.
4. Alternative :
Evaluasi sebagai alternatif untuk mengembangkan sistem
Analisis cost benefit
Menggambarkan biaya pengembangan proyek dan mempertimbangkan keuntungan sistem, baik yang tangible maupun intangible (dapat diukur dan tidak dapat diukur).
Analis cost benefit ini tergantung dari karakteristik sistem yang akan dikembangkan, ukuran relatif proyek (besar kecil proyek), dan ROI (Return On Invesment) yang diharapkan dari proyek.
Keuntungan dari sistem baru selalu dibandingkan dengan keuntungan dari sistem yang ada.
Contoh soal :
Suatu CAD (Computer Aided Design) akan menggantikan cara manual dalam membuat gambar-gambah tehnik. Misalkan :
t = waktu rata-rata menggambar = 4 jam
c = biaya gambar perjam = $20
n = banyaknya gambar pertahun = 8000
p = persentase gambar yang dihasilkan dengan sistem CAD = 60%
Penurunan waktu gambar menjadi 1/4 nya dengan adanya sistem CAD.
Jadi :
Biaya yang dapat ditekan (dihemat) sebesar :
Bila untuk sistem CAD harus dikeluarkan biaya sebesar :
biaya pengembangan / membeli = $204,000,
biaya pemeliharaan = $32,000 per tahun,
maka masa pengembalian / payback periode dari proyek CAD ini adalah :
Biaya pengeluaran (cost ) = biaya penghematan ( benefit )
204,000 + x • 32,000 = 96,000 • x
64,000 • x = 204,000
x = 3.2 tahun
Ini berarti setelah 3.2 tahun, barulah proyek CAD ini memberikan titik impas (break even). Setelah ini barulah memberikan keuntungan.
Grafik :
PERENCANAAN software
Untuk melaksanakan pengembangan proyek software dan berhasil, kita harus mengerti :
1. Ruang lingkup pekerjaan yang dilakukan
2. Sumber yang diinginkan
3. Usaha dan biaya
4. Jadual yang dikehendaki
Perencanaan software adalah :
Langkah kedua dalam fase perencanaan, tetapi merupakan langkah pertama dalam proses rekayasa software yang akan memberikan pengertian kepada 4 hal di atas.
Perencanaan software mengkombinasikan 2 tugas, yaitu :
1. Riset
2. Estimasi
Tujuan perencanaan software :
Memberikan suatu kerangka yang memungkinkan manajer membuat estimasi yang beralasan tentang sumber, biaya dan jadual.
Contoh soal :
TUGAS USAHA,
per orang per bulan
Requirement 1.5
Design 3.0
Code 1.0
Test 3.5
Usaha yang dihasilkan 9.0
Dari usaha ini, dihasilkan 2,900 LOC (banyaknya baris program). 200 LOC digunakan simulasi, dan testing tidak termasuk bagian dari software yang dioperasikan.
Produktivitasnya :
= 300 LOC per orang per bulan.
Ada 4 orang software engineering yang masing-masing mampu menghasilkan 4000 LOC per tahun.
Bila mereka dipekerjakan dalam 1 team, maka proyek ada 6 jalur komunikasi yang mungkin (communication path). Setiap jalur komunikasi memerlukan waktu yang seharusnya digunakan untuk pengembangan Loding sebesaar 240 LOC per tahun.
Bila proyek 1 tahun tersebut mengalami keterlambatan jadwal dan tinggal 1 bulan lagi, perlu penambahan 3 orang lagi kedalam team tersebut.
Bila dianggap terjadi pengurangan produktivitas team, untuk setiap jalur komunikasi adalah sama, baik untuk pegawai lama dan baru.
Hitung berapa produktivitas team sebelum dan sesudah penambahan 3 orang tersebut, sekaligus jangka waktunya berbeda !!!
Jawab :
Jalur komunikasi 4 orang ada 6 jalur (lihat gambar).
Produktivitas sebelum penambahan : = ( 4 4,000 ) - ( 240 6 ) = 16,000 - 1,440 = 14,560 LOC per tahun
Produktivitas setelah penambahan :
Jika jalur komunikasinya berbeda :
=
= 16000 + 2000 - ( 1440 + 600 )
= 18000 - 2040
= 16960
Jika jalur komunikasinya dianggap sama :
=
= 16000 + 2000 - ( 1440 + 3600 )
= 18000 - 5040
= 12960
proses desain software
Desain dalam fase pengembangan merupakan langkah pertama, di mana fase pengembangan merupakan fase kedua dalam siklus hidup software.
Segera sesudah kebutuhan software ditetapkan, dimulailah fase pengembangan yang terdiri dari 4 langkah berbeda :
1. Desain awal (preliminary design)
2. Detailed Design (Desain primeir)
3. Coding
4. Testing
Aliran informasi selama fase pengembangan dapat dilihat pada gambar di bawah ini.
Kebutuhan software & aliran informasi ( Structure Information Software ) memulai langkah desain awal dengan menggunakan 1 dari beberapa metode desain struktur software untuk dikembangkan. Struktur software yang juga disebut Arsitektur Software ini menjelaskan tentang hubungan antar elemen utama dari sebuah program. Desain terinci menterjemahkan elemen-elemen struktural ke dalam penjelasan software ( prosedur software ).
Source Code dihasilkan dan pengetesan awal dilakukan selama langkah pengkodean dan pengetesan unit hasilnya berupa model-model program yang sudah ditest.
Langkah terakhir dalam fase pengembangan adalah dilakukannya pengetesan integrasi dan validasi.
Fase pengembangan paling sedikit menyerap 75% dari biaya software baru. Ini berarti pengambilan keputusan dalam fase ini akan sangat mempengaruhi keberhasilan dalam implementasi software dan kemudahan dalam pemeliharaan software.
defect aplication model ( dam )
DAM digunakan untuk memberikan gambaran tentang pembentukan dan pendeteksian error selama desain awal dari Desain Terinci dan Pengkodean.
Dengan model ini, kita dapat membandingkan besarnya biaya yang dikeluarkan dengan adanya error, baik untuk review maupun tanpa review.
Contoh DAM tanpa REVIEW :
Cara Kerja :
2. 6 + ( 4 1,5 ) + 25 = 37
37 0% = 0
37 - 0 = 37
3. 40 + ( 27 3 ) + 25 = 116
116 20% = 2320% = 23,2 23
116 - 23 = 93
4. 93 + 0 + 0
93 50% = 4650% = 46,5 46
93 - 46 = 47
5. 46 + 0 + 0 = 46
46 50% = 2300% = 23
46 - 23 = 23
6. 23 + 0 + 0 = 23
23 50% = 1150% = 11,5 11
23 - 11 = 12
Contoh DAM dengan REVIEW :
1. ( 10 + 0 ) 70% = 7
2. 5 + ( 1 1,5 ) + 25 = 28,5
28,5 50% = 1425% = 14,25 14
28,5 - 14 = 14,5 15
3. ( 10 3 ) + 5 + 25 = 60
60 60% = 3600% = 26
60 - 36 = 24
4. 0 + 0 + 24 = 24
24 50% = 1200% = 12
24 - 12 = 12
5. 12 + 0 + 0 = 12
12 50% = 600% = 6
12 - 6 = 6
6. 6 + 0 + 0 = 6
6 50% = 3
6 - 3 = 3
KEGIATAN BIAYA per ERROR NON REVIEW REVIEW
Selama desain 1 0 x 1 = 0 21 x 1 = 21
Sebelum test ( coding ) 5 23 x 5 = 115 36 x 5 = 180
Selama test ( validated & integrated test ) 10 82 x 10 = 820 21 x 10 = 210
Setelah dipasarkan ( error laten ) 100 11 x 100 = 1100 3 x 100 = 300
Total biaya 2035 711
Soal Latihan no. 1 :
Diketahui :
5 software engineering masing-masing mampu menyelesaikan 4000 LOC per tahun bila bekerja secara individu. Mereka bekerja sama dalam 1 team. Bila proyek 1 tahun tersebut mengalami keterlambatan dan tinggal 1 bulan lagi, perlu tambahan 1 software engineering lagi ke dalam team tersebut. Pengurangan produktivitas team untuk setiap jalur komunikasi adalah sama ( 200 LOC per tahun ) untuk menunjuk adanya proses belajar bagi staff baru.
Ditanya :
Hitung produktivitas team sebelum dan sesudah penambahan seorang software engineering !!!
Jawab :
Sebelum :
= ( 4000 x 5 ) - ( 10 x 200 )
= 20000 - 2000 = 18000 LOC / tahun
Sesudah
Jalur sama :
=
= { (20000+333,3) - 3000 }
= 20333,3 - 3000 = 17333,3 LOC / tahun
Jalur beda :
=
= 20333,3 - 2083,3 = 18250 LOC / tahun
Soal Latihan No. 2a :
Gambar dan buatlah perbandingan biaya, baik untuk Review maupun NonReview dari ilustrasi berikut ini:
1. Pada tahap rancangan awal :
A. Kesalahan yang timbul = 10
B. Efisiensi dengan review = 70%
2. Pada tahap rancangan terinci :
A. Sebanyak 50%, kesalahan dilewatkan, sisanya diperkuat dengan faktor penguat = 2
B. Kesalahan baru yang muncul = 25
C. Efisiensi dengan review = 50%
3. Pada tahap coding / unit test
A. sebanyak 40% kesalahan dilewatkan, dan sisanya diperkuat dengan faktor penguat 3.
B. Efisiensi dengan review 80%, dan non review 50%.
C. Kesalahan baru yang muncul = 20%.
4. Pada tahap selanjutnya dilakukan perbaikan dengan efisiensi masing-masing = 50%
5. Biaya yang harus ditanggung untuk setiap kesalahan adalah :
A. Selama rancangan = 2 satuan harga
B. Sebelum test = 5 satuan harga
C. Selama test = 20 satuan harga
D. Setelah dipasarkan = 60 satuan harga
Jawab :
TABEL PERBANDINGAN BIAYA ANTARA DENGAN REVIEW & NON REVIEW
KEGIATAN BIAYA per ERROR NON REVIEW REVIEW
Selama desain
Sebelum test ( coding )
Selama test ( validated & integrated test )
Setelah dipasarkan ( error laten )
Total biaya
Soal Latihan No. 2b :
Gambar dan buatlah perbandingan biaya, baik untuk Review maupun NonReview dari ilustrasi berikut ini:
1. Pada tahap rancangan awal :
A. Kesalahan yang timbul = 10
B. Efisiensi dengan review = 80%
2. Pada tahap rancangan terinci :
A. Sebanyak 60%, kesalahan dilewatkan, sisanya diperkuat dengan faktor penguat = 3
B. Kesalahan baru yang muncul = 20
C. Efisiensi dengan review = 40%
3. Pada tahap coding / unit test
A. sebanyak 30% kesalahan dilewatkan, dan sisanya diperkuat dengan faktor penguat 2.
B. Efisiensi dengan review 75%, dan non review 45%.
C. Kesalahan baru yang muncul = 25%.
4. Pada tahap selanjutnya dilakukan perbaikan dengan efisiensi masing-masing = 60%
5. Biaya yang harus ditanggung untuk setiap kesalahan adalah :
A. Selama rancangan = 3 satuan harga
B. Sebelum test = 10 satuan harga
C. Selama test = 30 satuan harga
D. Setelah dipasarkan = 70 satuan harga
Jawab :
TABEL PERBANDINGAN BIAYA ANTARA DENGAN REVIEW & NON REVIEW
KEGIATAN BIAYA per ERROR NON REVIEW REVIEW
Selama desain
Sebelum test ( coding )
Selama test ( validated & integrated test )
Setelah dipasarkan ( error laten )
Total biaya
SOFTWARE PROJECT PLANNING
Agar proyek pembuatan perangkat lunak dapat berhasil dengan baik, maka harus dipahami hal berikut :
1. Batasan dari tugas / pekerjaan yang akan dikerjakan.
2. Sumber daya yang diperlukan.
3. Tugas-tugas yang akan diselesaikan
4. Milestore yang muncul.
5. Usaha ( biaya ) yang akan diperluas
6. Jadwal kerja yang dipakai
Perencanaan Proyek Perangkat Lunak menyangkut tugas-tugas research dan estimation.
RESEARCH :
Mendefinisikan batasan dari elemen-elemen Perangkat lunak dalam sistem berbasis komputer.
ESTIMATION :
Menyangkut perkiraan, di mana kita melihat ke depan.
estimation risk
PROJECT COMPLEXITY :
Sangat besar pengaruhnya terhadap ketidaktentuan yang ada pada tahap perencanaan Perangkat lunak.
PROJECT SIZE :
Faktor penting yang dapat mempengaruhi kecermatan dan kemajuan / ketepatan dari estimasi yang dilakukan.
DEGREE OF PROJECT :
Juga berpengaruh terhadap resiko estimasi, yaitu terhadap struktur, definisi, dan variabel.
Sasaran / tujuan dari perencanaan proyek Perangkat lunak adalah :
Menyediakan suatu kerangka kerja, sehingga manajer dapat membuat estimasi yang reasonable sumber daya, biaya dan jadwal.
KEGIATAN DALAM PERENCANAAN PROYEK PERANGKAT LUNAK :
1. SOFTWARE SCOPE ( BATASAN PERANGKAT LUNAK )
Fungsi dan unjuk kerja harus dialokasikan sehingga proyek tidak bersifat mendua, dan dapat dimengerti oleh manajer dan staff tehnik dari pelaksana proyek.
Batasan ini mencakup
Jumlah pemakai / User
Ukuran dari kemampuan memori
Waktu maksimum dari response time
Biaya
Beberapa hal yang harus diperhatikan dalam mengerjakan Perangkat lunak :
Function
Fungsi dari Perangkat lunak yang akan dibuat harus dievaluasi agar diperoleh fungsi secara rinci.
Performance
Unjuk kerja ( kelebihan perangkat lunak, memori, dependensi terhadap mesin lain ) dari perangkat lunak.
Interface
Perangkat keras yang dipakai dalam proses pembuatan perangkat lunak
Perangkat lunak yang telah ada
Pemakai yang akan menggunakan perangkat lunak tersebut melalui terminal atau piranti I/O
Prosedur pemakaian perangkat lunak
Reliability
Kehandalan perangkat lunak yang dihasilkan.
DEFINING SCOPE
2. SUMBER DAYA
Memperkirakan sumber daya yang diperlukan dalam proses penyelesaian proyek.
Perencanaan sumber daya :
Perencanaan Sumber Daya Manusia,
Perencanaan Sumber Daya Perangkat Lunak
Perencanaan Sumber Daya Perangkat Keras
PERENCANAAN SUMBER DAYA MANUSIA
Sumber daya utama / vital
Dimulai dengan mengevaluasi batasan dan memilih keahlian yang diperlukan untuk pengembangan
Proyek besar membedakan keahlian menjadi 2
1. Posisi organisasi : manajer, staf engineering, dan lain-lain.
2. Spesialis : ahli telekomunikasi, ahli database, dan lain-lain.
Management & Staff participation
PERENCANAAN SUMBER DAYA PERANGKAT KERAS
1. Development System
Komputer dan periperal yang akan digunakan selama pengembangan sistem
2. Target Machine
Prosesor / perangkat keras yang dipakai untuk mengeksekusi perangkat lunak
3. Other hardware Elements
Elemen tambahan perangkat lunak yang diperlukan pada saat eksekusi perangkat lunak yang digunakan oleh user.
PERENCANAAN SUMBER DAYA PERANGKAT LUNAK :
Digunakan perangkat lunak bantu
3 Kategori perangkat lunak bantu dalam bidang rekayasa perangkat lunak
Categorizing Software Tools
FUTURE TOOLS :
Alat bantu perangkat lunak yang dapat dipergunakan, masih dalam taraf uji coba dan pengembangan.
pengukuran perangkat lunak
Tujuan :
1. Untuk menentukan kualitas perangkat lunak
2. Untuk mengukur produktivitas pengembangan
3. Untuk menilai kelebihan / kekurangan suatu metodelogi dan perkakas (tools) pengembangan perangkat lunak.
4. Sebagai patokan dasar dalam melakukan estimasi
5. Sebagai pertimbangan dalam menentukan penambahan perkakas baru dan training tambahan, guna lebih meningkatkan kualitas perangkat lunak.
Metode Pengukuran :
1. Secara langsung lebih mudah dilakukan
2. Secara tidak langsung sukar dilakukan
Pengukuran Secara Langsung :
1. Biaya pengembangan
2. Usaha (efforts) yang dilakukan untuk pengembangan
3. Jumlah baris dari program ( Line Of Code - LOC )
4. Kecepatan eksekusi program (speed)
5. Jumlah kesalahan (errors)
Pengukuran Secara Tidak Langsung :
1. Fungsi-fungsi yang terkandung ( function )
2. Mutu perangkat lunak ( quality )
3. Tingkat kerumitan ( complexity )
4. Efficiency
5. Kehandalan perangkat lunak ( reliability )
6. Kemudahan dalam merawat ( maintainability )
kategori ukuran perangkat lunak
PRODUCTIVITY
METRICS QUALITY
METRICS TECHNICAL
METRICS
SIZE - ORIENTED
METRICS
FUNCTION - ORIENTED METRICS
HUMAN - ORIENTED METRICS
PRODUCTIVITY METRICS :
Merupakan indikator terhadap produktivitas pengembangan perangkat lunak
QUALITY METRICS :
merupakan indikator yang menggambarkan seberapa jauh perangkat lunak yang dihasilkan menjawab kebutuhan pemakai.
TECHNICAL METRICS :
merupakan indikator yang menggambarkan teknologi yang terkandung pada perangkat lunak.
Misal : tingkat modularitas, tingkat kerumitan.
SIZE - ORIENTED METRICS :
merupakan ukuran perangkat lunak yang diperoleh secara langsung.
FUNCTION - ORIENTED METRICS :
merupakan ukuran perangkat lunak yang diperoleh secara tidak langsung.
HUMAN - ORIENTED METRICS :
merupakan ukuran perangkat lunak yang ditinjau dari kondisi perangkat lunak dan persepsinya terhadap metodelogi dan perkakas bantu yang dipergunakan.
size - oriented metrics
Langsung
Tergantung pada “bahasa”
KLOC Kilo Lines Of Codes
; di mana EFFORT adalah jumlah orang per bulan
PROJECT EFFORT COST ($) LOC PAGES ERRORS PEOPLE
aaa - 01 24 168 12,1 365 29 3
ccc - 01 62 440 27,2 1224 86 5
fff - 03 43 314 20,2 1050 64 6
function - oriented metrics
Langsung
Tergantung pada “bahasa”
FP ( Function Point ) Count_total [ 0,65 + 0,01 sum ( Fi ) ]
; di mana EFFORT adalah jumlah orang per bulan
INFORMATION COUNT WEIGHTING FACTOR FP
DOMAIN ITEM SIMPLE AVG COMPLEX
NUMBER OF USER INPUTS 3 4 6
NUMBER OF USER OUTPUT 4 5 7
NUMBER OF USER INQUIRIES 3 4 6
NUMBER OF FILES 7 10 15
NUMBER OF EXT. INTERFACE 5 7 10
Fi Jumlah range jawaban dari 14 pertanyaab berikut :
0 1 2 3 4 5
tidak
berpengaruh kurang
penting cukup
penting rata -
rata penting sangat
penting
Beberapa pertanyaan :
1. Apakah sistem yang dibuat memerlukan backup dan tingkat keamanannya dapat diandalkan ?
2. Apakah dalam penerapan perangkat lunak diperlukan fasilitas komunikasi data ?
3. Apakah dalam penerapan perangkat lunak menggunakan fasilitas proses pengolahan terbagi ?
4. Apakah kriteria unjuk kerja digunakan dalam pembuatan perangkat lunak ?
5. Apakah sistem yang dibuat akan dijalankan pada lingkungan operasi yang telah ada ?
6. Apakaah sistem yang dibuat memerlukan pemasukan data secara on-line ?
7. Apakah pemasukkan data secara on-line memerlukan lebih dari satu terminal ?
8. Apakah file master diperbaharui secara on-line ?
9. Apakah sistem yang dibuat mempunyai masukan, keluaran, dan pertanyaan yang kompleks ?
10. Apakah sistem yang dibaut pemrosesan datanya dalam memori kompleks ?
11. Apakah program yang telah dibuat akan cepat diperbaharui ?
12. Apakah konversi dan pemasangan sistem yang dibuat termasuk dalam perancangan ?
13. Apakah sistem yang dibuat dirancang untuk organisasi yang berbeda ?
14. Apakah hasil dari sistem yang dibuat mempunyai fasilitas pengubahan dan mudah digunakan ?
software project estimation
Estimasinya meliputi :
Biaya pengembangan ( cost )
Usaha untuk mengembangkan ( effort )
Estimasi perangkat lunak belum / tidak ada ilmu yang eksak untuk melakukan estimasi, tetapi melalui suatu tahapan yang tersusun.
Tidak adanya ilmu yang eksakta disebabkan oleh terlalu banyak faktor yang mempengaruhinya, misalnya : manusia, teknologi, lingkungan, politik, situasi dunia bisnis.
Metode Estimasi : “DIVIDE AND CONQUER” ( DECOMPOSITION )
Proyek dibagi menjadi beberapa “fungsi” utama yang sesuai dengan kaidah software engineering.
Estimasi secara empiris :
Sangat dipengaruhi oleh data-data dari proyek sebelumnya
Semakin berpengalaman dalam mengembangkan perangkat lunak, semakin tepat estimasi yang bisa dilakukan.
Estimasi berdasarkan LOC dan FP
Untuk proyek yang akan dikerjakan LOC dan FP merupakan variabel yang harus ditentukan.
LOC dan FP dari proyek terdahulu merupakan acuan dalam melakukan estimasi.
Rumus : ; di mana
a = optimistic
m = most likely
b = pessimistic
E = Estimate Cost Berdasarkan unit cost
E = Estimate Effort Berdasarkan productivitas.
FUNCTION OPTIMISTIC MOST LIKELY PESSIMISTIC EXPECTED $ / LINE LINE / MONTH COST MONTS
User Interface control 1800 2400 2650 2340 14 315 32760 7.4
2-D geometric analysis 4100 5200 7400 5380 20 220 107600 24.4
3-D geometric analysis 4600 6900 8600 6800 20 220 136000 30.9
Data structure management 2950 3400 3600 3350 18 240 60300 13.9
Computer graphics display 4050 4900 6200 4950 22 200 108900 24.7
Periperal control 2000 2100 2450 2140 28 140 59920 15.2
Design analysis 6600 8500 9800 8400 18 300 151200 28.0
33360
656680
144.5
Estimated LOC Estimated Project Cost ($) Estimate Effort Required
Tabel Estimasi
TASK REQUIREMENTS DESIGN CODE TEST TOTALS *
FUNCTION ANALYSIS
UICF 1.0 2.0 0.5 3.5 7
2DGA 2.0 10.0 4.5 9.5 26
3DGA 2.5 12.0 6.0 11.0 31.5
DSM 2.0 6.0 3.0 4.0 15
CGDF 1.5 11.0 4.0 10.5 27
PCF 1.5 6 3.5 5 16
DAM 4 14 5 7 30
TOTAL * 14.5 61 26.5 50.5 152.5
RATE ($) 5200 4800 4250 4500
COST ($) 75400 292800 112625 227250 708075
Effort Estimation Tabel
Keterangan Effort Estimation Tabel
* All estimates are in person-months except where otherwise noted.
Estimated effort for all tasks = 152.5
Estimated cost for all tasks = 708.075
TASKS TOTALS
FUNCTIONS Estimates in
person - months
TOTAL
RATE ($)
COST ($)
Develop a cost matrix
cocomo model - CONSTRUCTIVE COST MODEL - BY BARRY BOEHM
1. Model 1 : Static Single Valued Model (Basic)
Digunakan untuk menghitung EFFORT dan COST
Model ini merupakan fungsi dari “LOC”
2. Model 2 : Intermediate
Merupakan fungsi dari LOC dan “Cost Driver”
Cost Driver : penilaian subyektif terhadap hal-hal berikut :
Product
Hardware
Personel
Project Attributes
3. Model 3 : Advanced
Modul Intermediate dan assessment cost driver terhadap setiap tahapan dalam sofware engineeing. Contoh : Analysis, Design, dan lain-lain.
MODEL 1 : BASIC COCOMO
EFFORT : E = ab ( KLOC ) exp ( bb )
DEVELOPMENT TIME (MONTH) : D = Cb ( E ) exp ( db )
SOFTWARE PROJECT ab bb cb db
ORGANIC 2.4 1.05 2.5 0.38
SEMI - DETACHED 3.0 1.12 2.5 0.35
EMBEDDED 3.6 1.20 2.5 0.32
Catatan :
Organic Small, Simple project
Semi - Detached Intermediate in size & complexity. Ex. : Transaction processing
Embedded s/n must be developed. Ex. Flight Control.
MODEL 2 : COST DRIVER ATTRIBUTES
Terbagi atas 4 kategori :
1. Product :
Ukuran kehandalan proyek
Ukuran dari aplikasi database
Kekompleksan produk
2. Hardware :
Kendala performasi run time
Kendala memori
Lingkungan dari volatibility
Waktu perputaran yang diperlukan
3. Personel :
Kemampuan sistem analis
Kemampuan software engineering
Pengalaman aplikasi
Pengalaman virtual mesin
Pengalaman bahasa pemrograman
4. Project :
Pemakaian alat bantu perangkat lunak
Metode aplikasi software engineering
Jadwal pengembangan
Rumus :
E = ai ( KLOC ) exp (bi ) EAF ; EAF = Effort Ajustment Factor
SOFTWARE PROJECT ab bb
ORGANIC 3.2 1.05
SEMI - DETACHED 3.0 1.12
EMBEDDED 2.8 1.20
MODEL ESTIMASI PUTNAM
Model dinamik multi variabel dengan asumsi dari spesifik distribusi effort selama proyek pengembangan / pengerjaan perangkat lunak
Rumus : L = Ck K1/3 td4/3 ; K = L3 / Ck td4
Di mana :
Makin rendah K, semakin produktif
Ck = konstanta dari keadaan teknologi yang digunakan
Ck = 2000 untuk lingkungan pengembangan perangkat lunak yang buruk
Ck = 8000 untuk lingkungan pengembangan perangkat lunak yang baik
Ck = 11000 untuk lingkungan yang terbaik, menggunakan alat bantu otomatis
K = perluasan effort dalam seluruh daur kehidupan pengembang & pemeliharaan perangkat lunak
td = waktu pengembangan dalam tahun
PERKIRAAN BIAYA PENGEMBANGAN :
Faktor-faktor yang mempengaruhi biaya pengembangan perangkat lunak :
1. Kemampuan programmer dan tenaga kerja
2. Kekompleksan produk
3. Ukuran produk
4. Waktu yang tersedia
5. Kehandalan yang diperlukan
6. Teknologi yang dipergunakan
PERENCANAAN PENJADWALAN PENGEMBANGAN PERANGKAT LUNAK :
Tanggal penyelesaian proyek pengembangan perangkat lunak
Penjadwalan ditentukan berdasarkan tugas, perencanaan tenaga kerja dan tanggal penyelesaina
Pada pengembangan perangkat lunak yang besar, memerlukan banyak tenaga kerja, sehingga aktivitas pengembangan dapat dilakuka secaa paralel (bersama-sama).
A typical task network for a software engineering. Bold lines and boxes represent the “critical path”
Gant chart for software engineering project tasks. Shaded areas imply slack time and Bom indicate milestones.
TASK STATUS TABLE
TASK NAME DAYS EARLIEST START EARLIEST FINISH LASTEST START LASTEST FINISH FIXED COST RESOURCE COST
1 Initial customer meetings 5 1/15/85 1/22/85 1/15/85 1/22/85 0 1750
2 Product description 12 1/22/85 2/7/85 1/22/85 2/7/85 0 15000
3 Review with marketing group 1 2/7/85 2/8/85 2/11/85 2/12/85 0 350
4 Review with internal staff - development 3 2/7/85 2/12/85 2/7/85 2/12/85 0 2700
5 Initial customer review 3 2/12/85 2/15/85 2/12/85 2/15/85 0 1050
6 Detailed analysis of system requirements 14 2/15/85 3/8/85 2/15/85 3/8/85 0 13860
7 Allocation of hardware & software function 4 3/8/85 3/14/85 3/8/85 3/14/85 0 3960
8 Hardware / software function defined 0 3/14/85 3/14/85 3/14/85 3/14/85 0 0
9 Specify hardware & software function in spec. 8 3/14/85 3/26/85 3/14/85 3/26/85 0 7920
10 Review function with customer 1 3/26/85 3/27/85 3/27/85 3/28/85 0 350
11 Review hardware function 2 3/26/85 3/28/85 3/26/85 3/28/85 0 930
12 Review software function 2 3/26/85 3/28/85 3/26/85 3/28/85 0 1050
13 Quality assurance review 2 3/26/85 3/28/85 3/26/85 3/28/85 0 800
14 Modification based on reviews 10 3/28/85 4/11/85 3/28/85 4/11/85 0 9900
15 System spec. is approved 0 4/11/85 4/11/85 1/11/85 4/11/85 0 0
16 Specify control / computing algorithms 6 4/11/85 4/19/85 5/2/85 5/10/85 0 3000
17 Software project planning - cost / schedule estimates 3 4/11/85 4/16/85 5/9/85 5/14/85 0 3375
18 Requirements gathering for human interface & graphics display 2 4/11/85 4/15/85 4/11/85 4/15/85 0 0
19 Project plan review 1 4/16/85 4/17/85 5/14/85 5/15/85 0 600
20 Review algorithms with technical staff 1 4/19/85 4/22/85 5/10/85 5/13/85 0 500
21 Use new code & graphic tools to design interface prototype 7 4/15/85 4/24/85 4/15/85 4/24/85 0 6300
22 Build prototype 10 4/24/85 5/8/85 4/24/85 5/8/85 0 9750
23 Begin project tracking 4 4/17/85 4/23/85 5/15/85 5/21/85 0 2400
24 Control / computation specification algorithms 0 4/22/85 4/22/85 5/13/85 5/13/85 0 0
25 User “test” interface with feedback to developer 3 5/8/85 5/13/85 5/8/85 5/13/85 0 1575
26 Test planning for software 4 5/8/85 5/14/85 6/18/85 6/24/85 0 1600
27 Preliminary design control 3 4/22/85 4/25/85 5/13/85 5/16/85 0 1500
28 Modify prototype 6 5/13/85 5/21/85 5/13/85 5/21/85 0 2700
29 Preliminary design review 1 4/25/85 4/26/85 5/16/85 5/17/85 0 900
30 Test plan reviewed & approved 0 5/14/85 5/14/85 6/24/85 6/24/85 0 0
31 Modification based on review results 2 4/26/85 4/30/85 5/17/85 5/21/85 0 1000
32 Prototype accepted 0 5/21/85 5/21/85 5/21/85 5/21/85 0 0
RESOURCE ALLOCATION TABLE - for Tasks 34 - 62
34 Preliminary design complete
35 Project tracking sw mgr
36 Create test procedure sw engr #4
37 Detailed design of control sw engr #2 sw engr #5
38 Detailed design of computation sw engr #2 sw engr #6
39 Detailed design / refinement of input interface sw engr #1
40 Detailed design of graphics sw engr #3
41 Design walkthroughts and resultant interation sw engr #1 sw engr #2 sw engr #3 sw engr #4 sw engr #5 sw engr #6
42 Review and approve test
43 Detail design complete
44 Integration test planning, revised schedule sw engr #4 sw engr #1 sw engr #3
45 Code of control modules sw engr #2
46 Code of computational modules sw engr #5
47 Code of input interface (use element of interface) sw engr #1
48 Code of graphics output sw engr #3
49 Algorithm coding complete
50 Coding of interface complete
51 Coding of output system
52 Unit test of control modules sw engr #5
53 Unit test of computation modules sw engr #6
54 Unit test of interface sw engr #1
55 Unit test of graphics output sw engr #3
56 Integration of software sw engr #1 sw engr #2 sw engr #3
57 Update user and installation sw engr #5 sw engr #6
58 Integrated software
59 Validation testing and SQA sw engr #1 sqa marketing
60 Software audit prior to release sqa
61 Modifications base on audit sw engr #5 sw engr #6 sw engr #1
62 Beta site release of software
DISTRIBUSI EFFORT ( USAHA )
Contoh : Software Project Plan Outline ( Outline rencana proyek perangkat lunak )
1. SCOPE
Project Objectives
Major Functions
Other Characteristic
A Development Scenario
2. RESOURCE
Human Resources
Hardware Resources
Software Resources
Availability Window
3. COST
4. SCHEDULE
Task Network
Gantt Chart
Task - Resource Table
REQUIREMENTS ANALYSIS FUNDAMENTALS
Spesifikasi yang lengkap mengenai “Keperluan Perangkat Lunak” merupakan hal yang penting bagi tercapainya kesuksesan dalam usaha pengembangan perangkat lunak
Tugas-tugas analisa kebutuhan meliputi proses penemuan dan perbaikan.
Diperlukan komunikasi yang aktif antara “developer” dan “customer”
Custumer “merumuskan ulang” segala sesuatu konsep yang samar-samar mengenai fungsi dan performasi perangkat lunak ke dalam konsep ynga lebih detail / jelas dan rinci.
Developer berlaku sebagai “Pemeriksa”, “konsultan” dan “pemecah masalah”.
Analisa kebutuhan dan spesifikasi kelihatannya merupakan suatu tugas yang sederhana. Padahal tidak !!!!
analisa kebutuhan
Adalah tugas rekayasa perangkat lunak yang menjembatani kesenjangan antara “system level software allocation” and “software design”
Overlap of the analysis task
Memungkinkan “system engineer” mengspesifikasikan fungsi dan unjuk kerja (performansi) perangkat lunak, menentukan antar muka perangkat lunak dengan elemen sistem lain, dan menetapkan kendala-kendala dalam proses pengdesainan perangkat lunak.
Memungkinkan “Analyst” untuk menghaluskan alokasi perangkat lunak dan menggambarkan domain informasi yang akan disajikan dengan perangkat lunak.
Memberikan gambaran kepada desainer tentang informasi dan fungsi yang dapat diterjemahkan ke dalam : data, arsitektur dan desain prosedur
Memberikan kepada developer dan customer tantang perkiraan kualitas perangkat lunak yang akan dibuat / dikembangkan / dibangun.
tugas-tugas analisis
Analisa keperluan / kebutuhan perangkat lunak dapat dibagi dalam 4 bidang usaha
1. Pengenalan masalah
2. Evaluasi dan sintesa
3. Spesifikasi
4. Peninjauan ulang
Keterangan :
1. Pengenalan masalah :
Analisis mempelajari spesifikasi sistem dan rencana proyek perangkat lunak.
Penting untuk memahami perangkat lunak dalam konteks sistem dan meninjau ulang batasan perangkat lunak yang digunakan untuk menggenerate perencanaan perkiraan.
Komunikasi dalam proses analisa harus ditetapkan sehingga “masalah” dapat dikenali dengan pasti.
2. Evaluasi dan sintesa :
Analisis harus melakukan evaluasi “aliran” dan “struktur” dari informasi, menghaluskan semua fungsi perangkat lunak, menetapkan karakteristik antarmuka, dan menemukan kendala-kendala dalam desain.
Proses evaluasi dan sintesa berlangsung sampai analis dan customer merasa yakin bahwa perangkat lunak dapat dibuat spesifikasinya untuk tahap pengembangan.
3. Spesifikasi :
Melakukan proses penentuan spesifikasi perangkat lunak, sehingga memudahkan pengerjaan pada tahap pengembangan.
4. Peninjauan ulang
Proses meninjau kembali terhadap spesifikasi yang dihasilkan, sehingga diperoleh spesifikasi perangkat lunak yang lebih rinci dan jelas dengan maksud untuk menghasilkan perangkat lunak yang baik.
analis
Analis harus mempunyai kemampuan :
1. Menganalisa konsep yang belum jelas
2. Menyerap fakta / informasi
3. Mengerti lingkungan pemakai
4. Menerapkan elemen sistem dari perangkat lunak maupun perangkat keras pada lingkungan pemakai
5. Berkomunikasi baik dalam bentuk tulisan maupun lisan.
Role of the analyst
problem areas
Analisa keperluan merupakan aktivitas komunikasi yang dilakukan secara intensif
Permasalahan yang mungkin ditemukan pada proses analisa keperluan adalah :
Kesulitan untuk menggabungkan informasi yang didapat
Penanganan permasalahan yang kompleks
Perubahan-perubahan yang akan terjadi selama atau sesudah analisis.
Hal-hal yang menyebabkan permasalahan pada tahap analisa kebutuhan :
Kurang komunikasi antara pemakai dan analis
Tehnik yang dipakai kurang baik, juga alat bantu yang digunakan tidak tepat.
Kecendrungan mempersingkat waktu untuk melakukan analisa
Gagal mempertimbangkan alternatif pemecahan masalah.
prinsip-prinsip analisa
Prinsip-prinsip dasar metode analisa :
1. Domain informasi
2. Permasalahan harus dipartisi
3. Gambaran dari logikal dan fisikal sistem harus dikembangkan.
1. DOMAIN INFORMASI
Domain informasi berisi 3 pandangan yang berbeda dari data yang diproses oleh program komputer :
a. Aliran informasi :
Menggambarkan bagaimana perubahan data dari satu proses ke proses lain.
Information flow
b. Isi informasi :
Menggambarkan item-item data yang menyusun item yang lebih besar dan berisikan informasi yang lengkap
Contoh :
Record mahasiswa terdiri dari item : nomor mahasiswa , nama mahasiswa , alamat mahasiswa , dan lain-lain
c. Struktur informasi :
Menggambarkan organisasi data secara logika
data-data disusun dalam bentuk tabel, hirarki, atau tree
Yang diperhatikan pada struktur informasi adalah bagaimana data item yang ada saling berhubungan.
2. PERMASALAHAN HARUS DIPARTISI
Partisi dilakukan agar masalah yang besar bisa dimengerti dengan mudah
Keuntungan
Membantu meningkatkan pengertian permasalahan sampai detail / rinci
Memudahkan untuk penganalisaan
Partisi horisontal dan partisi vertikal.
3. PANDANGAN LOGIKAL DAN FISIKAL
Pandangan logikal :
Gambaran dari fungsi perangkat lunak yang diperlukan telah ditentukan dan informasi yang akan diproses tanpa memandang penerapannya sampai detail / rinci
Pandangan fisikal :
Bagaimana penerapan fungsi pemrosesan dan struktur informasi
object-oriented analysis
Pendekatan object-oriented untuk pendefinisian masalah dan partisi cukup baik diterapkan sebagai bagian dari analisa kebutuhan
Pendefinisian dari objek dan operasi adalah cara yang baik untuk memulai analisa terhadap fungsi dan domain informasi
Objek : bisa dipandang sebagai suatu item informasi
Operasi : sebagai suatu proses atau fungsi yang diterapkan pada satu / lebih objek
Pendekatan analisa object-oriented :
1. Sistem / software dialokasikan menggunakan strategi formal, yaitu dengan memakai bahasa untuk mendeskripsikan. Strategi formal dapat dibuat dalam bentuk paragraf tunggal dengan tatabahasa yang benar.
2. Objek diberi garis bawah (kata benda, atau anak kalimat yang bersifat sebagai kata benda) dan kemudian dimasukkan ke dalam tabel. Sinonim dicatat. Jika objek diperlukan untuk mengimplementasikan status solusi, maka object tersebut merupakan bagian dari “solution space”. Jika objek hanya diperlukan untuk mendeskripsikan status solusi, maka objek tersebut merupakan bagian dari “problem space”
3. Atribut dari objek diidentifikasi dengan menggarisbawahi semua kata sifat dan kemudian menghubungkannya dengan kata benda (objek) masing-masing.
4. Operasi ditetapkan dengan menggarisbawahi semua kata kerja, anak kalimat kata kerja dan predikat, serta menghubungkan setiap operasi dengan objek yang sesuai.
5. Attribut dari operasi diidentifikasikan dengan menggarisbawahi semua kata keterangan dan mengasosiasikan mereka dengan operasi ( kata kerja ) masing-masing.
Contoh masalah CLSS
Berdasarkan deskripsi perangkat lunak sebagai strategi informal, kita terapkan langkah pertama :
CLSS software will receive input information from a bar code reader at time intervals that conform to the conveyor line speed. Bar code data will be decoded into box identification format. The software will do a lookup in a 1000 entry database to determine proper bin location for the box currently at the reader (sorting station). A FIFO list will be use to keep track of shunt positions for each box as it moves past the sorting station.
CLSS software will also receive input from a pulse tachometer that will be use to synchronize the control signal to the shunting mechanism. Based on the number of pulses that will be generate between the sorting station and the shunt, the software will produce a control signal to the shunt to properly position the box .............
Bar code data , bin location , dan control signal solution space
Lainnya problem space
Setiap objek mewakili sebuah item informasi yang harus diproses oleh software
Penentuan proses :
CLSS software will receive input information from a bar code reader at time intervals that conform to the conveyor line speed. Bar code data will be decoded into box identification format. The software will do a lookup in a 1000 entry database to determine proper bin location for the box currently at the reader (sorting station). A FIFO list will be use to keep track of shunt positions for each box as it moves past the sorting station.
CLSS software will also receive input from a pulse tachometer that will be use to synchronize the control signal to the shunting mechanism. Based on the number of pulses that will be generate between the sorting station and the shunt, the software will produce a control signal to the shunt to properly position the box .............
Solution space : receive , look-up , produce
Problem space : moves , synchronize
OBJECT ATTRIBUTE CORRESPONDING OPERATION
Data Bin Code Decode
Location Bin Determine
Signal Control Synchronize ; produce
Input Pulse Tach. Receive
List FIFO Keep Track
Positions Shunt Keep Track
Intervals Time Conform
Format Box ID Decode
Database 1000 - entry Do a look up
Pulses Tach Generate
Objek dan Operasi
Software prototyping
Tujuan pembuatan “Software Prototyping” :
Membantu mengevaluasi apakah desain telah memenuhi spesifikasi fungsional maupun non fungsional
Prototype diuji dan disempurnakan sebelum dilakukan produksi software yang sebenarnya.
Dalam perekayasaan perangkat lunak, pembuatan prototype merupakan proses produksi
Pembuatan prototype bisa membantu :
1. Pendefinisian dan spesifikasi desain yang akan dibuat
2. Pemilihan metode dan algoritma yang akan digunakan dalam desain
3. Pendefinisian spesifikasi interface dengan pemakai
Langkah-langkah yang dapat diterapkan untuk menghasilkan prototype perangakat lunak :
1. Mengevaluasi permintaan / pemesanan perangkat lunak dan menentukan apakah perangkat lunak yang dikembangkan mempunyai peluang yang baik untuk dibuat prototypenya.
2. Setelah “calon proyek” dapat diterima, analis mengembangkan garis besar keperluan / kebutuhan
3. Setelah representasi kebutuhan ditinjau ulang, maka dibuat desain spesifikasi untuk pembuatan prototype
4. Lakukan testing dan penghalusan / perbaikan terhadap prototype perangkat lunak.
5. Prototype perangkat lunak yang sudah ditest, diperlihatkan kepada customer untuk dilakukan uji coba
6. Langkah 4 dan 5 diulangi sampai customer puas dan kriteria validasi terpenuhi.
Metoda dan alat bantu pembuatan prototype :
1. Fourth Generation Techniques
2. Reusable software component
Menggunakan komponen perangkat lunak yang sudah ada :
Struktur data (database)
Komponen arsitektur program (program)
Komponen prosedural (modul)
3. Formal specification and prototyping environments
Metoda ini banyak menggunakan bahasa formal untuk mengembangkan proses interaktif dengan lingkungan luar;
Memungkinkan analis membuat spesifikasi untuk mengembangkan proses secara interaktif
Menggunakan alat bantu otomatis yang dapat menterjemahkan kode executable
Memungkinkan pelanggan menggunakan prototype “executable code” untuk proses penghalusan dalam hal kebutuhan yang diinginkan.
An automated software engineering paradigm
specification
Prinsip-prinsip dalam penyusunan spesifikasi perangkat lunak :
1. Memisahkan fungsi dari implementasi
2. Spesifikasi sistem berorientasi kepada keperluan sistem
3. Spesifikasi harus memuat sistem dari perangkat lunak yang merupakan komponen
4. Spesifikasi harus termasuk di mana sistem akan dioperasikan
5. Spesifikasi sistem harus berupa model kognitif
6. Spesifikasi dapat dilaksanakan
7. Spesifikasi sistem harus bertoleransi terhadap ketidaklengkapan dan kemungkinan perluasan sistem
8. Spesifikasi harus dibatasi dan keterkaitannya longgar
representation
Digunakan untuk menjelaskan metoda yang dipakai untuk menganalisa kekuatan.
Petunjuk pembuatan representasi :
Format representasi dan isinya harus relevan dengan masalah yang akan dijelaskan
Informasi diisi dengan spesifikasi yang dapat bersarang
Menggunakan simbol / bentuk yang terbatas jumlahnya dan digunakan secara konsisten
Representari dapat direvisi
software requirements specification
1. Introduction
a. System reference
b. Business objectives
c. S / W project constraints
2. Information description
a. Information flow representation
b. Information content representation
c. Information structure representation
d. System interface description
3. Functional desciption
a. Functional partitioning
b. Functional description
< 1 > Processing narative
< 2 > Restrictions / limitations
< 3 > Performance requirements
< 4 > Design constraints
< 5 > Supporting diagrams
4. Validation criteria
a. Performance bounds
b. Classes of tests
c. Expected S / W response
d. Special considerations
5. Bibliography
6. Appendix










