Sabtu, 02 Oktober 2010

Rekayasa Perangkat Lunak II

BAB 2
PROSES

Di dalam konteks buku ini, kita mendefinisikan proses perangkat lunak sebagai sebuah kerangka kerja untuk tugas-tugas yang dibutuhkan untuk membangun perangkat lunak dengan kualitas yang tinggi. Perkembangan perangkat lunak juga meliputi teknologi yang mempopulasikan proses, metode teknis, serta alat-alat otomatis.

2.1 PENGEMBANGAN PERANGKAT LUNAK – SEBUAH LAPISAN TEKNOLOGI
Definisi yang diusulkan oleh Fritz Baeur [NAU69] pada konferensi seminar mengenai Rekayasa perangkat lunak adalah pengembangan dan penggunaan prinsip pengembangan suara untuk memperoleh perangkat lunak untuk memperoleh perangkat lunak secara ekonomis yang reliabel dan bekerja secara efisien pada mesin nyata.
IEEE [IEE93] telah mengembangkan beberapa definisi yang lebih komprehensif , yaitu sebagai berikut:
1. Rekayasa perangkat lunak adalah aplikasi dari sebuah pendekatan kuantifiabel, disiplin, dan sistematis kepada pengembangan, operasi dan pemeliharaan perangakat lunak; yaitu apliaksi dari perangkat lunak.
2. Studi pada pendekatan-pendekatan seperti pada pengertian (1).

Proses, Metode dan Alat Bantu
Proses-proses Rekayasa perangkat lunak adalah perangkat yang menjaga bentangan-bentangan teknologi secara bersama-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/KPAs) [PAU93] yang harus dibangun demi keefektifan penyampaian teknologi pengembangan perangkat lunak.
Sistem untuk menopang perkembangan perangkat lunak yang disebut computer-aided Rekayasa perangkat lunak(CASE) terbangun. CASE menggabungkan perangkat lunak, perangkat keras, dan database perangkat lunak untuk menciptakan lingkungan rekayasa perangkat lunak yang analog dengan CAD/CAE (computer-aided design/engineering) untuk perangkat keras.

Pandangan Umum Tentang Rekayasa Perangkat Lunak
Rekayasa merupakan analisis, desain, konstruksi, verifikasi, dan manajemen kesatuan teknik atau sosial. Usaha yang berhubungan dengan Rekayasa perangkat lunak dapat dikategorikan ke dalam tiga fase umum tanpa mempedulikan area aplikasi, ukuran proyek, dan kompleksitasnya.
1. fase definisi (Definition fhase)
2. fase pengembangan (Development fhase)
3. fase pemeliharaan (Maintenance fhase)

PROSES PERANGKAT LUNAK
Pendekatan SEI (Rekayasa perangkat lunak Institute) memberikan sebuah pengukuran terhadap efektivitas global dari sebuah praktek perekayasaan perangkat lunak perusahaan dan membangun lima tingkat kematangan proses, yang didefinisikan dengan cara berikut:
Level 1 : Initial – Proses perangkat lunak yang ditandai sebagai ad ho, dan bahkan kadang-kadang bersifat kacau(chaotic).
Level 2 : Repeatable – Proses-proses manajemen proyek dasar dibangun untuk menelusuri masalah biaya, jadual dan fungsionalitas.
Level 3 : Defined – Proses perangkat lunak, baik untuk aktivitas manajemen atau perekayasaan didokumentasikan, distandarkan, dan diintegrasikan kedalam proses perangkat lunak organisasi besar.
Level 4 : Managed – Pengukuran detail terhadap proses perangkat lunak dan kualitas produksi yang dikumpulkan.
Level 5 : Optimizing – Pembatasan proses yang terus menerus dimungkinkan oleh umpan balik kuantitatif dari proses dan dari gagasan inofatif pengujian secara teknologi.

Lima tingkat yang didefinisikan oleh SEI ini disimpulkan dari sebuah konsekuensi respon evaluasi ke assessment questionnaire yang didasarkan pada CMM. Hasil dari kuesioner tersebut didestilasi menjadi sebuah tingkatan numerik tunggal yang memberikan identifikasi terhadap kematangan proses organisasi.

MODEL-MODEL PROSES PERANGKAT LUNAK
Model proses untuk Rekayasa perangkat lunak dipilih berdasarkan sifat aplikasi dan proyeknya, metode dan alat-alat bantu yang akan dipakai, dan control serta penyampaian yang dibutuhkan.

MODEL SEKUENSIAL LINIER
Model Sekuensial linier mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan system pada seluruh analisis, design, kode, pengujian dan pemeliharaan.
Model sekuensial linier melingkupi aktivtas-aktivtas sebagai berikut:
- Rekayasa dan pemodelan system/indormasi
- Analisis kebutuhan perangkat lunak
- Desaign
- Generasi kode
- Pengujian
- Pemeliharaan
Model Sekuensial linier adalah paradigma rekayasa perangkat lunak yang paling luas di pakai dan paling tua.
Masalah-masalah yang kadang-kadang terjadi ketika model sekuensial linier diaplikasikan adalah :
- Jarang sekali proyek nyata mengikuti aliran sekuensial yang dianjurkan oleh model.
- Kadang-kadang sulit bagi pelanggan untuk menyatakan semua kebutuhanya secara eksplisit.
- Pelanggan harus bersifat sabar.
- Pengembang sering melakukan penundaan yang tidak perlu.

MODEL PROTOTIPE
Secara ideal prototipe berfungsi sebagai sebuah mekanisme untuk mengidentifikasi kebutuhan perangkat lunak.
Tetapi prototyping bias juga menjadi masalah karena alasan-alasan sebagai berikut :
- Tidak mencantumkan kualitas perangkat lunak secara keseluruhan atau kemampuan pemeliharaan untuk jangka waktu yang panjang.
- Sistem Operasi atau bahasa pemrograman yang tidak sesuai bisa dipakai secara sederhana karena mungkin diperoleh dan dikenal, algoritma yang tidak efisien secara sederhana bisa diimplementasikan untuk mendemon-strasikan kemampuan.

MODEL RAD
Rapid Aplication Development (RAD) adalah sebuah model proses perkembangan perangkat lunak sikuensial linear yang menekankan siklus perkembangan yang sangat pendek.
Pendekatan RAD meliputi fase-fase sebagai berikut[KER94]:
- Bussiness modeling. Aliran informasi di antara fungsi-fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan-pertanyaan tertentu.
- Data modeling. Aliran informasi yang didefinisikan sebagai bagian dari fase business modeling disaring kedalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut.
- Prosess modeling. Aliran informasi yang didefinisikan didalam fase data modeling ditransformasikan untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis.
- Aplication generation. RAD mengasumsikan pemakaian teknik generasi ke empat.
- Testing and turnover. Karena proses RAD menekankan pada pemakaian kembali, banyak komponen program telah diuji. Hal ini mengurangi keseluruhan waktu pengujian.
Seperti semua proses model yang lain, pendekatan RAD memiliki kekurangan [BUT94]:
• Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber daya manusia yang memadai untuk menciptakan jumlah tim RAD yang baik.
• RAD menuntut pengembang dan pelanggan memiliki komitmen didalam aktifitas rafid-fire yang diperlukan untuk melengkapi sebuah system, didalam kerangka waktu yang sangat diperpendek.

2.7 MODEL PROSES PERANGKAT LUNAK EVOLUSIONER
Model sekuential linier (subbab 2.4) dirancang bagi perkembangan garis lurus. Pada dasarnya pendekatan air terjun ini mengandalkan bahwa sebuah sistem lengkap akan disamapaikan setelah urutan linier tersebut dilengkapi.
Secara umum model itu tidak dirancang untuk menyampaikan sistem produksi. Sifat evolusioner perangkat lunak tidak dimasukkan di dalam satu paradigma rekayasa perangkat lunak klasik tersebut.
Model evolusioner adalah model iterative. Model itu ditandai dengan tingkah laku yang memungkinkan perekayasa perangkat lunak mengembangkan versi perangkat lunak yang lebih lengkap sedikit demi sedikit.

2.7.1 Model Pertambahan
Model inkremental menggabungkan elemen – elemen model sekuential linier dengan filosofi prototipe iteratif. Harus dicatat bahwa aliran proses untuk bebagai pertambahan tersebut dapat menggabunggkan paradigma prototipe.
Pada saat model pertambahan dipergunakan , pertambahan pertama sering merupakan produk inti (core product), yaitu sebuah model pertamhan yang dipergunakan, tetapi beberapa muka tambahan tetap disampaikan. Sebagai hasil dari pemakaian dan/atau evaluasi, maka dikembangkan rencana bagi pertumbuhan selanjutnya. Rencana tersebut menekan modifikasi produk inti untuk secara lebih baik memenuhi kebutuhan para pelanggandan penyampaian fitur serta fungsionalitas tambahan.

2.7.2 Model Spiral
Model Spiral (spiral model) yang pada awalnya diusulkan oleh Boehm [BOE88], adalah model proses perangakat lunak yang evolusioner yang merangakai sifat iteratif dari prototipe dengan cara control dan aspek sistematis dari model sekuensial linier.
Model spiral dibagi menjadi sejumlah aktifitas kerangka kerja, disebut juga wilayah tugas. Diantara tiga sampai enam wilayah tugas.
• Komunikasi pelanggan -- tugas–tugas yang dibutuhkan untuk membangun komunikasi yang efektif diantara pengembang dan pelanggan.
• Perencanaan -- tugas-tugas yang dibutuhkan untuk mendefinisikan sumber daya, ketepatan waktu, dan proyek informasi lain yang berhubungan.
• Analisis risiko -- tugas-tugas yang dibutuhkan untuk menaksir risiko-risiko, baik manajemen maupun teknis.
• Perekayasaan -- tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut.
• Konstruksi dan peluncuran -- tugas-tugas yang dibutuhkan untuk mengkonstruksi, menguji, memasangg (install) dan memberikan pelayanan kepada pemakai.
• Evaluasi pelanggan -- tugas-tugas yang dibutuhkan untuk memperoleh umpan balik dari pelanggan dengan didasarkan pada evaluasi representasi perangkat lunak yang dibuat selama masa perekayasaan, dan diimplementasikan selama masa pemasangan.

Sebuah proyek perkembangan konsep (concept development project) berawal dari inti spiral dan akan terus berlangsung sampai perkembangan konsep itu terlengkapi. Model spiral menggunakan prototipe sebagai mekaninsme pengurangan risiko.tetapi model spiral memungkinkan pengembang menggunakan pendekatan prototipe pad asetiap keadaan di dalam evolusi produk.

2.7.3 Model Rakitan Komponen
Model Rakitan komponen menggunakan beberapa karakteristik model spiral. Model ini bersifat evolusioner [NIE92], sehingga membutuhkan pendekatan iteratif untuk menciptakan perangkat lunak. Tetapi model rakitan komponen merangkai aplikasi dari komponen perangkat lunak sebelum dipaketkan.
Model rakitan komponen membawa kepada penggunaan kembali perangkat lunak, dan kegunaan kembali tersebut memberi sejumlah keuntungan yang bias diukur pada perekayasa perangkat lunak. Berdasarkan studi reusabilitas ini, QSM Associates, Inc. melaporkan bahwa rakitan komponen telah memberi reduksi sebanyak 70% di dalam siklus waktu perkembangan, 84% pada biaya proyek, serta memberikan indeks produktivitas sebesar 26,2 [YOU94].

2.7.4 Model Perkembangan Konkruen
Model proses yang konkruen disajikan secara skematis sebagai sederetan aktivitas teknis mayor, tugas-tugas, dan keadaanya yang lain. Contohnya aktivitas rekayasa yang dibatasi untuk model spiral [Subbab 2.72] dipenuhi dengan melakukan tugas-tugas sebagai berikut: prototyping, dan atau pemodelan analisis, spesifikasi kebutuhan, dan rancangan. Model proses konkruen sering digunakan sebagai paradigma bagi pengembangan aplikasi klien/server. Sistem klien/server dirancang dari serangkaian komponen fungsional.

2.8 MODEL FORMAL
Model metode formal mencangkup sekumpulan aktivitas yang membawa kepada spesifikasi matematis perangkat lunak computer. Metode formal memungkinkan perekayasa perangkat lunak untuk mengkhususkan, mengembangkan dan memverifikasi sistem berbasis komputer dengan menggunakan notasi matematis yang tepat. Variasi di dalam pendekatan ini, disebut juga clean-room Rekayasa perangkat lunak, [MIL87,DYE92] sedang diaplikasikan oleh banyak organisasi pengembang perangkat lunak.
Model metode formal sudah menawarkan janji perangkat lunak yang bebas cacat/kesalahan, tetapi perhatian tentang kemampuan aplikasinya di dalam lingkungan bisnis sudah mulai disuarakan:
1. Pengembangan model format banyak memakan waktu dan mahal.
2. Karena beberapa pengembang perangkat lunak perlu mempunyai latar belakang yang diperlukan untuk mengaplikasikan metode formal, maka diperlukan pelatihan yang ekstensif.
3. Sulit untuk menggunakan model-model sebagai sebuah makanisme komunikasi bagi pemakai yang secara teknik belum canggih.

2.9 TEKNIK GENERASI KEEMPAT
Bentuk “teknik generasi keempat” (4GT) mencangkup serangkaian batu perangkat lunak yang luas yang secara umum memiliki satu hal: masing-masing memungkinkan perekayasa perangkat lunak untuk mengkhususkan beberapa karakteristik perangkat lunak pada suatau tingkat yang tinggi. Untuk aplikasi yang kecil, mungkin untuk bergerak secara langsung dari langkah pengumpulan kebutuhan ke implementasi, digunakan bahasa generasi keempat nonprosedural (fourth generation language/4GL). Tetapi untuk usaha yang lebih besar, diperlukan pengembangan strategi desain bagi sitem tersebut, sekalipun 4GL akan digunakan.
Ada beberapa segi baik dari kedua sisi klaim di atas; dan mungkin untuk menyimpulkan keadaan sekarang dari pendekatan 4GT.
1. kegunaan 4GT telah disebarkan selama decade terakhir dan sekarang merupakan pendekatan yang masih berjalan teus bagi berbagai area aplikasi yang berbeda-beda.
2. data yang dikumpulkan dari perusahaan-perusahaan yang menggunakan 4GT menunjukkan bahwa waktu yang dibutuhkan untuk menghasilkan perangkat lunak sangat berkurang untuk aplikasi kecil dan menengah, serta jumlah desain dan analisis bagi aplikasi kecil juga berkurang.
3. tetapi kegunaan 4GT untuk pengembangan perangkat lunak yang besar membutuhkan analisis, desain dan pengujian yang sangat banyak untuk memperoleh penghematan waktuyang subtansial yang dapat dicapai melalui eliminasi pengkodean.
Kesimpulannya, teknik generasi keempat telah menjadi sebuah bagian yang penting dari perkembangan perangkat lunak. Bila dirangkai dengan pendekatan rakitan komponen (Subbab 2.7.3), paradigma 4GT bias menjadi pendekatan yang dominan untuk pengembangan perangkat lunak.

2.10 TEKNOLOGI PROSES
Untuk melakukan model proses, telah dikembangkan alat-alat bantu teknologi proses untuk membantu organisasi perangkat lunak menganalisa proses mereka yang sedang berlangsung, mengordinasi tugas-tugas kerja, mengontrol dan memonitor kemajuan, serta mengatur kualitas teknis [BAN95]. Sekali sebuah proses yang bias 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. Alat-alat bantu teknologi proses juga dapat dipergunakan untuk mengkoordinasikan penggunaan alat-alat bantu perangkat lunak komputer bantuan yang sesuai untuk tugas-tugas kerja khusus.

2.11 PRODUKSI PROSES
Secara singkat, Margaret David [DAV95] mengomentari dualitas hasil dan proses sebagai berikut:
Sekitar setiap sepuluh tahun lebih atau kurang dari lima, komunitas perangkat lunak kembali mendefinisikan “masalah” dengan menggeser fokousnya dari isu proses. Demikianlah, kita telah mempergunakan bahasa program terstruktur diikuti dengan enkapsulasi data diikuti dengan penekanan pada Rekayasa perangkat lunak Institute’s Software Development Capability Maturity Model.

2.13 RANGKUMAN
Rekayasa perangkat lunak adalah sebuah disiplin yang mengintegrasikan proses, metode, dan alat-alat bantu bagi perkembangan proses perangkat lunak komputer. Sejumlah model proses yang berbeda untuk rekayasa perangkat lunak telah diusulkan, dan masing-masing mengungkapkan kelemahan dan kekuatan mereka, yang semuanya memiliki sederetan fase generic secara umum.

DAFTAR PUSTAKA
[NAU69] Naur, P., dan B. Randall (eds), Rekayasa perangkat lunak: A Report on a Confrence Sponsored by the NATO Science Committee, NATO, 1969.
[IEE93] IEEE Standards Collection: Rekayasa perangkat lunak, IEE Standard 610.12-1990, IEE, 1993.
[PAU93] Paulk, M. Et al., Capability Maturity Model for Software, Rekayasa perangkat lunak Institute, Carnegie Mellon University, Pittsburgh, PA, 1993.
[KER94] Kerr, J., and R. Hunter, Inside RAD, McGraw-Hill, 1994.
[BUT94] Butler, J., “Rapid Aplication Development in Action”, Managing System Development, Applied Computer Research, Vol. 14, No. 5, Mei 1994, h. 6-8.
[BAN95] Bandinelli, S. Et al., “Modelling and Improving an Industrial Software Process”, IEEE Tranx, Rekayasa perangkat lunak Vol. 21, No. 5, Mei 1995, h. 440-454.
[BOE88] Boehm, B., “A Spiral Model for Software Development and Enchancement”, Computer, Vol. 21, No. 5 Mei 1988, h. 61-72.
[DAV95] Davis, M.J.,”Process and Product: Dichotomy or Duality”., Rekayasa perangkat lunak Notes, ACM Press, Vol. 20, No. 2, April 1995, h. 17-18.
[MIL87] Mills, H.D., M. Dyer, dan M. Linger,”Cleanroom Rekayasa perangkat lunak”, IEE Software, September 1987, h. 19-25.
[NIE92] Nierstrasz, “Component-Oriented Software Development”, CACM, Vol. 35, No. 9, September 1992, h. 160-165.

Rekayasa Perangkat Lunak


BAGIAN SATU

BAB I  PRODUK

Perangkat lunak memiliki dua fungsi
1.             Sebagai sebuah produk, perangkat lunak mengantarkan pontensi penghitungan yang dibangun oleh perangkat lunak computer.
2.             Sebagai sebuah kendaraan yang dipakai untuk mengantarkan produk, perangkat lunak berlaku sebagai dasar untuk control computer (sistem operas), komunikasi informasi (jaringan) dan penciptaan serta control dari program-program lain.

Serangkaian masalah yang berhubungan dengan perangkat lunak masih muncul selama era evolusi sistem basis komputer dan intensitas masalah-masalah tersebut terus bertambah.
1.             Kemajuan perangkat keras (hardware) terus berlanjut, melampaui kita untuk membangun perangkat lunak yang sesuai dengan perangkat keras yang ada
2.             Kemapuan kita untuk membangun program baru tidak dapat memenuhi kebutuhan akan program baru, juga tidak dapat membangun program yang cukup cepat untuk memenuhi kebutuhan bisnis dan pasar.
3.             Pemakaian komputer yang tersebar luas membuat masyarakat semakin tergantung pada operasi perangkat lunak yang reliable. Kerusakaan ekonomi yang besar dan potensi pederitaan manusia dapat muncul bila terjadi kegagalan perangkat lunak.
4.             Kita berjuang untuk membangun perangkat lunak komputer dengan reliabilitas dan kualitas yang sangat tinggi.
5.             Kemapuan kita untuk mendukung program yang ada terhambat oleh buruknya desain serta sumber daya yang tidak memadai.

Perspektif Industri

Para menajer dan praktisi sering melontarkan pertanyaan-pertanyaan tentang perangkat lunak seperti berikut.
1.             Mengapa membutuhkan waktu yang sangat lama untuk meyelesaikan program?
2.             Mengapa biayanya sangat tinggi?
3.             Dapatkah kita menemukan kesalahan yang ada pada program sebelum menedistribusikannya kepada pelanggan?
4.             Mengapa sangat sulit bagi kita untuk mengukur kemajuan pada saat perangkat lunak dikembangkan?

Abad Pabrik Perangkat Lunak

Dalam masalah resiko yang kedengarnya sangat melodramatic, perusahaan perangkat lunak sekarang ini berbeda di dalam posisi yang sama dengan apa yang dialami oleh perusahaan-perusahaan baja pada tahun 1950 dan 1960. Perusahaan-perusahaan yang besar maupun kecil memiliki apa yang disebut software plant. Ada ribuan aplikasi berbasis perangkat lunak dengan kondisi kritis yang sangat perlu diperbaharui:
1.             Aplikasi sistem informasi yang ditulis 20 tahun yang lalu, yang mengalami 40 generasi perubahan dan sekarang tidak mungkin lagi dilakukan uapaya pembaruan bahkan modifikasi yang paling sederhana sekalipun sudah akan membuat perangkat lunak tersebut gagal beroperasi.
2.             Aplikasi pengembangan yang dipakai untuk memproduksi desain data telah kritis, dan karena cara pemeliharaan serta usia yang sudah tua, membuat tidak ada orang yang mengetahui struktur internalnya.
3.             Embedded system (dipakai untuk mengontrol sumber tenaga, rambu udara, dan perusahaan besar, diatara ribuan macam aplikasi) yang sangat aneh serta kadang-kadang mempunyai kelakuan yang tidak dapat dijelaskan tetapi tidak dapat dibawa keluar untuk diperbaiki, karena tidak ada lagi yang dapat menggantikan posisinya.

Daya Saing Perangkat Lunak

Sekarang ini perangkat lunak sudah menjadi lahan yang sangat kompetitif. Perangkat lunak yang dulu dibangun secara internal di dalam komputer sekarang sudah dapat diproduksi secara terpisah. Perusahaan yang pada awalnya harus membayar sepasukan pemerogram untuk menghasilkan aplikasi tertentu, sekarang dapat mengambil tenaga dari luar dan dilakukan pada partai ketiga.
   Biaya, jangka waktu yang tak terbatas, dan kualitas, merupakan pengendali utama yang membuat persaingan usaha perangkat lunak tidak pernah terhenti selama beberapa decade terakhir.

Perangkat Lunak

Gambaran perangkat lunak di dalam sebuah buku teks mungkin mengambil bentuk berikut: perangkat lunak adalah 1. Perintah (program komputer) yang bila dieksekusi memberikan fungsi dan unjuk kerja seperti yang diinginkan. 2. Struktur data yang memungkinkan program memanipulasi informasi secara proporsonal, dan 3. Dokumen yang menggambarkan operasi dan kegunaan program.

Karakteristik Perangkat Lunak

Perangkat lunak lebih merupakan elemen logika dan bukan merupakan elemen sistem fisik. Dengan demikian, perangkat lunak memiliki cirri yang berbeda dari perangkat keras.
1.             Perangkat lunak dibangun dan dikembangkan, tidak dibuat dalam bentuk yang klasik.
2.             Perangkat lunak tidak pernah usang





3.             Sebagian perangkat lunak dibuat secara custom-build, serta tidak dapat dirakit dari komponen yang sudah ada

Komponen Perangkat Lunak

Reusability merupakan suatu cirri penting dari komponen perangkat lunak kualitas tinggi. Sebuah perangkat lunak harus didesain dan diimplementasikan sehingga dapat dipakai lagi pada berbagai program yang berbeda.
Komponen-komponen reusable modern mengenkapsulasi data dan pemrosesan yang diaplikasikan ke data yang memungkinkan insinyur perangkat lunak membuat aplikasi baru dari bagian-bagian yang dapat digunakan kembali. Contohnya interface interaktif saat ini duat dengan menggunakan komponen reusable yang mampu membuat jendela-jendela grafis, menu-menu pull-down, dan mekanisme interaktif dengan variasi yang sangat luas.
Komponen perangkat lunak dibangun dengan bahasa pemrograman yang memiliki kosakata yang terbatas, sebuah tata bahasa yang dibatasi secara ekplisit, serta aturan-aturan syntax yang dibentuk secara baik.
Bahasa tingkat mesin merupakan perwakilan simbolik dari serangkaian intruksi CPU. Ketika pengembang perangkat lunak yang baik memproduksi sebuah program yang di dokumentasikan dengan baik dan juga dapat diperbarui, maka bahasa tingkat mesin dapat secara ekstrim menggunakan memori dan kecepatan eksekusi program secara efisien.
Bahasa tingkat menengah memungkinkan pengembangan perangkat lunak serta program tidak tergantung pada mesin. Ketiga digunakan penerjamah yang lebih canggih, maka kosakata, tata bahasa, syntax, dan semantic dari bahasa tingkat menengah dapat menjadi lebih canggih daripada bahasa tingkat mesin. Bahasa pemrograman yang masih dipakai secara luasdi dalam industry seperti COBOL, Fortran, 95, C, C++, Eiffel, Java, dan Smalltalk.
Bahasa generasi keempat, juga disebut bahasa nonprocedural, menggerakkan pengembang lunak untuk mengkhususkan pada detail procedural. Bahasa nonprocedural secara tidak langsung menyatakan sebuah program melalui spesifikasi hasil yang diharapkan, dan tidak pada aksi yang dibutuhkan untuk mengcapai hasiltersebut.

Aplikasi Perangkat Lunak

·                Perangkat Lunak Sistem Perangkat merupakan sekumpulan program yang ditulis untuk melayani program-program yang lain. Perangkat Lunak Sistem misalnya Kompiler, Editor, dan untilitas pengatur file.
·                Perangkat Lunak Real-Time merupakan program-program yang memonitor/menganalisis/ mengontrol kejadian dunia nyata pada saat terjadinya. Elemen-elemen PL 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.
·                Perangkat Lunak Bisnis adalah pemrosesan informasi binsis merupakan area aplikasi perangkat lunak yang paling luas.
·                Perangkat Lunak Teknik dan Ilmu Pengetahuan adalah perangkat lunak yang ditandai dengan algoritma number crunching. Perangkat lunak ini memiliki jaringan mulai dari Astronomi sampai vulkanologi, dari analisis otomotif sampai dinamika orbit pesawat ruang angkasa, dan dari biologi molekuler sampai pabrik yang sudah diotomatisasi.
·                Embedded Software Produk pintar telah menjadi bagian yang umum bagi hampir semua konsumen dan pasar industry. Embedded software ada dalam read-only memory dan dipakai untuk mengontrol hasil serta sistem untuk keperluan konsumen dan pasar industry.
·                Perangkat Lunak Komputer Personal merupakan pasar yang telah berkembang selama beberapa dekade terakhir. Pengolah kata, spreadsheet, grafik komputer, multimedia, hiburan, manajemen database, aplikasi keuangan bisnis dan personal jaringan atau akses database hanya merupakan beberapa saja dari ratusan aplikasi yang ada.
·                Perangkat Lunak Kecerdasan Buatan menggunakan algortima non-numeris untuk memecahkan masalah kompleks yang tidak sesuai untuk perhitungan atau analisis secara langsung.

MITOS PERANGKAT LUNAK

*             Mitos perangkat lunak memilik sejumlah atribut yang membuat mereka tersembunyi dan berbahaya. Contohnya mitos itu muncul sebagai sebuah pernyataan yang masuk akal tentang kenyataan, pernyataan yang berisi perasaan intuitif dan sering disebarluaskan oleh para praktisi professional yang mengerti tentang nilai.
*             Mitos Menejeman Manager yang bertanggung jawab terhadap masalah perangkat lunak, seperti juga manajer pada kebanyakan disiplin, sering mengalami tekanan karena masalah pengaturan keuangan, menjaga jadwal agar tidak kacau, dan peningkatan kualitas.
*             Mitos Pelanggan Pelanggan yang memesan perangkat lunak komputer mungkin orang yang duduk di meja sebelah, sekelompok teknisi yang ada di tingkat bawah, bagian pemasaran atau perusahaan lain yang memesan perangkat lunak dengan cara kontrak.
*             Mitos Para Praktisi merupakan mitos yang masih dipercaya oleh praktisi perangkat lunak yang sudah dihapus oelh beberapa dekade budaya pemrograman.