Chương 1 – Cơ sở lý luận về công nghệ hướng đối tượng và ngôn ngữ mô hình hóa thống nhất UML 1. Tổng quan về công nghệ hướng đối tượng và phương pháp mô hình hóa Ngày nay, trong công nghệ phần mềm nói chung và phần mềm công nghiệp nói riêng, công nghệ hướng đối tượng đóng vai trò then chốt. Công nghệ hướng đối tượng không những đã cách mạng hóa phương pháp phân tích thiết kế xây dựng phần mềm, mà còn đổi mới cả tư duy của những người sử dụng. Từ khóa “hướng đối tượng” đang trở thành từ mốt, được sử dụng rất phổ biến trong các tiêu đề quảng cáo sản phẩm phần mềm, từ các công cụ lập trình, phần mềm soạn thảo văn bản, xử lý đồ họa tới các hệ thống quản lý cơ sở dữ liệu.
Vậy, thực chất công nghệ hướng đối tượng là gì? Mô hình hóa hướng đối tượng Bất cứ thế giới thực nào cũng đều phức tạp dù đó là thế giới tự nhiên hay thế giới do con người tạo ra. Vậy cách thức con người tiếp cận, tìm hiểu, làm chủ thế giới của mình cũng như việc giao tiếp với nhau thế nào… Tất nhiên, con người thường thông qua các mô hình, dù đó chỉ là những phương trình toán học, các định luật vật lý, những hình ảnh hay thậm chí là lời nói và chữ viết. Mô hình là một ánh xạ của thế giới thực, mô tả và phản ánh thế giới thực từ một góc nhìn. Mô hình đơn giản hơn thế giới thực rất nhiều, nó chỉ mang những thông tin cần thiết cho một mục đích sử dụng cụ thể.
Chính vì thế mà thông qua mô hình chúng ta có thể tìm hiểu, bàn luận về vấn đề cần giải quyết, cũng như thiết kế và kiểm chứng giải pháp trước khi tiến hành thực thi. Có thể nói, tư duy trên cơ sở mô hình là phương pháp không thể thiếu được của mỗi người làm khoa học, kỹ thuật. Đương nhiên, công nghệ phần mềm cũng không thể thiếu vai trò của các phương pháp mô hình hóa. Việc mô hình hóa hệ thống phần mềm nhằm mục đích sau: Trừu tượng hóa, đơn giản hóa vấn đề cần giải quyết; Tạo ra phương tiện giao tiếp thống nhất trong nhóm phát triển; Tạo ra phương tiện giao tiếp thuận tiện giữa nhóm phát triển và khách hàng; Tạo ra cơ sở phân tích, thiết kế và kiểm chứng hệ thống; Tư liệu hóa phần mềm.
Mô hình của hệ thống có thể là một bản mô tả cách thức hoạt động, một số công thức toán học, một hoặc vài sơ đồ mô tả thành phần và các hoạt động diễn ra trong hệ thống. Việc sử dụng mô hình loại nào để nghiên cứu hệ thống phụ thuộc vào mức độ trừu z 10 tượng hóa được chọn lựa, phụ thuộc vào quan điểm phân tích và phụ thuộc vào công cụ sử dụng. Các mô hình vừa là công cụ nghiên cứu và tìm hiểu hệ thống, vừa là công cụ, ngôn ngữ để trao đổi và là công cụ để điều chỉnh, hoàn thiện hệ thống. Việc trừu tượng hóa thế giới tự nhiên thành các lớp đối tượng được gọi là mô hình hóa hướng đối tượng.
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, thỏa mãn tốt những yêu cầu của khách hàng. Mô hình hóa được đánh giá là phần trung tâm trong mọi công việc, các hoạt động để dẫn tới việc có được một phần mềm tốt. Thông qua mô hình có thể dùng để trao đổi, bàn bạc về cấu trúc và ứng xử mong muốn của hệ thống.
Đồng thời qua mô hình để trực quan hóa và kiểm soát kiến trúc hệ thống. Mặt khác việc sử dụ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 mô tả các hành vi ứng xử, tập trung vào những mặt động của hệ thống. Việc xây dựng mô hình không chỉ dành riêng cho các hệ thống lớn, mà nó mang lại nhiều lợi ích cho tất cả các hệ thống khác nhau. Nhìn chung, khi xây dựng mô hình sẽ đạt được những mục đích sau: Mô hình giúp trực quan hóa hệ thống như theo cách nó vốn có hay là theo cách mà chúng ta muốn nó sẽ như vậy.
Mô hình chỉ rõ các cấu trúc và ứng xử của hệ thống. Mô hình giúp chúng ta có được một khuôn mẫu để hướng dẫn chúng ta trong suốt 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 mô hình hóa, chúng ta thu hẹp bài toán mà chúng ta cần 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.
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 đó. Chẳng hạn, 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 được chú ý hơn. Nhưng nếu hệ thống giao diện người dùng thì phần tĩnh và phần động của các ca sử dụng sẽ là quan trọng. Đối với hệ thống thời gian thực, các tiến trình động là quan trọng.
Và 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. z 11 Phân tích, thiết kế hướng đối tượng Công nghệ phần mềm không chỉ là lập trình, mà còn nhiều bước khác nữa như phân tích, thiết kế và bảo trì. Theo dòng phát triển công nghệ phần mềm, phương pháp lập trình đã tiến hóa từ lập trình tuần tự lên lập trình có cấu trúc và lập trình hướng đối tượng. Phương pháp phân tích, thiết kế phần mềm cũng đi theo các bước tiến hóa này.
Phương pháp phân tích, thiết kế phần mềm tiên tiến hiện nay là hướng đối tượng, trong đó khối cơ bản để xây dựng nên phần mềm là đối tượng hay lớp. Nói một cách đơn giản, đối tượng là sự phản ánh thế giới tự nhiên xung quanh. Ưu điềm lớn nhất của phân tích, thiết kế phần mền hướng đối tượng không phải nằm ở chỗ tạo ra chương trình nhanh tốn ít công sức, mà nằm ở chỗ nó gần với thực tế và do đó thúc đẩy việc tái sử dụng lại những thành quả đã được xây dựng trước đó. Lập trình hướng đối tượng Với đa số người quan tâm thì khái niệm hướng đối tượng chỉ mới dừng lại là một phương pháp lập trình ở mức trừu tượng cao hơn lập trình hướng cấu trúc.
Rõ ràng, xu hướng phát triển của các ngôn ngữ lập trình là hướng dần tới tư duy người lập trình và thoát khỏi sự lệ thuộc vào máy tính cụ thể. Điều đó có nghĩa là, người lập trình có thể biểu diễn thế giới thực và ý tưởng của mình thông qua ngôn ngữ lập trình một cách tự nhiên hơn, trực tiếp hơn là phụ thuộc vào từng câu lệnh, thanh ghi hay ô nhớ theo cách thức làm việc của vi xử lý. Dù lập trình hướng cấu trúc khiến cho việc lập trình trở nên dễ dàng hơn, hiệu quả hơn nên mã chương trình có độ tin cậy cao hơn và tính khả chuyển cao hơn. Tuy nhiên, lập trình hướng cấu trúc vẫn gặp nhiều khó khăn với các dự án lớn bởi tư duy còn gắn nhiều với cấu trúc dữ liệu cụ thể, tính mềm dẻo và khả năng sử dụng lại tương đối thấp của mô hình phân tích, thiết kế cũng như mã chương trình.
Trong khi đó, yêu cầu của thị trường ngày càng khắt khe cả về mở rộng phạm vi chức năng, tính thân thiện người sử dụng, độ tin cậy của phần mềm cũng như khung thời gian ra sản phẩm. Lập trình hướng đối tượng được coi là phương pháp lập trình chuẩn hiện nay trong đa số các lĩnh vực ứng dụng bởi nó có nhiều ưu điểm lớn so với các phương pháp cổ điển. Mục tiêu mà lập trình hướng đối tượng đặt ra: Đơn giản hóa việc sử dụng các thư viện, cho phép sử dụng lại phần mềm một cách triệt để, nâng cao độ tin cậy và tính bền vững của phần mềm, hỗ trợ các dự án phát triển phần mềm có quy mô lớn đòi hỏi nhiều người tham gia, cải thiện khả năng bảo trì của mã nâng tính mềm dẻo linh hoạt của phần mềm. z 12 Như vậy, công nghệ hướng đối tượng là tất cả công nghệ và kỹ thuật phần mềm dựa trên nền tảng là phương pháp luận hướng đối tượng.
Nền tảng này bao gồm: mô hình hóa hướng đối tượng, phân tích và thiết kế hướng đối tượng, lập trình hướng đối tượng. Dựa trên mô hình đối tượng thu được khi mô hình hóa hệ thống, phương pháp phân tích thiết kế phần mềm hướng đối tượng sẽ bổ sung thêm các liên kết và lớp đối tượng mới, tinh chỉnh lại… để rạo ra mô hình đối tượng chi tiết của phần mềm. Cuối cùng người sử dụng một ngôn ngữ lập trình nào đó (không nhất thiết phải mà ngôn ngữ hướng đối tượng) thể hiện mô hình đối tượng chi tiết thành mã nguồn. Ngôn ngữ mô hình hóa thống nhất UML 1.
Lịch sử phát triển của UML Đầu những năm 1980, ngành công nghệ phần mềm chỉ có duy nhất một ngôn ngữ hướng đối tượng là Simula. Sang nửa sau thập niên 80, các ngôn ngữ hướng đối tượng như Smaltalk và C++ xuất hiện. Cùng với chúng, nhu cầu mô hình hóa các hệ thống phần mềm theo hướng đối tượng đã nảy sinh. Vào khoảng đầu thập niên 90, một số ngôn ngữ mô hình hóa xuất hiện và được nhiều người sử dụng như: Grady Booch’s Mooch Modeling Methodology, James Rambaugh’s Object Modeling Technique – OMT,… Mỗi phương pháp và ngôn ngữ trên đều có hệ thống ký hiệu riêng, phương pháp xử lý và công cụ hỗ trợ khác nhau nên đều có những điểm mạnh và yếu riêng.
Từ đó khiến nảy ra cuộc tranh luận phương pháp nào là tốt nhất. Trong thực tế, sự khác biệt giữa các phương pháp đó hầu như không đáng kể. Hơn nữa, việc ký hiệu khác nhau của các phương pháp đã gây ra sự mập mờ, nhầm lẫn khi mà chỉ một ký hiệu có thể mang những ý nghĩa khác nhau trong mỗi phương pháp. Thời kỳ này còn được biết đến với tên gọi cuộc chiến giữa các phương pháp.
Tuy nhiên theo tiến trình thời gian, tất cả những phương pháp này đã tiệm cận lại và bổ sung lẫn nhau.