Skip to main content

Sifat Perangkat Lunak Menurut Roger S. Pressman

Perangkat lunak saat ini memiliki peran ganda sebagai produk dan sarana untuk mengirimkan produk. Sebagai produk, perangkat lunak memiliki potensi komputasi yang bergantung pada perangkat keras komputer atau jaringan komputer yang dapat diakses melalui perangkat keras lokal seperti ponsel atau komputer mainframe. Sebagai transformator informasi, perangkat lunak dapat menghasilkan, mengelola, memperoleh, memodifikasi, menampilkan, atau mengirimkan informasi dari berbagai sumber independen, termasuk presentasi multimedia yang kompleks. Sebagai sarana untuk mengirimkan produk, perangkat lunak berfungsi sebagai dasar untuk pengendalian komputer (sistem operasi), komunikasi informasi (jaringan), dan pembuatan serta pengendalian program lain (alat dan lingkungan perangkat lunak). 

Perangkat lunak memberikan kontribusi paling penting dalam hal informasi pada zaman kita saat ini. Perangkat lunak ini dapat mengubah data pribadi seperti transaksi keuangan individu agar data tersebut lebih bermanfaat dalam konteks lokal. Selain itu, perangkat lunak juga dapat mengelola informasi bisnis untuk meningkatkan daya saing. Selain itu, perangkat lunak menyediakan akses ke jaringan informasi di seluruh dunia seperti Internet, serta menyediakan sarana untuk memperoleh informasi dalam berbagai bentuknya.

Dalam setengah abad terakhir, peran perangkat lunak komputer telah mengalami perubahan yang signifikan. Perkembangan pesat pada kinerja perangkat keras, perubahan besar dalam arsitektur komputasi, meningkatnya kapasitas memori dan penyimpanan, serta peningkatan variasi pilihan input dan output yang tidak lazim, semuanya berkontribusi pada percepatan sistem komputer yang semakin canggih dan kompleks. Meskipun sistem yang canggih dan kompleks dapat memberikan hasil yang luar biasa ketika berhasil, namun pada saat yang sama, juga dapat menimbulkan masalah besar bagi mereka yang membangun sistem yang kompleks tersebut.

Dalam perekonomian industri dunia saat ini, industri perangkat lunak yang sangat besar telah menjadi faktor dominan. Tim spesialis perangkat lunak yang terdiri dari orang-orang yang memiliki fokus pada bidang teknologi tertentu yang diperlukan untuk mengembangkan aplikasi yang kompleks telah menggantikan pemrogram tunggal yang menjadi kebiasaan di era sebelumnya. Namun, meskipun teknologi yang digunakan telah berubah, pertanyaan yang sama masih tetap muncul saat membangun sistem berbasis komputer modern:
  • Apa yang menyebabkan perangkat lunak memakan waktu yang cukup lama untuk diselesaikan?
  • Apa yang menyebabkan biaya pengembangan menjadi begitu tinggi?
  • Mengapa tidak mungkin bagi kami untuk menemukan semua kesalahan sebelum memberikan perangkat lunak kepada pelanggan?
  • Apa yang membuat kita mengeluarkan banyak waktu dan upaya untuk menjaga program yang sudah ada?
  • Mengapa kami selalu mengalami kesulitan dalam mengukur kemajuan ketika perangkat lunak sedang dalam proses pengembangan atau pemeliharaan?
Banyak pertanyaan, termasuk yang disebutkan di atas, mencerminkan kekhawatiran tentang perangkat lunak dan cara pengembangannya yang mendorong adopsi praktik rekayasa perangkat lunak.

1.1 Defining Software

Pada saat ini, banyak dari para profesional dan anggota masyarakat umum merasa bahwa mereka sudah memahami perangkat lunak. Namun, apakah benar-benar demikian?

Sebuah deskripsi buku teks mengenai perangkat lunak mungkin memiliki format seperti ini:

"Perangkat lunak adalah: (1) kumpulan instruksi (program komputer) yang ketika dijalankan memberikan fitur, fungsi, dan kinerja yang diinginkan; (2) struktur data yang memungkinkan program untuk memanipulasi informasi secara setara, dan (3) informasi deskriptif yang menjelaskan operasi dan penggunaan program dalam bentuk hard copy maupun virtual."

Tidak diragukan lagi bahwa definisi yang lebih komprehensif dapat disediakan.

Meskipun definisi formal yang lebih terperinci mungkin dapat diberikan, hal itu tidak selalu meningkatkan pemahaman Anda secara signifikan. Sebaliknya, untuk memahami perangkat lunak dengan lebih baik, kita harus mempertimbangkan karakteristik unik yang membedakannya dari benda buatan manusia lainnya. Berbeda dengan sistem fisik, perangkat lunak lebih bersifat logis, sehingga memiliki ciri-ciri yang berbeda dengan perangkat keras:

  • Perangkat lunak dibuat atau dirancang; tidak diproduksi dalam arti tradisional. 
  • Meskipun terdapat beberapa kesamaan antara pengembangan perangkat lunak dan pembuatan perangkat keras, kedua kegiatan tersebut secara mendasar berbeda. Kualitas yang baik dicapai melalui desain yang baik dalam kedua kegiatan, namun fase pembuatan perangkat keras dapat menimbulkan masalah kualitas yang tidak muncul atau lebih mudah diperbaiki dibandingkan dengan perangkat lunak. Kedua kegiatan ini tergantung pada orang, namun hubungan antara pelaku dan pekerjaan yang dilakukan berbeda. Meskipun keduanya memerlukan pembuatan "produk", pendekatannya berbeda. Biaya pengembangan perangkat lunak terpusat pada rekayasa, sehingga proyek pengembangan perangkat lunak tidak bisa dikelola seperti proyek manufaktur.

  • Perangkat lunak tidak memiliki masa kadaluarsa.
  • Gambar 1.1

    Dalam Gambar 1.1 terlihat bahwa tingkat kegagalan perangkat keras sangat bergantung pada waktu penggunaannya. Hubungan ini dikenal sebagai "bathtub curve". Pada awal masa pakai, tingkat kegagalan cenderung lebih tinggi karena kesalahan desain atau manufaktur, tetapi setelah perbaikan dilakukan, tingkat kegagalan menjadi lebih stabil dan relatif rendah selama beberapa waktu. Namun, seiring berjalannya waktu, tingkat kegagalan kembali meningkat karena akumulasi kerusakan dari faktor lingkungan seperti debu, getaran, penyalahgunaan, suhu yang ekstrem, dan lain-lain. Dalam kata lain, perangkat keras akan mengalami kerusakan karena penggunaannya secara terus-menerus.

    Dibandingkan dengan perangkat keras, perangkat lunak tidak rentan terhadap penyakit lingkungan yang menyebabkan kerusakan perangkat keras. Oleh karena itu, secara teori, kurva tingkat kegagalan untuk perangkat lunak harus mengikuti "idealized curve" yang ditunjukkan pada Gambar 1.2. Awalnya, cacat yang belum terdeteksi dapat menyebabkan tingkat kegagalan yang tinggi pada program, tetapi cacat tersebut kemudian diperbaiki sehingga kurva tingkat kegagalan turun menjadi lebih stabil. Walaupun kurva ideal tersebut terlalu disederhanakan, implikasinya adalah bahwa perangkat lunak tidak akan menjadi usang. Meskipun demikian, kualitas perangkat lunak dapat memburuk seiring berjalannya waktu.

    Gambar 1.2

    Dapat dijelaskan dengan baik dengan mempertimbangkan kurva sebenarnya pada Gambar 1.2 bahwa kontradiksi yang terlihat. Ketika perangkat lunak mengalami perubahan selama masa hidupnya, kemungkinan kesalahan diperkenalkan dan menyebabkan lonjakan pada kurva tingkat kegagalan, seperti yang ditunjukkan pada "actual curve" di Gambar 1.2. Sebelum kurva dapat kembali ke tingkat kegagalan kondisi-mapan semula, perubahan lain diminta yang mengakibatkan lonjakan pada kurva tersebut. Lama-kelamaan, tingkat kegagalan minimum mulai meningkat, dan perangkat lunak memburuk karena adanya perubahan.

    Perbedaan antara perangkat keras dan perangkat lunak dapat dijelaskan melalui aspek keausan yang berbeda. Ketika komponen perangkat keras aus, dapat diganti dengan suku cadang. Namun, perangkat lunak tidak memiliki suku cadang yang dapat diganti. Setiap kegagalan perangkat lunak menunjukkan adanya kesalahan dalam desain atau dalam proses penerjemahan desain ke dalam kode yang dapat dieksekusi mesin. Oleh karena itu, pemeliharaan perangkat lunak yang mengakomodasi permintaan perubahan jauh lebih kompleks dibandingkan dengan pemeliharaan perangkat keras.

  • Walau pun industri menuju ke arah konstruksi berbasis komponen, sebagian besar perangkat lunak masih dibangun sesuai dengan permintaan.
  • Dalam perkembangan disiplin teknik, diciptakanlah koleksi komponen desain standar. Ada ribuan komponen standar yang dapat digunakan oleh insinyur mekanik dan listrik dalam merancang sistem baru, termasuk sekrup standar dan sirkuit terpadu siap pakai. Komponen yang dapat digunakan kembali dibuat untuk memungkinkan insinyur berfokus pada elemen desain yang benar-benar inovatif, seperti bagian dari desain yang mewakili sesuatu yang baru. Di dunia perangkat keras, penggunaan kembali komponen sudah menjadi bagian alami dari proses rekayasa, namun di dunia perangkat lunak, ini masih menjadi hal yang baru dan baru mulai dicapai secara luas.

    Perancang perangkat lunak harus membuat komponen yang dapat digunakan kembali di banyak program. Komponen modern yang dapat digunakan kembali meliputi data dan pemrosesan data, yang memungkinkan insinyur perangkat lunak membuat aplikasi baru dari komponen yang sudah ada. Sebagai contoh, antarmuka pengguna interaktif saat ini dibuat dengan komponen yang dapat digunakan kembali seperti jendela grafis, menu tarik-turun, dan mekanisme interaksi lainnya. Struktur data dan detail pemrosesan yang diperlukan untuk membangun antarmuka terkandung dalam pustaka komponen yang dapat digunakan kembali untuk membangun antarmuka.


    1.2 Software Application Domains

    Sekarang ini, ada tujuh kategori besar perangkat lunak komputer yang menimbulkan tantangan yang berkelanjutan bagi insinyur perangkat lunak: 

    • Kategori pertama adalah perangkat lunak sistem, yang terdiri dari kumpulan program yang ditulis untuk melayani program lainnya. Beberapa perangkat lunak sistem memproses struktur informasi yang kompleks tetapi pasti, sedangkan yang lain memproses data yang tidak pasti. Kategori ini dicirikan oleh interaksi yang berat dengan perangkat keras komputer, penggunaan berat oleh banyak pengguna, operasi bersamaan yang membutuhkan penjadwalan, pembagian sumber daya, manajemen proses yang canggih, struktur data yang kompleks, dan beberapa antarmuka eksternal.
    • Kategori kedua adalah perangkat lunak aplikasi, yaitu program berdiri sendiri yang digunakan untuk memecahkan kebutuhan bisnis tertentu. Perangkat lunak aplikasi digunakan untuk memproses data bisnis atau teknis untuk memfasilitasi operasi bisnis atau manajemen/pengambilan keputusan teknis. Selain aplikasi pemrosesan data konvensional, perangkat lunak aplikasi juga digunakan untuk mengontrol fungsi bisnis secara real-time.
    • Kategori ketiga adalah perangkat lunak teknik/ilmiah, yang dicirikan oleh algoritme "pengolah angka". Aplikasi dalam kategori ini berkisar dari astronomi hingga vulkanologi, dari analisis tegangan otomotif hingga dinamika orbit pesawat ulang-alik, dan dari biologi molekuler hingga manufaktur otomatis. Namun, aplikasi modern dalam bidang teknik/ilmiah telah mulai menggunakan karakteristik perangkat lunak sistem waktu-nyata dan bahkan telah menjauh dari algoritme numerik konvensional.
    • Kategori keempat adalah perangkat lunak tertanam, yang terdapat di dalam produk atau sistem dan digunakan untuk mengimplementasikan dan mengontrol fitur dan fungsi untuk pengguna akhir dan untuk sistem itu sendiri. Perangkat lunak tertanam dapat melakukan fungsi terbatas dan esoteris atau menyediakan fungsi dan kemampuan kontrol yang signifikan.
    • Kategori kelima adalah perangkat lunak lini produk, yang dirancang untuk memberikan kemampuan khusus untuk digunakan oleh banyak pelanggan yang berbeda. Perangkat lunak lini produk dapat berfokus pada pasar terbatas dan esoterik atau mengatasi pasar konsumen massal.
    • Kategori keenam adalah aplikasi web, yang mencakup berbagai jenis perangkat lunak berbasis jaringan. Dalam bentuknya yang paling sederhana, aplikasi web dapat berupa sekumpulan file hypertext tertaut yang menyajikan informasi menggunakan teks dan grafik terbatas. Namun, aplikasi web modern telah berkembang menjadi lingkungan komputasi canggih yang tidak hanya menyediakan fitur, fungsi komputasi, dan konten yang berdiri sendiri untuk pengguna akhir, tetapi juga terintegrasi dengan database perusahaan dan aplikasi bisnis.
    • Kategori ketujuh adalah perangkat lunak kecerdasan buatan menggunakan algoritme non-numerik untuk menyelesaikan masalah kompleks yang tidak dapat dipecahkan melalui komputasi atau analisis langsung. Aplikasi dalam kategori ini meliputi robotika, sistem pakar, pengenalan pola (gambar dan suara), jaringan saraf tiruan, pembuktian teorema, dan permainan game.
    Para insinyur perangkat lunak di seluruh dunia sedang bekerja keras pada proyek perangkat lunak di salah satu atau lebih kategori besar. Beberapa sedang membangun sistem baru sementara yang lainnya sedang meningkatkan dan memperbaiki aplikasi yang sudah ada. Seiring waktu, seorang insinyur perangkat lunak muda mungkin akan bekerja pada program yang dibuat oleh generasi sebelumnya. Setiap generasi telah meninggalkan jejak dalam setiap kategori perangkat lunak yang ada dan harapannya, jejak tersebut dapat membantu insinyur perangkat lunak masa depan. Namun, meskipun begitu, tantangan baru selalu muncul di cakrawala:
    • Open-world computing, Dalam waktu dekat, jaringan nirkabel yang berkembang pesat akan memungkinkan terjadinya komputasi terdistribusi yang meluas. Para insinyur perangkat lunak memiliki tantangan dalam mengembangkan sistem dan aplikasi perangkat lunak yang dapat memfasilitasi komunikasi antara perangkat seluler, komputer pribadi, dan sistem perusahaan melalui jaringan yang luas.
    • Netsourcing, Dalam waktu singkat, World Wide Web telah berkembang menjadi suatu mesin komputasi dan sumber konten. Para insinyur perangkat lunak dihadapkan dengan tantangan untuk mengembangkan aplikasi yang mudah dipahami dan diperlakukan, seperti perencanaan keuangan pribadi, dan pada saat yang sama menghasilkan manfaat yang signifikan bagi pasar pengguna akhir di seluruh dunia.
    • Open source, Salah satu tren yang semakin populer adalah distribusi kode sumber untuk aplikasi sistem (seperti sistem operasi, database, dan lingkungan pengembangan), yang memungkinkan lebih banyak orang untuk berpartisipasi dalam pengembangan perangkat lunak tersebut. Tantangan bagi para insinyur perangkat lunak adalah membuat kode sumber yang mudah dipahami dan dikenali, serta mengembangkan teknik yang memungkinkan pelanggan dan pengembang untuk memahami perubahan yang dilakukan dan dampaknya pada perangkat lunak.
    Setiap tantangan baru yang muncul akan memiliki dampak yang tidak diinginkan dan sulit diprediksi bagi pelaku bisnis, insinyur perangkat lunak, dan pengguna akhir. Meskipun demikian, para insinyur perangkat lunak dapat mempersiapkan diri dengan cara mengadopsi proses yang fleksibel dan mudah beradaptasi untuk mengatasi perubahan teknologi dan aturan bisnis yang signifikan yang mungkin muncul dalam dekade mendatang.

    1.3 Legacy Software

    Ada ratusan ribu program komputer yang masuk ke dalam tujuh domain aplikasi yang dibahas di bagian sebelumnya. Sebagian besar program ini adalah aplikasi canggih yang baru dirilis untuk pengguna individu, industri, dan pemerintah. Namun, ada juga program yang sudah ada selama bertahun-tahun, bahkan beberapa di antaranya sudah sangat usang.

    Sejak tahun 1960-an, program-program komputer lama, yang sering disebut sebagai legacy software, telah menarik perhatian yang terus menerus. Menurut Dayani-Fard dan rekan-rekannya, legacy software ini telah dijelaskan sebagai: 

    "Lecacy Software, yang dikembangkan beberapa dekade yang lalu, terus dimodifikasi untuk menjawab perubahan kebutuhan bisnis dan platform komputasi."

    Liu dan timnya memperluas penjelasan ini dengan menyatakan bahwa "sebagian besar Legacy Software masih sangat dibutuhkan untuk menjalankan fungsi bisnis inti dan sangat penting bagi bisnis." Karena itu, Legacy Software memiliki umur yang panjang dan penting dalam menjalankan bisnis.

    Legacy Software memiliki karakteristik tambahan yang kurang menguntungkan seperti kualitas yang buruk. Beberapa sistem lama memiliki desain yang tidak dapat diperluas, kode yang rumit, kurangnya atau tidak adanya dokumentasi, dan kurangnya pengarsipan kasus uji dan hasil, serta pengelolaan riwayat perubahan yang buruk. Namun, meskipun demikian, sistem ini masih mendukung "fungsi inti bisnis dan sangat diperlukan untuk bisnis". Pertanyaannya adalah bagaimana mengatasinya?

    Satu-satunya solusi yang masuk akal adalah tidak melakukan tindakan apa pun, setidaknya sampai sistem lama mengalami perubahan yang signifikan. Jika Legacy Software memenuhi kebutuhan penggunanya dan berjalan secara andal, maka perangkat lunak tersebut tidak rusak dan tidak memerlukan perbaikan. Namun, seiring berjalannya waktu, sistem warisan sering mengalami perkembangan karena satu atau beberapa alasan sebagai berikut:

    • Perlu dilakukan penyesuaian pada perangkat lunak agar sesuai dengan tuntutan lingkungan atau teknologi komputasi terbaru.
    • Perlu dilakukan peningkatan pada perangkat lunak agar dapat memenuhi persyaratan bisnis yang baru.
    • Perangkat lunak harus ditingkatkan agar dapat terintegrasi dengan sistem atau database yang lebih modern dan baru.
    • Diperlukan perubahan desain pada perangkat lunak agar sesuai dengan lingkungan jaringan.
    Ketika terjadi evolusi, sistem perangkat lunak warisan harus di-rekayasa agar tetap sesuai kebutuhan di masa depan. Tujuan dari rekayasa perangkat lunak modern adalah menciptakan metodologi yang berbasis pada gagasan evolusi, yaitu bahwa sistem perangkat lunak selalu berkembang, perangkat lunak baru dibangun dari perangkat lunak lama, dan semuanya harus saling beroperasi dan bekerja sama satu sama lain.



    Source: Pressman, Roger S. 2010. Software engineering : A Practitioner’s Approach (7th. Edition). New York: McGraw-Hill Higher Education.

    Comments

    Popular posts from this blog

    Proses Perangkat Lunak Menurut Roger S. Pressman

    Suatu proses adalah gabungan dari beberapa kegiatan, aksi, dan pekerjaan yang dikerjakan saat akan membuat beberapa produk. Setiap kegiatan memiliki tujuan yang luas (seperti komunikasi dengan pemangku kepentingan) dan diterapkan secara universal, tidak peduli pada domain aplikasi, ukuran proyek, kompleksitas usaha, atau tingkat ketelitian rekayasa perangkat lunak yang digunakan. Aksi (contohnya, desain arsitektur) mencakup rangkaian tugas yang menghasilkan produk utama (sebagai contoh, model desain arsitektural). Sebuah tugas berfokus pada tujuan yang kecil namun terdefinisi dengan baik (seperti melakukan pengujian unit) yang menghasilkan hasil yang konkret. Dalam dunia rekayasa perangkat lunak, suatu proses tidaklah berarti resep yang kaku untuk membuat perangkat lunak. Sebaliknya, proses ini merupakan pendekatan yang dapat disesuaikan yang memungkinkan tim pengembang perangkat lunak untuk memilih dan mengeksekusi serangkaian tindakan dan tugas yang sesuai. Tujuannya adalah untuk sel...

    Extreme Programming (XP) Menurut Roger S. Pressman

     Untuk memberikan gambaran yang lebih rinci tentang proses agile, saya akan memaparkan Extreme Programming (XP), suatu pendekatan yang banyak digunakan dalam pengembangan perangkat lunak agile. Meskipun ide dan metode yang terkait dengan XP telah muncul pada akhir 1980-an, Kent Beck telah menulis secara ekstensif mengenai topik ini. Baru-baru ini, sebuah varian XP yang disebut Industrial XP (IXP) telah diajukan. IXP telah menyempurnakan XP dan dirancang untuk digunakan khusus dalam organisasi besar dengan proses yang lebih fleksibel. 1.1 XP Values Sebuah seperangkat lima nilai yang menjadi dasar bagi seluruh pekerjaan yang dilakukan dalam XP telah didefinisikan oleh Beck. Nilai-nilai ini mencakup communication, simplicity, feedback, courage, dan respect, dan masing-masing nilai ini digunakan sebagai motivasi dalam aktivitas, tindakan, dan tugas XP yang spesifik. XP menekankan pada kolaborasi yang erat namun tidak formal secara verbal untuk mencapai komunikasi yang efektif anta...

    Other Agile Process Models (Model Process Agile Lainnya) Menurut Roger S. Pressman

     Sejarah pengembangan perangkat lunak telah dicatat dengan banyak deskripsi dan metodologi proses yang telah usang, alat-alat, dan teknologi, serta notasi pemodelan. Semua hal tersebut telah mencapai popularitasnya masing-masing sebelum akhirnya digantikan oleh yang baru dan lebih baik. Dalam upaya mencapai penerimaan di komunitas pengembangan perangkat lunak, berbagai agile process model telah diperkenalkan dan bersaing satu sama lain, mengikuti pola yang sama dengan gerakan sebelumnya. Sudah saya sampaikan pada bagian terakhir bahwa Extreme Programming (XP) merupakan agile process models yang paling sering digunakan. Meskipun demikian, terdapat banyak agile process models lain yang telah diusulkan dan diterapkan dalam berbagai industri. Beberapa model yang paling umum meliputi: Adaptive Software Development (ASD) Scrum Dynamic Systems Development Method (DSDM) Crystal Feature Drive Development (FDD) Lean Software Development (LSD) Agile Modeling (AM) Agile Unified Process (AUP) P...