Software Engineer

Software engineering terdiri dari 3 elemen kunci, yaitu :
1. Metode
Metode ini terdiri dari serangkaian tugas :
• Perencanaan & estimasi proyek
• Analisis kebutuhan sistem dan software
• Desain struktur data
• Arsitektur program dan prosedur algoritma
• Coding, Testing dan pemeliharaan
2. Peralatan (Tools)
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
• CASE yaitu suatu software yang menggabungkan software, hardware, 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
Terdiri dari :
- urut-urutan di mana metode tersebut diterapkan
- dokumen, laporan-laporan, formulir-formulir yang diperlukan
- mengontrol kualitas software
- mengkoordinasi perubahan yang terjadi pada software

Model-model dalam proses pengembangan perangkat lunak
1. Model Waterfall - Classic Life Cycle Paradigm
Keterangan :
a. System Engineering
Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara menerapkan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan elemen lain, seperti Hardware, Software, dan Database
b. Analisis kebutuhan software
Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk software engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan interface terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas / ditinjau bersama-sama customer.
c. Design
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
Bentuk rancangan diubah menjadi suatu bahasa pemrograman yang dapat dimengerti oleh mesin komputer.
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 karena
- Software mengalami error
- Software harus diadaptasi untuk menyesuaikan dengan lingkungan external, misalnya adanya sistem operasi baru atau peripheral baru.
- Software yang lebih disempurnakan karena adanya permintaan dari customer.
Masalah yang dihadapi dari model siklus hidup klasik adalah :
- Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pada aplikasi yang dibentuk oleh model ini.
- Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
Customer harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek software selesai dalam waktu yang lama.

2. Model Prototyping
Pendekatan prototype untuk software engineering merupakan langkah yang terbaik ketika customer sulit menentukan input yang lebih terinci, proses yang diinginkan dan output yang diharapkan.
Pada model ini biaya analisis kebutuhan pelanggan meningkat, tetapi biaya-biaya lain seperti untuk perancangan, pengujian, penulisan dokumen terperinci dan perawatan perangkat lunak akan berkurang.
Kekurangan model prototype adalah :
- Sedikitnya analisis menyebabkan miskin akan dokumen dan sulit untuk mengelola dan mengendalikan tahapan-tahapan.
- Pengembang sering membuat kompromi implementasi untuk membuat prototip bekerja dengan cepat, tetapi ketika sistem digabung, ternyata tidak sesuai dengan keinginan, kualitas dan pemakaian jangka panjang.
- Anggapan disisi pemakai bahwa perubahan dapat dilakukan dengan mudah dan secepat prototip.
- Harapan pemakai kadang-kadang tidak realistik, mereka meminta lebih banyak setelah melihat prototip karena itu dibutuhkan perencanaan dan pengendalian yang baik untuk memperoleh waktu penyelesaian yang tepat.

3. Incremental Development
Pengembangan sistem berdasarkan model sistem yang dipecah sehingga model pengembangannya secara increment/bertahap. Kebutuhan pengguna diprioritaskan dan prioritas tertinggi dimasukkan dalam awal increment. Setelah pengembangan suatu increment dimulai, kebutuhan dibekukan dulu hingga increment berikutnya dimulai Validate, increment, Develop, system increment Design system, architecture, Integrate, increment, Validate, system Define outline, requirements, Assign requirements, to increments, System incomplete, Final, system.
Keuntungan :
- Nilai penggunan dapat ditentukan pada setiap increament sehingga fungsionalitas sistem disediakan lebih awal,
- Increment awal berupa prototype untuk membantu memahami kebutuhan pada increment berikutnya,
- Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem,
- Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.

4. Rapid Application Development
Rapid Application Development (RAD) merupakan model proses pengembangan software yang linier sequential yang menggunakan siklus pengembangan yang singkat.
Model RAD merupakan adaptasi High-speed dari model linier sequential yang pengembangannya dilakukan dengan menggunakan pendekatan komponen-based.
Proses RAD memungkinkan untuk membuat fully functional System dalam waktu yang sangat singkat (60 s.d 90 hari).

5. Model Spiral
Model spiral dikembangkan untuk mengabungkan kelebihan model Waterfall dan Prototyping dengan menambahkan elemen baru yaitu analisis resiko.

6. Fourth Generation Technique
Istilah Fourth Generation Technique (4GT) meliputi seperangkat peralatan software yang memungkinkan seorang developer software menerapkan beberapa karakteristik software pada tingkat yang tinggi, yang kemudian menghasilkan source code dan object code secara otomatis sesuai dengan spesifikasi yang ditentukan developer.
Saat ini peralatan / tools 4GT adalah bahasa non prosedur untuk database query, report generation, manipulasi data, definisi dan interaksi layar, pembentukan object dan source, kemampuan grafik yang tinggi, dan kemampuan spreadsheet.
Masalah yang dihadapi dalam model 4GT adalah adanya sebagian orang yang beranggapan bahwa :
a. peralatan 4GT tidak semudah penggunaan bahasa pemrograman,
b. source code yang dihasilkan oleh peralatan ini tidak efisien,
c. pemeliharaan sistem software besar yang dikembangkan dengan 4GT masih merupakan tanda tanya.

7. Model Kombinasi -Combining Paradigm

Keterangan :
Model ini menggabungkan keuntungan-keuntungan dari beberapa model sebelumnya. Seperti pada model sebelumnya, model kombinasi ini dimulai dengan langkah pengumpulan kebutuhan.
Pendekatan yang dapat diambil adalah pendekatan siklus hidup klasik (analisis sistem dan analisis kebutuhan software) atau dapat juga menggunakan pendekatan seperti prototyping jika definisi masalahnya tidak terlalu formal.
Jika kebutuhan untuk fungsi dan performance software diketahui dan dimengerti, pendekatan yang dianjurkan adalah model siklus hidup klasik. Sebaliknya, jika aplikasi software menuntut interaksi yang sering antara manusia dan mesin, membutuhkan algoritma yang tidak dapat dibuktikan, atau membutuhkan tehnik output / kontrol, maka pendekatan yang dianjurkan adalah model prototyping.

Definisi Software Engineer
Rekayasa Perangkat Lunak (Software Engineering)

Software Engineering :
Suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal requirement capturing (analisa kebutuhan pengguna), specification (menentukan spesifikasi dari kebutuhan pengguna), design, coding, testing sampai pemeliharaan sistem setelah digunakan.

Definisi Software Engineering menurut IEEE
1. pada projek SWEBOK2 adalah aplikasi sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan dari software; dapat disimpulkan sebagai teknik aplikasi untuk perangkat lunak.
Latar belakang munculnya software engineering ketika adanya krisis software di era tahun 1960-an. Krisis tersebut akibat dari lahirnya komputer generasi ke III yang ditandai dengan penggunaan IC (Integrated Circuit). Kemampuan hardware yang meningkat, membuat adanya kebutuhan untuk memproduksi software yang lebih baik. Akibatnya software yang dihasilkan menjadi menjadi beberapa kali lebih besar dan kompleks.

Pendekatan informal yang digunakan dalam pengembangan perangkat lunak pada saat itu, menjadi tidak cukup efektif (secara biaya, waktu dan kualitas). Biaya hardware mulai jatuh dan biaya perangkat lunak menjadi naik cepat. Oleh karena itu muncul pemikiran untuk menggunakan pendekatan yang lebih efektif, standard dan terukur dalam mengembangan perangkat lunak.

Krisis software adalah sekumpulan masalah yang ditemukan dalam pengembangan software komputer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang
berhubungan dengan :
a. Bagaimana mengembangkan software.
b. Bagaimana memelihara software yang ada, yang berkembang dalam jumlah besar.
c. Bagaimana mengimbangi permintaan software yang makin besar.
1) IEEE (Institute of Electrical and Electronics Engineers)
2) SWEBOK (Software Engineering Book of Knowledge)

2. Krisis software dipicu oleh beberapa masalah :
a. Estimasi jadwal dan biaya yang seringkali tidak tepat.
b. Produktivitas pembuat software yang tidak dapat mengimbangi permintaan software.
c. Kualitas software yang kurang baik.

Beberapa mitos software
1. Mitos management.
- Kita tidak perlu mengubah pendekatan terhadap pengembangan software, karena jenis pemrograman yang kita lakukan sekarang ini sudah kita lakukan 10 tahun yang lalu.
Realita : Walau hasil program sama, produktivitas dan kualitas software harus ditingkatkan dengan menggunakan pendekatan software developments.
- Kita sudah mempunyai buku yang berisi standarisasi dan prosedur untuk pembentukan software.
Realita : Memang buku tersebut ada, tetapi apakah buku tersebut sudah dibaca atau buku tersebut sudah ketinggalan jaman (out of date).
- Jika kita tertinggal dari jadwal yang ditetapkan, kita menambah beberapa programmer saja. Konsep ini sering disebut Mongolian harde concept.

2. Mitos customer
- Pernyataan tujuan umum sudah cukup untuk memulai penulisan program. Penjelasan yang lebih rinci akan menyusul kemudian.
Realita : Definisi awal yang buruk adalah penyebab utama kegagalan terhadap usaha-usaha pembentukkan software. Penjelasan yang formal dan terinci tentang informasi fungsi performance interface, hambatan desain dan kriteria validasi adalah penting.
- Kebutuhan proyek yang terus menerus berubah dapat dengan mudah diatasi karena software itu bersifat fleksibel.
Realita : Jika perubahan mendekati akhir penyelesaian, maka biaya akan lebih besar.
3. Mitos Praktisi
- Tidak ada metode untuk analisis disain dan testing terhadap suatu pekerjaan, cukup menuju ke depan terminal dan mulai coding.
Realita : Metode untuk analisis desain dan testing diperlukan dalam pengembangan software.
- Segera setelah software digunakan, pemeliharaan dapat diminimalisasikan dan diatasi.
Realita : Diperlukan budget yang besar dalam maintenance software. Pemeliharaan software harus diorganisir, direncanakan dan dikontrol seolah-olah sebagai suatu proyek besar dalam sebuah organisasi.

Secara umum karakteristik software :
1. Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardware.
2. Elemen itu tidak haus, tetapi bisa rusak.
3. Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware

4. Evolusi Perangkat Lunak
Tahun-tahun pertama :
- Batch Orientation
Suatu orientasi dimana proses dilakukan setelah data dikumpulkan dalam satuan waktu tertentu, atau proses dilakukan setelah data terkumpul, kebalikan dari batch adalah online atau Interactive Process. Keuntungan dari Interactive adalah mendapatkan data yang selalu up to date.
- Limmited distribution
Suatu penyebaran software yang terbatas pada perusahaanperusahaan tertentu.
- Custom software
Software yang dikembangkan berdasarkan perusahaanperusahaan tertentu.

Era kedua :
- Multi user
Suatu sistem dimana satu komputer digunakan oleh beberapa user pada saat yang sama.
- Real Time
Suatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second.
- Database
Perkembangan yang pesat dari alat penyimpan data yang online menyebabkan muncul generasi pertama DBMS.
- Product Software
Software dikembangkan untuk dijual kepada masyarakat luas.
Era ketiga :
- Distributed system
Suatu sistem yang tidak hanya dipusatkan pada komputer induk, daerah atau bidang lainnya yang juga memiliki komputer yang ukurannya lebih kecil dari komputer induk.
- Embedded Intelegence
Suatu product yang diberi tambahan “Intellegence” dan biasanya ditambahkan mikroprocessor yang mutakhir. Contohnya adalah automobil, robot, peralatan diagnostic serum darah.
- Low Cost Hardware
Harga hardware yang semakin rendah, ini dimungkinkan karena munculnya Personal Computer.
- Consummer Impact
Adanya perkembangan komputer yang murah menyebabkan banyaknya software yang dikembangkan, software ini memberi dampak yang besar terhadap masyarakat.
Era keempat :
- Expert system
Suatu penerapan A.I. (Artificial Intellegence) pada bidang-bidang tertentu, misalnya bidang kedokteran, komunikasi, dll.
- AI Machine
Suatu mesin yang dapat meniru kerja dari sebagian otak manusia. Misalnya mesin robot, komputer catur.
- Parallel Architecture
Arsitektur komputer yang memungkinkan proses kerja LAN paralel, yang dimungkinkan adanya prosesor berbeda dalam satu computer.

5. Dalam membuat software, secara umum ada beberapa fase : Fase Perencanaan (Planning) :
a. Rencana software
b. Analisa kebutuhan software
c. Analisa cost banefit (Salah satu bagian dari studi kelayakan)
Fase Pengembangan (Development) :
a. Coding
b. Testing
Macam-macam test program :
- Unit test (Test per modul)
- Integreated test (Test penggabungan dari modul-modul yang telah diuji)
- Validated test (Diuji dengan data sebenarnya)
- System test (Test dilakukan dengan lingkungan sebenarnya)
- Topdown test (Test gabungan dari atas ke bawah)
- Bottom up test (Test gabungan dari bawah ke atas)
Fase Pemeliharaan (Maintenance) :
Jenis-jenis maintenance
a. Koreksi (Corection)
b. Adaptasi (Adaptive)
Adaptasi yang berkembang pada dewasa ini terbagi atas :
- Sistem Operasi
- RDBMS (Relational DataBase Management System)
- Bahasa
- Mengarah pada perkembangan bahasa generasi ke empat
(Fourth Generation Language)
- Perfective
Menyempurnakan software yang biasanya dilakukan karena permintaan atau saran atau kritik user Aplikasi perangkat lunak
- System software Adalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponen-komponen sistem operasi, driver dan prosesor telekomunikasi.
- Real-time software
Software yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia.

6. Elemen-elemen real time software terdiri dari :
a. Komponen pengumpulan data
Yang mengumpulkan dan menyusun informasi dari lingkungan external
b. Komponen analisis
Yang mentransformasikan informasi yang diperlukan oleh aplikasi
c. Komponen kontrol
Yang memberikan respon kepada lingkungan external
d. Komponen monitor
Yang mengkoordinasi semua komponen-komponen lainnya, sehingga respons real time yang berkisar 1 milisecond sampai 1 menit dapat dipertahankan.

Istilah real time berbeda dari istilah interactive atau time sharing. Sistem real time harus memberikan respons pada waktu yang ditentukan, sedangkan pada sistem interactive atau time sharing respons time biasanya melebihi batas waktu yang ditentukan tanpa merusak hasil.

- Business software
Software ini digunakan oleh manajemen untuk mengambil keputusan dalam bidang bisnis.
Contohnya DEA (DAC EASY ACCOUNTING)
- Engineering and scientific software
Software yang dicirikan dengan algoritma numerik, aplikasinya berkisar dari astronomi sampai vulkanologi, dari analis ketegangan otomotif sampai dinamika orbit ruang angkasa. Software ini banyak digunakan dalam bidang engineering dan science.
Contohnya CAD dan CAM
- Embedded software
Suatu software disimpan dalam memori tetap - ROM - Read Only Memory, dan digunakan untuk mengontrol product dan sistem software ini dijalankan dengan berbagai fungsi terbatas.
- Personal computer software
Software yang banyak digunakan di komputer pribadi.
- Artificial intelligence software
Software yang banyak menggunakan algoritma non numerik dalam memecahkan masalah kompleks yang tidak dapat dianalisis dengan analisis komputasi biasa.

0/Post a Comment/Comments

Previous Post Next Post

FTTH