Mô hình là sự trừu tượng hóa, mô tả mặt bản chất của một vấn đề hoặc một cấu trúc phức tạp bằng cách loại bỏ những chi tiết không quan trọng, khiến cho bài toán trở nên dễ hiểu và dễ nắm bắt hơn. Trừu tượng hóa là một khả năng cơ bản của con người trong việc giải quyết các vấn đề phức tạp. Các kỹ sư, kiến trúc sư, các nghệ sĩ đã từng xây dựng những mô hình từ hàng nghìn năm nay để thử các thiết kế của họ trước khi thực hiện chúng. Việc phát triển các hệ thống phần mềm cũng không ngoại lệ. Để xây dựng một hệ thống phức tạp, những người phát triển phải trừu tượng hóa những khía cạnh (view) khác nhau của hệ thống, xây dựng các mô hình bằng cách sử dụng các kí pháp một cách rõ ràng, cẩn thận, kiểm tra xem các mô hình đã thoả mãn các yêu cầu của hệ thống chưa và dần dần thêm vào các chi tiết để có thể chuyển đổi từ mô hình sang một cài đặt cụ thể.
Mô hình hóa là cách xem xét một bài toán thông qua việc sử dụng các mô hình. Mô hình dùng để hiểu rõ bài toán, trao đổi thông tin giữa những người liên quan như khách hàng, chuyên gia, người phân tích, người thiết kế... Mô hình giúp cho việc xác định các yêu cầu tốt hơn, thiết kế rõ ràng hơn và khả năng bảo trì hệ thống cao hơn.
Chúng ta xây dựng mô hình của những hệ thống phức tạp bởi vì chúng ta không thể lĩnh hội một lúc toàn bộ hệ thống đó. Ví dụ như khi xây một nhà kho chúng ta có thể bắt tay vào xây ngay, khi xây một ngôi nhà chúng ta có thể cần bản thiết kế của ngôi nhà đó. Khi cần xây môt tòa nhà cao tầng, chúng ta chắc chắn cần bản thiết kế của toà nhà đó. Điều này cũng đúng trong lĩnh vực phần mềm. Hệ thống càng phức tạp thì việc xây dựng mô hình càng quan trọng. Xây dựng mô hình cho phép người thiết kế thấy được bức tranh tổng quan của hệ thống, thấy được các thành phần của hệ thống tương tác với nhau như thế nào hơn là việc sa lầy vào chi tiết bên trong của các thành phần đó.
Trong thế giới luôn biến động của các ứng dụng hướng đối tượng thì việc phát triển và bảo trì các ứng dụng có chất lượng cao trong một khoảng thời gian hợp lý ngày càng trở nên khó khăn hơn. Một tổ chức phát triển phần mềm thành công là tổ chức xây dựng được các phần mềm có chất lượng, thoả mãn được mọi yêu cầu của khách hàng.
Mô hình hóa là phần trung tâm trong các công việc, các hoạt động để dẫn tới một phần mềm tốt. Chúng ta xây dựng mô hình để trao đổi, bàn bạc về cấu trúc và ứng xử(behavior) mong muốn của hệ thống. Chúng ta xây dựng mô hình để trực quan hóa và kiểm soát kiến trúc của hệ thống.
Mô hình có thể mô tả các cấu trúc, nhấn mạnh về mặt tổ chức của hệ thống hoặc nó có thể mô tả các hành vi, tập trung vào mặt động của hệ thống.
Chúng ta xây dựng mô hình để hiểu rõ hơn về hệ thống mà chúng ta đang xây dựng, tạo ra cơ hội để có thể đơn giản hóa và tái sử dụng. Chúng ta xây dựng mô hình để kiểm soát rủi ro.
Việc lập mô hình không chỉ dành cho các hệ thống lớn. Khi xây dựng mô hình chúng ta sẽ đạt được 4 mục đích sau:
Mô hình giúp chúng ta trực quan hóa hệ thống như là nó vốn có hay theo cách mà chúng ta muốn nó sẽ như vậy.
Mô hình cho phép chúng ta chỉ rõ cấu trúc và ứng xử của hệ thống
Mô hình cho chúng ta một khuôn mẫu để hướng dẫn chúng ta trong quá trình xây dựng hệ thống.
Mô hình đưa ra các dẫn chứng bằng tài liệu về các quyết định mà chúng ta đã đưa ra trong quá trình thiết kế hệ thống.
Thông qua việc mô hình hóa, chúng ta thu hẹp bài toán mà chúng ta đang nghiên cứu bằng cách chỉ tập trung vào một khía cạnh tại một thời điểm. Điều này cũng giống như phương pháp “chia để trị” mà Edsger Diskstra đã đưa ra: “Giải quyết một vấn đề khó bằng cách chia nó thành những bài toán nhỏ hơn mà bạn có thể giải quyết được.”
Mô hình hóa là việc đơn giản hóa thực tế, loại bỏ những điểm thứ yếu, tuy nhiên ta phải chắc chắn rằng không bỏ sót một chi tiết quan trọng nào.
Tùy thuộc vào đặc điểm tự nhiên của hệ thống, mỗi mô hình có thể tập trung vào những mặt khác nhau của hệ thống. Như hệ thống tập trung vào dữ liệu thì các mô hình về phần thiết kế tĩnh của hệ thống sẽ được chú ý hơn. Trong hệ thống giao diện người dùng thì phần tĩnh và động của Use case sẽ là quan trọng. Trong hệ thống thời gian thực, các tiến trình động là quan trọng. Cuối cùng, trong hệ thống phân tán dựa trên cở sở Web thì các mô hình về thực thi và triển khai là quan trọng nhất.