Sunday, April 6, 2014

Software Engineering

         Dengan posisi tenaga kerja di bidang Teknologi Informasi (TI) yang sangat bervariasi karena menyesuaikan dengan skala bisnis dan kebutuhan pasar, maka sangat sulit untuk mencari standardisasi pekerjaan di bidang ini. Tetapi setidaknya kita dapat mengklasifikasikan tenaga kerja di bidang Teknologi Informasi tersebut berdasarkan jenis dan kualifikasi pekerjaan yang ditanganinya. Berikut ini adalah penggolongan pekerjaan di bidang teknologi informasi yang berkembang belakangan ini.
Secara umum, pekerjaan di bidang Teknologi Informasi setidaknya terbagi dalam 4 kelompok sesuai bidang pekerjaannya.

a. Kelompok Pertama, adalah mereka yang bergelut di dunia perangkat lunak (software) baik mereka yang merancang sistem operasi, database maupun sistem aplikasi. Pada lingkungan kelompok ini terdapat pekerjaan-pekerjaan seperti misalnya : Sistem analis, merupakan orang yang bertugas menganalisa sistem yang akan diimplementasikan, mulai dari menganalisa sistem yang ada, tentang kelebihan dan kekurangannya, sampai studi kelayakan dan desain system yang akan dikembangkan.
• Programmer, merupakan orang yang bertugas mengimplementasikan rancangan sistem analis yaitu membuat program (baik aplikasi maupun sistem operasi) sesuai sistem yang dianalisa sebelumnya.
• Web designer adalah orang yang melakukan kegiatan perecanaan, termasuk studi kelayakan, analisis dan desain terhadap suatu proyek pembuatan aplikasi berbasis web.
• Web programmer orang yang bertugas mengimplementasikan rancangan web designer yaitu dirancang sebelumnya dan lain-lain.

b. Kelompok kedua, adalah mereka yang bergelut di perangkat keras (hardware). Pada lingkungan kelompok ini terdapat pekerjaan – pekerjaan seperti :
• Technical enginer, sering juga disebut sebagai teknisi yaitu orang yang berkecimpung dalam bidang teknik baik mengenai pemeliharaan maupun perbaikan perangkat
sistem komputer.
• Networking Engineer, adalah orang yang berkecimpung dalam bidang teknis jaringan komputer dari maintenance sampai pada troubleshooting-nya dan lain-lain.

c. Kelompok ketiga, adalah mereka yang berkecimpung dalam operasional sistem informasi. Pada lingkungan kelompok ini terdapat pekerjaan-pekerjaan seperti :
• EDP Operator, adalah orang yang bertugas untuk mengoperasikan program-program yang berhubungan dengan electronic data processing dalam lingkungan sebuah perusahaan atau organisasi lainnya.
• System Administrator, merupakan orang yang bertugas melakukan administrasi terhadap sistem, melakukan pemeliharaan sistem, memiliki kewenangan mengatur hak akses terhadap sistem, serta hal-hal lain yang berhubungan dengan pengaturan operasional sebuah sistem.
• MIS Director, merupakan orang yang memiliki wewenang paling tinggi terhadap sebuah sistem informasi, melakukan manajemen terhadap sistem tersebut secara keseluruhan baik hardware, software maupun sumber daya manusianya dan lain-lain

d. Kelompok yang keempat, adalah mereka yang berkecimpung di pengembangan bisnis Teknologi Informasi. Pada bagian ini, pekerjaan diidentifikasikan oleh pengelompokan kerja di berbagai sektor di industri Teknologi Informasi.

          Selanjutnya muncul pertanyaan, “apakah pekerjaan di bidang teknologi informasi dapat disebut sebagai sebuah profesi?”. Di depan sudah dijelaskan bahwa untuk mengatakan apakah suatu pekerjaan termasuk profesi atau bukan, maka harus diuji kriteria dari pekerjaan tersebut karena tidak semua pekerjaan adalah profesi. Demikian juga dengan pekerjaan di bidang komputer. Sebagai contoh, pekerjaan sebagai staf operator komputer (sekedar mengoperasikan), tidak masuk dalam golongan profesi jika untuk bekerja sebagai staf operator tersebut seseorang bisa dari berbagai latar belakang pendidikan, pengetahuan dan pengalaman. Sedangkan seorang software enginer dapat dikatakan sebagai sebuah profesi karena seseorang yang bekerja sebagai software enginer haruslah berpengetahuan dan memiliki pengalaman kerja di bidangnya. Mari kita lihat pekerjaan di bidang Teknologi Informasi secara lebih detail. Sebagai contoh akan dikaji apakah pekerjaan Software Engineer bisa digolongkan sebagai sebuah profesi. Software Engineer adalah melakukan aktivitas engineering (analisa, rekayasa, spesifikasi, implementasi, dan validasi) untuk menghasilkan produk berupa perangkat lunak yang digunakan untuk memecahkan masalah pada berbagai bidang. Kemudian untuk bisa melaksanakan tugas sebagai Software Engineer seseorang harus memiliki latar belakang pendidikan tertentu yang memberikan bekal untuk melakukan kerja dengan baik dan benar. Selain itu setelah lulus dari pendidikan, seorang Software Engineer juga dituntut untuk memiliki pengalaman cukup dalam pekerjaan ini melalui keikutsertaannya sebagai pekerja magang dalam proyek. Software Engineer juga harus terus memperbaharui pengetahuan dan ketrampilannya sesuai dengan
perkembangan teknologi komputer yang cepat.

         Julius Hermawan (2003), mencatat dua karakteristik yang dimiliki oleh Software Engineer sehingga pekerjaan tersebut layak disebut sebagai sebuah profesi. Dua karakteristik tersebut adalah kompetensi dan adanya tanggung jawab pribadi. Kompetensi yang dimaksud yaitu suatu sifat yang selalu menuntut profesional Software Engineer untuk memperdalam dan memperbaharui pengetahuan dan ketrampilannya sesuai dengan tuntutan profesinya. Seorang Software Engineer tidak boleh berhenti belajar karena dunia software engineering terus berkembang dan berubah dengan cepat. Profesi Software Engineer tidak melekat seumur hidup, hanya sepanjang seseorang terus mengikuti tuntutan profesinya. Dan ini sesuai dengan etika profesi yang berlaku umum bahwa hanya profesional yang berkompeten yang berhak melakukan pekerjaan di bidangnya. Kemudian yang kedua adalah tanggung jawab pribadi. Yang dimaksud yaitu kesadaran untuk membebankan hasil pekerjaannya sebagai tanggung jawab pribadi. Seorang Software Engineer untuk itu harus mengenal kemampuan dirinya, sehingga bisa mempertanggungjawabkan semua pekerjaan yang dilakukannya secara moral: selalu merekomendasikan apa adanya, melakukan pekerjaan yang menjadi bidang kompetensinya, dan mendahulukan kepentingan umum. Agar dapat melaksanakan tugas dan tanggung jawabnya secara baik dan benar, maka seorang Software Engineer perlu terus mengembangkan bidang ilmu dalam pengembangan perangkat lunak seperti misalnya :

• Bidang ilmu metodologi pengembangan perangkat lunak. Bidang imu tersebut mencakup teknik analisa masalah, desain atau perancangan sistem yang ada dan yang akan dibangun, setra implementasi pemrograman dari disain menjadi perangkat lunak siap pakai.
• Manajemen sumber daya. Bidang ilmu tentang bagaimana merencanakan, mengadakan, mengawasi, dan mengoptimalkan pemanfaatan sumber daya untuk keperluan pengembangan perangkat lunak yang dibangunnya. Mengelola kelompok kerja. Merupakan bidang ilmu manajemen dan organisasi tentang bagaimana melakukan sinergi antar komponen dalam sebuah kelompok kerja untuk mencapai tujuan tertentu.
• Komunikasi. Merupakan bidang ilmu yang mempelajari teknik komunikasi dan interaksi dengan manusia lain. Untuk itu, seorang Software Engineer idealnya merupakan seseorang yang memiliki pendidikan formal setingkat sarjana atau diploma dengan ilmu yang merupakan gabungan dari bidang-bidang seperti :
• Ilmu Komputer (Computer science)
Menurut CSAB (Computing Sciences Accreditation Board, http://www.csab.org) definisi Ilmu Komputer adalah ilmu pengetahuan yang berhubungan dengan komputer dan komputasi. Di dalamnya terdapat teoritika, eksperimen, dan pendesainan komponen, serta
termasuk didalamnya hal-hal yang berhubungan dengan:

1. Teori-teori untuk memahami komputer device, program, dan sistem.
2. Eksperimen untuk pengembangan dan pengetesan konsep
3. Metodologi desain, algoritma, dan tool untuk merealisasikannya
4. Metode analisa untuk melakukan pembuktian bahwa realisasi sudah sesuai dengan requirement yang diminta

• Teknik Rekayasa (Engineering)
Ilmu tentang rekayasa adalah ilmu yang mempelajari analisa, rekayasa, spesifikasi, implementasi, dan validasi) untuk menghasilkan produk (dalam hal ini perangkat lunak) yang digunakan untuk memecahkan masalah pada berbagai bidang. Software engineering menitik beratkan teknik rekayasa tersebut dalam pendekatan/metode analisa pemecahan masalah
• Teknik Industri (Industrial engineering)
Teknik industri merupakan bidang ilmu teknik yang mempelajari riset operasi, perencanaan produksi, pengendalian kualitas, serta optimasi proses dan sumber daya untuk mencapi keberhasilan proses industri.
• Ilmu Manajemen.
Ilmu manajemen dibutuhkan terutama dalam mengelola manusia dan kelompok kerja, manajemen proyek.
• Ilmu Sosial (Social science)
Ilmu sosial ditekankan pada masalah pendekatan manusia, interaksi dan komunikasi. Dari uraian di atas jelas bahwa Software Engineer sebagai sebuah profesi tidak semata mengandalkan pengetahuan dalam ilmu komputer saja melainkan interdisipliner dari berbagai bidang ilmu yang saling mengisi dan saling mendukung dalam menjalankan tugasnya. Melihat beberapa penjelasan tersebut di atas dan mengingat kembali definisi profesi, maka dapat dikatakan bahwa pekerjaan Software Enginer masuk kategori sebagai sebuah profesi, meskipun belum secara resmi mendapatkan pengakuan atau “akreditasi” oleh lembaga-lembaga yang terkait. Salah satu kelemahan pekerjaan tersebut sebagai sebuah profesi adalah bahwa Software Engineer belum memiliki organisasi profesi. Organisasi profesi Software Engineer yang mungkin diperlukan adalah tidak dimaksudkan untuk menyeleksi keanggotaannya, namun yang penting adalah bisa memberikan kualifikasi yang jelas tentang apa Software Engineering itu, siapa Software Engineer itu, dan membantu anggotanya untuk memperbaharui pengetahuan dan ketrampilannya. Namun belakangan ini pengesahan profesi Software Engineer oleh organisasi profesi mulai dirasakan perlu karena banyak bidang kerja profesi ini yang bersinggungan dengan hajat hidup orang banyak.

YANG DIPELAJARI DALAM SOFTWARE ENGINEERING

1.      Metode Software Enginnering
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Metode ini terdiri dari serangkaian tugas :
1.  Perencanaan & estimasi proyek
2. Analisis kebutuhan sistem dan software
3.  Desain struktur data
4. Arsitektur program dan prosedur algoritma
5.  Coding
6. Testing dan pemeliharaan
2.      Peralatan Software Engineering
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
- CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hard­ware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
- Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
- Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE
3.      Prosedur Software Engineering
Terdiri dari :
1. urut-urutan di mana metode tersebut diterapkan
2.  dokumen
3. laporan-laporan
4. formulir-formulir yang diperlukan
5.  mengontrol kualitas software
6. mengkoordinasi perubahan yang terjadi pada software

Dalam penguasaan atas model software engineering atau software engineering paradigma, dikenal ada 3 metode yang luas dipergunakan, yaitu :

1.      Classic Life Cycle Pradigm - Model Water Fall - Model Siklus Hidup Klasik

A.     System Engineering and Analysis
Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara menerap­kan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan ele­men lain, seperti :
1.  Hardware
2. Software
3. Database
B.     Analisis kebutuhan software
Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk soft­ware engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan inter­face terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas / ditinjau bersama-sama customer.
C.     Design
Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu :
1.   Struktur data
2. Arsitektur software
3.  Rincian prosedur
Proses desain menterjemahkan kebutuhan ke dalam representasi software yang dapat diukur kualitasnya sebelum mulai coding. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
D.     Coding
Desain harus diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
E.      Testing
Segera sesudah objek program dihasilkan, pengetesan 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.
F.      Maintenance
Software yang sudah dikirim ke customer data berubah.



sumber : http://juniarto21.blogspot.com/2012/11/v-behaviorurldefaultvmlo.html
http://merliindriati.blogspot.com/2011/03/software-engineering.html


No comments:

Post a Comment