Perbedaan Antara Software Engineering Dengan Computer Science & System Engineering


Kali ini saya mau serius lagi ahh… biar sedikit kekinian dalam soal keilmuan (dan pastinya kelihatan gaya aja :p). nah sekarang banyak program studi berbasis IT (Information Technology) di berbagai perguruan tinggi. Ada Informatika, ada ilmu komputer, ada sistem informasi dan sebagainya. Nah khususnya terkait teknik informatika dan ilmu komputer mengacu ke konsep Computer Science, Software engineering dan System engineering. Nah sampai saat ini masih banyak orang yang masih keliru dalam membedakan antara Computer Science, Software engineering dan System engineering. Masih ada yang menganggap bahwa software engineering itu adalah bagian dari Computer Science atau bahkan sebaliknya dan begitu pula dengan system engineering. Tulisan ini berusaha untuk menjelaskan perbedaan esensi dari ketiga entitas tersebut. Dengan adanya pemahaman mengenai perbedaan esensial dari ketiganya maka diharapkan pengembangan dari masing-masing pemahaman tersebut akan lebih signifikan sehingga setiap individu yang terlibat dalam pengembangannya akan lebih focus.

Untuk dapat membedakan antara computer science dengan software engineering dapat diawali dari perbedaan antara engineering dan science itu sendiri. Pada prinsipnya terdapat perbedaan antara engineering dengan science, engineering secara harfiah artinya adalah rekayasa yaitu membuat sesuatu dari tidak ada menjadi ada sementara science adalah keilmuan yang berkaitan dengan eksplorasi yang telah ada untuk diimplementasikan. Perbedaan mendasar inilah yang menjadi landasan dalam membedaan antara software engineering, computer science & System Engineering. Dapat kita bedakan bahwa rekayasa perangkat lunak memperlakukan proses sebagai cabang teknik yang sangat berbeda dengan program Computer Science. Secara klasik Computer Science mempelajari bagaimana pemindaian algoritma, kerja mesin representasi struktur data, sinkronisasi dan sebagainya. Dalam hal ini Computer Science cenderung berfokus pada “inti” dari software-nya. Program “Software Engineering” telah menjadi sumber pertentangan di banyak universitas. Untuk beberapa Departemen Computer science, banyak yang menggunakan frase untuk menjelaskan dan mengklaim bahwa rekayasa perangkat lunak sebagai bagian dari disiplin keilmuan mereka. Sementara dari sisi keteknikan beberapa fakultas teknik mengklaim “Software Engineering” sebagai spesialisasi baru dalam keluarga disiplin ilmu teknik. Bagaimana dengan keberadaan System Engineering itu sendiri? pertanyaan-pertanyaan itulah yang akan saya sampaikan dalam tulisan ini.

Apakah itu Software engineering?

Pada prinsipnya Software engineering berfokus pada bagaimana merancang dan membangun perangkat lunak dalam sebuah tim(Pressman, 1997). Pada prinsipnya untuk mempelajari rekayasa perangkat lunak akan banyak dipelajari hal yang sama sebagaimana dalam Computer Science, namun dalam perjalanannya ternyata kita memerlukan pemahaman baru mengenai topik seperti rekayasa persyaratan, arsitektur perangkat lunak, pengujian perangkat lunak, dan penyebaran perangkat lunak. Kita juga belajar bagaimana bekerja dengan orang lain, bagaimana kita belajar dalam hal komunikasi, manajemen, bekerja sama dengan non-teknis pelanggan, proses untuk mengembangkan perangkat lunak, dan bagaimana mengukur dan menganalisa produk perangkat lunak dan proses perangkat lunak. Hal ini sejalan dengan pernyataan dari David Lorge Parnas (1998):

In many places, e.g. in position advertisements, “Software Engineer” is used as a euphemism for “Programmer”. Many writers seem to assume that the sole responsibility of a software engineer is to write well structured code.

Pernyataan di atas menekankan bahwa dalam beberapa kesempatan masih banyak individu yang menyamakan “Software Engineer” dengan “Programmer”. Banyak penulis tampaknya berasumsi bahwa tanggung jawab seorang engineer perangkat lunak adalah menulis kode terstruktur dengan baik. Kondisi ini ini mencerminkan ketidaktahuan tentang sejarah dan hukum arti “engineer”. Engineer adalah seorang profesional yang bertanggung jawab untuk memproduksi produk yang cocok untuk digunakan oleh klien. Untuk memastikan bahwa suatu produk layak digunakan, membutuhkan pemahaman tentang lingkungan di mana produk itu digunakan. Akibatnya, mereka yang disebut “Software Engineers” perlu tahu banyak hal yang bukan bagian dari Computer Science.

Apakah itu Computer Science?

Computer Science mencakup konsep inti dan teknologi bagaimana membuat komputer dapat melakukan sesuatu(David Lorge Parnas,1998). Dalam hal ini kita akan mempelajari rincian tentang bagaimana komputer dan jaringannya bekerja, tetapi dengan penekanan pada cara kerja perangkat lunak dan bahasa pemrograman. kita belajar bagaimana untuk membuat mereka melakukan hal-hal yang sangat canggih (misalnya grafis, robotika, database, sistem operasi). Kita juga akan belajar tentang teori di balik hal-hal tersebut yaitu bagaimana komputer dan kinerja perangkat lunak yang bersangkutan. Dalam beberapa kasus, apa yang dipelajari dalam Computer Science mungkin membangun sebuah sistem baru, menemukan cara yang lebih baik untuk merancang sebuah perangkat lunak, atau mengembangkan algoritma baru untuk proyek-proyek di bidang yang sama sekali berbeda. Beberapa produk masa lalu yang berkaitan dengann hal ini adalah seperti pengembangan video game, pemodelan komputer dan alat animasi, dan membangun driver Linux untuk alat kendali videogame (joystick).

Apakah itu System Engineering?

Menurut Bahill dan Gissing (1998) System Engineering adalah sebuah proses interdisipliner yang memastikan kepuasan kebutuhan pelanggan dalam seluruh siklus hidup sebuah sistem. Proses ini terdiri dari tujuh tugas berikut.

  1. State The Problem. Pernyataan masalah adalah tugas yang paling penting dalam sistem rekayasa. Ini mencakup bagaimana pelanggan diidentifikasi, memahami kebutuhan pelanggan, menetapkan kebutuhan yang senantiasa berubah dan mendefinisikan fungsi sistem.
  2. Investigate Alternative. Alternatif diselidiki dan dievaluasi berdasarkan kinerja, biaya dan risiko.
  3. Model The system. Menjalankan model persyaratan menjelaskan, mengungkapkan kemacetan dan kegiatan terfragmentasi, mengurangi biaya dan mengekspos duplikasi usaha.
  4. Integrate. Integrasi berarti merancang antarmuka dan membawa elemen sistem bersama-sama sehingga mereka bekerja secara keseluruhan. Hal ini membutuhkan komunikasi dan koordinasi yang cukup luas.
  5. Launch The system. Peluncuran sistem berarti menjalankan sistem dan menghasilkan output – membuat sistem melakukan apa yang diinginkan.
  6. Assess Performance. Kinerja dinilai menggunakan kriteria evaluasi, langkah-langkah kinerja teknis dan langkah-langkah pengukuran adalah kuncinya. Jika kita tidak dapat mengukurnya, maka kita tidak dapat mengendalikannya. Jika kita tidak bisa mengendalikannya, maka kita tentu saja tidak akan bisa memperbaikinya.
  7. Re-Evaluate. Evaluasi ulang harus terus-menerus.

Untuk lebih jelasnya bagaimana langkah tersebut berjalan dalam system engineering, dapat kita lihat dalam bagan berikut ini:

system engineering process

Dengan demikian dapat kita simpulkan dan perlihatkan perbedaan esensial dari ketiga istilah di atas yaitu Software Engineering, Computer Science dan System Engineering. Software engineering adalah bagaimana merancang dan membangun sebuah perangkat lunak serta perawatan dan pengembangannya sesuai kebutuhan manusia, Computer Science adalah bagaimana ilmu dan teknologi komputer itu dieksplorasi pemanfaatannya untuk kebutuhan manusia sedangkan systen engineering bertujuan untuk menghasilkan sistem yang memenuhi kebutuhan pelanggan, meningkatkan probabilitas keberhasilan sistem, mengurangi risiko dan mengurangi total biaya siklus-hidup.

 

REFERENSI

  • David Lorge Parnas, Software Engineering Programmes are not Computer Science Programmes NSERC/Bell Industrial Research Chair in Software Engineering Department of Computing and Software Faculty of Engineering McMaster University, Hamilton, Ontario, Canada, 9 April 1998
  • Presman, Roger S., (1997) Software Engineering: A Practitioner’s Approach. McGraw Hill Book Co.
  • Ian Sommerville, (2004).Software Engineering 7th Edition”,Addison-Wesley
  • Bahill, A.T. and Gissing, B., Re-evaluating systems engineering concepts using systems thinking, IEEE Transactions on Systems, Man and Cybernetics,Part C: Applications and Reviews, Volume 28, Number 4, pp. 516-527, November 1998.
  • Ned Chapin, Joanne E. Halle, Khaled Md. Khan, Juan F. Ramil, Wui-Gee tan,(2001).Journal of Software Maintenance and evolution Research & Practice, Maint Evol.Res, Pract. 13.3-10. John Wiley & Sons, Ltd.

 


11 responses to “Perbedaan Antara Software Engineering Dengan Computer Science & System Engineering”

Leave a Reply