Algoritme
Algoritme bisa diklasifikasikan berdasarkan jumlah waktu yang dibutuhkan untuk selesai dibandingkan dengan ukuran inputnya. Ada berbagai varietas: beberapa algoritme selesai dalam waktu linear relatif terhadap ukuran input, beberapa selesai dalam jumlah waktu yang eksponensial atau lebih buruh, dan beberapa berhenti. Sebagai tambahan, beberapa masalah bisa memiliki berbagai algoritme dengan kompleksitas yang berbeda, sementara permasalahan yang lain bisa saja tidak memiliki algoritme atau tidak diketahui algoritmanya yang efisien. Ada juga pemetaan dari beberapa algoritme terhadap permasalahan lain. Karena itu, lebih cocok untuk mengklasifikasikan permasalahan itu sendiri bukannya algoritme menjadi kelas-kelas yang sama berdasarkan kompleksitas dari kemungkinan algoritme terbaik baginya.
Pemrograman
Apapun pendekatan pengembangan perangkat lunak mungkin, program akhir harus memenuhi beberapa sifat mendasar. Properti berikut adalah di antara yang paling relevan:Bidang akademik dan praktik teknik pemrograman komputer yang baik terutama berkaitan dengan menemukan dan menerapkan algoritme yang paling efisien untuk suatu masalah kelas. Untuk tujuan ini, algoritme diklasifikasikan menjadi perintah dengan menggunakan apa yang disebut notasi Big O, O (n), yang mengungkapkan penggunaan sumber daya, seperti waktu eksekusi atau pemakaian memori, dalam hal ukuran sebuah input. Ahli programmer yang akrab dengan berbagai mapan algoritme dan kompleksitas masing-masing dan menggunakan pengetahuan ini untuk memilih algoritme yang paling cocok dengan keadaan.
Langkah pertama dalam sebagian besar proyek-proyek pengembangan perangkat lunak formal adalah analisis persyaratan, diikuti dengan pengujian untuk menentukan model nilai, pelaksanaan, dan kegagalan penghapusan (debug). Terdapat banyak pendekatan yang berbeda untuk masing-masing tugas. Salah satu pendekatan yang populer untuk analisis kebutuhan adalah Kasus Gunakan analisis.