Minggu, 28 September 2014

System Engineering

Definisi Sistem
Suatu sistem adalah suatu bangunan atau koleksi dari unsur-unsur yang berbeda yang bersama-sama tidak menghasilkan produk dapat diperoleh oleh unsur-unsur sendiri. Unsur-Unsur, atau bagian, dapat meliputi orang-orang, perangkat keras, perangkat lunak, fasilitas, kebijakan, dan dokumen; itu semua diperlukan untuk memproduksi tingkatan sistem. Hasil meliputi kualitas tingkatan sistem, kekayaan, karakteristik, fungsi, perilaku dan penampilan.

Sistem Engineering
System Engineering adalah suatu disiplin rancang-bangun yang mana bertanggung jawab menciptakan dan melaksanakan proses disiplin untuk memastikan bahwa pelanggan dan kebutuhan stakeholder's terpuaskan dengan kualitas tinggi, terpercaya, efisiensi biaya dan menjadwalkan cara memenuhi sepanjang keseluruhan jalan kehidupan. Proses ini pada umumnya terdiri atas tujuh tugas: Satukan masalah, alternative penyelidikan, model system, Mengintegrasikan, peluncuran system, Nilai capaian, dan evaluasi kembali. Fungsi ini dapat diringkas dengan singkatan Similar: State, investigasi, Model, integrate, launch, Nilai dan Re-Evaluate.

Sistem mempunyai karakteristik atau sifat-sifat yang tertentu seperti elemenelemen (elements), batasan sistem (boundary), lingkungan sistem (environments), penghubung (interface), masukan (input), pengolahan (process), keluaran (output), dan tujuan (goals).

Sistem berbasis komputer adalah sistem yang komponen-komponennya atau subsistem-subsistemnya terdiri dari :
  •  Perangkat lunak, yaitu program komputer, struktur data, dan dokumentasi terkait.
  • Perangkat keras, yaitu perangkat elektronik yang menyediakan kemampuan komputasi dan perangkat elektromekanik (misalnya: sensor, motor, pompa) yang menyediakan fungsi dunia luar.
  • Manusia, yaitu pemakai dan operator perangkat keras dan perangkat lunak.
  •  Basis data, yaitu kumpulan informasi yang besar dan terorganisasi yang diakses melalui perangkat lunak.
  • Dokumentasi, yaitu buku-buku manual, formulir, dan informasi deskriptif lainnya yang menggambarkan penggunaan dan atau operasional sistem.
  • Prosedur, yaitu langkah-langkah yang menjelaskan pemakaian spesifik dari setiap elemen sistem.

Produk system engineer adalah suatu pernyataan misi, suatu dokumen kebutuhan yang mencakup verifikasi dan pengesahan, suatu uraian fungsi dan object, kepekaan instrument, suatu rencana test, suatu gambar batasan-batasan sistem, suatu alat penghubung mengendalikan dokumen, suatu daftar deliverables, model, suatu analisis kepekaan, suatu tradeoff studi, suatu analisis risiko, suatu analisa jalan kehidupan dan suatu uraian arsitektur phisik. Kebutuhan harus disahihkan ( Apakah kita membangun sistem yang benar?) dan membuktikan ( Apakah kita membangun sistem itu benar?). Fungsi sistem harus dipetakan kepada komponen phisik. Pemetaan berfungsi ke phisik komponen dapat satu untuk satu atau banyak untuk satu. Tetapi jika satu fungsi ditugaskan untuk dua atau lebih komponen phisik, kemudian suatu kekeliruan mungkin telah dibuat dan haruslah diselidiki. Satu alasan sah untuk menugaskan suatu fungsi ke lebih dari satu komponen akan berfungsi preformed oleh satu komponen dalam suatu gaya tertentu dan oleh komponen lain dengan gaya lain. Yang lain akan bersifat pemborosan sengaja untuk tingkatkan keandalan, membiarkan seseorang membagi sistem kepada penerima fungsi jika yang lain gagal melakukan pembagian.

Pemodelan Arsitektur Sistem
Setiap sistem berbasis komputer dapat dimodelkan sebagai sebuah pemindahan informasi dengan menggunakan arsitektur input-pemrosesan-output. Pemodelan Arsitektur Sistem memperluas arsitektur ini dengan menambahkan 2 fitur tambahan yaitu pemrosesan antarmuka pemakai dan pemrosesan self-test. Meskipun dua fitur tambahan ini tidak selalu dipakai tetapi fitur tambahan ini umum dipakai pada pemodelan sistem berbasis komputer yang membuat model sistem menjadi lebih baik. Model sistem ini menjadi dasar bagi analisis kebutuhan dan langkah desain selanjutnya.
Untuk memodelkan sistem maka digunakan model template arsitektur yang mengalokasikan elemen sistem menjadi 5 bagian pemrosesan yaitu:
1.      antarmuka pemakai,
2.      input
3.      fungsi dan kontrol sistem,
4.      output dan
5.      pemeliharaan dan self-test.

Pemodelan Sistem dan Simulasi
Meskipun demikian , sepertinya metode ini akan banyak penganutnya diantara pengembangan perangkat  lunak yang harus membangun perangkat lunak yang kritis untuk keselamatan (misal perangkat medis, dan penerbangan pesawat), serta diantara pengembangan yang harus menderita karena factor ekonomis yang harus dialami oleh perangkat lunak. 

Spesikasi Sistem
Spesifikasi sistem merupakan dokumen yang berfungsi menggambarkan fungsi dan kinerja sistem berbasis komputer yang akan dikembangkan, membatasi elemen-elemen sistem yang telah dialokasikan, serta memberikan indikasi mengenai perangkat lunak dan konteks sistem keseluruhan dan informasi data dan kontrol yang dimasukkan dan dikeluarkan oleh sistem yang telah digambarkan dalam diagram aliran arsitektur.

Model Proses Perangkat Lunak

Dalam pembuatan sebuah sistem, maka pembuat sistem sangat memerlukan dokumen SRS sebagai acuan untuk membuat sistem yang akan dibuat. Bagaimanakah cara membuat Dokumen SRS? Tentu saja dokumen tersebut dapat dibuat dengan cara menanyakan kebutuhan apa saja yang diperlukan oleh pengguna. Maka sebelum pembuatan SRS tersebut, lakukan wawancara terhadap calon pengguna yang akan dibuat.
          
Dalam pembuatan sistem perangkat lunak, pasti membutuhkan model proses. Jenis-jenis model proses terdapat banyak jenis, yaitu :
  1. Linear Sequential Model atau Waterfall Model
  2. Evolutionary Software Process Model
  3. Rapid Application Development
  4. Prototyping Model
  5. Component-based Development Model
  6. Extreme Programming Model
Linear Sequential Model atau Waterfall Model

Model ini adalah model klasik yang bersifat sistematis, berurutan dalam membangun software. Berikut ini ada dua gambaran dari waterfall model. Sekalipun keduanya menggunakan nama-nama fase yang berbeda, namun sama dalam intinya. Fase-fase dalam Waterfall Model menurut referensi Pressman:


Fase-fase dalam Waterfall Model menurut referensi Sommerville :

Aktivitas yang terdapat pada Waterfall Model adalah :
  • Requirements analysis and definition: Mengumpulkan kebutuhan secara 
  • lengkap kemudian kemudian dianalisis dan didefinisikan kebutuhan yang 
  • harus dipenuhi oleh program yang akan dibangun. Fase ini harus dikerjakan 
  • secara lengkap untuk bisa menghasilkan desain yang lengkap.
  • System and software design: Desain dikerjakan setelah kebutuhan selesai 
  • dikumpulkan secara lengkap.
  • Implementation and unit testing: desain program diterjemahkan ke dalam 
  • kode-kode dengan menggunakan bahasa pemrograman yang sudah 
  • ditentukan. Program yang dibangun langsung diuji baik secara unit.
  • Integration and system testing: Penyatuan unit-unit program kemudian diuji 
  • secara keseluruhan (system testing).
  • Operation and maintenance: mengoperasikan program dilingkungannya dan 
  • melakukan pemeliharaan, seperti penyesuaian atau perubahan karena 
  • adaptasi dengan situasi sebenarnya.

Kekurangan yang utama dari model ini adalah kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya.

Masalah dengan waterfall :
  • Perubahan sulit dilakukan karena sifatnya yang kaku. 
  • Karena sifat kakunya, model ini cocok ketika kebutuhan dikumpulkan secara 
  • lengkap sehingga perubahan bisa ditekan sekecil mungkin. Tapi pada 
  • kenyataannya jarang sekali konsumen/pengguna yang bisa memberikan 
  • kebutuhan secara lengkap, perubahan kebutuhan adalah sesuatu yang wajar 
  • terjadi.
  • Waterfall pada umumnya digunakan untuk rekayasa sistem yang besar 
  • dimana proyek dikerjakan di beberapa tempat berbeda, dan dibagi menjadi 
  • beberapa bagian sub-proyek.

Evolutionary Software Process Model
Bersifat iteratif/ mengandung perulangan. Hasil proses berupa produk yang makin lama makin lengkap sampai versi terlengkap dihasilkan sebagai produk akhir dari proses. Dua model dalam evolutionary software process model adalah:
1. Incremental Model (Original: Mills)
Aktivitas yang terdapat pada Incremental Model :
  • Kombinasikan element-element dari waterfall dengan sifat iterasi/perulangan.
  • Element-element dalam waterfall dikerjakan dengan hasil berupa produk 
  • dengan spesifikasi tertentu, kemudian proses dimulai dari fase pertama 
  • hingga akhir dan menghasilkan produk dengan spesifikasi yang lebih 
  • lengkap 
  • dari yang sebelumnya. Demikian seterusnya hingga semua  spesifikasi 
  • memenuhi kebutuhan yang ditetapkan oleh pengguna.
  • Produk hasil increment pertama biasanya produk inti (core product), yaitu 
  • produk yang memenuhi kebutuhan dasar. Produk tersebut digunakan oleh 
  • pengguna atau menjalani review/pengecekan detil. Hasil review tersebut 
  • menjadi bekal untuk pembangunan pada increment berikutnya. Hal ini terus 
  • dikerjakan sampai produk yang komplit dihasilkan.
  • Model ini cocok jika jumlah anggota tim pengembang/pembangun PL tidak 
  • cukup.
  • Mampu mengakomodasi perubahan secara fleksibel.
  • Produk yang dihasilkan pada increment pertama bukanlah prototype, tapi 
  • produk yang sudah bisa berfungsi dengan spesifikasi dasar.
Masalah dengan Incremental model:
  • Cocok untuk proyek berukuran kecil (tidak lebih dari 200.000 baris coding). 
  • Mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam 
  • rencana spesifikasi masing-masing hasil increment

Rabu, 24 September 2014

Rekayasa Perangkat Lunak Sebagai Produk

Pengantar
Berbicara tentang rekayasa perangkat lunak, bukanlah berbicara tentang pemograman untuk membangun sebuah perangkat lunak. Apa yang dibahas didalam rekayasa perangkat lunak adalah kegiatan – kegiatan yang dilakukan untuk membangun perangkat lunak dan kegiatan yang menaungi sehingga perangkat lunak yang dihasilkan sesuai dengan standar mutu yang ditentukan.
Latar belakang Disiplin Rekayasa Perangkat Lunak
Faktor – faktor yang melatarbelakangi munculnya RPL :
  • Ketidakmampuan organisasi memprediksi waktu, usaha dan biaya untuk membangun perangkat lunak
  • Perubahan nisbah / rasio biaya perangkat keras terhadap harga perangkat lunak
  • Kemajuan pesat perangkat keras
  • Kemajuan dalam teknik – teknik pembuatan perangkat lunak
  • Tuntutan yang leibh tingi terhadap jumlah perangkat lunak
  • Tuntutan yang lebih tinggi terhadap mutu perangkat lunak
  • Meningkatnya peran pemeliharaan
Perangkat Lunak ( Software ) adalah
Pendefisian software sedikit lebih sulit bila dibanding dengan perangkat keras, tidak nampak ciri fisik yang dapat dipergunakan untuk mengenali perangkat lunak , tetapi nampak akibat yang ditimbulkan pada antar muka (interface) dan keluaran perangkat (output). Pendefinisian perangkat keras tergantung pada waktu, dalam hal apa dan siapa yang mendiifinisikan perangkat lunak tersebut. Hadirnya perangkat lunak seiring dengan perkembangan komputer yang secara fisik memang ada dan dari sini kemudian rekayasa perangkat lunak mulai dikenal sebagai disiplin ilmu baru. Ilmu ini merupakan bagian ilmu computer.
Jenis Perangkat Lunak
Pengelompokan jenis perangkat lunak dapat dilakukan dengan mengelompokkan cara pembuatannya, pembuatan perangkat keras dapat dikelompokkan menjadi 2 yaitu :
1. Perangkat Lunak Generik ( Generic Software )
Merupakan perangkat lunak yang berdiri sendiri ( stand alone ) dengan menggunakan standar tertentu yang diproduksi oleh organisasi pengembang perangkat lunak ( vendor ) dan biasa dijual secara bebas dan siapapun dapat membeli. Contoh perangkat lunak generik antara Office Aplication , Database Engine ,  Graphic Package , dan lain sebagainya.
2. Perangkat Lunak Pesanan ( Order Software )
Merupakan perangkat lunak yang dipesan oleh pelanggan tertentu kepada pengembang perangkat lunak ( vendor ) untuk memnuhi kebutuhan fungsi tertentu yang dikehendaki pemesan. Perangkat lunka yang dipesan secara khusus ini biasanya ditujukan untuk mendukung proses bisnis, mengatur perangkat elektromekanik pada manufacture, system control suatu aktifitas khusus ( misal pelabuhan udara, pengaturan lalu lintas ).
Sedangkan bila dikelompokkan berdasar penggunaannya dikelompokkkan dalam 8 kategori, yaitu
1. System Software
Perangkat lunak yang bertanggungjawab untuk mengendalikan, mengintegrasikan, dan mengelola komponen perangkat keras atau perangkat lunak lainnya tanpa melihat jenjang dari perangkat lunak tersebut.
2. Real – time software
Perangkat lunak yang digunakan untuk memonitor, menganalisa, dan mengendalikan tiap peristiwa yang terjadi secara langsung.
3. Bisuness Software
Perangkat keras yang dipergunakan untuk mengelola kerumitan proses bisnis dalam organisasi.
4. Engineering and Scientific software
Perangkat keras yang disusun secara khusus mengikut sertakan berbagai rumus – rumus pada ilmu pengetahuan tertentu.
5. Embedded software
Perangkat lunak yang dirancang khusus untuk piranti modern cerdas, dimana fungsi dari perangkat lunak ini sebagai pengendali terhadap peralatan tersebut.
6. Personal Software
Perangkat lunak yang dibuat untuk membantu menyelesaikan / memenuhi pekerjaan manusia secara individual sebagai contoh memainkan music dan video, pekerjaan perkantoran, dan lain sebagainya.
7. Web base software
Perangkat lunak yang dipergunakan untuk menjalankan berbagai perintah pada jejaring internet, berbagai format data dapat dikelola dengan menggunakan format HTML, PHP, ASP, ASPX.
8. Artificial intelligence software
Perangkat lunak ini dibuat untuk menyelesaikan pekerjaan rumit dan non numerical algorthm, menggunakan metoda neumal network.
Rekayasa Perangkat Lunak
Rekayasa perangkat lunak berasal dari 2 kata yaitu Software ( Perangkat Lunak ) dan Engineering ( Rekayasa ).
Perangkat Lunak ( Software ) adalah source code pada suatu program atau sistem. Perangkat lunak tidak hanya dokumentasi terhadap source code tapi juga dokumentasi terhadap sesuatu yang dibutuhkan selama pengembangan, instalasi, penggunaan dan pemeliharaan sebuah sistem.
Eengineering atau Rekayasa adalah aplikasi terhadap pendekatan sistematis yang berdasar atas ilmu pengetahuan dan matematis serta aplikasi tentang produksi terhadap struktur, mesin, produk, proses atau sistem.
Rekayasa Perangkat Lunak adalah suatu disiplin rekayasa yang berkonsentrasi terhadap seluruh aspek. Rekayasa Perangkat Lunak ( RPL ) juga merupakan pendekatan sistematis dan matematis untuk membangun, memelihara dan mengenyahkan perangkat lunak. Dari cara pandang lain, RPL adalah pendekatan sistematis untuk merekayasa perangkat lunak yang handal / bermutu, tepat waktu dan dengan biaya yang optimal.
Karakteristik Perangkat Lunak
Dalam Buku Software Engineering Ian Sommerville, Perangkat Lunak mempunyai Karakteristik sebagai berikut :
1.   Maintanability ( Dapat Dirawat ), Perangkat Lunak harus dapat memenuhi perubahan kebutuhan.
2.   Dependability, Perangkat Lunak harus dapat dipercaya.
3.   Efisiensi, Perangkat Lunak harus efisien dalam penggunaan resource.
4.   Usability, Perangkat Lunak harus dapat digunakan sesuai dengan yang direncanakan.
Mutu Perangkat Lunak
Terdapat 3 pihak ( minimal ) yang mempengahuri mutu perangkat lunak yaitu :
1. Sponsor
Seseorang atau organisasi yang membiayai / membayar selama pengembangan atau perantaraan sistem software dan biasanya mempunyai respon terhadap pengembangan sistem softare itu sendiri dengan melibatkan perhitungan biaya yang optimal.
2. User
Setiap orang yang secara langsung berinteraksi terhadap eksekusi software, yang secara langsung memberi input ke komputer dan menggunakan / menikmati output dari komputer.
3. Developer
Seseorang atau organisasi yang memberikan modifikasi dan memelihara terhadap error serta mengembangkan sistem software tersebut.
1
Mitos Perangkat Lunak
  • Mitor Manajemen Manager yang bertanggung jawab terhadap masalah perangkat lunak, seperti juga manager ada kebanyakan disiplin, sering mengalami tekanan karena masalah pengaturan keuangan, menjaga jadwal agar tidak kacau, dan peningkatan kualitas.
  • Mitos Pelanggan pelanggan mempercayai mitos tentang perangkat lunak karena manajer dan para pelansana yang bertanggung jawab atas masalah perangkat lunak hanya bekerja sedikit saja untuk memperbaiki kesalahan informasi. Mitos ini membawa kearah pengharapan yang salah oleh pelanggan dan ketidak puasan pengembang.
  • Mitos para Praktisi Pemrograman dilihat sebagai sebuah karya seni.
Krisis Perangkat Lunak
  • Masalah nyata yang sudah mengganggu perkembangan perangkat lunak
  • Serangkaian masalah yang terjadi dalam perkembangan perangkat komputer
  • Masalah yang ada tidak hanya terbatas pada perangkat lunak yang tidak berfungsi dengan baik tapi juga pada penderitaan yang melingkupi masalah – masalah yang berhubungan dengan bagaimana mengembang perangkat lunak, bagaimana memlihara volume perangkat lunak yang sedang tumbuh dan bagaimana mengejar kebutuhan perangkat lunak lebih banyak lagi.
  • Penyebab krisis atau penderitaan perangkat lunak dapat ditelusuri dengan sebuah mitologi yang muncul selama masa sejarah awal perkembangan perangkat lunak.
  • Mitos perangkat lunak ini berbicara atas salah informasi dan keraguan. Masa sekarang kebanyakan kaum profesional memiliki banyak pengetahuan mengetahui berbagai mitos di bidang ilmu yang digelutinya ( sikap yang salah yang menyebabkan masalah yang serius bagi manager serta masyarakat teknis ). Hal ini terlihat berbagai sisi pandang dari pihak Manajer / Sponsor, pelanggan atau Pengembang / Praktis