PENGEMBANGAN PERANGKAT LUNAK
Pengembangan perangkat lunak (Software development) merupakan salah
satu dari tahap rancangan system rinci/detail dari Siklus Hidup Pengembangan
Sistem (Software Development Life Cycle
atau SDLC).
Tim proyek system mungkin mulai mencari paket
perangkat lunak komersial yang sesuai atau mendukung spesifikasi rancangan
system dan berjalan pada rancangan arsitektur komputernya. Paket perangkat
lunak komersial secara luas tersedia
untuk aplikasi fungsi spesifik dan aplikasi bisnis yang telah ditetapkan
secara baku.
Tetapi untuk rancangan sistem yang terkait dengan
kebutuhan khusus atau unik (memenuhi keperluan pemakai dan spesifikasi
rancangan sistem) maka paket perangkat lunak komersial mungkin tidak sesuai
atau mendukung kebutuhan pemakai secara langsung. Perangkat lunak yang
diharapkan untuk mendukung rancangan sistem tersebut harus dibuat sendiri dari
awal (scratch)
Sumber Perangkat Lunak
Aplikasi
- Perangkat
Lunak Komersial dari Vendor
- Perangkat Lunak Pesanan (customized software) dikembangkan secara in-house atau oleh
kontraktor pemrograman independent
A.
Perangkat Lunak Komersial dari Vendor
Paket (off-the-self) yang tersedia bisa
diterapkan dalam berbagai kebutuhan bisnis. Beberapa paket bersifat generik dan
multifungsional yang memungkinkan para pemakai memprogram sofware tersebut
untuk kebutuhannya sendiri. Paket-paket tersebut mengotomisasi fungsi-fungsi
bisnis dasar yang umumnya tidak terlalu bervariasi dari satu organisasi dengan
organisasi lain. Contoh jenis paket adalah spreadsheet dan DBMS.
Keuntungan/kelebihan dari
Perangkat Lunak Komersial :
1. Implementasi yang cepat
Software
tersebut bersifat siap, teruji, dan terdokumentasi. Paket yang dibeli biasanya
pengimplementasiannya jauh lebih cepat dari pada mengembangkan program yang
sama secara in-house atau menyuruh kontraktor independen untuk mengembangkannya
sehingga secara potensial membantu memecahkan backlog (penimbunan pekerjaan yang belum selesai).
2. Penghematan Biaya
Satu
paket perangkat lunak komersial bisa dijual kepada banyak organisasi sehingga
biaya pengembangan ditanggung oleh banyak pemakai, dan biaya total suatu paket
akan lebih murah dari pada program pesanan yang sama.
3. Estimasi biaya dan waktu
Biaya atau harga paket komersial telah diketahui,
dan tanggal pengimplementasian-nya mudah diestimasi. Sebaliknya program pesanan
biasanya cenderung melampaui estimasi waktu dan biaya.
4. Reliabilitas
Sebelum
diterbitkan di pasaran umum, paket perangkat lunak komersial pasti telah diuji
secara teliti. Melalui penggunaan yang ekstensif oleh sejumlah organisasi,
segala kesalahan yang dijumpai telah dideteksi dan dikoreksi sehingga peluang
kesalahannya lebih sedikit.
Kerugian/kelemahan :
1. Kesesuaian Rancangan sistem yang
tidak baik
Paket
software komersial dibuat untuk berbagai organisasi, dan tidak untuk organisasi
tertentu maka paket ini mungkin mempunyai beberapa fungsi yang tidak diperlukan
atau mungkin tidak mempunyai fungsi yang diperlukan sehingga paket tersebut
harus dimodifikasi. Jika vendor tidak membuat kode sumber (source code) yang bisa digunakan untuk penyesuaian dan tidak
menyediakan layanan penyesuaian maka rancangan sistem mungkin harus diubah agar
sesuai dengan paket tersebut. Jika hal
ini terjadi sebaiknya mengembangkan program secara in-house agar programnya
bisa memenuhi spesifikasi rancangan sistem yang tepat.
2. Ketergantungan Vendor
Jika
organisasi memerlukan perubahan paketnya maka organisasi akan tergantung pada
vendor dalam perolehan dukungannya, dan jika vendor telah tiada maka organisasi
akan kesulitan mencari dukungannya.
3. Biaya tidak langsung dari
kerusakan SDLC
Seringkali
apa yang ingin dicapai, manajemen tidak melaksanakan SDLC menyeluruh atau
mungkin melewati tahap SDLC, dan secara langsung menuju ke paket perangkat lunak
komersial Strategi ini seringkali mengakibatkan paket perangkat lunak komersial
tidak berjalan sesuai yang diharapkan dan masalah sistem serta organisasional
yang terjadi sebelum implementasi paket tersebut tetap muncul sehingga
menimbulkan kesulitan atau harus dibayar kemudian yaitu adanya peningkatan
biaya implementasi, operasi, dan pemeliharaan.
Menyiapkan permohonan untuk proposal berorientasi kinerja
Terkait
dengan pemrolehan (akuisisi) perangkat lunak komersial maka perlu membuat atau menyiapkan Permohonan Proposal (Request For Proposal atau RFP)
berorientasi kinerja untuk menyeleksi vendor dan paket perangkat lunak
komersial yang tepat. Faktor-faktor evaluasi mencakup pemenuhan spesifikasi rancangan detail untuk output, input,
proses, dan database serta cocok dengan batasan waktu dan biayanya, juga penggunaan benchmark yang mensimulasi kebutuhan sistem baru (bentuk
prototyping) harus diterapkan pada setiap paket dari vendor.
Penilaian paket
Setiap
paket dari vendor harus dinilai. Penilaian tersebut meliputi :
a. Sebagian penilaian dari benchmark
(tanda untuk menentukan tingginya suatu nama), dan penilaian lain dari sejumlah
publikasi yang didasarkan pada survei
dari sejumlah besar pengguna paket tersebut.
b. Kinerja
pengoperasian (operating performance)
Penilaian dari benchmark yang digunakan
untuk mengukur hal-hal seperti transaksi perdetik (transaction per second) dan waktu respon (response time).
c. Dokumentasi
Penilaian ini mencerminkan
kuantitas dan kualitas prosedur tertulis, prosedur online, pedoman quick start,
online tutorial, dan fasilitas help.
d. Mudah
dipelajari
Penilain ini tergantung pada interface
pemakai dan rancangan intuitif dari paket tersebut. Paket harus bisa dipelajari
oleh rata-rata pemakai.
e. Mudah digunakan
Menu yang mudah diikuti dan perintah yang
jelas membantu kemudahan penggunaan.
f. Pengendalian dan penanganan kesalahan.
Untuk menjaga kesalahan input, paket
software harus menyediakan pencegahan kesalahan, pendeteksian kesalahan dan
perbaikan kesalahan, serta menuliskan kesalahan ke file kesalahan.
g. Dukungan (support).
Menyediakan dukungan kebijakan dan teknis.
Dukungan kebijakan mencakup jalur toll-free, garansi, dan pelatihan. Dukungan
teknis menyediakan teknisi dan yang berpengalaman.
Menyeleksi paket
Menentukan
paket software dari vendor yang menawarkan manfaat terbesar dengan biaya/harga
termurah. Metode untuk menentukan angka penilaian total terlihat padaTabel 1.
Bobot relatif ditentukan ke setiap faktor kinerja umum yang didasarkan pada
kepentingan relatifnya.Base atau nilai dasarnya adalah 100. Penilaian setiap
faktor kinerja 1 s/d 10 (1=jelek dan 10 = sangat bagus).Skor adalah bobot
dikalikan penilaian. Setiap skor yang dihasilkan dijumlahkan yang merupakan
angka penilaian total untuk setiap vendor.
Faktor kinerja umum
|
Bobot
|
Vendor A
|
Vendor B
|
Nilai
|
Skor
|
Nilai
|
Skor
|
Penilaian
vendor
|
10
|
6
|
60
|
8
|
80
|
Kinerja
pengoperasian
|
20
|
7
|
140
|
8
|
160
|
Dokumentasi
|
10
|
8
|
80
|
9
|
90
|
Kemudahan
belajar
|
20
|
7
|
140
|
6
|
120
|
Kemudahan
pemakaian
|
10
|
5
|
50
|
6
|
60
|
Kendali
dan penanganan kesalahan
|
20
|
4
|
80
|
6
|
120
|
Dukungan
|
10
|
7
|
70
|
8
|
80
|
Total
|
100
|
|
620
|
|
710
|
Tabel 1. Penilaian Kinerja Umum
Misalkan biaya atau harga paket vendor A adalah $22.700 dan paket vendor B
adalah $27.690. Paket mana yang harus dipilih ? Jawabannya ditentukan dengan
membagi angka biaya total dengan skor total untuk memperoleh biaya perangka
penilaian. Vendor A mempunyai penilaian= $22.700/620= $37, sedangkan Vendor B=
$27.690/710= $39, tampak terlihat pada gambar 1.2
Biaya
Total
|
Angka Penilaian
Total
|
Biaya per angka
penilaian
|
Vendor A
|
$22.700
|
620
|
$37
|
Vendor B
|
$27.690
|
710
|
$39
|
Tabel 2. Biaya per angka penilaian
Vendor A mempunyai penilaian lebih rendah, namun biaya per angka
penilaiannya sebesar $37 menjadi pilihan biaya atau manfaat yang lebih baik dari
pada vendor B.
B. Perangkat Lunak Pesanan (customized software)
Jika system yang sedang dikembangkan tidak bisa didukung oleh paket
software maka harus memesan dari perusahaan jasa/kontraktor independen atau
membangun sendiri perangkat lunak (in-house) agar sesuai dengan rancangan
sistemnya.
Siklus Hidup Pengembangan Perangkat Lunak (Software Development Life
Cycle)
Membangun perangkat lunak mengikuti tiga
tahap SWDLC, yaitu :
- Rancangan (Design)
- Kode (Code)
- Uji (Test)
1. Rancangan (Design)
Bagian dari rancangan sistem terinci yang akan dikonversi ke
program aplikasi yang dapat digunakan sebagai pedoman oleh programmer dalam
menulis program. Alat (tools)
rancangan program yang pokok adalah :
¨ Bagan Terstruktur (Structure Chart)
¨ Diagram Warnier/Orr (W/O)
¨ Bahasa Inggris Terstruktur (Structure English) ¨ Diagram Jackson
¨ Tabel Keputusan (Decision Tabel)
¨ Pohon Keputusan (Decision Tree)
¨ Persamaan/mirip bahasa pemrograman (Pseudocode)
¨ Kamus Data (Data Dictionary)
2. Kode (Code)
Menulis statemen dalam bahasa pemrograman
yang diasumsikan dibuat dan dijalankan oleh programmer dan tidak secara
otomatis seperti yang dibangkitkan oleh paket CASE (Computer Aided Software
Engineering). Beberapa paket CASE akan membangkitkan kode dari beberapa rancangan
terinci sehingga menghapus adanya kebutuhan pengkode manusia (human coders).
3. Uji (Test)
Pengujian terhadap semua modul kode untuk
mendeteksi dan menghapus kesalahan.
Mengorganisasi Proyek
Pengembangan Perangkat Lumak
Perancang
dan analis sistem terlibat dalam tim pengembangan perangkat lunak dan harus
mengetahui bagaimana program ini dikode dan bagaimana hasil akhirnya. Untuk itu
diperlukan keterampilan pengorganisasian dalam tim proyek. Pengorganisasian
proyek pengembangan perangkat lunak memerlukan komunikasi, integrasi dan
koordinasi yang baik. Pengorganisasian tim pemrograman menggunakan pendekatan
organisasional.
Pendekatan Organisasional
Tiga cara untuk mengorganisasi tim pemrograman,
yaitu :
1.
Tim Pengembangan Program ( Program development team)
2.
Tim programmer kepala (chief programmer team)
3.
Tim pemrograman bersama (Egoless programming team)
1. Tim
Pengembangan Program ( Program
development team)
Tim pengembangan program dikelola
oleh manajer tim atau seseorang yang terlibat dalam SDLC dari awal, dan
didukung oleh perancang, pengkode, dan penguji (Gb.1.4 hal.14 Diktat kuliah) Jika
perusahaan menggunakan aturan 40-20-40
(lihat gb.1.5 hal.15 Buku Diktat Pengantar
Implementasi) maka orang-orang yang memiliki keterampilan lebih tinggi
harus ditugaskan untuk perancangan dan pengujian. Bila rancangan lengkap, jelas dan akurat maka
tugas pengkodean akan menjadi proses yang sederhana yang dapat dijalankan oleh
setiap orang yang telah kenal dengan sintaks bahasa pemrograman. Konsep ini
mendukung terciptanya teknologi CASE.
2. Tim
programmer kepala (chief programmer team)
Tim ini dibentuk dari programmer kepala atau
senior yang banyak pengalaman dan pengetahuan pemrograman. Programmer kepala dapat berkomunikasi secara efektif
dengan analis dan perancang sistem, pemakai, dan berbagai teknisi.
Programmer kepala didukung oleh asisten utama yang
bertugas sebagai komunikator dengan orang lain pada tim atau penyampai
informasi dari gagasan programmer kepala. Kedua orang tersebut didukung oleh Programmer
pendukung/ yunior bertugas membantu programmer kepala dan asisten utama untuk
proyek besar yang tidak dapat ditangani sendiri. Para programmer pendukung
biasanya mengkode modul-modul tingkat rendah. Tim ini juga didukung oleh
pustakawan, administrator, editor, dan klerk program.
3. Tim
pemrograman bersama (Egoless programming
team)
Tim ini terbentuk dari seluruh rekan yang bersama-sama bertanggung jawab
atas pengembangan perangkat lunak
tanpa supervisi langsung/pimpinan.
Perbedaan pendekatan-pendekatan tersebut :
ª Tim pengembangan program mengembangkan
aturan 40-20-40 yaitu menekankan pada perancangan dan pengujian.
ª Tim programmer kepala dan tim pemrograman
bersama menekankan pada fungsi pengkodean.
Jumlah interface dan lintasan komunikasi dari
pendekatan di atas:
§ Tim pengembangan program tersusun atas
2 perancang, 1 pengkode, 2 penguji. Interface dan lintasan komunikasi berada
antara perancang dan pengkode, pengkode dan penguji, perancang dan penguji.
Interface dan lintasan komunikasi ke manajer tim hanya memberikan rekapitulasi
dan informasi kinerja karena manajer tidak terlibat langsung dalam pekerjaan
yang sebenarnya. Jadi total interface dan lintasan komunikasi ada lima, dan
satu interface manajemen.
§ Tim programmer kepala terdiri dari lima programmer
pendukung mempunyai lima interface dan lintasan komunikasi, dan lebih mungkin
memenuhi deadline yang ketat.
§ Tim pemrograman bersama terdiri dari
lima programmer. Jumlah interface dan lintasan komunikasi = n(n-1)/2=
5(5-1)/2=10
Biasanya untuk
komunikasi membutuhkan waktu dan mengurangi produktivitas. Segala jenis
pekerjaan pengembangan biasanya waktu restart (mulai lagi) setelah setiap
interupsi besarnya 30 menit sehingga peluang pemrograman yang bisa dilakukan
waktunya sedikit.
Oleh karena itu
apabila terdapat lebih dari tiga programmer yang terlibat maka sebaiknya
ditetapkan seorang supervisor atau pimpinan.
Konsep pabrik perangkat lunak
Pabrik-pabrik perangkat lunak yang
menerapkan prinsip pengendalian kualitas dan manajemen proyek. Berbagai macam
tujuan pabrik pengembangan perangkat lunak, yaitu :
¨Penerapan cara termekanisasi (terekayasa)
untuk pengembanan sistem dan perangkat lunak.
¨Penggunaan perangkat pemodelan dan
teknologi CASE
¨Penginstalasian teknik manajemen proyek
¨Penekanan pada kemungkinan kemampuan pemeliharaan (Maintainability),
penggunaan (Usability), penggunaan ulang (reusability), kehandalan
(reliability), perluasan faktor-faktor rancangan (extandability)Ã MURRE
¨Pencapaian produktivitas pengembangan
perangkat lunak dan sistem yang optimal.
Mengukur Produktivitas Dalam
Pengembangan Perangkat Lunak
Produktivitas dapat diukur
dengan rumus :
Output yang dihasilkan
Input yang dikonsumsi
Produktivitas pengembangan perangkat lunak dapat
ditingkatkan dengan menaikkan output, menurunkan input, atau keduanya.
Input yang dikonsumsi
relatif mudah diukur misalnya tenaga kerja, workstation, pasokan, sebaliknya
output relatif tidak mudah diukur. Untuk mengukur
output pengembangan perangkat lunak dapat menggunakan teknik metrik.
Manfaat menggunakan metrik yaitu :
a. Bisa mengelola proses pengembangan perangkat
lunak
b. Bisa mengukur dampak perubahan misalnya
perubahan ke teknologi CASE atau dari satu generasi bahasa komputer ke generasi
lain
c. Bisa terjadi persepsi bahwa pengembangan
perangkat lunak lebih bersifat ilmiah (produk yang dimekanisasi)
Dua metrik yang paling berperan adalah :
- Jalur Kode yang bisa dieksekusi (Lines Of Executable Code
atau LOEC)
- Titik
Fungsi (Function Point)
1. Mencacah Jalur Kode yang bisa
Dieksekusi (LOEC)
Metrik LOEC mengukur
cakupan pada pengkodean. Beberapa Profesional Sistem menggunakan Jalur Kode
Sumber sebagai metriknya. Jalur Kode Sumber (Source Line Of Code atau SLOC)
adalah segala jalur program yang bukan penjelasan maupun jalur kosong tanpa
mempedulikan jumlah statemen (statemen yang bisa dan tidak bisa dieksekusi). SLOC bisa untuk mengukur LOEC.
Keuntungan menggunakan metric LOEC sebagai ukuran produktivitas
output perangkat lunak adalah :
- Mudah
ditetapkan dan dibahas secara jelas.
End user, manajer, dan profesional sistem biasanya
memahami apa yang dimaksud dengan jalur kode yang bisa dieksekusi.
- Diakui
secara luas.
Metrik ini seringkali digunakan oleh
vendor sebagai alat pengembangan perangkat lunak.
- Mudah
diukur.
LOEC dapat dihitung untuk
menentukan ukuran program.
- Mudah digunakan untuk estimasi.
Ukuran perkiraan suatu program ditentukan
berdasarkan dokumentasi rancangan sistem detail. Angka ini digunakan untuk
mengestimasi waktu dan biaya proyek pengembangan perangkat lunak.
Contoh : program yang diusulkan berisi 100K LOEC. Jika 2K LOEC dapat di-hasilkan oleh satu orang per bulan, maka untuk menyelesaikan
proyek tersebut diperlukan diperlukan 50
orang perbulan. Jika input yang diperlukan untuk mendukung satu orang per
bulan sebesar $9000 maka proyek
tersebut membutuhkan biaya $450.000.
Apa kelemahan dari satu orang per bulan (person-month) dan pencacahan LOEC?
Frederick P. Brooks, Jr. Dalam bukunya
berjudul The Mythical Man-Month bahwa
the person-month sebagai unit pengukuran suatu pekerjaan adalah mitos. Ia menyatakan bahwa orang dan bulan bisa
saling ditukar atau diganti. Misal memerlukan 50 orang untuk waktu 1 bulan atau
memerlukan 10 orang dengan per orang memerlukan waktu 5 bulan Apabila tugas
dibagikan kepada banyak pekerja tanpa komunikasi hal ini mustahil, tetapi apabila
menggandakan tugas ukuran tim maka tidak akan menggandakan produktivitas.
Penggunaan
person-month sebagai benchmark harus digunakan secara wajar dan konsisten.
Kelemahan
lain metrik LOEC adalah mengukur dengan dasar jumlah LOEC yang lebih besar
adalah yang produktif bukan jalur kode yang diperlukan. Misal untuk menulis
suatu program Programmer assembly membutuhkan waktu 4 minggu untuk 1500 LOEC,
programmer COBOL butuh waktu 2 minggu untuk 500 LOEC, dan programmer C butuh
waktu 1 minggu untuk 300 LOEC. Dengan metric
LOEC programmer assembly yang paling produktif. Secara riil programmer yang paling produktif adalah programmer C. Yang
lebih efektif dan efisien dijalankan adalah bahasa pemrograman C dan COBOL.
2. Metrik
Titik Fungsi (Function Point)
Metrik titik fungsi dirancang untuk
mengatasi beberapa kelemahan metrik LOEC.
Ada lima fungsi yang dianalisis untuk
diukur oleh profesional sistem, yaitu :
1. Jumlah input, seperti form dan layar
2. Jumlah output, seperti laporan dan layar
3.
Jumlah query yang diminta oleh end user
4.
Jumlah file logic yang diakses dan digunakan
5.
Jumlah interface ke aplikasi lain.
Metrik titik
fungsi mengukur apa yang akan diberikan oleh tim pengembangan perangkat lunak
kepada end user. Metrik ini mencakup perancangan, pengkodean, dan pengujian,
dan metrik ini juga mengukur efisiensi dan efektifitas.
Kelebihan/keuntungan metrik titik fungsi :
ª Mengukur produktivitas perangkat lunak
menggunakan cara yang seragam tanpa memandang bahasa pemrograman yang
digunakan.
ª Mengukur efisiensi dan efektivitas.
Efisiensi berkaitan dengan sumber-sumber yang dikonsumsi dalam pengembangan
suatu aplikasi tertentu secara tepat waktu. Efektivitas berhubungan dengan
kualitas program dan kemampuannya dalam memenuhi kebutuhan pemakai.
Di bawah ini
adalah contoh menghitung titik fungsi.
Titik
Fungsi
|
Tingkat
Kompleksitas
|
Total
|
Rendah
|
Sedang
|
Tinggi
|
Input
|
12
x 2 = 24
|
3 x 5 = 15
|
12 x 8 = 96
|
135
|
Output
|
10
x 3 = 30
|
15
x 5 = 75
|
14
x 9 = 126
|
231
|
Inquery
|
10
x 3 = 30
|
16
x 6 = 96
|
17
x 8
= 126
|
262
|
File
|
9
x 4 = 36
|
20
x 7 = 140
|
10 x 10 = 100
|
276
|
Interface
|
12
x 4 = 48
|
20
x 6 = 120
|
20 x 10 = 200
|
368
|
Total
titik fungsi
|
1272
|
Tabel.3 Analisis Titik Fungsi Proyek
Pengembangan Software
Derajajat kompleksitas 1 s/d 10 (1= derajat rendah dan 10 derajat paling
kompleks). Sebagai contoh 12 input mempunyai kompleksitas cukup rendah 2, dan 3
input kompleksitas rata-rata 5, serta 12 input mempunyai kompleksitas cukup
tinggi 8. Semua titik fungsi dicacah atau dikalkulasi dengan cara yang sama.
Jumlah total titik fungsi adalah 1272.
Tingkat produktivitas
pengembangan rata-rata untuk perangkat lunak aplikasi, umumnya berada antara 5
dan 10 artinya satu orang bisa menyerahkan atau menghasilkan sekitar 5 sampai
10 titik fungsi per bulan.
Jika proyek pengembangan perangkat lunak memerlukan 1272 titik fungsi dan
tingkat penyerahan rata-rata dari tim yang akan mengembangkannya adalah 8 titik
fungsi per person-month, maka proyek tersebut memerlukan sekitar 159
person-month, (1272/8=159). Jika satu person-month mengkonsumsi $10.000, maka
proyek tersebut akan membutuhkan biaya ± $1.590.000
Jika organisasi menginstal teknologi CASE maka bisa kemungkinan
menghasilkan sekitar 15 atau 20 titik
fungsi per person-month.
Jika organisasi yang menggunakan pendekatan rancangan dan diadopsi dengan
teknologi dan dikombinasikan dengan menerapkan penggunaan ulang kode sekitar
50% , maka tingkat produktivitas pengembangan bisa mencapai 70 titik fungsi per
person-month.
Misalkan, diasumsikan biaya per person-month meningkat menjadi $12.000
dengan tingkat penyerahan 62 titik fungsi per person-month, maka jumlah
person-month yang akan menghasilkan 1272 titik fungsi dikurangi menjadi 20,5
person-month (1272/62=20,5), dan biaya sebesar $246.000 Ã ($12.000 x 20,5= $246.000).
Penghematan biaya sebesar $1.344.000Ã ($1.590.000 - $246.000 = $1.344.000).
Pengaruh
Manajemen terhadap Produktivitas
1. Metrik Produktivit as yang tidak baik atau tidak tersedia
Manajemen yang tidak baik dapat menurunkan
produktivitas perangkat lunak sehingga manajer tidak akan bisa mengestimasi
waktu dan biaya pengembangan perangkat lunak atau tidak bisa mengukur
produktivitas/tingkat penyerahan.
2. Perencanaan dan pengontrolan yang
tidak baik
Manajer proyek membiarkan
proyek berkembang semaunya tanpa mempunyai target penyelesaian dan
penyerahannya.Untuk membantu mengurangi perencanaan dan pengontrolan yang tidak
baik bisa menggunakan pengaplikasian teknik manajemen proyek seperti PERT.
3. Pencampuran keterampilan yang
tidak baik.
Tim pengembangan cenderung
kurang memberi tekanan pada perancangan dan pengujian, dan lebih menekankan
pada pengkodean. Idealnya campuran keterampilan adalah 40% perancangan, 20%
pengkodean, dan 40% pengujian.
4. Pengkodean Prematur.
Manajer proyek biasanya
ingin menyelesaiakan proyek pengembangan secara cepat dan segera melakukan
pengkodean dengan mengabaikan tahap rancangan sehingga waktu dan biaya yang
dikeluarkan tidak sebanding dengan manfaat atau keuntungan yang diperoleh.
5. Imbalan yang tidak adil.
Upah atau gaji yang tidak
adil kepada pelaksana tim yang berpotensi (berketrampilan dan motivasi tinggi)
mengakibatkan pelaksana tersebut frustasi dan keluar. Cara yang bisa dilakukan
untuk memberikan imbalan dengan pemberian bonus kinerja khusus, bonus
perjalanan, dan pemberian kesempatan mengikuti seminar khusus.
Memproduksi Perangkat Lunak Berkualitas
Tinggi
Sasaran akhir pengembangan perangkat lunak adalah untuk
menghasilkan perangkat lunak berkualitas tinggi pada tingkat produktivitas
tinggi yang memberi nilai tambah kepada perusahaan.
Apa yang dimaksud dengan kualitas perangkat lunak ?
Ada tiga dimensi untuk mengukur kualitas :
1. Faktor
kinerja, dari sudut pandang end user seperti :
a. Kinerja pengoperasian keseluruhan
b. Kemudahan pembelajaran
c. Pengontrolan dan penanganan kesalahan
d. Dukungan dari pembuat dan pemelihara
perangkat lunak.
2. Faktor
rancangan MURRE mencakup :
a. Kemungkinan pemeliharaan (Maintainability)
b. Kemungkinan penggunaan (Usability)
c. Kemungkinan penggunaan ulang (Reusability)
d. Kehandalan (Reliability)
e. Kemungkinan perluasan (Extendability)
3. Faktor
Strategik PDM
a. Meningkatkan produktivitas (Productivity)
b. Menambah keragaman produk dan pelayanan
(Development)
c. Meningkatkan fungsi manajemen (Management)
Apa yang dimaksud dengan Jaminan Kualitas (Quality Assurance atau QA) ?
Adalah memastikan bahwa SWDLC yang digunakan dalam pengembangan perangkat
lunak berkualitas sesuai dengan standart yang telah ditetapkan bagi produk
tersebut.
Pada skala yang lebih luas, jaminan
kualitas mencakup pemonitoran terus menerus terhadap semua tahap-tahap
pengembangan sistem dan perangkat lunak dari perencanaan sampai implementasi,
dan pengoreksian terhadap proses
pengembangan sistem dan perangkat
lunak.
Apa yang dimaksud dengan pengendalian kualitas ?
Pengendalian
Kualitas (Quality Control) memfokuskan pada produk, yaitu apa yang dihasilkan.
Pengendalian kualitas mengevaluasi sistem dan perangkat lunak setelah
dikembangkan.
Kualitas harus dirancang ke dalam sistem
dan perangkat lunak ketika mereka sedang dibuat, bukan setelah pembuatannya
selesai. Jadi jaminan kualitas adalah teknik pencegahan kesalahan, sedangkan
pengendalian kualitas merupakan teknik penghapusan kesalahan.
Menciptakan kelompok Jaminan Kualitas (QA)
Kelompok
QA yang independen terbentuk atas wakil-wakil end user, analis system,
perancang system, programmer terampil, yang semuanya tidak tergantung pada
developer (pembuat).
Tugas-tugas QA mencakup :
1. Menetapkan standar untuk pengembangan
sistem dan perangkat lunak (SDLC dan SWDLC)
2. Mengevaluasi laporan terdokumentasi yang
siap diserahkan.
3. Menjalankan tahapan pemeriksaan rancangan
sistem dan perangkat lunak.
4. Melakukan tahapan pemeriksaan pengkodean.
5. Menjalankan pengujian.
Merencanakan Proyek Siklus
Hidup Pengembangan Perangkat Lunak (SWDLC)
Manajer Proyek
menjadual dan memonitor semua tugas yang diperlukan untuk menyelesaikan SWDLC,
dan Teknik yang digunakan adalah Teknik
Tinjauan dan Evaluasi Program (Program Evaluation Review and Technic atau
PERT).
Sasaran PERT adalah
untuk menentukan rangkaian atau urutan pelaksanaan tugas pengembangan perangkat
lunak dan untuk mengestimasi lamanya waktu yang diperlukan dari awal sampai
selesainya pelaksanaan tugas.
Lamanya proyek yang
terdiri atas serangkaian tugas yang harus dijalankan secara urut merupakan jalur kritis (critical path)
darai proyek tersebut.
Empat langkah menyusun jaringan PERT
pengembangan perangkat lunak :
1. Mengidentifikasi
semua tugas pengembangan perangkat lunak yang harus dijalankan.
2. Mengestimasi
waktu yang diperlukan untuk menjalankan setiap tugas.
3. Menentukan
atau menetapkan rangkaian tugas.
4. Menentukan jalur kritis yang akan
menunjukkan waktu pengembangan perangkat lunak.
Tahapan-Tahapan Pengembangan Perangkat Lunak
Dalam Metode Waterfall
1. Vote
Metode Waterfall
Dalam pengembangan
perangkat lunak terdapat beberapa metode pengembangan sistem. salah satu
pengembangan sistem tersebut ialah model waterfall. model/metode waterfall sebenarnya
adalah Linear Sequential Mode. dalam model waterfall
terdapat beberapa tahapan dalam pengembangan perangkat lunak.
adaupn tahapan dalam
model ini meliputi :
1. System /
Information Engineering and Modeling. Permodelan ini diawali dengan mencari
kebutuhan dari keseluruhan sistem yang akan
diaplikasikan ke dalam bentuk software. Hal ini sangat
penting, mengingat software harus dapat berinteraksi dengan elemen-elemen
yang lain seperti hardware, database,
dsb. Tahap ini sering disebut dengan Project Definition.
2. Software Requirements Analysis. Proses pencarian kebutuhan diintensifkan dan
difokuskan pada software. Untuk mengetahui sifat dari program yang
akan dibuat, maka para software engineer harus mengerti
tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user
interface, dsb. Dari 2 aktivitas tersebut (pencarian kebutuhan sistem dan
software) harus didokumentasikan dan ditunjukkan kepada pelanggan.
3. Design.
Proses ini digunakan untuk mengubah kebutuhan-kebutuhan diatas menjadi
representasi ke dalam bentuk “blueprint” software sebelum codingdimulai.
Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada
tahap sebelumnya. Seperti 2 aktivitas sebelumnya, maka proses ini juga harus
didokumentasikan sebagai konfigurasi dari software.
4. Coding.
Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desain
tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman
melalui proses coding. Tahap ini merupakan implementasi dari
tahap design yang secara teknis nantinya dikerjakan oleh programmer.
5. Testing /
Verification. Sesuatu yang dibuat haruslah diujicobakan. Demikian juga
dengan software. Semua fungsi-fungsi software harus
diujicobakan, agar software bebas dari error, dan hasilnya
harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.
6. Maintenance.
Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah
pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu.
Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya,
atau ada penambahan fitur-fitur yang belum ada pada software tersebut.
Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan
seperti ketika ada pergantian sistem operasi, atau perangkat lainnya.
itulah tahapan-tahapan yang dimiliki waterfalldalam
pengembangan perangkat lunak.
Sejarah Perkembangan Perangkat Lunak (Software)
Sejarah perkembangan
komputer dapat dikelompokkan menjadi 2 bagian, yaitu :
1. Software sebelum komputer generasi pertama
Pada tahun 300 SM, bangsa Yunani menciptakan suatu system komunikasi yang
disebut dengan polybius telegraph. System itu menggunakan obor untuk mengirim
berita dari suatu tempat ke tempat lain.
Tahun 1842 perangkat lunak pertama muncul yang ditulis oleh Ada Augusta, anak
perempuan dari Lord Byron. Software ini diterapkan pada Analytical Engine
ciptaan Charles Babbage.
Tahun 1933 Wallace J. Eckert menciptakan suatu program mekanik yang
dipergunakan mengontrol jalannya suatu mesin yang merupakan gabungan dari
beberapa mesin akuntansi.
2. Software semasa komputer generasi pertama
Software pada generasi ini diciptakan oleh para ahli matematika dan ahli teknik
yang digunakan untuk menyelesaikan problem yang muncul pada bidangnya. Program
yang dibuat bersifat khusus karena hanya untuk satu aplikasi tertentu sehingga
jika ingin digunakan untuk aplikasi lain, maka program yang baru harus dibuat lagi.
Untuk mengatasi kesulitan tersebut, maka orang menciptakan suatu bahasa
pemrograman yang disebut bahasa tingkat tinggi. Dengan bahasa tingkat tinggi
dilakukan dengan cara menulis program dalam bahasa Inggris yang diterjemahkan
ke dalam bahasa mesin.
Komputer hanya sebagai alat yang dapat mengerjakan perintah yang diberikan oleh
manusia. Bahasa yang diberikan ini menggunakan bahasa komputer.
Bahasa komputer terdiri dari beratusan macam. Setiap bahasa mempunyai
cirri-ciri tersendiri yang sesuai dengan bidangnya, seperti :
a. Bahasa Cobol (Common Bussiness Oriented Language) digunakan untuk masalah
peradagangan
b. FORTRAN (Formula Translator) digunakan untuk penyelesaian matematika
c. BASIC (Beginner’s All Purpose Symbolic Instruction Code) digunkaan untuk perhitungan
matematika dan perhitungan dagang yang sederhana.
Ada beberapa aplikasi pemrograman yang sering dipergunakan, seperti : pengolah
kata, perhitungan kolom dan lajur, serta untuk perhitungan statistuk dan
lain-lain. Untuk mengatasai agar jangan terlalu sering menulis ulang program,
dibuat suatu paket program untuk penolah kata, paket program untuk perhitungan
kolom dan lajur, paket program untuk perhitungan statistik dan sebagainya.
Pembuat paket program pengolah kata cukup banyak, misalnya : WordStar,
Microsoft Word dan Word Perfect, Chi Writer dan lain-lain.
Jenis-jenis program aplikasi adalah :
a. Microsoft Excel
Untuk menyelesaikan masalah perhitungan yang terdiri dari baris dan kolom.
b. Microsoft Power Point
Untuk menyelesaikan masalah yang berhubungan dengan presentasi.
c. Microsoft Acces
Untuk menyelesaikan masalah pengolahan data/database.
d. CAD (Computer Aided Design)
Untuk menangani bidang ilmu pengetahuan dan teknologi, seperti : merancang
gedung, merancang bentuk mobil dan sebagainya.
e. DecEasy Accounting
Untuk menyelesaikan masalah perhitungan/pelaporan dalam bidang akuntansi dan
sebagainya.
§ Tahap
Pertama (1950 – 1960) Evolusi perangkat lunak tahap pertama dimulai
pada awal 1950-an sampai pertengahan 1960. Pengembangan perangkat lunak pada
tahap pertama mempunyai ciri-ciri
berorientasi batch, distribusi software terbatas untuk
kalangan tertentu sehingga apabila ada perusahaan yang ingin
dibuatkan software khusus harus memesan terlebih dahulu.
§ Tahap
Kedua ( 1960 – 1970) Evolusi Perangkat Lunak Tahap Kedua dimulai
pertengahan tahun 1960-an sampai awal tahun 1970-an. Pengembangan
perangkat lunak mempunyai ciri-ciri multi user. Pengguna
dari software sudah banyak dan bisa saling berbagi. Ciri
ini menunjukkan ada perkembangan baru yaitu interkasi manusia dan komputer
(Human Computer Interaction).Selain itu, ciri dari tahap kedua ini
adalah real time. Real Time disini adalah suatu kondisi dimana sistem
dapat mengumpulkan, menganalisa dan mentransformasikan data dari banyak sumber
kemudian mengatur proses serta menghasilkan output yang diinginkan. Dalam
tahap ini, sudah banyak juga paket perangkat lunak yang beredar di pasaran
serta muncul istilah database dalam perangkat lunak.
§ Tahap
Ketiga (1970 – 1990) Evolusi Perangkat Lunak tahap ketiga, dimulai
pertengahan tahun 1970 sampai awal tahun 1990. Pengembangan
perangkat lunak sudah maju sedemikian pesat. Perangkat lunak sudah
menggunakan sistem terdistribusi, sehingga penyampaian informasi dari
komputer sumber ke komputer tujuan akan terasa sangat cepat. Dalam era ini,
perangkat keras dari suatu komputer harganya sangat murah. Selain itu,
pesanan perangkat lunak sudah sangat mendominasi dari penyelesaian suatu
masalah sehingga penggunaan software pada masa itu sudah sedemikian
jauh.
§ Tahap
Keempat (1990 – 2000) Evolusi Perangkat Lunak Tahap Keempat dimulai
tahun 1990 sampai tahun 2000. Pada tahap ini, perangkat lunak sudah mendominasi
dari pengembangan perangkat keras, sehingga perangkat keras dalam hal ini
komputer sangat dikendalikan oleh suatu sistem operasi. TIngkat
kecerdasan dari perangkat lunak semakin ditingkatkan sehingga perangkat lunak
atau software dilatih mempunyai kecerdasan seperti yang dimilik manusia.
Terbukti dengan adanya penemuan kecerdasan buatan, jaringan syaraf tiruan,
sistem pakar dan logika fuzzy. Jaringan komputer, pemrosesan komputer paralel
sangat mendominasi pada era ini. Dan, pada masa ini pula pemrograman
sudah berorientasi obyek (OOP).
METODE PENGEMBANGAN PERANGKAT
LUNAK
Secara prinsip metode pengembangan perangkat lunak bertujuan
untuk membantu menghasilkan perangkat lunak yang
berkualitas. Berikut faktor-faktor yang perlu di cermati dalam
pengembangan perangkat lunak.
Metode pengembangan perangkat lunak (atau disebut
juga model proses atau paradigma rekayasa perangkat lunak)
adalah suatu strategi pengembangan yang memadukan proses, metode, dan perangkat
(tools). Metode-metode pengembangan perangkat lunak,
memberikan teknik untuk membangun perangkat lunak yang
berkaitan dengan serangkaian tugas yang luas yang menyangkut analisis
kebutuhan, konstruksi program, desain, pengujian, dan pemeliharaan.
Metode-Metode Pengembangan Perangkat Lunak secara
umum ada 4 diantaranya yaitu metode sekuensial linier, prototype, RAD, Fourth
Generation Techniques (4GT) dan spiral adapun metode-metode yang lain
yaitu metode Proses Perangkat Lunak Evolusioner
(pertambahan, spiral, konkruen), dan metode formal.
METODE PENGEMBANGAN PERANGKAT LUNAK
Pada artikel ini akan saya jelaskan mengenai pemodelan secara
sekuensial linier, metode pengembangan perangkat lunak model
ini sering juga disebut dengan “siklus kehidupan klasik” atau “model air
terjun” atau bisa juga di sebut waterfall.
Metode pengembangan perangkat lunak ini menggunakan
pendekatan pada perkembanganperangkat lunak yang sistematik
dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh
analisis, desain, kode, pengujian, dan pemeliharaan. Model ini melingkupi
aktivitas-aktivitas :
a. Rekayasa dan pemodelan system/informasi
Karena perangkat lunak adalah bagian dari sistem yang
lebih besar, pekerjaan dimulai dari pembentukan kebutuhan-kebutuhan untuk
seluruh elemen sistem dan kemudian memilah mana yang untuk pengembangan perangkat
lunak. Hal ini penting, ketika perangkat lunak harus
berkomunikasi dengan hardware, orang dan basis data
b. Analisis kebutuhan perangkat lunak
Pengumpulan kebutuhan dengan fokus pada perangkat lunak,
yang meliputi : Domain informasi, fungsi yang dibutuhkan, unjuk
kerja/performansi dan antarmuka. Hasilnya harus didokumentasi dan direview ke
pelanggan
c. Desain
Ada 4 atribut untuk program yaitu : Struktur Data, Arsitektur perangkat
lunak, Prosedur detil dan Karakteristik Antarmuka. Proses desain
mengubah kebutuhan-kebutuhan menjadi bentuk karakteristik yang di
mengerti perangkat lunak sebelum dimulai penulisan
program. Desain ini harus terdokumentasi dengan baik dan menjadi bagian
konfigurasi perangkat lunak.
d. Generasi kode
Penterjemahan perancangan ke bentuk yang dapat dimengerti oleh mesin, dengan
menggunakan bahasa pemrograman
e. Pengujian
Setelah kode program selesai testing dapat dilakukan. Testing memfokuskan pada
logika internal dari perangkat lunak, fungsi eksternal dan
mencari segala kemungkinan kesalahan dan memriksa apakah sesuai dengan hasil
yang diinginkan.
f. Pemeliharaan
Merupakan bagian paling akhir dari siklus pengembangan dan dilakukan
setelah perangkat lunak dipergunakan. Pemeliharaan perangkat
lunak mengaplikasikan lagi Setiap fase program sebelumnya dan
tidak membuat yang baru. Kegiatan :
·
Corrective Maintenance
: Mengoreksi kesalahan pada perangkat lunak, yang baru
terdeteksi pada saat perangkat lunak dipergunakan.
·
Adaptive Maintenance :
Penyesuaian dengan lingkungan baru, misalnya sistem operasi atau sebagai
tuntutan atas perkembangan sistem komputer, misalnya penambahan printer driver
·
Perfektive Maintenance
: Bila perangkat lunak sukses dipergunakan oleh
pemakai. Pemeliharaan ditujukan untuk menambah kemampuannya seperti memberikan
fungsi-fungsi tambahan, peningkatan kinerja dan sebagainya
Model sekuensial adalah metode pengembangan
perangkat lunak yang paling luas dipakai dan paling tua.
Kelemahan model ini antara lain :
·
Proyek yang sebenarnya
jarang mengikuti alur sekuensial seperti diusulkan, sehingga perubahan yang
terjadi dapat menyebabkan hasil yang sudah didapat tim harus diubah
kembali/iterasi sering menyebabkan masalah baru.
·
Linear sequential
model mengharuskan semua kebutuhan pemakai sudah dinyatakan secara eksplisit di
awal proses, tetapi kadang-kadang ini tidak dapat terlaksana karena kesulitan
yang dialami pemakai saat akan mengungkapkan semua kebutuhannya tersebut.
·
Pemakai harus bersabar
karena versi dari program tidak akan didapat sampai akhir rentang waktu proyek.
·
Adanya waktu
menganggur bagi pengembang, karena harus menunggu anggota tim proyek lainnya
menuntaskan pekerjaannya.