Hallo, pada kesempatan kali ini saya ingin membahas pembahasan yang agak berat ya, jadi pastikan di depan anda ada kopi dan anda sedang posisi santuy.
Kita mulai dari definisi Software Engineering dulu, menurut Roger Pressman dalam bukunya mendefinisikan bahwa software engineering atau rekayasa perangkat lunak adalah disiplin ilmu yang mengintegrasikan proses, metode, dan alat untuk pengembangan perangkat lunak komputer. Lalu dalam situsnya http://www.swebok.org/ menuliskan SWEBOK ( Software Engineering Body of Knowlage) menggambarkan pengetahuan secara umum tentang rekayasa perangkat lunak yang dibagi kedalam 10 area pengetahuan.
SWEBOK merupakan project yang dibuat oleh IEE, SWEBOK sendiri mempunyai panduan yang disebut Guide of SWEBOK, panduan ini dibuat untuk 5 tujuan, yaitu :
1. Untuk memperlihatkan kesamaan pandangan tentang rekayasa perangkat lunak di seluruh dunia.
2. Untuk memperjelas tempat dan menetapkan batas dari rekayasa perangkat lunak dan hubungannya dengan disiplin ilmu lain seperti ilmu komputer, manajemen proyek, teknik komputer dan matematika.
3. Untuk membuat karakter isi dari disiplin ilmu rekayasa perangkat lunak
4. Untuk memberikan pengetahuan dasar bagi pengembangan kurikulum dan sertifikasi serta perizinan.
Seperti yang telah disebutkan sebelumnya bahwa SWEBOK 2004 mempunyai 10 Knowlage Areas yaitu :
1. Software requirements
2. Software design
3. Software construction
4. Software testing
5. Software maintanance
6. Software configuration management
7. Software engineering management
8. Software engineering process
9. Software engineering tools and methods
10. Software quality
Gambar dari SWEBOK
Pada tahun 2010 mengalami perubahan dalam isinya, dan ini alasan kenapa ada perubahan :
1. Perubahan praktik, alat dan metode. Karena adanya lingkungan pekerjaan yang berubah menuntut perubahan dalam SWEBOK.
2. Menyelaraskan SWEBOK 2010 dengan CSDP (Crtified Software Developer Professional) dan Software Engineering 2004.
3. Adanya pertambahan artikel dan materi baru.
Beberapa perubahan pada SWEBOK :
1. Tambahan KA dalam Professional Practice - sama materi yang ada di CSDP
2. Tamabahan 4 KA : Engineering Economy Foundations, Computing Foundations, Mathematical Foundations, dan Engineering Foundations - sama dengan materi yang ada di SE2004.
3. Menghapus tiga disiplin ilmu yang berhubungan : Computer Science, Mathematcs, dan software ergonomics.
4. Menambahkan materi Human-Computer Interfaces dalam bagian software design and software testing.
5. Menghapus bagian software tools dari software engineering tools and methods, dan dipindahkan ke KA yang lain.
6. Merubah software engineering methods untuk fokus mempengaruhi lebih dari satu KA.
7. Mendistribusikan materi lain ke dalam KA yang lain.
Project Life Cycles
Sebuah proyek memiliki awal dan akhir dan melewati beberapa fase yang dikenal sebagai fase life cycles. Fase ini bervariasi tergantung pada industi yang terlibat tetapi semua mengikuti langkah - langkah dasar yang sama. Project Life Cycles merupakan serangkain tahapan yang dilewati oleh sebuah proyek mulai dari tahap persiapan sampai dengan closure proyek.
Project Life Cycles memiliki 4 fase, yaitu :
1. Initiation merupakan tahap pertama dalam project life cycles atau dasar dalam memulai sebuah proyek. Dengan mendefinisikan tujuan dan ruang lingkup, pembenaran untuk memulai dan solusi yang akan dilaksanakan. Fase inisiasi mencakup dalam memulai proyek, dengan mendokumentasikan kasus bisnis, studi kelayakan, kerangka acuan, menunjuk tim, dan menyiapkan office project. Selama fase ini, tim pengambilan keputusan akan mengidentifikasi apakah proyek tersebut secara realistis dapat diselesaikan.
Proyek inisiasi melibatkan 6 langkah yaitu :
Devlop a business case -> Undertake a feasibility study -> Establish the tems of reference -> Appoint a project team -> Setup a project office -> Perform phase review.
2. Planning atau perencanaan, ketika ruang lingkup proyek telah ditetapkan dan tim proyek terbentuk, maka aktivitas proyek mulai memasuki tahap perencanaan. Pada tahap ini, dokumen perencanaan akan disusun secara terperinci sebagai panduan bagi tim proyek selama kegiatan proyek berlangsung. Tahap perencanaan memiliki 10 aktivitas penting yaiyu :
Create a project plan -> Create a resource plan -> Create a financial plan -> Create a quality plan -> Create a risk plan -> Create an acceptance plan -> Create a Communications plan -> Create a procurement plan -> Contract the suppliers -> Perform phase review.
3. Execution atau pelaksanaan, dengan definisi proyek yang jelas dan terperinci, maka aktivitas proyek siap untuk memasuki tahap eksekusi atau pelaksanaan proyek. Pada tahap ini, deliverables atau tujuan proyek secara fisik akan dibangun. Seluruh aktivitas yang terdapat dalam dokumentasi project plan akan dieksekusi. Sementara setiap deliverable sedang dibangun, suite proses manajemen yang dilakukan untuk memantau dan mengontrol kiriman menjadi output dengan proyek. Pada tahap ini manajer juga memonitor dan mengontrol kegiatan.
4. Closure atau penutupan, tahap ini merupakan tahap akhir dari aktivitas proyek. Pada tahap ini, hasil akhir proyek (deliverables projects) beserta dokumentasinya diserahkan kepada pelanggan, kontak dengan supplier diakhiri, tim proyek dibubarkan dan memberikan laporan kepada semua stakholder yang menyatakan bahwa kegiatan proyek telah selesai dilaksanakan. Langkah akhir yang perlu dilakukan pada tahap ini yaitu melakukan post implementation review untuk mengetahui tingkat keberhasilan proyek dan mencatat setiap pelajaran yang diperoleh selama kegiatan proyek berlangsung sebagai pelajaran untuk proyek - proyek dimasa yang akan mendatang.
Perform project closure -> Review project completion.
Software Development Life Cycle (SDLC)
SDLC adalah siklus hidup pengembangan sebuah sistem. Dalam rekayasa sistem dan rekayasa sebuah sistem, SDLC merupakan suatu proses pengubahan dan pembuatan sistem serta model dan metologi yang digunakan untuk mengembangkan sistem - sistem tersebut.Lalu untuk apa SDLC ini ? Ya, tentunya untuk menghasilkan output sistem berkualitas tinggi yang sesuai dengan ekspetasi para pengguna.
Secara singkat, SDLC menurut Stackify merupakan sebuah proses yang memproduksi sebuah software dengan kualitas setinggi - tingginya tetapi dengan biaya yang serendah - rendahnya. SDLC juga memiliki beberapa tahapan termasuk planning, design, testing, building, dan deployment. Model SDLC yang terkenal meliputi waterfall model, spiral model, dan juga agile model.
Lalu cara kerja SDLC bagaimana bang ? SDLC bekerja dengan menurunkan biaya pembangunan sebuah produk atau software sambil memperbaiki kualitas dan mempersingkat waktu produksi secara serentak.
SDLC mendapatkan sebuah tujuan dengan mengikuti panduan dari sebuah rancangan yang dibuat oleh stakeholders atau klien. Rancangan ini dimulai dari evaluasi sistem yang sudah ada demi efesiensi.
Kemudian, tim akan mendefinisikan persyaratan - persyaratan dari sistem yang baru. Setelah itu, software akan dibuat dengan beberapa tahap mulai dari identifikasi, perencanaan, rancangan, membangun produk, pengujian, pemasaran, dan pemiliharaan.
Untuk menghindari penggunaan biaya yang tralu besar, maka engineer akan meminta feedback dari end-user terhadap produknya.
Proses SDLC ini dapat mengeliminasi pekerjaan yang berulang-ulang setelah perbaikan yang sudah selesai.
Langkah penerapan Software Development Life Cycle (SDLC)
1. Identifikasi masalah
Analisis kebutuhan dan masalah merupakan syarat paling dasar dan juga utama dalam SDLC. Dalam tahapan ini, engineer atau developer menerima semua input yang masuk termasuk dari customer, salesperson, industri, dan juga programmer.
Setelah input masuk, engineer akan mencoba mempelajari kekurangan dan kelebihan dari sistem yang sudah ada.
2. Perencanaan
Dalam tahap ini, tim engineer akan merencanakan berbagai persyaratan dalam pembuatan software baru atau software yang sudah ada. Hal ini juga termasuk dari aspek biaya dan juga bahan-bahan yang dibutuhkan.
3. Rancangan
Fase SDLC ini dimulai dari mengubah spesifikasi sebuah sftware ke dalam design plan yang disebut dengan desain dokumen spesifikasi (DDS).
Semua tim yang bersangkutan termasuk dengan klien akan membantu meriview dari rancangan ini dan menawarkan feedback.
Sangat penting untuk mengumpulkan semua feedback yang diberikan dalam dokumen ini. Jika ada kegagalan dalam tahap ini, akan berakibat biaya yang melonjak dan menjadi over.
Bahkan, kemungkinan terburuknya adalah dapat membuat proyek jadi gagal dan bangkrut.
4. Mengembangkan produk
Dalam tahap ini, engineer dan tim akan membangun sebuah produk dari barisan atau bahasa pemrograman. Jika tahap sebelumnya sudah dikerjakan dengan sangat detail, mungkin sebenarnya tahap ini dapat dikatakan tahap paling sulit dan membingungkan.
5. Pengujian
Dalam tahap pengujian, pertanyaan-pertanyaan seperti "Sudahkah kita mendapat apa yang kita mau?" akan terus berulang. Dalam pengujian, engineer dan tim harus memastikan bahwa produk yang dibuat tidak memiliki cacat dan sesuai dengan permintaan klien.
7. Memasarkan produk
Jika pengujian sudah selesai, pemasaran produk mulai bisa dilakukan. Hal ini bukan berarti tahap SDLC sudah selesai. Berbagai feedback yang disampaikan oleh user juga harus didengarkan lagi. Bila perlu, akan ada penyesuain lagi terhadap produk.
7. Maintanance
Dengan keadaan dan kondisi teknologi yang terus berubah, tahapan terakhir dari SDLC ini mengharuskan engineer dan tim tetap memelihara produk yang sudah selesai. Hal ini perlu dilakukan untuk meminimalisir error pada produk.
Model - Model Software Devlopment Life Cycle (SDLC)
1. Waterfall model
Model SDLC ini dapat dikatakan merupakan model tertua dan tersingkat dalam penerapannya. Dalam model ini, setelah satu fase selesai langsung dimulai dengan fase selanjutnya.
Setiap fase memiliki rencana kecil dan menurun ke fase berikutnya. Maka dari itu fase ini dikatakan waterfall atau air terjun karena setiap fase memiliki turunan kecil lainnya.
Namun, salah satu kekurangan dari model ini adalah jika ada satu detail kecil yang tertinggal, dapat mempengaruhi keseluruhan rencana dan berakhir berantakan.
2. Agile model
Model SDLC ini dapat memisahkan produk dengan proses dan waktu pengerjaannya secara cepat. Meteologi ini diyakini sangat efektif untuk keberhasilan penciptaan sebuah produk. Dalam metode ini, tim akan mencoba tiap produk yang sudah selesai untuk meminimalisir kesalahan.
Namun, salah satu kelemahan dari metode ini dapat memicu proyek ke arah yang salah dan tidak sesuai dengan kemauan dan ekspektasi dari customer.
3. Interative model
Model SDLC ini merupakan metode yang memiliki repetisi tinggi. Developer akan menciptakan produk dengan versi cepat dan pastinya murah.
Setelah itu, mereka akan mencoba produk dan merevisi jika ada kesalahan. Salah satu kekurangan dari metode ini adalah dapat mengkomsumsi bahan baku jika ada satu detail yang tertinggal untuk dikerjakan.
4. V-Shaped model
Merupakan lanjutan dari waterfall model. Metode SDLC ini akan mencoba tiap fase dalam proses pengembangan suatu produk.
5. Big bang model
Model ini merupakan model yang diklaim memiliki resiko tinggi saat dijalankan. Mengapa demikian ? Hal ini dikarenakan dalam pengerjaannya, tim akan menginvestasikan semua bahan baku ke dalam projek tersebut.
Sehingga metode ini akan berhasil jika mengerjakan proyek besar.
6. Spiral model
Metode ini merupakan metode yang paling fleksibel dan mirip dengan iterative model. Metode ini fokus pada repetisi dalam pengerjaannya.
Minum kopi dulu gan..
Oke yang terakhir adalah Requirement. Apa itu requirement ?
Requirement
Jika merujuk pada makna kata, requiretment merupakan sesuatu yang dibutuhkan; sesuatu yang wajib ada; kondisi yang dibutuhkan. Tapi yang akan kita bahas adalah suatu kondisi yang harus diselesaikan untuk memastikan keberhasilan sebuah proyek (Software). Requirement ini harus menggambarkan secara jelas apa yang dibutuhkan dalam proyek.
Requirement project merupakan hal penting yang harus dilakukan sebelum proyek mulai dikerjakan (Coding). Kita ambil contoh, ada seseorang yang meminta kita untuk membuat sebuah rumah, sebagai seorang developer rumah yang sudah berpengalaman kita berasumsi bahwa rumah itu akan ditempati oleh manusia, tapi dalam kenyataannya rumah yang di inginkan adalah rumah burung (sangkar). Begitupun dalam bisnis pengembangan aplikasi, hal ini dapat terjadi ketika ada client yang tidak bisa mendefinisikan dengan jelas apa yang mereka butuhkan. Kerugian yang akan kita dapatkan apabila project sudah terlanjur dikerjakan tetapi requirement masih belum jelas yaitu waktu, tenaga yang sudah kita gunakan untuk development, uang yang sudah terpakai dan segala yang sudah kita lakukan untuk membangun proyek tersebut.
Requirement Gathering
Ada beberapa metode yang dapat kita lakukan untuk memperjelas requirement seperti apa yang dibutuhkan oleh client, antara lain :
1. Research
Kita bisa melakukan research berdasarkan dokumen yang sudah ada sebelumnya atau bisa juga mengacu pada proyek yang sudah ada, bisa jadi acuan untuk kita menerjemahkan apa yang client inginkan.
2. Interview
Setelah mengumpulkan bahan untuk divalidasi ke client, kita bisa melakukan interview. Di bagian interview ini kita bisa pakai rumus ask, listen, listen, listen. Disini ditekankan untuk banyak mendengar daripada bertanya.
3. Workshop
Workshop dapat berupa brainstorming, focus group discossion, delphi method, design sprint.
4. Survey
Survey bisa dilakukan kepada siapapun yang punya pengetahuan tentang proyek yang akan dikerjakan. Survey tidak harus dilakukan kepada client tapi bisa kepada siapapun yang ada disekitar kita asalkan memenuhi syarat.
5. Buat dokumentasi
Dari beberapa hal yang sudah dilakukan tadi jangan lupa untuk mendokumentasikannya, dokumentasi ini bisa dalam bentuk mindmap, flowchart, ataupun overview.
6. Validasi
Jangan lupa untuk memvalidasi catatan yang dibuat tadi ke client atau product owner, untuk memastikan apa yang kita catat sudah sesuai.
7. Mengukur ketetapan requirement
Salah satu yang bisa dijadikan ukuran dalam menentukan ketetapan requirement adalah metode S.M.A.R.T yang sudah di susun oleh George T. Doran yang di dalam nya terdapat :
a. Specific
Menekankan pentingnya menetapkan target yang spesifik; benar - benar spesifik. Hindari target yang terlalu umum atau kurang mendetail.
b. Mesurable
Kriteria yang digunakan untuk mengukur besarnya kemajuan yang dibuat dalam mencapai target.
c. Assignable
Harus jelas siapa yang akan mengerjakan.
d. Realistic
Target harus realistis dan dapat dicapai. Target tidak boleh dibuat terlalu mudah, tapi juga tidak boleh terlalu sulit sehingga terasa mustahil untuk dicapai.
e. Time Based
Pentingnya menepatkan target dengan kerangka waktu, yaitu memberikan deadline pencapain target. Komitmen kepada deadline akan membantu tim untuk tetap fokus menjalankan pekerjaan untuk memenuhi target tepat wakyu, atau bahkan lebih cepat.
8. Peranan quality Assurance
Lalu apa kaitannya apa yang sudah kita dipaparkan di atas dengan Quality Asurance? Salah satu peran seorang QA adalah melakukan validasi apakah aplikasi yang dikerjakan oleh engineer sudah sesuai dengan yang diinginkan oleh client atau belum. Tentunya hal ini akan dilakukan setelah development telah selesai. Namun perlu diingat bahwa QA tidak sekedar melakukan pengujian aplikasi secara bebas terus menerus tapi harus mengacu pada apa yang di inginkan client. Untuk mendukung hal itu seorang QA haruslah membuat Acceptance kiriteria dan harus mampu memikirkan seperti apa output yang akan dihasilkan nantinya.
Duh panjang juga ya saya nulis, dahlah sampe sini dulu. See you.
Comments