Do nhu cầu của những hệ thống phần mềm tăng lên các nhà nghiên cứu cũng như những nhà thực hành giỏi luôn cố gắng tìm kiếm những phương pháp luận và kỹ thuật phát triển để làm tự động hoá việc sản xuất phần mềm và làm dễ dàng việc bảo trì chúng. Những kỹ thuật này mới đây đã bao hàm các mẫu thiết kế và khung làm việc thiết kế. Đặc biệt, chúng ta nhận ra sự cần thiết có một phương pháp luận phát triển để phát triển những hệ thống phức tạp qui mô lớn,.