Application Lifecycle Management (ALM) | Requirement, Design, Development, Testing dan Maintenance

Pada kesempatan kali ini saya akan menyampaikan materi Application Lifecycle Management (ALM) | Requirement, Design, Development,  Testing dan Maintenance.

Pertama, apa itu Application Lifecycle Management (ALM) ?
    Application Lifecycle Management (ALM) adalah spesifikasi, desain, pengembangan dan pengujian aplikasi perangkat lunak. ALM mencakup seluruh siklus hidup dari konsep gagasan, hingga pengembangan, pengujian, penyebaran, dukungan, dan akhirnya penyusunan system.
     Application Lifecycle Managemen benar-benar istilah umum yang mencakup beberapa disiplin ilmu berbeda yang secara teradisional dianggap terpisah, termasuk manajemen proyek, manajemen persyaratan, pengembangan, pengujian dan jaminan kualitas (QA) serta dukungan pelanggan dan pengiriman layanan IT.
   Jadi pada dasarnya alat ALM menyediakan lingkungan standar untuk komunikasi dan kolaborasi antar tim pengembangan perangkat lunak dan departemen tersebut, seperti pengujian dan operasi. Mereka juga mengotomatiskan proses pengembangan dan mengiriman perangkat lunak.
          Dimasalalu sebelum Agile Manifesto diterbitkan dan sebelum organisasi menyadari bahwa pendekatan air terjun mereka sebelumnya untuk pengembangan perangkat lunak tidak efisien dan rentan terhadap ruang lingkup creep, pembengkakan biaya dan tenggat waktu yang terlewati, masing-masing disiplin ilmu yang membentuk keseluruhan proses perangkat lunak sepenuhnya terpisah.
      Begitu organisasi menyadari betapa jauh lebih efisien mereka dapat memiliki tim terintegrasi yang secara kolaboratif mendefinisikan persyaratan. Merencanakan rilis dan sprint, menguji produk selama pengembangan dan menyebarkan pengaruh terbaru dengan cara yang mulus, proses terpisah yang lama tidak masuk akal.  ALM pada dasarnya adalah gabungan dari disiplin ilmu yang terkait dengan aspek proses pengiriman perangkat lunak.

Plain/Requirement -> Design -> development -> testing -> maintain.

Proses pembuatan perangkat lunak akan melewati tahapan-tahapan tersebut. Kaliini tahapan tersebut akan dibahas satu persatu.


A. Requirement
1. Definisi Requirement
   Requirement adalah gambaran dari layanan (services) dan batasan bagi sistem yang akan dibangun. Atau requirement adalah pernyataan/gambaran pelayanan yang disediakan oleh sistem, batasan-batasan dari sistem dan bisa juga berupa definisi matematis fungsi-fungsi sistem.
    Istilah requirement walaupun secara umum memiliki arti yang kurang lebih sama untuk semua orang, tetapi ternyata memiliki tingkat kedalaman yang berbeda-beda. Untuk top executive, mungkin requirement hanya diartikan sampai pada top level business strategis. Sedangkan dari sisi user, requirement lebih diartikan sebagai kemampuan yang harus dimiliki oleh software. Untuk seorang programmer, requirement diharapkan mencakup design constraint dan batasan lainnya selain functional requirement. Perbedaan inilah yang membuat komunikasi menjadi tidak berjalan dengan mulus.
      Sebetulnya ketiadaan istilah baku dalam dunia IT bukan hanya pada definisi requirement saja. Dibandingkan ilmu lainnya, IT memang tergolong masih baru dan masih mencari bentuk standard. Masalahnya kecepatan membuat standard sangat lambat dibandingkan dengan kecepatan perkembangan teknologi IT itu sendiri. Akibatnya belum sempat disepakati suatu standard, sudah muncul teknologi yang baru yang menggantikan teknologi lama.

2. Definisi Requirement Menurut Para Ahli
    Menurut (Dorf, 1990) yaitu : Sebuah requirement adalah sebuah kemampuan yang harus dimiliki dari suatu software. Kemampuan ini dapat ditujukan untuk memecahkan suatu permasalahan ataupun diperlukan untuk memenuhi ketentuan-ketentuan tertentu (seperti standar tertentu, keputusan manajemen, ataupun alasan-alasan politis).
    Menurut (Zave, 1997) Requirement adalah gambaran dari layanan (services) dan batasan bagi sistem yang akan dibangun. Atau requirement adalah pernyataan/gambaran pelayanan yang disediakan oleh sistem, batasan-batasan dari sistem dan bisa juga berupa definisi matematis fungsi-fungsi sistem. 

3. Fungsi Requirement
Requirement memiliki fungsi ganda yaitu:
Menjadi dasar penawaran suatu kontrak : harus terbuka untuk masukan.
Menjadi dasar kontrak : harus didefinisikan secara detil. Proses menemukan, menganalisis, mendokumentasikan dan pengujian layanan, layanan dan batasan tersebut disebut Requirement Engineering.

4. Metode Pengumpulan Requirement
Interviews : Memberi informasi yang terbaik,mahal
Questionnaires: Bagus jika banyak orang terlibat dan tersebar, respon cenderung kurang baik.
Observation: Akurat jika dilakukan dengan baik, mahal
Searching :Informasi terbatas, cenderung tidak menampilkan hal-hal yang mungkin jadi masalah.

5. Macam-macam Requirement
User requirement (kebutuhan pengguna)
Pernyataan tentang layanan yang disediakan sistem dan tentang batasan-batasan operasionalnya. Pernyataan ini dapat dilengkapi dengan gambar/diagram yang dapat dimengerti dengan mudah.
System requirement (kebutuhan sistem)
Sekumpulan layanan/kemampuan sistem dan batasan-batasannya yang ditulis secara detil. System requirement document sering disebut functional specification (spesifikasi fungsional), harus menjelaskan dengan tepat dan detil. Ini bisa berlaku sebagai kontrak antara klien dan pembangun.

6. Kategori Requirement
Ada 3 kategori dalam requirement
Functional Requirement
Functional requirement menggambarkan system requirement secara detil seperti input, output dan pengecualian yang berlaku. Contoh dalam kasus peminjaman buku di perpustakaan.
Non-functional Requirement
Non functional requirement dibagi menjadi 3 tipe yaitu: 
Product requirement 
Berkaitan dengan kehandalan, kecepatan, kemudahan digunakan, kapasitas memori yang dibutuhkan dan efisiensi sistem. 
Organisational requirement 
Berkaitan dengan standar, bahasa pemrograman dan metode rancangan yang digunakan. 
External requirement 
Berkaitan dengan masalah etika penggunaan, interoperabilitas dengan sistem lain, legalitas, dan privasi.
Domain requirement
Berasal dari domain aplikasi sistem. Misalnya karena masalah hak cipta maka beberapa dokumen dalam perpustakaan tidak boleh diakses oleh orang lain yang tidak berhak.

7. Teknik pengumpulan Requirement
Dalam [Nuse00] disebutkan beberapa jenis teknik pengumpulan requirement:Traditional techniques merupakan berbagai cara pengumpulan data. Cara-cara ini termasuk kuesioner, survey, wawancara, serta analisis dari berbagai dokumentasi yang ada seperti struktur organisasi, petunjuk pelaksanaan (juklak) serta manual-manual dari sistem yang sudah ada.
Group elicitation techniques bertujuan untuk mengembangkan dan mendapatkan persetujuan stakeholder, sementara memanfaatkan dinamika kelompok untuk memperoleh pengertian yang lebih mendalam. Cara-cara ini termasuk brainstorming dan focus group, juga berbagai workshop RAD/JAD (workshop untuk membangun sebuah konsensus dengan menggunakan seorang fasilitator yang netral).


B. Design
Design adalah agensi kreatif multidisiplin. Tahap menentukan bagaimana sistem mencapai tujuan yang telah didefinisikan sebelumnya. Tahap ini terdiri dari:
1. User interface design, meliputi tampilan, form, report dan dialog design.
2. Data design, merupakan proses desain elemen struktur data.
3. Process design, merupakan desain program prosedur sistem.

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 dan rincian prosedur.
1. Arsitektur Program dan Priosedur Algoritma
Proses desain menterjemahkan kebutuhan kedalam representasi software yang dapat diukur kualitasnya sebelum coding dimulai. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
2. Coding
Merupakan proses penterjemahan desain ke dalam bentuk yang dapat dibaca oleh mesin
3. Testing dan pemeliharaan
Setelah objek program dihasilkan, testing 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.  Sementara proses pemeliharaaan atau maintenance dilakukan karena software mengalami error, atau harus diadaptasi untuk menyesuaikan dengan lingkungan external.
Pendapat lain mengatakan bahwa software design adalah merupakan rekayasa representasi yang berarti terhadap sesuatu yang hendak dibangun. Hasil rancangan harus dapat ditelusuri hingga ke spesifikasi kebutuhan yang dapat diukur kualitasnya berdasarkan kriteria-kriteria rancangan yang bagus. Perancangan menekankan pada solusi logik mengenai cara sistem memenuhi kebutuhan(Bambang Hariyanto, 2004).
Secara global, terdapat 2 (proses) dalam software design (Swebok 2004), yaitu:
1. Desain Arsitektur (Architecture Design), yaitu: proses mendeskripsikan dan mendefinisikan bagaimana software dibentuk dan di organisasikan kedalam komponen-komponen yang akan menbentuk software tersebut.
2. Detailed Design, yaitu: proses mendeskripsikan bagaimana prilaku (behavior) dari komponen-komponen yang sudah dibentuk pada architecture design.
Hasil dari kedua proses ini adalah sekumpulan model dan artifak yang mendeskripsikan tujuan serta gambaran dari software yang akan dibangun, adapun model-model ini bisa dibangun dengan menggunakan modeling language yaitu: bahasa yang digunakan untuk membuat dan menyajikan informasi atau knowledge atau sistem dalam sebuah struktur yang dibuat secara konsisten menggunakan sekumpulan aturan-aturan tertentu. Contohnya yaitu:
1. Unified Modeling Language (UML), yaitu sebuah standar dalam membangun sebuah model yang merepresentasikan object oriented software dan business system (Pender A Thomas, 2002).
2. Flowchart, yaitu: bagan yang biasa digunakan untuk merepresentasikan algoritma secara sistematik (Wikipedia).
3. Extended Enterprise Modeling Language (EEML), yaitu: model yang digunakan untuk merepresentasikan business model yang terdiri dari sejumlah layer (Wikipedia).


C. Development
Menurut  IEEE , Pengembangan software (software engineering ) adalah : Aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software, dengan kata lain software engineering merupakan sebuah metodologi pengembangan perangkat lunak (software) yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi sistem hingga pada tahap pemeliharaan sistem setelah digunakan dengan tujuan untuk membuat perangkat lunak yang tepat dengan metode yang tepat.
Hal yang perlu di pertimbangkan dalam pengembangan software yaitu :
1. Produk dan software (terdiri dari program, dokumen, dan data)
2. Proses pengembangannya (terdiri dari proses manajemen dan proses teknikal)
System Development Life Cycle (SDLC) merupakan beberapa tahap pengembangan pemantauan produk dari perangkat lunak. Contoh dari SDLC antara lain model waterfall, model V, model spiral, prototyping dan lain-lain. Sedangkan proses manajemen dalam pengembangan software lunak terdiri atas manajemen proyek, configuration management dan quality assurance management dan proses teknikal merupakan metode yang diaplikasikan pada tahap tertentu dalam pengembangan software, yang didalamnya termasuk metode analisis, metode desain, metode pemrograman, dan metode testing.
Tiga Elemen kunci dalam Pengembangan Software :
1. Metode
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Terdiri dari serangkaian tugas seperti perencanaan dan estimasi proyek
2. Analisis kebutuhan sistem dan software
3. Desain struktur data
Pendapat lain yaitu sebuah metode pengembangan software yang diciptakan untuk menekan waktu yang dibutuhkan untuk mendesain serta mengimplementasikan sistem, informasi sehingga dihasilkan siklus pengembangan yang sangat pendek.
Supaya pengembangan sistem dapat bekerja dengan efisien dan efektif, maka metodologi pengembangaan sistem perlu diketahui. Metodologi pengembangan sistem yang populer dan banyak digunakan adalah metodologi pengembangan sistem terstruktur, yang memberikan cara top down dan cara dekomposisi dan beberapa abit pengembangan sistem.
Model SDLC atau Sekuensial Linier sering disebut juga Model Air Terjun. Model ini mengusulkan sebuah pendekatan perkembangan perangkat lunak yang sistematik dan sekunsial yang dimulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian, dan pemeliharaan.
Model ini disusun bertingkat, setiap tahap dalam model ini dilakukan berurutan, satu sebelum yang lainnya. Model ini biasanya digunakan untuk membuat sebuah software dalam skala besar dan yang akan dipakai dalam waktu yang lama. Sangat cocok untuk pengembangan sistem yang besar.


D. Testing
1. Pengertian Testing (Penguji)
Pengujian Perangkat Lunak (Software Testing) adalah suatu teknik yang digunakan untuk menentukan bahwa perangkat lunak yang dihasilkan telah memecahkan masalah. Pengujian Perangkat Lunak termasuk salah satu langkah dalam metodologi pengembangan sistem (SDLC: System Development Life Cycle). Namun, pada setiap aktivitas SDLC yang dilakukan pengujian tetap harus dilalukan.
Tiga konsep yang harus diperhatikan dalam Pengujian Perangkat Lunak, yaitu:
Demonstrasi validitas perangkat lunak pada setiap tahapan pembangunan sistem.
Penentuan validitas sistem akhir terhadap pemakai dan kebutuhan.
Pemeriksaan implementasi sistem dengan menjalankan sistem pada suatu contoh data uji 

2. Kadar Kritis Atau Resiko 
Resiko adalah kondisi yang dapat menyebabkan kerugian. Dalam hal ini resiko berhubungan dengan kemungkinan terjadinya kehilangan. Situasi ini selalu terjadi, walau kehilangan akhirnya tidak terjadi. Misalnya bahaya kebakaran selalu ada tetapi jarang terjadi kebakaran. Walaubagaimanapun, kita harus berjaga-jaga terhadap resiko tersebut, misalnya dengan memasang alarm khusus, alat pemadam kebakaran, sehingga kemungkinan terjadi kebakaran akan berkurang. Kita tidak dapat menghilangkan resiko, tapi kita dapatmengurangi kemunculamyadan/atau dampak kehilangan.

3. Masalah Yang Timbul
Masalah yang sering muncul berhubungan dengan proses pengujian diantaranya adalah: 
Gagal mendefinisikan tujuan pengujian 
Pengujian dilakukan pada tingkat yang salah pada suatu siklus pengembangan sistem
Penggunaan teknik pengujian yang tidak efektif. 
Masalah system computer
Masalah perangkat lunak
Masalah data


E. Maintenance
1. Definisi Maintenance
Definisi pemeliharaan menurut O’Connor (2001,p407) adalah suatu kegiatan untuk memelihara dan menjaga fasilitas yang ada serta meperbaiki. Melakukan penyesuaian atau pengantian yang diperlukan untuk mendapatkan suatu kondisi operasi produksi agar sesuai dengan perencanaan yang ada.
Perawatan adalah sebuah operasi atau aktivitas yang harus dilakukan secara berkala dengan tujuan untuk mempercepat pergantian kerusakan peralatan dengan resources yang ada. Perawatan juga ditujukan untuk mengembalikan suatu sistem pada kondisinya agar dapat berfungsi sebagaimana mestinya, memperpanjang usia kegunaan mesin, dan menekan failure sekecil mungkin.
Menurut Jr.Patton(1995,p23) Pengertian maintanace secara umum yaitu serangkaian aktivitas (baik bersifat teknis dan administrative) yang di perlukan mempertahankan dan menjaga suatu produk atau system tetap berada pada dalam kondisi aman, ekonomis, efisien dan pengoperasian optimal. Aktivitas perawatan sangat diperlukan karena : 
Setiap peralatan punya umur pengunaan (useful life). Suatu saat dapat mengalami kegagalan dan kerusakan. 
Kita dapat mengetahui dengan tepat kapan peralatan akan mengalami kerusakan 
Manusia selalu berusaha untuk meningkatkan umur penggunaan dengan melakukan perawatan (maintenance). 
Yang menjadi musuh utama bagian perawatan adalah breakdown, deterioration, dan konsekuensi dari semua tipe kejadian yang tidak terencana. Maintenance sangat berperan penting dalam kegiatan produksi dari suatu perusahaan yang menyangkut kelancaran dan kemacetan produksi, volume produksi serta agar produk dapat diproduksi dan di terima konsumen tepat pada waktunya dan menjaga agar tidak ada sumber daya yang menganggur karena kerusakan (downtime) pada mesin sewaktu proses produksi sehinggadapt meminimalkan biaya kehilangan produksi. 
2. Jenis-jenis maintenance
Kegiatan pemeliharaan dapat dibedakan menjadi 3 jenis yaitu corrective maintenance (breakdown maintenance), preventive maintenance dan total productive maintenance (perawatan keseluruhan). 
3. Konsep-konsep Pemeliharaan
a) Konsep hubungan waktu dalam maintenance
Istilah dalam maintenance :
Up Time
Down Time
Operating Time
Standby Time
Maintenance Time
Active Maintenance Time
Logistic Time
Administrative Time
Corrective Maintenance Time
Preventive Maintenance Time
b) Konsep Breakdown Time
Menurut Pendapat Jr.Patton(1995,p130),Breakdowndapat didefinisikan sebagai berhentinya mesin pada saat produksi yangmelibatkan engineering dalam perbaikan, biasanya mengganti sparepart yang rusak, dan lamanya waktu lebih dari 5 menit ( berdasarkan OPI-Overall Performance Index). 
Downtimemesin merupakan waktu menganggur atau lama waktu dimana unit tidak dapat lagi menjalankan fungsinya sesuai dengan yang diharapkan. Hal ini terjadi apabila suatu unit mengalami masalah seperti kerusakan mesin yang dapat mengganggu kinerja mesin secara keseluruhan termasuk kualitas produk yang dihasilkan atau 15kecepatan produksinya sehingga membutuhkan waktu tertentu untuk mengembalikan fungsi unit-unit tersebut pada konsis semula.

Comments

Popular posts from this blog

Membuat kalkulator sederhana C# di Visual Studia | Ngoding

Tips Preventing Corona Virus | English Class

PENGUJIAN PERANGKAT LUNAK

Menentukan Nilai Awal sebelum diskon | Coding PHP