Alam dan Ruang Lingkup Rekayasa Perangkat Lunak

Rekayasa perangkat lunak melihat ke dalam merancang dan mengimplementasikan aplikasi perangkat lunak dan juga memodifikasinya sehingga mereka lebih sesuai dengan kebutuhan klien. Ini adalah salah satu aspek terpenting dari pengembangan perangkat lunak dan merupakan suatu keharusan untuk diterapkan di organisasi mana pun yang telah melakukan aktivitas pengembangan perangkat lunak. Meskipun gelar teknik dasar dalam ilmu komputer cukup untuk bekerja sebagai insinyur perangkat lunak, keuntungan yang lebih baik adalah memiliki lisensi. Di Inggris, itu adalah Masyarakat Perangkat Lunak Inggris yang melisensikan insinyur perangkat lunak. Di Kanada, mereka memiliki sebutan Professional Engineer (P.Eng), meskipun sesuai hukum, tidak ada keharusan untuk memiliki kualifikasi semacam itu.

Ada beberapa sub-disiplin yang bisa dibagi. Ini adalah persyaratan perangkat lunak, desain perangkat lunak, pengembangan perangkat lunak, pengujian perangkat lunak, dan pemeliharaan perangkat lunak dan manajemen konfigurasi perangkat lunak. Kebutuhan untuk rekayasa perangkat lunak muncul karena sejarah komputasi. Masalah seperti 'krisis perangkat lunak', 'penghalang kompleksitas' menghambat kemajuan yang dalam perjalanan waktu diselesaikan melalui berbagai teknik yang datang untuk mencakup secara keseluruhan.

Sementara seorang insinyur perangkat lunak juga mengambil peran seorang programmer, seorang programmer tidak akan mengambil peran seorang insinyur, yang pada dasarnya melibatkan berurusan dengan konstruksi teoritis perangkat lunak dan pengembangan perangkat keras. Ada banyak domain pekerjaan dan ini termasuk programmer, administrator perangkat keras, spesialis jaringan dan penguji sistem. Tujuan keseluruhannya adalah untuk mengembangkan dan memelihara sistem yang bekerja dengan andal dan yang dapat memenuhi harapan pelanggan dan yang memproses informasi dengan cara yang efisien. Sebuah titik yang harus diperhatikan tentang bidang ini adalah bahwa meskipun menggabungkan pemrograman, ia juga melihat ke dalam faktor-faktor seperti memahami persyaratan klien, merancang prinsip dan pengujian untuk memastikan bahwa aplikasi sesuai dengan standar yang telah ditetapkan.

Mengapa Kita Membutuhkan Rekayasa Perangkat Lunak?

Untuk memahami kebutuhan untuk rekayasa perangkat lunak, kita harus berhenti sejenak untuk melihat kembali sejarah komputasi terkini. Sejarah ini akan membantu kita memahami masalah yang mulai menjadi jelas pada akhir tahun enam puluhan dan awal tujuh puluhan, dan solusi yang telah mengarah pada penciptaan bidang rekayasa perangkat lunak. Masalah-masalah ini disebut oleh beberapa orang sebagai "Krisis perangkat lunak," dinamakan demikian untuk gejala-gejala masalah. Situasi ini mungkin juga disebut "Kompleksitas Penghalang," dinamakan demikian untuk penyebab utama masalah. Beberapa merujuk pada krisis perangkat lunak dalam bentuk lampau. Krisis masih jauh dari selesai, tetapi berkat pengembangan banyak teknik baru yang sekarang termasuk di bawah judul rekayasa perangkat lunak, kami telah membuat dan terus membuat kemajuan.

Pada hari-hari awal komputasi perhatian utama adalah dengan membangun atau memperoleh perangkat keras. Perangkat lunak hampir diharapkan untuk mengurus dirinya sendiri. Konsensus menyatakan bahwa "perangkat keras" "sulit" diubah, sementara "perangkat lunak" adalah "lunak", atau mudah diubah. Menurutnya, kebanyakan orang di industri ini dengan hati-hati merencanakan pengembangan perangkat keras tetapi sangat kurang mempertimbangkan peranti lunak. Jika perangkat lunak tidak berfungsi, mereka percaya, itu akan cukup mudah untuk mengubahnya sampai berhasil. Dalam hal ini, mengapa melakukan upaya untuk merencanakan?

Biaya perangkat lunak sebesar sebagian kecil dari biaya perangkat keras yang tidak seorang pun menganggapnya sangat penting untuk mengelola perkembangannya. Setiap orang, bagaimanapun, melihat pentingnya menghasilkan program yang efisien dan berlari cepat karena ini menghemat waktu pada perangkat keras yang mahal. Waktu orang diasumsikan menghemat waktu mesin. Membuat proses orang yang efisien menjadi prioritas kecil.

Pendekatan ini terbukti memuaskan pada hari-hari awal komputasi, ketika perangkat lunaknya sederhana. Namun, ketika komputasi matang, program menjadi lebih kompleks dan proyek semakin besar sedangkan program sejak itu secara rutin ditentukan, ditulis, dioperasikan, dan dipelihara semua oleh orang yang sama, program mulai dikembangkan oleh tim programmer untuk memenuhi harapan orang lain.

Upaya individu memberi jalan untuk upaya tim. Komunikasi dan koordinasi yang pernah berlangsung di kepala satu orang harus terjadi di antara kepala banyak orang, membuat keseluruhan proses menjadi jauh lebih rumit. Akibatnya, komunikasi, manajemen, perencanaan dan dokumentasi menjadi sangat penting.

Pertimbangkan analogi ini: seorang tukang kayu mungkin bekerja sendiri untuk membangun rumah sederhana untuk dirinya sendiri tanpa lebih dari konsep umum sebuah rencana. Dia bisa menyelesaikan masalah atau membuat penyesuaian saat pekerjaan berlangsung. Begitulah cara program awal ditulis. Tetapi jika rumah lebih rumit, atau jika dibangun untuk orang lain, tukang kayu harus merencanakan dengan lebih hati-hati bagaimana rumah itu akan dibangun. Rencana perlu ditinjau ulang dengan pemilik masa depan sebelum konstruksi dimulai. Dan jika rumah itu dibangun oleh banyak tukang kayu, seluruh proyek pasti harus direncanakan sebelum pekerjaan dimulai sehingga ketika seorang tukang kayu membangun satu bagian rumah, yang lain tidak membangun sisi lain dari rumah yang berbeda. Penjadwalan menjadi elemen kunci sehingga kontraktor semen menuangkan dinding ruang bawah tanah sebelum tukang kayu memulai framing. Karena rumah menjadi lebih kompleks dan lebih banyak pekerjaan orang harus dikoordinasikan, cetak biru dan rencana manajemen diperlukan.

Ketika program menjadi lebih kompleks, metode awal yang digunakan untuk membuat cetak biru (flowchart) tidak lagi memuaskan untuk mewakili kompleksitas yang lebih besar ini. Dan dengan demikian menjadi sulit bagi satu orang yang membutuhkan program yang ditulis untuk disampaikan kepada orang lain, programmer, apa yang diinginkan, atau bagi programmer untuk menyampaikan satu sama lain apa yang mereka lakukan. Bahkan, tanpa metode representasi yang lebih baik, menjadi sulit bahkan bagi seorang programmer untuk melacak apa yang dia lakukan.

Waktu yang dibutuhkan untuk menulis program dan biayanya mulai melebihi untuk semua perkiraan. Tidaklah aneh bagi sistem untuk membayar lebih dari dua kali apa yang telah diperkirakan dan untuk mengambil minggu, bulan atau tahun lebih lama dari yang diperkirakan selesai. Sistem yang diserahkan kepada klien sering kali tidak berfungsi dengan benar karena uang atau waktu telah habis sebelum program dapat dibuat untuk bekerja sesuai dengan tujuan semula. Atau program itu sangat rumit sehingga setiap upaya untuk memperbaiki masalah menghasilkan lebih banyak masalah daripada yang diperbaiki. Ketika klien akhirnya melihat apa yang mereka dapatkan, mereka sering mengubah pikiran mereka tentang apa yang mereka inginkan. Setidaknya satu proyek sistem perangkat lunak militer yang sangat besar seharga beberapa ratus juta dolar ditinggalkan karena tidak pernah bisa dibuat berfungsi dengan baik.

Kualitas program juga menjadi perhatian besar. Karena komputer dan program mereka digunakan untuk tugas-tugas yang lebih penting, seperti memantau peralatan pendukung kehidupan, kualitas program mendapatkan arti baru. Karena kami telah meningkatkan ketergantungan kami pada komputer dan dalam banyak kasus tidak bisa lagi berjalan tanpanya, kami menemukan betapa pentingnya mereka bekerja dengan benar.

Membuat perubahan dalam program yang kompleks ternyata sangat mahal. Seringkali bahkan untuk membuat program melakukan sesuatu yang sedikit berbeda sangat sulit sehingga lebih mudah untuk membuang program lama dan memulai dari awal. Ini, tentu saja, mahal. Bagian dari evolusi dalam pendekatan rekayasa perangkat lunak adalah belajar untuk mengembangkan sistem yang dibangun cukup baik pertama kalinya sehingga perubahan sederhana dapat dibuat dengan mudah.

Pada saat yang sama, perangkat keras berkembang semakin murah. Tabung digantikan oleh transistor dan transistor diganti dengan sirkuit terintegrasi hingga komputer mikro yang harganya kurang dari tiga ribu dolar telah menjadi beberapa juta dolar. Sebagai indikasi seberapa cepat perubahan terjadi, biaya sejumlah komputasi tertentu berkurang satu setengah setiap dua tahun. Mengingat penataan kembali ini, waktu dan biaya untuk mengembangkan perangkat lunak tidak lagi begitu kecil, dibandingkan dengan perangkat keras, yang dapat diabaikan.

Ketika biaya perangkat keras merosot, perangkat lunak terus ditulis oleh manusia, yang upahnya meningkat. Penghematan dari peningkatan produktivitas dalam pengembangan perangkat lunak dari penggunaan assembler, kompiler, dan sistem manajemen basis data tidak berjalan secepat penghematan biaya perangkat keras. Memang, hari ini biaya perangkat lunak tidak hanya tidak bisa lagi diabaikan, mereka telah menjadi lebih besar dari biaya perangkat keras. Beberapa perkembangan saat ini, seperti bahasa nonprocedural (generasi keempat) dan penggunaan kecerdasan buatan (generasi kelima), menunjukkan janji peningkatan produktivitas pengembangan perangkat lunak, tetapi kami baru mulai melihat potensi mereka.

Masalah lain adalah bahwa di masa lalu program sering sebelum sepenuhnya dipahami apa yang perlu dilakukan oleh program. Begitu program telah ditulis, klien mulai mengungkapkan ketidakpuasan. Dan jika klien tidak puas, akhirnya produser juga tidak senang. Seiring berjalannya waktu, para pengembang perangkat lunak belajar menyusun kertas dan pensil tepat seperti yang mereka inginkan sebelum memulai. Kemudian mereka dapat meninjau rencana bersama klien untuk melihat apakah mereka memenuhi harapan klien. Lebih sederhana dan lebih murah untuk membuat perubahan pada versi kertas dan pensil ini daripada membuatnya setelah sistem dibuat. Menggunakan perencanaan yang baik akan memperkecil kemungkinan perubahan yang harus dilakukan setelah program selesai.

Sayangnya, sampai beberapa tahun yang lalu, tidak ada metode representasi yang baik untuk menggambarkan sistem yang memuaskan sesompleks yang sedang dikembangkan saat ini. Satu-satunya representasi yang baik tentang bagaimana produk akan terlihat adalah produk jadi itu sendiri. Pengembang tidak dapat menunjukkan kepada klien apa yang mereka rencanakan. Dan klien tidak dapat melihat apakah perangkat lunak apa yang mereka inginkan sampai akhirnya dibangun. Maka itu terlalu mahal untuk berubah.

Sekali lagi, pertimbangkan analogi konstruksi bangunan. Seorang arsitek dapat menggambar denah lantai. Klien biasanya dapat memperoleh pemahaman tentang apa yang telah direncanakan arsitek dan memberi umpan balik, apakah itu sesuai. Denah lantai cukup mudah bagi orang awam untuk memahami karena kebanyakan orang akrab dengan gambar yang mewakili objek geometris. Arsitek dan klien berbagi konsep umum tentang ruang dan geometri. Tetapi insinyur perangkat lunak harus mewakili bagi klien sistem yang melibatkan logika dan pemrosesan informasi. Karena mereka belum memiliki bahasa konsep umum, perancang perangkat lunak harus mengajarkan bahasa baru kepada klien sebelum mereka dapat berkomunikasi.

Selain itu, penting bahwa bahasa ini sederhana sehingga dapat dipelajari dengan cepat.

5 Aturan Rekayasa Kualitas Perangkat Lunak Yang Tidak Harus Anda Lewatkan

Proses transformasi digital telah melihat peningkatan kompleksitas perangkat lunak. Hal ini disebabkan oleh fakta bahwa aplikasi perangkat lunak harus bekerja dalam lingkungan multi-dimensi yang terdiri dari proses, perangkat, jaringan, sistem operasi, kerangka kerja, server, IDE, dan lainnya. Selain itu, setiap komponen lingkungan dapat dibagi lagi sehingga meningkatkan kompleksitasnya. Teknologi berubah dengan sangat cepat dan setiap perangkat lunak yang dibangun di atasnya harus bekerja pada tingkat optimalnya. Antarmuka perangkat lunak untuk teknologi seperti cloud, mobilitas, data besar, dan analitik, AI atau IoT harus cukup kuat untuk memberikan kualitas dan memenuhi harapan pengguna.

Mengingat peningkatan kompleksitas perangkat lunak, perubahan teknologi dan dinamika perilaku pengguna yang berubah, kualitas perangkat lunak atau aplikasi harus kedudukan tertinggi. Untuk memastikan kualitas perangkat lunak di seluruh dimensi, paradigma dan disiplin, proses jaminan kualitas perlu mengalami perubahan. Ini bukan lagi tentang pengujian perangkat lunak saja, tetapi menerapkan rekayasa kualitas perangkat lunak. Idenya bukan hanya tentang mengidentifikasi gangguan selama fase pengujian tetapi menghilangkan mereka sama sekali selama tahap desain dan pengembangan.

Apa itu rekayasa kualitas perangkat lunak?

Berbeda dengan pengujian perangkat lunak yang melibatkan pengujian fungsi-fungsi spesifik atau bagian-bagian perangkat lunak terhadap hasil yang telah ditetapkan, rekayasa perangkat lunak QA jauh lebih beragam dan mencakup semua. Seorang insinyur kualitas perangkat lunak bekerja dengan tim pengembangan untuk merancang dan mengembangkan kode sumber. Dia melakukan tugas-tugas lain yang bersekutu seperti menguji, mengintegrasikan dan menggunakan perangkat lunak.

Seorang analis QA dari perusahaan rekayasa kualitas sebagai bagian dari tanggung jawabnya menetapkan tujuan pengujian yang dapat diverifikasi. Dia melakukannya dengan berkonsultasi dengan semua pemangku kepentingan. Teknisi kualitas perangkat lunak mengawasi seluruh SDLC dan menciptakan budaya berkualitas di mana setiap pemangku kepentingan sadar akan sasaran mutu. Filosofi yang mendasari QA engineering adalah untuk bekerja pada kode pada tahap perancangan untuk menghilangkan gangguan atau kerentanan.

Selain itu, insinyur kualitas perangkat lunak memastikan pengiriman perangkat lunak dalam batasan waktu. Penerapan aplikasi perangkat lunak yang tepat waktu sangat membantu dalam memenuhi harapan pelanggan. Khususnya, rekayasa perangkat lunak QA mencakup semua termasuk pengujian perangkat lunak juga.

Lima aturan rekayasa kualitas perangkat lunak

Pendekatan teknik QA telah bergerak menuju pengujian kiri-kiri. Istilah ini berarti menguji kode secara ketat selama fase pengembangan untuk mengidentifikasi dan menghilangkan gangguan. Lima aturan yang harus diikuti oleh insinyur QA untuk keberhasilan penerapan proses rekayasa kualitas adalah:

1. Pengujian fungsional: Proses ini melibatkan pengujian UI dan API untuk melihat apakah mereka memenuhi spesifikasi desain. Latihan pengujian otomatisasi ini memvalidasi fungsi inti, input, instalasi, dan menu. Untuk mengilustrasikan lebih jauh, pengujian fungsional mencakup

  • Memeriksa kolom input dengan memasukkan data yang terdiri dari string, karakter khusus, karakter tambahan dan skrip non-Latin

  • Memeriksa fungsionalitas API dasar dan parameter aplikasi inti terhadap hasil yang ditentukan sebelumnya

  • Menyiapkan aplikasi pada komputer lokal yang berjalan pada sistem operasi yang berbeda

  • Memeriksa fungsi teks seperti menyalin, menempel, dan mengedit

  • Memeriksa jalan pintas dengan menggunakan tombol panas

2. Ulasan rekan kode: Kode sumber harus ditinjau oleh insinyur uji lain untuk mendapatkan perspektif yang lebih baik. Namun, disarankan untuk mengikuti latihan pengujian fungsional dasar sebelum pergi untuk peer review.

3. Analisis kode statis: Gunakan alat khusus untuk mencari keamanan dan kerentanan lainnya. Alat tersebut dapat memeriksa kode statis tanpa benar-benar mengeksekusinya. Lakukan analisis kode statis untuk memeriksa apakah kode memenuhi standar pengkodean yang diperlukan atau sesuai dengan peraturan keamanan.

4. Pengujian unit: Proses ini melibatkan pemeriksaan unit yang terdiri dari komponen, kelas atau metode terhadap input yang valid atau tidak valid. Dalam lingkungan DevOps, tes unit harus dilakukan setiap kali perubahan dilakukan pada kode. Pastikan tes unit menjadi luas untuk memangkas gangguan sejak awal. Proses ini dapat menggunakan virtualisasi dengan masukan input boneka untuk memeriksa setiap skenario pengujian.

5. Pengujian kinerja pengguna: Pengujian harus melibatkan satu pengguna dan memeriksa beban dan masalah kinerja. Area pengujian harus mencakup pengujian aplikasi untuk pemuatan dan eksekusi yang lebih cepat.

Kesimpulan

Lima aturan utama dari Rekayasa Kualitas memastikan bahwa kode memenuhi tujuan bisnis yang diinginkan dan harapan pengguna. Apa saja perusahaan rekayasa berkualitas akan lebih baik untuk memasukkan lima aturan utama dalam strateginya. Dengan demikian, perusahaan membantu menghapus gangguan pada tahap pengembangan perangkat lunak. Ini mengarah pada penyebaran perangkat lunak berkualitas lebih baik dalam batasan waktu dan anggaran.