SDLC Atau Siklus Hidup Pengembangan Sistem dalam System & Software Enginering adalah proses menciptakan atau mengubah sistem, dan model-model juga metodologi yang digunakan orang untuk mengembangkan sistem ini. Konsep umumnya mengacu pada Sistem Informasi.
Siklus Hidup Pengembangan Sistem (SDLC) merupakan proses logis yang digunakan oleh analis sistem untuk mengembangkan sistem informasi, termasuk persyaratan, validasi, pelatihan, dan pengguna (stakeholder) kepemilikan. Setiap SDLC harus menghasilkan sistem berkualitas tinggi yang memenuhi atau melampaui harapan pelanggan, mencapai penyelesaian dalam perkiraan waktu dan biaya, bekerja secara efektif dan efisien dalam arus dan infrastruktur Teknologi Informasi yang direncanakan, dan mudah dan murah untuk mempertahankan dan meningkatkan kualitas.
- Pengumpulan data (data gathering)
Jika sudah ada sistem yang berjalan sebelumnya maka perlu dilakukan pengumpulan data dan informasi yang dihasilkan dari sistem yang ada. Pengumpulan laporan (report), cetakan (print-out), dsb baik yang sudah ada maupun yang diharapkan untuk ada pada sistem yang baru. Interview dan questionnaire terhadap orang-orang yang terlibat dalam sistem juga mungkin perlu dilakukan. Apabila sistem yang akan dikembangkan benar-benar baru (belum ada sistem informasi sebelumnya) maka pada tahapan ini pengembang bisa lebih menekankan kepada studi kelayakan dan definisi sistem. - Analisa Sistem
Jika tahapan pengumpulan data dilakukan dengan melibatkan klien atau pengguna sistem informasi, maka mulai dari tahapan analisa lebih banyak dilakukan oleh pihak pengembang sendiri. Analisa terhadap sistem yang sedang berjalan dan sistem yang akan dikembangkan. Mendefinisikan objek-objek yang terlibat dalam sistem dan batasan sistem. - Perancangan Sistem (design)
Merancang alir kerja (workflow) dari sistem dalam bentuk diagram alir (flowchart) atau Data Flow Diagram (DFD). Merancang basis data (database) dalam bentuk Entity Relationship Diagram (ERD) bisa juga sekalian membuat basis data secara fisik. Merancang input ouput aplikasi (interface) dan menentukan form-form dari setiap modul yang ada. Merancang arsitektur aplikasi dan jika diperlukan menentukan juga kerangka kerja (framework) aplikasi. Pada tahapan ini atau sebelumnya sudah ditentukan teknologi dan tools yang akan digunakan baik selama tahap pengembangan (development) maupun pada saat implementasi (deployment). - Penulisan kode program (Coding)
Programming (desktop application) atau Scripting (web-based application) hanyalah salah satu tahapan dari siklus hidup pengembangan sistem. Tahapan ini dilakukan oleh satu atau lebih programmer. Jika tahapan analisa dan perancangan sistem telah dilakukan dengan baik, maka porsi tahapan coding tidaklah besar. - Testing
Biasanya tahapan ini dilakukan oleh Quality Assurance dari pihak pengembang untuk memastikan bahwa software yang dibangun telah berjalan sesuai dengan yang diharapkan. Salah satu metodenya bisa dengan menginput sejumlah data pada sistem baru dan membandingkan hasilnya dengan sistem lama. Apabila diperlukan maka tahapan ini bisa dibagi menjadi dua yaitu testing oleh pihak pengembang (alpha testing) dan testing oleh pihak pengguna (beta testing). - Instalasi
Pada pengembangan aplikasi Client-Server, umumnya terdapat server untuk development, testing dan production. Server development berada di tempat pengembang dan dipergunakan selama pengembangan dan bisa juga setelahnya untuk perbaikan aplikasi secara terus menerus (continuous improvements). Server testing berada di tempat pengembang dan bisa juga di tempat pengguna apabila diperlukan beta testing. Setelah aplikasi dirasa siap untuk dipergunakan maka digunakanlah server production yang berada di tempat pengguna. Pada prakteknya di tempat pengembang juga bisa terdapat server production yaitu server yang memiliki spesifikasi hardware dan software yang sama dengan server di tempat pengguna. Hal ini dimaksudkan agar apabila ditemukan error atau bug pada aplikasi di tempat pengguna maka pengembang dapat mudah mencari penyebabnya pada server production mereka. - Pelatihan
Pihak pengembang memberikan training bagi para pengguna program aplikasi sistem informasi ini. Apabila sebelumnya tidak dilakukan beta testing maka pada tahapan ini juga bisa dilangsungkan User Acceptance Test. - Pemeliharaan
Maintenance bertujuan untuk memastikan bahwa sistem yang digunakan oleh pihak pengguna benar-benar telah stabil dan terbebas dari error dan bug. Pemeliharaan ini biasanya berkaitan dengan masa garansi yang diberikan oleh pihak pengembang sesuai dengan perjanjian dengan pihak pengguna. Lamanya waktu pemeliharaan sangat bervariasi. Namun pada umumnya sistem informasi yang kompleks membutuhkan masa pemeliharaan dari enam bulan hingga seumur hidup program aplikasi.
SDLC dapat dibagi menjadi sepuluh tahap di mana produk kerja TI didefinisikan diciptakan atau dimodifikasi. Fase kesepuluh terjadi ketika sistem dibuang dan tugas yang dilakukan adalah baik dihilangkan atau ditransfer ke sistem lain. Tugas dan produk kerja untuk masing-masing tahapan diuraikan dalam bab-bab berikutnya. Tidak setiap proyek akan memerlukan bahwa fase akan dijalankan secara berurutan. Namun, fase saling bergantung. Tergantung pada ukuran dan kompleksitas dari proyek, tahapan dapat dikombinasikan atau mungkin tumpang tindih
Pada prakteknya hal ini tidaklah selalu mulus untuk dilaksanakan. Banyak faktor yang mempengaruhi keberhasilan pengembangan sistem informasi. Terutama adalah pada faktor manusia yang terlibat. Dari pihak pengembang, kurangnya keahlian dan pengalaman bisa menyebabkan kesalahan dalam satu tahapan sehingga menyebabkan siklus ini harus diulangi dari tahapan yang salah.