Proses Enginnering
sekumpulan aktifitas yang saling terkait untuk spesifikasi, desain, implementasi, testing dan evolusi sistem software.

Spesification Software,  yaitu menentukan  rekayasa kebutuhan, dan batasan operasi dalam pengembangan sistem
Design Software, mendesain struktur software yang didapatkan dari spesifikasi yang meliputi desain arsitektur, spesifikasi abstrak, desain antar muka, desain komponen dan desain algoritma. Design software bisa dengan menerapkan model data-flow, model entity-relation-attribute, model structural dan model obyek.
Implementasi Software, Mengubah struktur software ke dalam program yang di eksekusi
Testing Software, bertujuan untuk menunjukkan bahwa sistem sesuai dengan spesifikasi dan sesuai kebutuhan konsumen.
Evolusi Sofware, bersifat continue dan fleksibel menyesuaikan perubahan kebutuhan karena faktor lingkungan bisnis sehingga software yang mendukung juga mengalami perubahan agar tetap bisa terlibat.

LINEAR SEQUENTIAL MODEL

Model Waterfall
membutuhkan pendekatan sistematis dan sekuensial dalam pengembangan perangkat lunak, dimulai dari tingkat sistem dan kemajuan melalui analisis, desain, coding, testing dan pemeliharaan
Pemodelan ini menyangkut aktivitas :
Rekayasa dan Pemodelan Sistem/Informasi (System/Information Engineering and Modeling). Karena perangkat lunak adalah bagian dari sistem yang lebih besar, pekerjaan dimulai dari pembentukan kebutuhan-kebutuhan dari semua elemen sistem dan mengalokasikan suatu subset ke dalam pembentukan perangkat lunak. Tahap ini juga kadang disebut dengan Project Definition. 

Analisis Kebutuhan Perangkat Lunak (Software Requirements Analysis). Proses pengumpulan kebutuhan diintensifkan ke perangkat lunak. Harus dapat dibentuk domain informasi, fungsi yang dibutuhkan, performansi dan antarmuka. Hasilnya harus didokumentasikan dan di-review ke pelanggan. 

Desain (Design). Proses desain mengubah kebutuhan-kebutuhan menjadi bentuk karakteristik yang dimengerti perangkat lunak sebelum dimulai penulisan program. Desain ini harus didokumentasikan dengan baik dan menjadi bagian konfigurasi perangkat lunak. 

Penulisan Program (Coding). Desain tadi harus diubah menjadi bentuk yang dimengerti mesin (komputer). Maka dilakukan langkah penulisan program. Jika desain-nya detil, maka coding dapat dicapai secara mekanis. 

Testing. Setelah kode program selesai dibuat, dan program dapat berjalan, testing dapat dimulai. Testing difokuskan pada logika internal dari perangkat lunak, fungsi eksternal, dan mencari segala kemungkinan kesalahan. Dab memeriksa apakah sesuai dengan hasil yang diinginkan

Support/Maintenance. Perangkat lunak setelah diberikan pada pelanggan, mungkin dapat ditemui error ketika dijalankan dilingkungan pelanggan. Atau mungkin pelanggan meminta penambahan fungsi, hal ini menyebabkan faktor maintenance (pemeliharaan) ini menjadi penting dalam penggunaan metode ini. Pemeliharaan ini dapat berpengaruh pada semua langkah yang dilakukan sebelumnya. 

KELEBIHAN
Metode ini masih lebih baik digunakan walaupun sudah tergolong “kuno”, daripada menggunakan pendekatan asal-asalan. Selain itu, metode ini juga masih masuk akal jika kebutuhan sudah diketahui dengan baik.

KEKURANGAN
  • Pada kenyataannya, jarang mengikuti urutan sekuensial seperti pada teori. Iterasi sering terjadi menyebabkan masalah baru. 
  • Sulit bagi pelanggan untuk menentukan semua kebutuhan secara eksplisit. 
  • Pelanggan harus sabar, karena pembuatan perangkat lunak akan dimulai ketika tahap desain sudah selesai. Sedangkan pada tahap sebelum desain bisa memakan waktu yang lama. 
  • Kesalahan di awal tahap berakibat sangat fatal pada tahap berikutnya
V Models
Sering disebut sebagai pengembangan dari model Waterfall, V untuk Verification and Validation. Merupakan model standar yang banyak dipakai di negara-negara Eropa (cth:Standar untuk proyek pertahanan dan administrasi federal di Jerman)
KELEBIHAN
  • Merupakan model pengembangan terstruktur
  • Setiap fase dapat diimplementasikan dengan dokumentasi yang detail dari fase sebelumnya
  • Aktivitas pengujian dapat dimulai di awal proyek, sehingga mengurangi waktu proyek
KEKURANGAN
Dokumentasi harus cukup detail agar fase selanjutnya dapat berjalan dengan baik


RAD (Rapid Application Development)
Model ini memecah suatu proyek menjadi bagian-bagian kecil yang mana tiap bagiannya dibangun dengan model yang mirip dengan Waterfall. Tujuan utama model ini adalah menyelesaikan suatu proyek per bagian, sehingga proses perencanaannya pun per bagian (walaupun pada awalnya melakukan perencanaan secara global).

Fase-fase Model RAD
Business modeling. Pada tahap ini, aliran informasi (information flow) pada fungsi-fungsi bisnis dimodelkan untuk mengetahui informasi apa yang mengendalikan proses bisnis, informasi apa yang hasilkan, siapa yang membuat informasi itu, kemana saja informasi mengalir, dan siapa yang mengolahnya. 
Data modeling. Aliran informasi yang didefinisikan dari business modeling, disaring lagi agar bisa dijadikan bagian-bagian dari objek data yang dibutuhkan untuk mendukung bisnis tersebut. Karakteristik (atribut) setiap objek ditentukan beserta relasi antar objeknya. 
Process modeling. Objek-objek data yang didefinisikan sebelumnya diubah agar bisa menghasilkan aliran informasi untuk diimplementasikan menjadi fungsi bisnis. Pengolahan deskripsi dibuat untuk menambah, merubah, menghapus, atau mengambil kembali objek data. 
Application generation. lebih ditekankan pada reuse komponen-komponen (jika ada) atau membuat komponen baru (jika perlu). Dalam semua kasus, alat bantu untuk otomatisasi digunakan untuk memfasilitasi pembuatan perangkat lunak. 
Testing and turnover. Karena menekankan pada penggunaan kembali komponen yang telah ada (reuse), sebagian komponen-komponen tersebut sudah diuji sebelumnya. Sehingga mengurangi waktu testing secara keseluruhan. Kecuali untuk komponen–komponen baru. 

KELEBIHAN
RAD memang lebih cepat dari waterfall jika kebutuhan dan batasan proyek sudah diketahui dengan baik. Juga jika proyek memungkinkan untuk dimodularisasi.

KEKURANGAN
  • Tidak semua proyek bisa dipecah (dimodularisasi), sehingga belum tentu RAD dipakai pada semua proyek. 
  • Karena proyek dipecah menjadi beberapa bagian, maka dibutuhkan banyak orang untuk membentuk suatu tim yang mengerjakan tiap bagian tersebut. 
  • Membutuhkan komitmen antara pihak pengembang dan pelanggan. 
  • Karena dibuat dengan reuse komponen-komponen yang sudah ada, fasilitas-fasilitas pada tiap komponen belum tentu digunakan seluruhnya oleh program yang me-reuse-nya sehingga kualitas program bisa menurun. 

PROTOTYPE MODEL
Prototyping adalah proses yang digunakan untuk membantu pengembang perangkat lunak dalam membentuk model dari perangkat lunak yang harus dibuat

BENTUK PROTOTYPE
  • Bentuk prototype di atas kertas/model berbasis komputer yang menggambarkan interaksi manusia yang mungkin terjadi. 
  • Working prototype, yang mengimplementasikan sebagian dari fungsi yang ditawarkan perangkat lunak. 
  • Program jadi yang melakukan sebagian atau seluruh fungsi yang akan dilakukan, tapi masih ada fitur yang masih dikembangkan.
KELEBIHAN
Metode ini cukup efektif sebagai paradigma dalam rekayasa perangkat lunak. Kuncinya adalah mendapatkan kebutuhan dan aturan yang jelas yang disetujui pelanggan dan pembuat perangkat lunak. Walaupun pada umumnya prototipe akan dihilangkan dan dibuat perangkat yang sebenarnya. 
Ketika diperlihatkan working version, pelanggan bisa langsung merasakan seakan-akan itu adalah sistem yang sebenarnya

KEKURANGAN
  • Pelanggan yang melihat working version dari model yang diminta/diperlihatkan tidak menyadari bahwa mungkin saja prototype dibuat terburu-buru dan rancangan tidak tersusun dengan baik. 
  • Pengembang kadang-kadang membuat implementasi sembarang, karena ingin working version selesai dengan cepat. 
  • Karena sudah melihat prototype-nya, pelanggan menjadi tidak sabar untuk menunggu versi jadinya. Karena pelanggan merasa program jadinya tidak akan lama lagi selesai.
EVOLUTIONARY MODEL
1. Incremental Model
Incremental Model merupakan gabungan antara model linier sekuensial dan prototyping
Setiap linier sekuen menghasilkan produk yang deliveriables. 
Increment pertama merupakan produk inti (core), yang mengandung persyaratan/kebutuhan dasar.
Penambahan dilakukan pada increment berikutnya.

2. Spiral Model
Model ini mengambil fitur penting dari model waterfall dan prototyping, dengan menambah elemen baru yaitu analisa resiko (risk analysis)

AKTIVITAS
  • Customer Communication; komunikasi antara pengembang dengan pelanggan. 
  • Planning; penentuan tujuan, alternatif dan batasan. 
  • Risk Analysis; analisa alternatif dan identifikasi/pemecahan resiko. 
  • Engineering; pengembangan level berikutnya dari produk. 
  • Construction and release; testing, instalasi, dan menyediakan support termasuk dengan training pada user dan pembuatan dokumentasi. 
  • Customer Evaluation; penilaian terhadap hasil engineering. 

KELEBIHAN
Model spiral ini adalah pendekatan yang paling realistik untuk sistem skala besar. Metode ini menggunakan pendekatan evolusioner, sehingga pelanggan dan pengembang dapat mengerti dan bereaksi terhadap suatu resiko yang mungkin terjadi. Model ini membutuhkan konsiderasi langsung terhadap resiko teknis, sehingga diharapkan dapat mengurangi terjadinya resiko yang lebih besar. Pada setiap fase evolusi, bisa digunakan prototyping.

KEKURANGAN
Mungkin akan agak sulit untuk meyakinkan pelanggan besar, bahwa pendekatan evolusioner ini dapat diatur. Hal ini membutuhkan keahlian tersendiri. Selain itu, jika resiko utama tidak ditemukan, maka masalah bisa muncul kemudian. Sehingga membutuhkan kemampuan manajemen dan perkiraan resiko (risk assessment) yang cukup tinggi.

FORMAL MODEL
  • Berbasis transformasi yang membawa spesifikasi matematis perangkat lunak komputer; 
  • Transformasi adalah pemeliharaan sehingga dapat menunjukkan program sesuai dengan spesifikasinya
  • Memungkinkan software engineer untuk mengkhususkan, mengembangkan, dan mem- verifikasi sistem berbasis komputer dengan menggunakan notasi matematis yang tepat; 
  • Variasi dari pendekatan ini disebut clean-room software engineering

PERMASALAHAN
Perlu kemampuan dan teknis khusus untuk mengaplikasikan teknik ini
secara formal sulit untuk menentukan beberapa aspek dari sistem seperti antarmuka user.