Rembulan ...

Rembulan muncul selepas azdan. Ketika rasaku berubah menjadi kabut dalam remangnya senja. Bayangan gadis yang menari di bulu mata. Menyapaku dengan senyuman manis.

Rembulan tersenyum melihatku tersenyum.
Hamparan awan yang berjingkrak perlahan. Kibaskan mendung yang ada ketika ashar. Bekas titik air di atas genteng kamarku. Perlahan mengering, seirama dengan nyanyian malam yang mulai membuaiku dalam lamunan imajinasi. Rembulan masih tersenyum.

Canda sahabat yang mencoba menyebrangi akalku. Sedikit tertepiskan oleh kanyataan ketika aku mulai terbangunkan oleh suara lembut bidadari kemerahan. Tatih tapak kaki yang mulai terseok. Teteskan peluh yang keluar dari dahiku.

Rembulan seolah malu. Saat kutanya “Apakah negkau harus tersenyum setiap malam?”. Ketika hati ini mulai diliputi keraguan? Engkau yang bersemanyam dalam ruang senja. Bergulir, berlari mengejar waktu. Aku masih disini. Ketika semua orang mulai berlari. Ketika semua sahabat mulai beranjak kaki.

Nyanyian binatang malam yang selalu menghiburku di Puncak semeru. Yang lama kurindu. Gadis yang mulai berjalan. Tinggalkan tanya yang harus terbuang begitu saja. Engkau yang sendiri diantara kelam kabut. Mencoba torehkan memori yang akan selalu tengiang dalam gema semesta.

Lorong gedung yang selalu mendakwaku. Tembok dinding yang selalu menghujatku. Kebodohan dan ketidaktahuan yang membuatku terjatuh. tersimpung dipangkuan pertiwi. Ingatkan sebuah pengorbanan sahabat yang tekapar ditiang keabadian? Aku tidak bisa berpikir sampai kesitu.

Selaksa kata yang tercurahkan dalam lembar ini. Takkan mewakili setiap keinginan di hati. Rasa yang tersayat, teriris oleh tajam kibasan sayap malaikat. Takkan mungkin membawaku terbang tinggi. Tetes darah di peraduan yang menangis. Gulirkan air mataku yang mungkin sudah habis.

Urai rambut gadis yang terjuntai. Lambaikan tangan ke rembulan. Rembulanpun menangis, ketika harus sadar bahwa setiap keinginan adalah sebuah perjuangan. Dan………setiap perjuangan akan selalu berhadapan dengan kenyataan/ Pahit. Manis yang kadang diharap hilang bersama bising rintik hujan.

Engkau yang tersendiri. Bergelayut dengan renung jiwa. Rongga dada yang sesak dengan asap serutu kebohongan diri. Gulirkan aku dari singgasana nurani. Aku yang mencoba gapai selendang jingga. Tercabik waktu yang menusukku. Sejenak singgah di dahan ranting kering. Yang berjatuhan bersama daun layu.

Setapak yang berdebu. Sisakan bekas yang sebentar hilang. Engkau yang tersenyum bersama rembulan. Berikan aku kesejukan tertahan.

Software Engineering (Rekayasa Perangkat Lunak)



A.    Pendahuluan
Perangkat lunak (software) kini sudah menjadi kekuatan yang menentukan. Perangkat lunak menjadi mesin yang mengendalikan pengambilan keputusan di dalam dunia bisnis, berfungsi sebagai dasar dari semua bentuk pelayanan serta penelitian keilmuan modern. Perangkat lunak dilekatkan dengan segala bentuk sistem: transportasi, medis, telekomunikasi, militer, proses industri, hiburan, produk-produk kantor dan lainnya. Perangkat lunak benar-benar tidak dapat lepas dari kehidupan  modern. Semua itu mengubah pandangan masyarakat tentang perangkat lunak. Program-program perangkat lunak sudah tersebar luas, dan masyarakat memandangnya sebagai kejayaan teknologi dalam kehidupan. Dalam banyak contoh, orang- orang sudah mulai mempertaruhkan pekerjaan, kenyamanan, keselamatan, hiburan, keputusan dan banyak segi dalam kehidupannya pada teknologi.
Oleh karena itu dibutuhkan teknologi yang harus dipakai oleh orang-orang yang membangun perangkat lunak komputer dan kita juga harus dapat mengembangkannya dengan cara yang tepat. Teknologi meliputi sebuah proses, serangkaian metode dan sederetan alat yang disebut dengan software engineering. 
B.     Pembahasan
  1. Perangkat Lunak
Menurut Pressman (2002), perangkat lunak dapat didefinisikan sebagai berikut :
v  Perintah (program komputer) yang bila dieksekusi memberikan fungsi dan unjuk kerja seperti yang diinginkan.
v  Struktur data yang memungkinkan program memanipulasi informasi secara proposional.
v  Dokumen yang menggambarkan informasi dan kegunaan program.
a.      Karakteristik Perangkat Lunak
Untuk memperoleh pemahaman tentang perangkat lunak (serta pemahaman tentang software engineering), penting juga untuk meneliti karakteristik perangkat lunak berbeda dari hal-hal lain yang dibangun oleh manusia. Ketika perangkat lunak dibuat, proses kreatif manusia (analisis, desain, konstruksi, pengujian) diterjemahkan ke dalam bentuk fisik. Jika kita membuat komputer baru, sketsa dasar, penggambaran  desain formal, dan prototipe bread boarder berkembang ke dalam suatu produk fisik (VLSI chip, papan rangkaian, catu daya, dll).
Perangkat lunak lebih merupakan elemen logika dan bukan merupakan elemen sistem fisik. Dengan demikian, perangkat lunak memiliki ciri yang berbeda dari perangkat keras:
1)      Perangkat lunak dibangun dan dikembangkan, tidak dibuat dalam bentuk yang klasik
Meskipun banyak kesamaan di antar pabrik perangkat keras dan perangkat lunak, aktivitas keduanya secara mendasar sangat berbeda. Dalam keduanya tersebut, kualitas yang tinggi dicapai melalui perancangan yang baik, tetapi di dalam fase pembuatan perangkat keras, selalu saja ditemukan masalah kualitas yang tidak mudah untuk disesuaikan dengan perangkat lunak. Kedua aktivitas itu tergantung pada manusia, tetapi hubungan antara penerapan yang dilakukan manusia dengan usaha yang diperoleh sangat berbeda. Kedua aktivitas itu membutuhkan konstruksi sebuah “produk” tetapi pendekatan yang dipakai berbeda. Biaya untuk perangkat lunak dikonsentrasikan pada pengembangan. Hal ini berarti proyek perangkat lunak tidak dapat diatur seperti pengaturan proyek pemanufakturan.
2)      Perangkat lunak tidak pernah usang
Perangkat lunak tidak rentan terhadap pengaruh lingkungan yang merusak yang menyebabkan perangkat keras menjadi usang. Kesalahan-kesalahan yang tidak dapat ditemukan akan menyebabkan tingkat kegagalan menjadi sangat tinggi pada awal hidup program. Tetapi hal itu dapat diperbaiki dan diharapkan tidak lagi ditemukan kesalahan yang lain.
Aspek lain dari keusangan menggambarkan perbedaan antara perangkat keras dan perangkat lunak. Bila komponen suatu perangkat telah usang, komponen dapat diganti dengan suku cadangnya. Namun tidak ada suku cadang bagi perangkat lunak. Setiap kegagalan perangkat lunak menggambarkan kesalahan dalam perancangan atau proses di mana rancangan diterjemahkan ke dalam kode mesin yang dapat dieksekusi. Demikianlah, pemeliharaan perangkat lunak menjadi lebih kompleks daripada pemeliharaan perangkat keras.
3)      Sebagian besar perangkat lunak dibuat secara custom-built, serta tidak dapat dirakit dari komponen yang sudah ada.
Saat perangkat keras untuk produk berbasis mikroprosesor dirancang dan dibuat, pengembang desain menggambar sebuah skema sederhana dari rangkaian digital, melakukan serangkaian analisis dasar untuk memastikan bahwa fungsi yang tepat discapai serta kemudian menyesuaikan ke katalog komponen digital. Setiap IC (chip) mempunyai nomor bagian tersendiri, sebuah fungsi yang sudah terdefinisi dan tervalidasi, interface yang didefinisikan dengan baik, serta rangkaian standar tuntutan terintegrasi. Setelah masing-masing komponen diseleksi, perangkat keras dapat dipesan  secara terpisah.
Sayangnya para perancang perangkat lunak tidakdiberi fasilitas seperti yang diggambarkan di atas. Dengan sedikit pengecualian, tidak ada katalog komponen perangkat lunak. Memang memungkinkan untuk memesan perangkat lunak secara terpisah, tetapi tetap merupakan satu kesatuan yang lengkap, bukan sebagai komponen yang dapat dipasangkan ke dalam program-program yang baru.
b.      Komponen Perangkat Lunak
Komponen perangkat lunak dibangun dengan bahasa pemrograman yang memiliki kosakata yang terbatas, sebuah tata bahasa yang dibatasi secara eksplisit serta aturan-aturan syntax dan semantik yang dibentuk secara baik. Pada tingkat yang paling rendah, bahasa-bahasa itu mencerminkan serangkaian instruksi perangkat keras. Pada tingkat sedang, bahasa pemrograman seperti Ada 95, C, atau SmalTalk, dipakai untuk membuat deskripsi prosedural dari program. Pada tingkat yang paling tinggi, bahasa-bahasa tersebut menggunakan ikon grafik atau simbol lain untuk mewakili kebutuhan akan sebuah pemecahan. Instruksi-instruksi yang dapat dieksekusi dibuat secara otomatis.
Bahasa tingkat mesin merupakan perwakilan simbolik dari serangkaian instruksi CPU. Ketika pengembang perangkat lunak yang baik memproduksi sebuah program yang didokumentasikan dengan baik dan juga dapat diperbaharui, maka bahasa tingkat mesin dapat secara ekstrim menggunakan memori dan kecepatan eksekusi program secara efisien. Bila program tidak dirancang dengan baik dan hanya memiliki sedikit dokumentasi, maka bahasa tingkat mesin tidak akan menghasilkan sesuatu yang diharapkan.
Bahasa tingkat menengah memungkinkan pengembang perangkat lunak serta program tidak tergantung pada mesin. Ketika digunakan penerjemah yang lebih canggih, maka kosakata, tata bahsa, syntax dan semantik dari bahasa tingkat menengah dapat menjadi lebih canggih dari pada bahasa tingkat mesin. Pada kenyataannya, bahasa tingkat menengah meng-compile dan menginterpretasi hasil bahasa tingkat mesin sebagai keluaran.
Meskipun sekarang ini dipakai ratusan bahasa pemrograman, tetapi bahasa pemrograman tingkat menengah yang masih dipakai secara luas di dalam industri kurang dari 10. Bahasa seperti COBOL dan FORTRAN masih tetap dipakai secara luas lebih dari 30 tahun setelah masa pengenalannya. Banyak bahasa pemrograman seperti Ada 95, C, C++, Eiffel, Java dan SmallTalk mendapat sambutan yang cukup antusias.
Kode mesin, bahasa assembly (tingkat mesin), bahasa pemrograman tingkat menengah, sering disebut tiga generasi bahasa komputer yang pertama, dengan  bahasa-bahasa tersebut, pemrogram harus melihat dengan baik kekhususan struktur informaasi maupun kontrol pemrograman itu sendiri. Demikianlah bahasa di dalam tiga generasi yang pertama dimasukkan ke dalam jenis bahasa prosedural.
Bahasa generasi keempat, disebut juga bahasa non-prosedural, menggerakkan pengembang perangkat lunak untuk mengkhususkan pada detail prosedural. Bahasa non- prosedural secara tidak langsung menyatakan sebuah program melalui spesifikasi hasil yang diharapkan. Dan tidak pada aksi yang dibutuhkan untuk mencapai hasil tersebut. Perangkat lunak penopang menerjemahkan spesifikasi hasil ke dalam sebuah program mesin yang dapat dieksekusi.
c.       Aplikasi Perangkat Lunak
Perangkat lunak dapat diaplikasikan ke berbagai situasi di mana serangkaian langkah prosedural (seperti algoritma) telah didefinisikan (pengecualian yang di dapat pada aturan ini adalah sistem pakar dan perangkat lunak jaringan syaraf kecerdasan buatan). Kandungan (content) informasi dam determinasi merupakan faktor penting dalam menentukan sifat aplikasi perangkat lunak. Content mengarah pada arti dan bentuk dari informasi yang masuk dan keluar. Contohnya, banyak aplikasi bisnis memakai data input yang terstruktur secara tinggi (sebuah database) dan menghasilkan laporan yang sudah terformat. Perangkat lunak yang mongontrol sebuah mesin otomatis (misal kontrol numerik) menerima bentuk-bentuk data diskrit dengan struktur yang terbatas dan menghasilkan perintah mesin individual dalam suksesi yang cepat.
Memang cukup sulit untuk menentukan kategori umum untuk aplikasi perangkat lunak. Ketika kompleksitas perangkat lunak mulai muncul, maka penggolongan yang rapi menjadi hilang. Area perangkat lunak berikut ini menunjukkan luasnya aplikasi potensial:
1)      Perangkat Lunak Sistem
Perangkat lunak sistem merupakan sekumpulan program yang ditulis untuk melayani program-program yang lain. Banyak perangkat lunak sistem (misal kompiker, editor, dan utilitas pengatur file) memproses struktur-struktur informasi yang lengkap namun tetap. Aplikasi-aplikasi sistem yang lain (komponen sistem operasi, driver, prosesor telekomunikasi) memproses secara luas data yang bersifat tetap. Di dalam setiap kasus tersebut, area perangkat lunak sistem ditandai dengan eratnya interaksi dengan perangkat keras komputer; penggunaan oleh banyak pemakai; operasi konkuren yang membutuhkan penjadwalan, tukar menukar sumber dan pengaturan proses yang canggih; struktur data yang kompleks, serta interface eksternal ganda.
2)      Perangkat Lunak Real-Time
Program-program yang memonitor/ menganalisis/ mengontrol kejadian dunia nyata pada saat terjadinya disebut perangkat lunak real-time. Elemen-elemen perangkat lunak real- time mencakup komponen pengumpul data  yang mengumpulkan dan memformat informasi dari lingkungan eksternal, sebuah komponen analisis yang mentransformasi informasi pada saat dibutuhkan oleh aplikasi, sebuah komponen kontrol/output yang memberikan respon kepada lingkungan eksternal, serta sebuah komponen monitor yang mengkoordinasi semua komponen lain agar respon real-timenya (khususnya untuk jangkauan dari 1 milidetik sampai 1 menit) dapat terjaga. Perlu diingat bahwa real time berbeda dengan interaksi atau timesharing. Sistem real-time harus merespon di dalam suatu rentang waktu yang tetap. Waktu respon sebuah sistem interaktif (atau timesharing) secara normal dapat diperpanjang tanpa memberikan risiko kerusakan pada hasil.
3)      Perangkat Lunak Bisnis
Pemrosesan informasi bisnis merupakan area aplikasi perangkat lunak yang paling luas. Sistem diskrit  telah  mengembangkan perangkat lunak sistem informasi management (MIS) yang mengakses satu atau lebih database besar yang berisi informasi bisnis. Aplikasi dalam area ini menyusun kembali struktur data yang ada dengan suatu cara tertentu untuk meperlancar operasi bisnis atau pengambilan keputusan manajemen. Sebagai tambahan ke dalam aplikasi pengolahan data konvensional, aplikasi perangkat lunak bisnis juga meliputi penghitungan klien/server serta penghitungan interaktif (misal pemrosesan transaksi point -of sale).
4)      Perangkat Lunak Teknik dan Ilmu Pengetahuan
Perangkat lunak teknik dan ilmu pengetahuan ditandai dengan algoritma number crunching. Perangkat lunak ini memiliki jangkauan aplikasi mulai dari astronomi sampai vulkanologi, dari analisis otomotif sampai dinamika orbit pesawat ruang angkasa, dan dari biologi molekuler dampai pabrik yang sudah diotomatisasi. Tetapi aplikasi yang baru di dalam area teknik dan ilmu pengetahuan sedang bergerak menjauhi algoritma numeris yang konvensional. Computer-aided design, simulasi sistem dan aplikasi interaktif yang lain, sudah mulai memakai ciri-ciri perangkat lunak sistem genap dan real-time.
5)      Embedded Software
Produk pintar telah menjadi bagian umum bagi hampir semua konsumen dan pasar industri. Embedded software ada dalam read-only memory dan dipakai untuk mengontrol hasil serta sistem untuk keperluan konsumen dan pasar industri. Embedded software dapat melakukan fungsi yang terbatas serta fungsi esoterik (misal key pad control untuk microwave) atau memberikan kemampuan kontrol dan fungsi yang penting (contohnya fungsi digital dalam sebuah automobil seperti kontrol bahan bakar, penampilan dash- board, sistem rem, dll)
6)      Perangkat Lunak Komputer Personal
Pasar perangkat lunak komputer personal telah berkembang selama dekade terakhir. Pengolah kata, multimedia, hiburan, manajemen databbase, aplikasi keuangan bisnis personal, jaringan eksternal atau akses database hanya merupakan beberapa saja dari ratusan aplikasi yang ada.
7)      Perangkat Lunak Kecerdasan Buatan
Perangkat lunak kecerdasar buatan (Artificial Intelligent_AI) menggunakan algoritma non-numeris untuk memecahkan masalah kompleks yang tidak sesuai untuk perhitungan atau analisis secara langsung. Area kecerdasan buatan yang aktif adalah sistem pakar, disebut juga sistem berbasis ilmu pengetahuan. Tetapi area aplikasi lainnya untuk perangkat lunak kecerdasan buatan adalah pengakuan pola (image dan voice), pembuktia teorema dan permainan game. Di tahun-tahun terakhir, cabang perangkat lunak kecerdasan buatan yang baru, yang disebut artificial neural network (jaringan syaraf tiruan), telah berkembang. Jaringan syaraf mensimulasi struktur proses-proses otak (fungsi syaraf biologis) dan kemudian mebawanya kepada perangkat lunak kelas baru yang dapat mengenali pola-pola yang kompleks serta belajar dari pengalaman- pengalaman masa lalu.


  1. REKAYASA PERANGKAT LUNAK (SOFTWARE ENGINEERING)

Rekayasa perangkat lunak merupakan sebuah teknologi yang dibentangkan. Banyak pendekatan keteknikan (termasuk software engineering)  yang harus berada pada sebuah komitmen dasar menuju kualitas. Manajemen kualitas total serta filosofinya mengangkat budaya pengembangan proses yang terus-menerus, dan budaya itu sendiri membawa kepada pengembangan pendekatan yang semakin matang terhadap rekayasa perangkat lunak. Landasan yang menopang rekayasa perangkat lunak merupakan fokus pada kualitas.
Fondasi untuk rekayasa perangkat lunak merupakan bentangan proses. Proses-proses rekayasa perangkat lunak adalah perekat yang menjaga bentangan-bentangan teknologi secara besama-sama dan memungkinkan perkembangan perangkat lunak komputer yang tepat waktu dan rasional. Proses-proses tersebut membatasi kerangka kerja untuk serangkaian area proses kunci (key process key ) yang harus dibangun demi keaktifan penyampaian teknologi pengembangan perangkat lunak. Area proses kunci ini membentuk dasar bagi kontrol manajemen proyek perangkat lunak serta membangun konteks di mana metode teknis diaplikasikan, produk usaha (model, dokumen, data, laporan, form dan lain-lain) dihasilkan, fondasi dibangun, kualitas dijamin, dan perubahan diatur secara rapi.
Metode-metode rekayasa perangkat lunak memberikan teknik untuk membangun perangkat lunak. Metode-metode itu menyangkut serangkaian tugas yang luas yang menyangkut analisis kebutuhan, kontruksi program, desain, pengujian dan pemeliharaan. Rekayasa perangkat lunak mengandalkan pada serangkaian prinsip dasar yang mengatur setiap area teknologi dan menyangkut aktifitas pemodelan serta teknik-teknik deskriptif yang lain.
Alat-alat rekayasa perangkat lunak memberikan topangan yang otamits ataupun semi-otomatis pada proses-proses dan metode-metode yang ada. Ketika alat-alat tersebut diintegrasikan sehingga informasi yang diciptakan oleh satu alat bisa digunakan oleh yang lain, sistem untuk menopang perkembangan perangkat lunak yang disebut computer-aided software engineering (CASE). CASE menggabungkan perangkat lunak, perangkat keras dan database rekayasa perangkat lunak (repositori yang berisi informasi penting tentang analisis, desain, konstruksi program, serta pengujian) untuk menciptakan lingkungan rekayasa perangkat lunak yang analog dengan CAD/CAE (computer-aided design/engineering) untuk perangkat keras.
a.       Pandangan Umum tentang Rekayasa Perangkat Lunak
Untuk mengembangkan perangkat lunak secara memadai, proses pengembangan perangkat lunak harus didefinisikan terlebih dahulu. Usaha yang berhubungan dengan rekayasa perangkat lunak dapat dikategorikan ke dalam tiga fase umum dengan tanpa mempedulikan area aplikasi, ukuran proyek atau kompleksitasnya.
1)      Fase Definisi (Definition Phase)
Fase ini berfokus pada “apa” (what); di mana pada definisi ini pengembang perangkat lunak harus mengidentifikasi informasi apa yang akan diproses, fungsi dan unjuk kerja apa yang dibutuhkan, tingkah laku sistem seperti apa yang diharapkan, interface apa yang akan dibangun, batasan desain apa yang ada, dan kriteria validasi apa yang dibutuhkan untuk mendefinisikan sistem yang sukses. Kebutuhan (requirement) adalah kunci dari sistem dan perangkat lunak yang didefinisikan. Metode yang diaplikasikan selama fase definisi berbeda, tergantung pada paradigma rekayasa perngakat lunak (kombinasi paradigma) yang diaplikasikan. Ada tiga tugas utama yang berada dalam bentuk yang sama yaitu:
Ø   Sistem atau rekayasa informasi
Ø   Perencanaan proyek perangkat lunak
Ø   Analisis kebutuhan
2)      Fase Pengembangan (Development Phase)
Fase ini berfokus pada how (bagaimana); di mana selama masa pengembangan perangkat lunak, teknisi harus mendefinisikan bagaimana data dikonstruksikan, bagaimana fungsi-fungsi diimplementasikan sebagai sebuah arsitektur perangkat lunak, bagaimana detail prosedur akan diimplementasikan, bagaimana interface ditandai (dikarakterisasi), bagaimana rancangan akan diterjemahkan ke dalam bahasa pemrograman (bahasa non-prosedural), serta bagaimana pengujian akan dilakukan. Metode-metode yang diaplikasikan selama masa pengembangan program akan bervariasi, tetapi ada tiga tugas teknis yang khusus yang harus selalu ada, yaitu:
Ø   Rancangan perangkat lunak
Ø   Pemunculan kode
Ø   Pengujian perangkat lunak
3)      Fase Pemeliharaan (Maintenace Phase)
Fase ini berfokus pada perubahan (change), yang dihubungkan dengan koreksi kesalahan, penyesuaian yang dibutuhkan ketika lingkungan perangkat lunak berkembang, serta perubahan sehubungan dengan pperkembangan yang disebabkan oleh perubahan kebutuhan pelanggan. Fase pemeliharaan mengaplikasikan lagi langkah-langkah pada fase definisi dan fase pengembangan, tetapi semuanya tetap tergantung pada konteks perangkat lunak yang ada.

Fase dan langkah-langkah yang berhubungan harus diimbangi dengan sejumlah aktivitas pelindung (umbrella activities). Kegiatan-kegiatan khusus di dalam kategori ini menyangkut:
v  Kontrol dan pelacakan proyek perangkat lunak
v  Review teknis formal
v  Jaminan kualitas perangkat lunak
v  Penghasilan dan penyiapan dokumen
v  Manajemen reusabilitas
v  Pengukuran
v  Manajemen resiko

b.      Paradigma Rekayasa Perangkat Lunak
Untuk menyelesaikan msalah aktual di dalam sebuah setting industri, rekayasa perangkat lunak atau tim perekayasa harus menggabungkan strategi pengembangan yang melingkupi lapisan proses, metode, dan alat-alat bantu serta fase-fase generik. Strategi ini sering diacukan sebagai model proses atau paradigma rekayasa perangkat lunak. Model proses untuk rekayasa perangkat lunak dipilih berdasarkan sifat aplikasi dan proyeknya, metode dan alat-alat bantu yang akan dipakai, dan kontrol serta penyampaian yang dibutuhkan.
Model proses tersebut harus disesuaikan dahulu sebelum digunakan oleh tim proyek perangkat lunak. Untuk melakukannya telah dikembangkan alat bantu teknologi proses untuk membantu organisasi perangkat lunak menganalisa proses mereka yang sedang berlangsung, mengorganisasikan tugas-tugas kerja, mengontro dan memonitor kemajuan serta mengatur kualitas teknis.
Alat bantu teknologi proses memperbolehkan organisasi perangkat lunak untuk membangun sebuah  model kerangka kerja proses umum otomatis, sejumlah tugas dan aktivitas pelindung. Model tersebut, yang biasanya diwakilkan sebagai sebuah jaringan, kemudian dapat dianalisis untuk menentukan aliran kerja khusus dan mengamati struktur proses alternatif yang menyebabkan pengurangan waktu dan biaya pengembangan.
Sekali sebuah proses yang diterima diciptakan, alat-alat bantu teknologi proses yang lain dapat dipergunakan untuk mengalokasi, memonitor dan bahkan mengontrol semua tugas rekayasa perangkat lunak yang didefinisikan sebagai bagian dari model proses. Setiap anggotan tim proyek perangkat lunak bisa mempergunakan alat bantu tersebut untuk mengembangkan checklist dari tugas-tugas kerja yang dilakukan, hasil-hasil kerja yang akan diproduksi dan aktivitas penjaminan kulaitas yang akan dilakukan. Alat-alat bantu teknologi proses juga dapat dipergunakan untuk mengkoordinasi penggunaan alat -alat bantu perangkat lunak komputer bantuan yang sesuai untuk tugas-tugas kerja khusus. 

C.    Penutup
Perangkat lunak dapat menjadi elemen kunci bagi evolusi sistem dan produk yang berbasis komputer. Perangkat lunak dirancang dari program-program, data, dan dokumen. Masing-masing dari item-item tersebut terdiri dari sebuah konfigurasi yang diciptakan sebagai bagian dari proses pengembangan perangkat lunak.
Rekayasa perangkat lunak adalah sebuah disiplin yang mengintegralkan proses, metode dan alat-alat bantu bagi pegembangan proses perangkat lunak komputer.
Tujuan rekayasa perangkat lunak adalah menyediakan sebuah kerangka kerja guna membangun perangkat lunak dengan kualitas yang lebih tinggi. 





DAFTAR PUSTAKA


Kristanto, Andri. 2004. Rekayasa Perangkat Lunak (Konsep Dasar). Yogyakarta: Gava Media

Ngoman, Syahkimiki. 2003. Paradigma Perangkat Lunak. Artikel Internet

Pressman, Roger S. 2002. Rekayasa Perangkat Lunak, Pendekatan Praktisi (Buku Satu). Yogyakarta: Penerbit Andi



Sistem Operasi dan Penggunaan Komputer


Pengertian Sistem Operasi
Sistem operasi atau Operating System (OS) adalah komponen utama dari system komputer. Kita telah mengenal bahwa perangkat komputer terdiri dari perangkat keras (hardware) sebagai benda konkrit yang menyediakan sumber daya komputasi, perangkat lunak (software) sebagai sarana untuk memberitahukan perangkat keras apa saja yang dijalankan, dan pengguna (brainware) yang menggunakan perangkat komputer tersebut. Selain ‘program aplikasi’, sistem operasi masih tergolong perangkat lunak, karena bersifat abstrak/tidak terlihat oleh kasat mata.
Bila kita rinci lebih dalam lagi, sistem operasi boleh dikatakan sebagai sebuah programyang mengatur kerja perangkat keras komputer, dengan menyediakan landasan untuk aplikasi yang berada di atasnya, serta bertindak sebagai penghubung antara para pengguna dengan perangkat keras. Jadi, sistem operasi bertugas untuk mengendalikan (kontrol) serta mengkoordinasikan pengunaan perangkat keras untuk berbagai program aplikasi untuk bermacam-macam pengguna. Dengan demikian, sebuah sistem operasi bukan merupakan bagian dari perangkat keras komputer, dan juga bukan merupakan bagian dari perangkat lunak aplikasi komputer, apalagi tentunya bukan merupakan bagian dari para pengguna komputer. Boleh dikatakan bahwa sistem operasi berada di antara perangkat keras dan perangkat lunak.
Abstraksi komponen Sistem Operasi
Operating sistem boleh dikatakan sebagai monitor, executive, supervisor, controller ataumaster control program. Ibarat dalam suatu perusahaan, OS bisa berfungsi sebagaimanajer, dimana tugas manajer bertanggung jawab, mengendalikan, mengkoordinasi semua kegiatan perusahaan secara efisien dan efektif. Bila di restauran atau rumahmakan, OS bisa diindentikan dengan seorang pelayan yang merupakan penghubungantara tamu yang dilayani dengan dapur yang mempersiapkan hidangan untuk si tamu. Atau OS bisa berperan sebagi sutradara di balik panggung. Penonton hanya mengetahui bahwa pertunjukkan telah berjalan sesuai dengan baik dan lancar, tetapi pertunjukan tersebut tidak akan berjalan sesuai dengan yang diharapkan tanpa adanya sutradara yang mengatur semua kegiatan mulai dari persiapan sebelum pentas sampai dengan pentas.
Dapat disimpulkan bahwa sistem operasi adalah sesuatu hal yang sangat penting dalam sistem komputer. Satu hal yang menjadi pertimbangan setelah membeli perangkat komputer dan ingin mengoperasikannya adalah sistem operasi apa yang harus dipakai dan dijadikan salah satu komponen dari sistem komputer.

Komponen-komponen Sistem Operasi
Sistem operasi secara umum tidak memiliki stuktur yang sama. Namun menurut Avi Silberschatz, Peter Galvin, dan Greg Gagne, umumnya sebuah sistem operasi modern mempunyai komponen sebagai berikut:
Ø  Managemen Proses.
Ø  Managemen Memori Utama.
Ø  Managemen Berkas.
Ø  Managemen Sistem I/O.
Ø  Managemen Penyimpanan Sekunder.
Ø  Sistem Proteksi.
Ø  Jaringan.
Ø  Command-Interpreter System.
Sedangkan menurut A.S. Tanenbaum, sistem operasi mempunyai empat komponen utama, yaitu managemen proses, input/output, managemen memori, dan sistem berkas.
1.   Managemen Proses
Proses adalah sebuah program yang sedang dieksekusi. Sebuah proses membutuhkan beberapa sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, memori, berkas-berkas, dan perangkat-perangkat I/O. Sistem operasi mengalokasikan sumber daya-sumber daya tersebut saat proses itu diciptakan atau sedang diproses/dijalankan. Ketika proses tersebut berhenti dijalankan, system operasi akan mendapatkan kembali semua sumber daya yang bisa digunakan kembali. Jadi masalah yang mendasar dari manajemen proses adalah mengenai penanganan terhadap CPU adar mampu melakukan proses dengan efisien dan efektif.Sistem operasi bertanggung jawab atas aktivitas-aktivitas yang berkaitan dengan managemen proses seperti :
Ø  Membuat dan menghapus proses pengguna dan sistem proses.
Ø  Menunda atau melanjutkan proses.
Ø  Menyediakan mekanisme untuk proses sinkronisasi.
Ø  Menyediakan mekanisme untuk proses komunikasi.
Ø  Menyediakan mekanisme untuk penanganan deadlock.
2.   Managemen Memori Utama
Memori utama atau lebih dikenal sebagai memori adalah sebuah array yang besar dari word atau byte, yang ukurannya mencapai ratusan, ribuan, atau bahkan jutaan. Setiap word atau byte mempunyai alamat tersendiri. Memori utama berfungsi sebagai tempat penyimpanan instruksi/data yang akses datanya digunakan oleh CPU dan perangkat I/O. Memori utama termasuk tempat penyimpanan data yang yang bersifat volatile – tidak permanen -- yaitu data akan hilang kalau komputer dimatikan. Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan managemen memori seperti:
Ø  Menjaga track dari memori yang sedang digunakan dan siapa yang menggunakannya.
Ø  Memilih program yang akan di-load ke memori.
Managemen memori memegang peranan dalam sistem operasi karena semua program dan data yang akan dan sedang diproses akan menempati memori komputer (memori utama). Masalah yang timbul adalah alokasi memori untuk program dan data yang menempati memori tersebut, masalah inilah yang akan ditangani oleh OS. Tergantung dari OS dan perangkat kerasnya, manajemen memori dapat berupa :
Ø  Singgle Contigous Allocation : alokasi dengan batas tunggal
Ø  Partitioned allocation : alokasi dengan penyekat
Ø  Rellocatable Partitioned allocation : alokasi dengan partisiyang dapatditempatkan kembali
Ø  Paged allocation : alokasi dengan halaman
Ø  Demand paged Allocation : alokasi dengan halaman yang dibutuhkan
Ø  Segmented Allocation : alokasi dengan segmen.
3.   Managemen Berkas
Berkas adalah kumpulan informasi yang berhubungan, sesuai dengan tujuan pembuat berkas tersebut. Umumnya berkas merepresentasikan program dan data. Berkas dapat mempunyai struktur yang bersifat hirarkis (direktori, volume, dll.). Sistem operasi mengimplementasikan konsep abstrak dari berkas dengan mengatur media penyimpanan massa, misalnya tapes dan disk. Sistem operasi bertanggung-jawab dalam aktivitas yang berhubungan dengan managemen berkas:
Ø  Pembuatan dan penghapusan berkas.
Ø  Pembuatan dan penghapusan direktori.
Ø  Mendukung manipulasi berkas dan direktori.
Ø  Memetakan berkas ke secondary-storage.
Ø  Mem-back-up berkas ke media penyimpanan yang permanen (non-volatile).
4.   Managemen Sistem I/O
Sering disebut device manager. Menyediakan device driver yang umum sehingga operasi I/O dapat seragam (membuka, membaca, menulis, menutup). Contoh: pengguna menggunakan operasi yang sama untuk membaca berkas pada perangkat keras, CD-ROM dan floppy disk.
Komponen Sistem Operasi untuk sistem I/O:
Ø  Penyangga: menampung sementara data dari/ ke perangkat I/O.
Ø  Spooling: melakukan penjadualan pemakaian I/O sistem supaya lebih efisien (antrian dsb.).
Ø  Menyediakan driver: untuk dapat melakukan operasi rinci untuk perangkat keras I/O tertentu.
5.   Managemen Penyimpanan Sekunder.
Data yang disimpan dalam memori utama bersifat sementara dan jumlahnya sangat kecil. Oleh karena itu, untuk menyimpan keseluruhan data dan program computer dibutuhkan penyimpanan sekunder yang bersifat permanen dan mampu menampung banyak data, sebagai back-up dari memori utama. Contoh dari penyimpanan sekunder adalah hard-disk, disket, dll.
Sistem operasi bertanggung-jawab atas aktivitas-aktivitas yang berkaitan dengan managemen disk seperti:
Ø  free-space management.
Ø  alokasi penyimpanan.
Ø  penjadualan disk.
6.   Sistem Proteksi.
Proteksi mengacu pada mekanisme untuk mengontrol akses yang dilakukan oleh program, prosesor, atau pengguna ke sistem sumber daya. Mekanisme proteksi harus:
Ø  Membedakan antara penggunaan yang sudah diberi izin dan yang belum.
Ø  Menspesifikasi kontrol untuk dibebankan/diberi tugas.
Ø  Menyediakan alat untuk pemberlakuan sistem.
7.   Jaringan.
Sistem terdistribusi adalah sekumpulan prosesor yang tidak berbagi memori, atau clock. Setiap prosesor mempunyai memori dan clock tersendiri. Prosesor-prosesor tersebut terhubung melalui jaringan komunikasi Sistem terdistribusi menyediakan akses pengguna ke bermacam sumber-daya sistem. Akses tersebut menyebabkan peningkatan kecepatan komputasi dan meningkatkan kemampuan penyediaan data.
8.   Command-Interpreter System.
Sistem Operasi menunggu instruksi dari pengguna (command driven). Program yang membaca instruksi dan mengartikan control statements umumnya disebut: controlcard interpreter, command-line interpreter dan terkadang dikenal sebagai shell. Command-Interpreter System sangat bervariasi dari satu sistem operasi ke system operasi yang lain dan disesuaikan dengan tujuan dan teknologi perangkat I/O yang ada. Contohnya: CLI, Windows, Pen-based (touch), dan lain- lain.

Utilitas Sistem Operasi
Operating sistem biasanya menyediakan sejumlah program-program utility atau programprogram bermanfaat yang berguna untuk menyederhanakan operasi proses dari apikasi program yang dibuat oleh pemakai komputer.
Macam- macam utility yang biasa disediakan oleh sistem operasi anatara lain : text editor, linkage editor, debugger, dan beberapa command untuk menangani disk, file serta peralatan lainnya.
1.   Text Editor
Secara umum, hampir semua sistem operasi menyediakan sebuah text editor yang berguna untuk menuliskan suatu teks atau suatu program aplikasi yang akan direkamkan di disk magnetik. Kebanyakan yang menggunakan text editor adalah para programmer untuk menuliskan sorce code program yang ingin dibuat, misalnya dalam bahasa Assambly, C, Java dan lain sebagainya.

Notepad, Text editor sederhana sebagai Utilitas dari Windows™
2.   Linker Editor
Linker editor atau linker merupakan program yang digunakan untuk mengkonversi objek program yang sudah diterjemahkan ke dalam bahasa mesin ke dalam bentuk program yang siap dijalankan (executable program). Linker juga dapat digunakan untuk menggabung beberapa objek program yang dikompilasi secara terpisah menjadi sebuah excutable program.
3.   Debbuger
Debugger atau debugger aid (pelacak) merupakan program fasilitas OS untuk melacak dan membetulkan kesalahan program yang sudah berbentuk bahasa mesin.

Debugger Windows™
4.   Command
Disamping sejumlah fasilitas di atas, OS juga menyediakan fasilitas-fasilitas lainnya dengan suatu perintah langsung (command) tertentu. Command ini dapat digunakan untuk menangani disk, file dan peripheral. Command dapat berbentuk internal command dan external command. Contohnya adalah MS-DOS atau PC-DOS, internal command terdiri dari dari beberapa command yang disimpan bersama-sama dalam file di disk dengan nama file COMMAND.COM, kalau di Windows™ NT/2000/Xp, internal command berada pada file cmd.exe.
Operating System sekarang, terlebih lagi penggunaan Graphic User Interface atau tampilan grafik yang digunakan sebagai antar muka OS tersebut, biasanya menyediakan utility program pelengkap yang sangat banyak. Ambil contoh saja OS yang paling banyak digunakan di komputer micro atau komputer desktop yaitu Windows™, banyak programprogram pendukung sudah dipaket menjadi satu bagian dari OS tersebut .
Windows™ menggolongkan program-program pelengkap itu ke dalam accessories, biasanya bisa dipanggil dari menu “Start | Programs | Accessories”

Komponen-komponen Windows™

Menghidupkan Komputer
Saat komputer dinyalakan, komputer pertama kali akan menjalankan bootstrap program yaitu sebuah program sederhana yang disimpan dalam ROM yang berbentuk chip CMOS (Complementary Metal Oxide Semiconductor). Proses ini dinamakan booting. Bootstrap program lebih dikenal dengan BIOS (Basic Input Output System).
Bootstrap program utama, yang biasanya terletak di motherboard akan memeriksaperangkat keras utama dan melakukan inisialisasi terhadap program dalam hardware yang dikenal dengan nama firmware. Bootstrap program utama kemudian akan mencari dan meload kernel sistem operasi ke memori lalu dilanjutkan dengan inisialisasi sistem operasi. Dari sini program sistem operasi akan menunggu kejadian tertentu. Kejadian ini akan menentukan apa yang akan dilakukan sistem operasi berikutnya (event-driven).
Proses booting terdiri dari cold booting dan warm booting. Cold booting merupakan proses menghidupkan komputer pertama kali untuk mengambil bootstrap program dari keadaan listrik komputer mati (off) dengan cara menghidupkannya. Sedang warm booting merupakan proses pengulangan pengambilan bootstrap program dalam keadaan komputer masih hidup dengan cara menekan beberapa tombol keyboard tertentu (misalnya dengan menekan tombol CTRL + ALT + DELETE secara bersamaan). Warm booting biasanya dilakukan saat komputer macet, dari pada harus mematikan aliran listrik komputer dan menghidupkannya kembali (lebih lama dan bisa membuat computer rusak), lebih baik dilakukan warm booting.

Mematikan Komputer
Setelah proses booting berhasil dan masuk ke operating sistem yang terpasang dikomputer, barulah bisa menggunakan dan menjalankan aplikasi program di computer tersebut. Jika hendak mematikan komputer, jangan membiasakan langsung menekan tombol power saat sistem operasi tersebut sedang aktif. Karena selain bisa merusak sistem operasi tersebut, hardware penyimpanan seperti harddisk akan mudah rusak.
Heads pada harddisk dibuat sedekat mungkin dengan permukaan penyimpanan, heads melayang pada bantalan udara yang tercipta akibat putaran disk. Jika harddisk drive mengalami hentakan saat menjalankan operasi, sangat mungkin heads tersebut menghentak permukaan disk. Dengan dilakukan shutdown, bertujuan agar drive dapat memindahkan heads sebelum power dimatikan, dan disk berhenti secara perlahan. Biasakan mengakhiri sistem dengan cara yang aman, misalka dengan melakukan proses shut down. Hampir semua sistem operasi menyediakan fasilitas shut down untuk mengakhiri sistem operasinya dan mematikan komputer secara aman.

Mengakhiri OS Windows™





REFERENSI
Jogiyanto H.M. Pengenalan Komputer, Dasar ilmu Kompoter, Pemprograman, SistemInformasi dan Intelegensi buatan. Yogyakarta : Andi Offset, 1995
Samsudin B. Tufiq. Pemprograman Linux Assembly NASM & GASM. Jakarta :Elexmedia Komputindo, 2003.
Masyarakat Digital Gotong Royong (MDGR). Pengantar Sistem Operasi Komputer Plus Studi Kasus Kernel Linux. http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/  BUKU/SistemOperasi.pdf, 2004.
Noor Haryono. Pengantar Informatika. http://www.ilmukomputer.com, 2003.

Apakah Seseorang Itu Perlu Mengucapkan, "Sesungguhnya Aku Ini Sedang Berpuasa", Jika Ia Dicaci Maki?


Apakah Seseorang Itu Perlu Mengucapkan, "Sesungguhnya Aku Ini Sedang Berpuasa", Jika Ia Dicaci Maki?

Abu Hurairah r.a, berkata, "Rasulullah bersabda, 'Allah berfirman, (dalam satu riwayat: dari Nabi, beliau meriwayatkan dari Tuhanmu, Dia berfirman 8/212), "Setiap amal anak Adam itu untuknya sendiri selain puasa, sesungguhnya puasa itu untuk Ku (dalam satu riwayat: Tiap-tiap amalan memiliki kafarat, dan puasa itu adalah untuk Ku 8/212), dan Aku yang membalasnya. Puasa itu perisai. Apabila ada seseorang di antaramu berpuasa pada suatu hari, maka janganlah berkata kotor dan jangan berteriak-teriak (dan dalam satu riwayat: jangan bertindak bodoh 2/226). Jika ada seseorang yang mencaci makinya atau memeranginya (mengajaknya bertengkar), maka hendaklah ia mengatakan, 'Sesungguhnya saya sedang berpuasa.' (dua kali 2/226) Demi Zat yang jiwa Muhammad berada dalam genggaman-Nya, sungguh bau mulut orang yang berpuasa di sisi Allah adalah lebih harum daripada bau kasturi. Bagi orang yang berpuasa ada dua kegembiraan yang dirasakannya. Yaitu, apabila berbuka, ia bergembira; dan apabila ia bertemu dengan Tuhannya, ia bergembira karena puasanya itu."



Facebook Comment