Yazılım Mühendisliği bugün öğretildiği şekliyle, tamamen nesne yönelimli programlamaya ve dünyanın 'doğal' nesne yönelimli görünümüne odaklanmaktadır. Bir etki alanı modelinin çeşitli adımlarla bir sınıf modeline nasıl dönüştürüleceğini ve kullanım-durum diyagramları veya sınıf diyagramları gibi çok sayıda (UML) yapay nesneyi nasıl açıklayacağınızı açıklayan ayrıntılı bir yöntem vardır. Birçok programcı bu yaklaşımı içselleştirmiştir ve sıfırdan nesne yönelimli bir uygulamanın nasıl tasarlanacağı konusunda iyi bir fikre sahiptir.
Yeni hype, birçok kitap ve öğreticide öğretilen fonksiyonel programlamadır. Peki ya fonksiyonel yazılım mühendisliği? Lisp ve Clojure hakkında okurken, iki ilginç ifade geldi:
Fonksiyonel programlar genellikle yukarıdan aşağıya yerine aşağıdan yukarıya doğru geliştirilir ('On Lisp', Paul Graham)
Fonksiyonel Programcılar, OO-Programmerlerin nesneleri / sınıfları ('Java Programcılar için Clojure', Rich Hickley tarafından konuşulur) kullandığı Haritalar'ı kullanır.
Peki işlevsel bir uygulamanın sistematik (model tabanlı?) Tasarımının metodolojisi nedir, örneğin Lisp veya Clojure? Ortak adımlar nelerdir, hangi eserleri kullanıyorum, bunları problem alanından çözüm alanına nasıl eşlerim?