Manajemen Proyek Perangkat Lunak merupakan bagian yang penting dalam pembangunan perangkat lunak.
Sekalipun tidak bersifat teknis seperti pengkodean, hal-hal dalam manajemen proyek perangkat lunak ini mampu menentukan apakah proyek akan berjalan dengan baik sehingga menghasilkan produk yang baik.
Hal-hal yang berkaitan dengan manajemen adalah pengelolaan personel dan koordinasi tim, proses, pengukuran proyek-termasuk menentukan harga dari  perangkat lunak, penjadwalan dan sebagainya.

Manajemen proyek perangkat lunak mengatur 4 hal penting yaitu :

1. Personel
2. Produk
3. Proses
4. Proyek


1. Personel
Proses pembangunan perangkat lunak melibatkan banyak personel. Personel-personel ini digambarkan seperti pemain, dan dikatagorikan dalam 5 katagori pemain:

a. Manajer senior : yang menentukan usaha yang dikerjakan, dan pemegang keputusan dalam proyek.
b. Manajer proyek (teknis)– pemimpin tim:  yang membuat rencana, memotivasi, mengatur dan mengendalikan praktisi yang mengerjakan perangkat lunak.
c. Praktisi : yang mengerjakan perangkat lunak
d. Klien : yang menentukan kebutuhan perangkat lunak dan pihak lain yang berkaitan dengan hasil produk
e. Pengguna Perangkat Lunak : yang berinteraksi langsung dengan perangkat lunak yang dibangun.


2. Pemimpin Tim/ Manajer Proyek
Kemampuan yang dibutuhkan dalam kepemimpinan seperti:
a. Mampu memotivasi
b. Mampu berorganisasi : mengatur proses yang ada atau membuat yang baru dalam rangka mewujudkan ide/konsep menjadi produk
c. Mampu mendorong keluarnya ide-ide baru: memberi dorongan, menciptakan situasi yang kondusif untuk lahirnya ide baru
d. Mencari penyelesaian masalah (problem solving): mampu menganalisa masalah-masalah teknis ataupun manajemen/organisasi kemudian mendapatkan jalan keluar atau memotivasi anggota untuk mampu menyelesaikan masalah. Akomodatif terhadap perubahan yang mungkin terjadi.

3. Tim Perangkat Lunak (Software Team)
Berikut beberapa pilihan pembagian  tugas/penugasan yang bisa diterapkan untuk tim perangkat lunak yang terdiri dari n personel yang bekerja selama k tahun:
a. Personel ditugaskan untuk sejumlah m tugas yang berbeda dengan sedikit tugas gabungan ? koordinasi adalah tugas dari manajer yang mungkin saja punya 6 proyek lainnya.
b. n personel di tugaskan untuk sejumlah m tugas yang berbeda dengan m < n sehingga terbentuk tim informal. Pemimpin tim khusus perlu ada ? koordinasi antar tim adalah tanggung jawab manajer
c. n personel dibagi menjadi sejumlah t tim. Tiap tim ditugaskan mengerjakan satu atau lebih tugas. Tiap tugas mempunyai struktur yang ditentukan sebelumnya bagi semua tim ? koordinasi dikendalikan oleh tim dan manager.
Sekalipun masing-masing pilihan punya argumentasi sendiri-sendiri, namun dari pengamatan yang dilakukan, pilihan no 3 dianggap lebih produktif.


1. Contoh Struktur Organisasi Tim
a. Democratic Decentralized (DD) : 
Tidak ada pemimpin yang permanen, koordinator ditunjuk untuk jangka waktu yang pendek, keputusan diambil berdasarkan konsensus bersama, komunikasi horizontal antar anggota tim (posisi sejajar semua).
Cocok untuk masalah yang sulit/rumit, cocok untuk proyek besar, tim cenderung awet dan bertahan lama, pekerjaan memuaskan, cocok untuk masalah yang modularitasnya rendah, perlu banyak waktu untuk menyelesaikan proyek.

b. Controlled decentralized (CD) :
Pemimpin tim ditentukan, ada wakil pemimpin dan mereka berbagi tugas, penyelesaian masalah adalah tugas tim dan implementasinya dibagi di antara beberapa sub-tim oleh pemimpin, komunikasi horisontal di antara sub-tim dan di antara personel, komunikasi vertikal berdasarkan struktur hirarki ? sentralisasi untuk penyelesaian masalah.
Cocok untuk masalah yang sederhana, cukup cocok untuk proyek besar, masalah dengan modularitas tinggi, menghasilkan sedikit kesalahan.

c. Controlled Centralized (CC):
Penyelesaian masalah dikerjakan oleh pemimpin, pemimpin melakukan koordinasi internal tim, komunikasi lebih banyak vertikal antara pemimpin dan anggota tim.
Cocok untuk masalah yang sederhana, melakukan penyelesaian, masalah lebih cepat, masalah dengan modularitas tinggi, menghasilkan sedikit kesalahan.


2. Pengukuran Berdasarkan Ukuran
Pengukuran berdasarkan perangkat lunak - perangkat lunak yang sudah diproduksi/dibuat sebelumnya, lengkap dengan karakteristik lain seperti line of code (LOC), harga, waktu yang diperlukan pada tiap fungsi atau proyek yang dibangun, kesalahan (error) yang ditemukan. Dari total LOC, harga dan lama waktu dapat diperoleh misalnya :
a. harga per KLOC (seribu baris kode)
b. kesalahan per KLOC
Cara ini kurang diterima secara universal karena pengunaan LOC untuk kunci ukuran bergantung pada bahasa pemrograman yang digunakan.

3. Pengukuran Berdasarkan Fungsi (Function Point – FP)
Function point ditentukan berdasarkan bagian-bagian software yang bisa  dihitung seperti :
a. jumlah input dari pengguna
b. jumlah output untuk pengguna
c. jumlah user inquiry: inquiry didefinisikan sebagai online input yang menghasilkan respon langsung dari software dalam bentuk online  output
d. jumlah file: baik file yang terpisah dari database, atau bagian dari file
e. jumlah external interface: misalnya data file pada storage media yang digunakan untuk mengirimkan informasi ke sistem lain.

Ukuran untuk organisasi kecil bisa menggunakan ukuran seperti :
a. waktu (hari atau jam) mulai dari permintaan/request samai evaluasi lengkap 
b. usaha (personel-waktu) untuk melakukan evaluasi.
c. waktu (jam atau hari) dari selesainya evaluasi sampai penugasan lain ke personel.
d. usaha (personel – jam) yang dibutuhkan untuk membuat perubahan 
e. waktu (jam atau hari ) untuk melakukan perubahan, 
f. kesalahan yang terjadi selama pengerjaan untuk melakukan perubahan. 
g. cacat yang terjadi setelah perubahan diserahkan ke klien.

SDLC (Systems Development Life Cycle, Siklus Hidup Pengembangan Sistem) atau Systems Life Cycle (Siklus Hidup Sistem), dalam rekayasa sistem dan rekayasa perangkat lunak, adalah proses pembuatan dan pengubahan sistem serta model dan metodologi yang digunakan untuk mengembangkan sistem - sistem tersebut. Konsep ini umumnya merujuk pada sistem komputer atau informasi. SDLC juga merupakan pola yang diambil untuk mengembangkan sistem perangkat lunak, yang terdiri dari tahap - tahap: rencana(planning), analisis (analysis), desain (design), implementasi (implementation), uji coba (testing) dan pengelolaan (maintenance).
Seperti halnya dengan manusia, suatu sistem juga memiliki siklus atau daur hidup. Siklus Hidup Produk (Product Life Cycle) ini yaitu suatu grafik yang menggambarkan riwayat sistem sejak diperkenalkan ke pasar sampai dengan ditarik dari pasar . Siklus Hidup sistem (Product Life Cycle) ini merupakan konsep yang penting dalam pemasaran karena memberikan pemahaman yang mendalam mengenai dinamika bersaing suatu sistem. Konsep ini dipopulerkan oleh levitt (1978) yang kemudian penggunaannya dikembangkan dan diperluas oleh para ahli lainnya. Pada prinsipnya, Hampir setiap sistem di dunia ini mengalami Siklus Hidup Sistem. Namun jangka waktu siklus hidup sistem pada setiap sistem tersebut berbeda - beda, ada yang cepat hilang, ada juga yang dapat bertahan dalam jangka waktu yang relatif lama. Apalagi pada sistem - sistem yang berorientasi pada Teknologi seperti pada sistem - sistem Elektronika (Ponsel, Komputer, Televisi).

Tahapan SDLC
SDLC terdiri dari beberapa tahapan - tahapan berdasarkan analisa kebutuhan yang ada . Dimulai dari analisa kebutuhan perangkat lunak akan dibuat terlebih dahulu desain dari kebutuhan tersebut untuk mempermudah dalam pengerjaannya. Kemudian segala kebutuhan tersebut di implementasikan dengan dua tahap yaitu tahap analisa dan tahap evaluasi (User Acceptance Test). Setelah melakukan implementasi, maka proses tersebut akan dikembalikan kembali ke dalam tahap desain untuk pengembangan kembali perangkat lunak ke versi yang terbaru.
Tahap – tahap SDLC dalam pembangunan sistem informasi Web :

1) Plaining
Plaining (perencanaan) adalah feasibility dan wawancara , observasi, Quesener. Jika pada tahap Feasibility hasilnya baik maka langsung ketahap investigasi dan diberi form kepada client untuk mencatat kebutuhan client. Dalam sistem investigasi, dapat berupa wawancara, kuosiener atau observation. Dalam tahap ini hal yang pertama dilakukan adalah memberikan form ke user yang digunakan untuk mengetahui permintaan user.

2) Analisa
a. Analisa TeknologiMemerlukan data penyimpanan secara informasi produk, Informasi Berita digunakan database seeprti Mysql, MSAccess.. Menganalisis teknologi apa yang digunakan pemilik desain Web seperti menggunakan desain grafis maka memerlukan teknologi seperti Adobe Photoshop, Macromedia Flash, Dreamweaver.
b. Analisa informasi. Mengenai informasi data yang akan menjadi data tetap dan data dinamis, kategori informasi data tetap adalah : profile perusahaan, visi dan misi, sejarah perusahaan, latar belakang perusahaan. Informasi dinamis adalah informasi yang selalu berubah dalam setiap periodik dapat setiap hari atau setiap jam. Informasi dinamis dalam sistem ini adalah :
1) Informasi persediaan ( stock ) produk.
2) Informasi Harga Produk dan diskon.
3) Informasi Artikel, tips dan trik.
4) Informasi dari masing keunggulan Produk atau produk yang sedang trend.

3) Desain.
Desain Informasi dalam tahap ini dimodelkan informasi link dari setiap halaman, jika dalam sistem tersebut terdapat database maka digunakan tahap development dan database disain.
a. Desain Grafis. Dalam tahap ini disesuaikan dari warna, layout, gambar dan graphic.
b. Database Application
c. Model Development Database Design PHP Library Development. Tahap untuk memodelkan seluruh peruses yang ada,seperti peruses penyimpanan data,update artikel, dan menampilkan data dari database.

4) Implementasi
a. Penulisan Program dan Instalasi. Merupakan tahap penulisan program yang telah dianalisis dan diesain semua maka perogeram yang digunakan adalah PHP dan database yang digunakan MySql
b. Desain Review. Dalam tahap ini tidak hanya menguji desain yang digunakan namun menguji semua sistem yang telah diterapkan seperti tidak ada lokasi lingk, image yang salah, pengujian sistem seperti penyimpanan data, update artikel dan lain-lain.
c. Pemilihan Sumber daya Hardware dan Software. Dalam tahap ini software dan hardware digunakan untuk Web server.
d. Pengujian Web dan Dokumen Web. Menguji Web dengan berbagai teknologi browser yang ada, serta pemeriksaan dokumen Web. Siklus hidup pengembangan sistem mempunyai beberapa tahapan, yaitu : 
1) Analisis sistem, merupakan tahap awal dari SDLC, merupakan orang yang dididik khusus untuk mengembangkan sistem secara profesional.
2) Perancangan sistem memiliki dua tujuan utama, yaitu memberikan perancangan sistem logika atau perancangan sistem secara umum (general system design), dan memberikan perancangan sistem secara terinci (detail system design).
3) Implimentasi system, proses mengganti atau meninggalkan sistem yang lama dengan sistem baru.
4) Operasi dan perawatan beberapa kelebihan dan kekurangan. Kelebihannya yaitu menyediakan tahapan yang dapat digunakan sebagai pedoman mengembangkan sistem, dan akan memberikan hasil sistem yang lebih baik. Kemudian kekurangnnya, yaitu hanya menyediakan tahapan-tahapan saja, hasil dari metode ini sangat tergantung ari hasil di tahap, analisis, membuthkan waktu yang lama, membutuhkan biaya yang relatif lebih besar, dan hasilnya tidak luwes untuk dimodifikasi.

Supaya pengembangan sistem dapat bekerja dengan efisien dan efektif, maka metodologi pengembangaan sistem perlu diketahui. Metodologi pengembangan sistem yang populer dan banyak digunakan adalah metodologi pengembangan sistem terstruktur, yang memberikan cara top down dan cara dekomposisi dan beberapa abit pengembangan sistem. Model SDLC atau Sekuensial Linier sering disebut juga Model Air Terjun. Model ini mengusulkan sebuah pendekatan perkembangan perangkat lunak yang sistematik dan sekunsial yang dimulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian, dan pemeliharaan. Model ini disusun bertingkat, setiap tahap dalam model ini dilakukan berurutan, satu sebelum yang lainnya. Model ini biasanya digunakan untuk membuat sebuah software dalam skala besar dan yang akan dipakai dalam waktu yang lama. Sangat cocok untuk pengembangan sistem yang besar.
1. Kelebihan
Mudah diaplikasikan.
Memberikan template tentang metode analisis, desain, pengkodean, pengujian, dan pemeliharaan.
2. Kekurangan
Jarang sekali proyek riil mengikuti aliran sekuensial yang dianjurkan model karena model ini bisa melakukan itersi tidak langsung.
Pelanggan sulit untuk menyatakan kebutuhan secara eksplisit sehingga sulit untuk megakomodasi ketidakpastian pada saat awal proyek.
Pelanggan harus bersikap sabar karena harus menunggu sampai akhir proyrk dilalui. Sebuah kesalahan jika tidak diketahui dari awal akan menjadi masalah besar karenaharus mengulang dari awal.
Pengembang sering malakukan penundaan yang tidak perlu karena anggota tim proyek harus menunggu tim lain untuk melengkapi tugas karena memiliki ketergantungan hal ini menyebabkan penggunaan waktu tidak efesien.


CASE TOOL

CASE adalah perangkat komputer yang berbasis sistem yang bertujuan untuk mendukung satu atau lebih kegiatan rekayasa perangkat lunak dalam proses pengembangan software. Penulis lainnya telah berusaha untuk membuat finer-grained distinctions berbeda antara ent kelas CASE alat bersama sejumlah dimensi. Distinctions yang paling umum adalah:
1. Antara orang dan alat yang bersifat interaktif (seperti desain mendukung metode alat) dan orang-orang yang tidak (seperti kompilator). Mantan kelas kadang-kadang disebut CASE tool, sedangkan yang kedua kelas yang disebut alat-alat pembangunan.
2. Antara orang dan alat yang mendukung kegiatan di awal siklus hidup dari software proyek (seperti persyaratan desain dan dukungan alat - alat) dan orang - orang yang digunakan nanti dalam siklus hidup (seperti kompiler dan alat uji dukungan). Mantan kelas kadang - kadang disebut front-end CASE tool, dan yang kedua adalah kembali disebut akhir CASE tools.
3. Antara orang dan alat yang khusus untuk tertentu siklus hidup langkah atau domain (seperti persyaratan perangkat atau alat coding) dan orang - orang yang umum di sejumlah langkah siklus hidup atau domain (seperti dokumentasi atau alat konfigurasi manajemen alat). Mantan kelas kadang-kadang disebut vertikal CASE tool, sedangkan yang kedua kelas dipanggil horisontal CASE tools.
Secara umum seorang software engineer maupun engineer dari disiplin ilmu yang lain dalam membangun/mengembangkan suatu sistem, memiliki karakteristik sebagai berikut:
1. Mengetahui manfaat tools yang dapat membantu dalam membangun/mengembangkan suatu sistem.
2. Mampu mengorganisasikan tools yang memungkinkan untuk bekerja cepat dan efisien.
3. Memiliki pengetahuan teknik membangun/mengembangkan produk serta handal dalam menggunakan tools untuk membantu pekerjaannya.
Dalam software engineering telah dikenal banyak tools (computer-base system) yang dikenal dengan Computer-Aided Software Engineering (CASE). CASE merupakan suatu teknik yang digunakan untuk membantu satu atau beberapa fase dalam life-cycle software, termasuk fase analisis, desain, implementasi dan maintenance dari software tersebut. Manfaat CASE tools untuk software engineer dijabarkan sebagai berikut:
1. CASE tools memperbesar kemungkinan otomatisasi pada setiap fase life-cycle software.
2. CASE tools sangat membantu dalam meningkatkan kualitas design model suatu software sebelum software itu dibangun/dikembangkan, baik itu untuk software yang dibangun dalam simple maupun complex environment.

CASE tools diklasifikasikan sebagai berikut:
1. Upper CASE. CASE tools yang didesain untuk mendukung perencanaan, identifikasi, dan seleksi proyek (permulaan dari perencanaan proyek), tepatnya pada fase analisis dan desain dari suatu system Tools yang termasuk kelas ini adalah jenis Diagramming tools, Form and report generators, dan Analysis tools. Contoh CASE tools: Cradle, PRO-IV Workbench, ProKit*WORKBENCH.
2. Lower CASE. CASE tools yang didesain untuk mendukung tahap implementasi dan maintenance dari SDLC. Tools yang termasuk kelas ini adalah jenis Code generators.
Contoh CASE tools: Level/l-User Sensitive CASE, PRO-IV application Development.
3. Cross life-cycle CASE/Integrated CASE (I-CASE). CASE tools yang dirancang untuk mendukung aktifikas-aktifitas yang terjadi pada beberapa fase dari SDLC. Mengkombinasikan Upper dan Lower CASE menjadi satu. Tools yang termasuk kelas ini adalah jenis Project management tools. Contoh CASE tools: Rational Rose, Poseidon, ArgoUML, Catalyze, in-Step, Juggler, PRINCE.

Fase Pengembangan dan Fase Pemeliharaan
Kedua fase ini tidak berada dalam satu fase, karena kedua fase ini memiliki fase/tahapan-tahapan masing-masing. Namun fase pemeliharaan didalam pengembangan secara cyclic ini, berada didalam fase pengembangan atau menjadi salah satu kegiatan fase pengembangan perangkat lunak. Namun walaupun begitu fase pemeliharaan memiliki fase kegiatan tersendiri setelah system diinstall dan dipakai. Pemeliharaan mencakup koreksi dan perbaikan berabagai error yang ada.
Pengembangan perangkat lunak yang bersifat cyclic meliputi kegiatan-kegiatan antara lain :
1. Studi dan Analisa
2. Desain global
3. Desain detail
4. Implementasi
5. Operasi dan Pemeliharaan
Jadi kedua fase ini tidak berada dalam satu fase tertentu, namun secara syclyc fase pemeliharaan menjadi bagian dari kegiatan fase pengembangan perangkat lunak.

Aneka Software Case Tool
Case merupakan suatu teknik yang digunakan untuk membantu satu atau beberapa fase dalam life-cycle software, termasuk fase analisis, desain, implementasi dan maintenance dari software.
Manfaat case tools untuk software engineer adalah :
1.  Memperbesar kemungkinan otomatisasi pada setiap fase life-cycle software.
2. Membatu dalam meningkatkan kualitas design model suatu software sebelum software itu dibangun/dikembangkan, baik itu untuk software yang dibangun dalam simple maupun complex environment.

Contoh Software Upper Case :
1. Photoshop : perangkat lunak editor citra buatan adobe system yang dikhususkan untuk pengeditan foto/gambar dan pembuatan efek.
2. Ken Rename : software dengan utilitas untuk mengubah nama tambahan jumlah file dan memiliki pohon direktori untuk memilih file.Ken rename memiliki banyak kebiasaan pintas keyboard untuk membantu pengguna memastikan aliran cepat dan mudah dari aplikasi.
3. Adobe Premier : perangkat lunak editor yang dikhususkan untuk pengeditan video/film dengan berbagai efek.
4. Batch File Rename : Aplikasi yang mempu mengkonversi file ke dalam share point kompatibel serta format yang kompatibel internet dan menyediakan fitur yang berbeda untuk nomor renumbering urutan dan mengubah nama file musik Mp3 dengan bantuan tag seperti album, judul.
5. Software Password Generator : program yang dirancang untuk menghasilkan crack, pasword dengan mudah dan cepat, kita dapat mengubah password yang sangat kuat hingga 128 panjang karakter untuk semua acount. sementara untuk membuat sandi, kita dapat menggunakan huruf, angka, simbol dan juga sebagai kombinasi.
6. ACSESE
7. VISIO
8. NAFICAT
Contoh Software Lower Case :
1. Java : bahasa pemograman yang dapat dijalankan di berbagai komputer termasuk telepon dan dapat dikembangkan ke dalam berbagai aplikasi.
2. Netbeans : Software untuk pengembangan aplikasi desktop java, dan sebuah Integrated Development Environment (IDE) yang dibangun menggunakan platform NetBeans. Platform NetBeans memungkinkan aplikasi dibangun dari sekumpulan komponen perangkat lunak moduler (arsip java yang memuat kelas - kelas java untuk berinteraksi dengan NetBeans Open API dan file manifestasi yang mengidentifikasinya sebagai modul.
3. BPM ( bussiness process management ) tool : perangkat lunak yang disediakan untuk membantu organisasi dalam mengelola proses bisnis yang dimilikinya mulai dari tahap perancangan, lalu otomasi (komputerisasi), kemudian eksekusi, hingga tahap monitoring.
4. Visual Basic : Pemograman yang mudah digunakan untuk pengembangan aplikasi, baik itu aplikasi kecil maupun aplikasi besar.
5. Desk Tool : alat yang dapat digunakan untuk meminimalkan aplikasi apapun, juga dapat membuat aplikasi transparan. Desk Tool merupakan paket dengan banyak tools canggih lainnya seperti CritHide (menyembunyikan semua aplikasi yang berisi kata kunci particular).
6. MS SQL
7. FOXPRO
8. ORACLE
9. INNOSET UP
10. VB DEPLOYMENT

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 kontrol serta penyampaian yang dibutuhkan. Perkembangan perangkat lunak bisa dianggap sebagai lingkaran pemecahan masalah di mana terdapat empat keadaan berbeda, yaitu status quo, definisi masalah, perkembangan teknis memecahkan masalah, dan integrasi dari seluruh pemecahan masalah. Adapun beberapa model pengembangan perangkat lunak yang biasa digunakan adalah sebagai berikut:
1. Model Sekuensial Linear (Waterfall)
Nama model ini sebenarnya adalah “Linear Sequential Model”. Model ini sering disebut dengan “classic life cycle” atau model waterfall. Model ini adalah model yang muncul pertama kali yaitu sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai didalam Software Engineering (SE). Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain, coding, testing/verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan. Sebagai contoh tahap desain harus menunggu selesainya tahap sebelumnya yaitu tahap requirement. Secara umum tahapan pada model waterfall dapat dilihat pada gambar berikut :
Image result for model waterfall  
Gambar di atas adalah tahapan umum dari model proses ini.Akan tetapi Roger S. Pressman memecah model ini menjadi 6 tahapan meskipun secara garis besar sama dengan tahapan - tahapan model waterfall pada umumnya. Berikut adalah penjelasan dari tahap - tahap yang dilakukan di dalam model ini menurut Pressman: 
System / Information Engineering and Modeling. Permodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam bentuk software. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen - elemen yang lain seperti hardware, database, dsb. Tahap ini sering disebut dengan Project Definition.
Software Requirements Analysis. Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface, dsb. Dari 2 aktivitas tersebut (pencarian kebutuhan sistem dan software) harus didokumentasikan dan ditunjukkan kepada pelanggan.
Design. Proses ini digunakan untuk mengubah kebutuhan - kebutuhan diatas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti 2 aktivitas sebelumnya, maka proses ini juga harus didokumentasikan sebagai konfigurasi dari software.
Coding. Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer.
Testing / Verification. Sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.
Maintenance. Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu. Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur - fitur yang belum ada pada software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya.

2. Model Spiral
Proses model yang lain, yang cukup populer adalah Spiral Model. Model ini juga cukup baru ditemukan, yaitu pada sekitar tahun 1988 oleh Barry Boehm pada artikel A Spiral Model of Software Development and Enhancement. Spiral model adalah salah satu bentuk evolusi yang menggunakan metode iterasi natural yang dimiliki oleh model prototyping dan digabungkan dengan aspek sistimatis yang dikembangkan dengan model waterfall. Tahap desain umumnya digunakan pada model Waterfall, sedangkan tahap prototyping adalah suatu model dimana software dibuat prototype (incomplete model), “blue-print”-nya, atau contohnya dan ditunjukkan ke user/customer untuk mendapatkan feedback-nya. Jika prototype-nya sudah sesuai dengan keinginan user/customer, maka proses SE dilanjutkan dengan membuat produk sesungguhnya dengan menambah dan memperbaiki kekurangan dari prototype tadi.
Model ini juga mengkombinasikan top-down design dengan bottom-up design, dimana top-down design menetapkan sistem global terlebih dahulu, baru diteruskan dengan detail sistemnya, sedangkan bottom-up design berlaku sebaliknya. Top-down design biasanya diaplikasikan pada model waterfall dengan sequential-nya, sedangkan bottom-up design biasanya diaplikasikan pada model prototyping dengan feedback yang diperoleh. Dari 2 kombinasi tersebut, yaitu kombinasi antara desain dan prototyping, serta top-down dan bottom-up, yang juga diaplikasikan pada model waterfall dan prototype, maka spiral model ini dapat dikatakan sebagai model proses hasil kombinasi dari kedua model tersebut. Oleh karena itu, model ini biasanya dipakai untuk pembuatan software dengan skala besar dan kompleks.
Spiral model dibagi menjadi beberapa framework aktivitas, yang disebut dengan task regions. Kebanyakan aktivitas2 tersebut dibagi antara 3 sampai 6 aktivitas. Berikut adalah aktivitas - aktivitas yang dilakukan dalam spiral model:
Customer communication. Aktivitas yang dibutuhkan untuk membangun komunikasi yang efektif antara developer dengan user/customer terutama mengenai kebutuhan dari customer.
Planning. Aktivitas perencanaan ini dibutuhkan untuk menentukan sumberdaya, perkiraan waktu pengerjaan, dan informasi lainnya yang dibutuhkan untuk pengembangan software.
Analysis risk. Aktivitas analisis resiko ini dijalankan untuk menganalisis baik resiko secara teknikal maupun secara manajerial. Tahap inilah yang mungkin tidak ada pada model proses yang juga menggunakan metode iterasi, tetapi hanya dilakukan pada spiral model.
Engineering. Aktivitas yang dibutuhkan untuk membangun 1 atau lebih representasi dari aplikasi secara teknikal.
Construction & Release. Aktivitas yang dibutuhkan untuk develop software, testing, instalasi dan penyediaan user / costumer support seperti training penggunaan software serta dokumentasi seperti buku manual penggunaan software.
Customer evaluation. Aktivitas yang dibutuhkan untuk mendapatkan feedback dari user / customer berdasarkan evaluasi mereka selama representasi software pada tahap engineering maupun pada implementasi selama instalasi software pada tahap construction and release.

3. Model Prototipe
Model ini diawali dengan penentuan kebutuhan oleh user. Pengembang akan mengumpulkan informasi - informasi mengenai kebutuhan user tersebut dan kemudian membuat sebuah prototype dari perangkat lunak yang akan dikembangkan. Model ini sangat cocok bagi user awam, sehingga dengan adanya prototype pemahaman mereka akan terbantu dan mereka mempunyai landasan dan acuan dalam tahapan selanjutnya, misalnya pada tahapan pengujian perangkat lunak.
McLeod dan Schell (2007) mendifiniskan 2 (dua) tipe dari prototype yaitu:
1. Evolutionary Prototype
2. Requirements Prototype
Evolutionary prototype yaitu, prototype yang secara terus menerus dikembangkan hingga prototype tersebut memenuhi fungsi dan prosedur yang dibutuhkan oleh sistem. Berikut gambar dari tahapan evolutionary prototype:
Image result for Gambar: Evolutionary Prototyping Model 
Gambar: Evolutionary Prototyping Model.
a. Analisis kebutuhan user, pengembang dan pengguna atau pemilik sistem melakukan diskusi dimana pengguna atau pemilik sistem menjelaskan kepada pengembang tentang kebutuhan sistem yang mereka inginkan.
b. Membuat prototype, pengembang membuat prototype dari sistem yang telah dijelaskan oleh pengguna atau pemilik sistem.
c. Menyesuaikan prototype dengan keinginan user, pengembang menanyakan kepada pengguna atau pemilik sistem tentang prototype yang sudah dibuat, apakah sesuai atau tidak dengan kebutuhan sistem.
d. Menggunakan prototype, sistem mulai dikembangkan dengan prototype yang sudah dibuat.
Requirement prototype merupakan prototype yang dibuat oleh pengembang dengan mendifiniskan fungsi dan prosedur sistem dimana pengguna atau pemilik sistem tidak bisa mendefinisikan sistem tersebut. Berikut ini langkah-langkah dari requirement prototype :

Gambar: Requirement Prototype Model
1. Analisis kebutuhan user, pengembang dan pengguna atau pemilik sistem melakukan diskusi dimana pengguna atau pemilik sistem menjelaskan kepada pengembang tentang kebutuhan sistem yang mereka inginkan.
2. Membuat prototype, pengembang membuat prototype dari sistem yang telah dijelaskan oleh pengguna atau pemilik sistem.
3. Menyesuaikan prototype dengan keinginan user, pengembang menanyakan kepada pengguna atau pemilik sistem tentang prototype yang sudah dibuat, apakah sesuai atau tidak dengan kebutuhan sistem.
4. Membuat sistem baru, pengembang menggunakan prototype yang sudah dibuat untuk membuat sistem baru.
5. Melakukan testing sistem, pengguna atau pemilik sistem melakukan uji coba terhadap sistem yang dikembangkan.
6. Menyesuaikan dengan keinginan user, sistem disesuaikan dengan keinginan user dan kebutuhan sistem, jika sudah sesuai sistem siap digunakan.
7. Menggunakan sistem.
Kelebihan dari teknik pengembangan prototyping yaitu :
1. Menghemat waktu pengembangan.
2. Menghemat biaya pengembangan.
3. Pengguna atau pemilik sistem ikut terlibat dalam pengembangan, sehingga kemungkinan-kemungkinan  terjadinya kesalahpahaman dalam sistem bisa diminimalisir.
4. Implementasi akan menjadi mudah, karena pengguna atau pemilik sistem sudah mempunyai gambaran tentang sistem.
5. Kualitas sistem yang dihasilkan baik.
6. Memungkinan  tim pengembang sistem  memprediksi dan memperkirakan  pengembangan-pengembangan sistem selanjutnya.
Sedangkan kelemahannya adalah :
Pengguna atau pemilik sistem bisa terus menerus menambah kompleksitas sitem hingga sistem menjadi sangat kompleks, hal ini bisa menyebabkan pengembang meninggalkan pekerjaanya sehingga sistem yang dikerjaan tidak akan pernah terselesaikan.

4. Model Rapid Application Development (RAD) 
Rapid Aplication Model (RAD) adalah sebuah proses perkembangan perangkat lunak sekuensial linier yang menekankan siklus perkembangan yang sangat pendek. Model RAD ini merupakan sebuah adaptasi “kecepatan tinggi” dari model sekuensial linier dimana perkembangan cepat dicapai dengan menggunakan pendekatan konstruksi berbasis komponen. Jika kebutuhan dipahami dengan baik, proses RAD memungkinkan tim pengembangan menciptakan “sistem fungsional yang utuh” dalam periode waktu yang sangat pendek (kira-kira 60 sampai 90 hari).
Fase-fase RAD 
Karena dipakai terutama pada aplikasi sistem konstruksi, pendekatan RAD melingkupi fase-fase sebagai berikut :
Bussiness Modeling
    Aliran informasi di antara fungsi-fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan-pertanyaan berikut : Informasi apa yang mengendalikan proses bisnis? Informasi apa yang dimunculkan? Siap yang memunculkannya? Ke mana informasi itu pergi? Siapa yang memprosesnya?
Data Modeling
   Aliran informasi yang didefinisikan sebagai bagian dari fase bussiness  modeling disaring ke dalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut. Karakteristik masing-masing objek didefinisikan dan hubungan antara objek-objek tersebut didefinisikan.
Prosess Modeling
   Objek data yang telah didefinisikan di dalam fase data modeling ditransformasikan untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan diciptakan untuk menambah, memodifikasi, menghapus atau mendapatkan kembali sebuah objek data.
Aplication Generation
     RAD mengasumsikan pemakaian teknik generasi keempat. Selain menciptakan perangkat lunak dengan menggunakan bahasa pemrograman general yang konvensional, RAD lebih banyak memproses kerja untuk mamakai lagi komponen program yang ada atau menciptakan komponoen yang bisa dipakai lagi. Pada semua kasus, alat-alat bantu otomatis dipakai untuk memfasilitasi konstruksi perangkat lunak.
Testing and Turnover
     Karena proses RAD menekankan pada pemakaian kembali , banyak komponen program telah diuji. Hal ini mengurangi keseluruhan waktu pengujian. Tetapi komponen baru harus diuji dan semua interface harus dilatih secara penuh.
Secara jelas batasan waktu yang dibebankan pada sebuah proyek RAD memerlukan “ruang lingkup yang bisa diskala”. Jika sebuah aplikasi bisnis dapat dimodulkan dengan cara tertentu sehingga memungkinkan setiap fungsi mayor untuk dilengkapi dalam waktu kurang dari 3 bulan (dengan menggunakan pendekatan yang digambarkan di atas), maka aplikasi itu merupakan kandidat bagi RAD. Masing - masing fungsi mayor bisa dibicarakan oleh suatu tim RAD yang terpisah dan kemudian diintegraikan untuk membentuk suatu kesatuan.