CHƯƠNG 9 MÃ TRÌNH PHÁT SINH TRONG ROSE ...............................................................................214 9.1 PHÁT SINH MÃ TRÌNH C++..................................................................................................................214 9.1.1 - Các lớp ...........................................................................................................................................214 9.1.2 - Quan hệ kết hợp..............................................................................................................................216 9.1.3 - Quan hệ phụ thuộc tập hợp.............................................................................................................220Phát triển phần mềm bằng UML trang | 4 9.1.4 - Quan hệ kế thừa..............................................................................................................................222 9.2 PHÁT SINH MÃ TRÌNH JAVA...............................................................................................................222 9.2.1 - Các lớp ...........................................................................................................................................223 9.2.2 - Quan hệ kết hợp..............................................................................................................................224 9.2.3 - Quan hệ phụ thuộc tập hợp.............................................................................................................225 9.2.4 - Quan hệ kế thừa..............................................................................................................................226 9.3 PHÁT SINH MÃ TRÌNH VISUAL BASIC..............................................................................................227 9.3.1 - Các lớp ...........................................................................................................................................227 9.3.2 - Quan hệ kết hợp..............................................................................................................................229 9.3.3 - Quan hệ kế thừa đơn.......................................................................................................................230 9.4 PHÁT SINH MÃ TRÌNH SQL.........................................................................................................................231 9.4.1 - Các lớp ...........................................................................................................................................231 9.4.2 - Quan hệ kết hợp..............................................................................................................................231 9.4.3 - Quan hệ kế thừa..............................................................................................................................233Phát triển phần mềm bằng UML trang | 5 LỜI NÓI ĐẦU Hệ thống tin học ngày càng phức tạp. Xu thế áp dụng phương pháp hướng đối tượng (phương pháp mới) thay cho phương pháp cấu trúc (phương pháp truyền thống) ngày càng phổ biến khi xây dựng các hệ thống phần mềm lớn và phức tạp. Hơn nữa, từ khi Ngôn ngữ mô hình hóa thống nhất (Unified Modeling Language – UML) được tổ chức OMG (Object Management Group) công nhận là chuẩn công nghiệp thì nó đã trở thành công cụ phổ dụng và hữu hiệu cho phương pháp mới này. Mục tiêu của tài liệu này nhằm giới thiệu các khái niềm cơ bản về tiếp cận hướng đối tượng và mô hình hóa hệ thống phần mềm theo phương pháp hướng đối tượng. Các khái niệm mới được mô tả, hướng dẫn thực hành thông qua ngôn ngữ chuẩn UML và phần mềm công cụ mô hình hóa nổi tiếng Rational Rose của Raitonal Software Corporation. Phương pháp phân tích thiết kế hướng đối tượng được sử dụng rộng rãi tại các nước phát triển và bắt đầu được sử dụng tại một số đơn vị tin học tại Việt Nam. Tuy nhiên tài liệu bằng tiếng Việt về lĩnh vực này còn rất hiếm hoi, không đáp ứng nhu cầu hiện tại. Hơn nữa, nhận thức được tầm quan trọng của phương pháp mới này, một số trường đại học đã hình thành môn học liên quan đến vấn đề nói trên cho sinh viên, còn một số trường khác đang có kế hoạch đưa chủ đề này vào chương trình đào tạo chính khóa. Chủ điểm của tài liệu được thể hiện dưới góc nhìn của người phát triển hệ thống phần mềm, không thể hiện dưới góc độ quan sát của nhà phương pháp luận. Lựa chọn này xuất phát từ thực tế là từ phương pháp luận hướng đối tượng dẫn đến việc ứng dụng nó vào xây dựng phần mềm cụ thể còn một khoảng cách xa vời và đầy khó khăn, đặc biệt với trình độ tin học hiện này nói chung còn chưa cao tại Việt Nam. Với quan điểm này, tài liệu được cấu trúc như sau: Chương mở đầu trình bày khái quát về mô hình và mô hình hóa; các bước xây dưng hệ thống phần mềm và tầm quan trọng của phương pháp hướng đối tượng. Chương tiếp theo giời thiệu ngôn ngữ chuẩn công nghiệp UML, một công cụ hữu hiệu mô hình hóa hệ thống phần mềm. Trong các phần tiếp theo là trình bày kỹ thuật mô hình hóa, từ phân tích yêu cầu đến thiết kế hệ thống, kiến trúc hệ thống và cài đặt bằng ngôn ngữ lập trình. Chương cuối cùng là bài học thực nghiệm các kỹ thuật đã trình bày trong các chương trước vào bài toán cụ thể. Đặc biệt, trong mỗi chương tài liệu đều có phần thực hành trên phần mềm Rational Rose để độc giả có thể áp dụng ngày công cụ mới, kỹ thuật mới vào giải quyết vấn đề của riêng họ. Phần phụ lục trình bày một số mã trình trong một vài ngôn ngữ thông dụng tương ứng với các nhóm phần tử trong biểu đồ UML… Hiện nay phần lớn các bạn sinh viên đại học năm cuối hoặc các kỹ sư tin học mới ra trường đều gặp khó khăn khi nhận nhiệm vụ xây dựng hệ thống phần mềm mới hay nâng cấp phần mềm có sẵn. Các bạn thường không biết bắt đầu từ đâu và làm như thế nào để có được phần mềm và phần mềm tốt, nói cách khác là còn thiếu phương pháp. Do vậy, quyển sách này có thể là tài liệu tham khảo tốt cho các bạn sinh viên và các kỹ sư tin học. Quyển sách này được hình thành từ nội dung bài giảng của tác giả về chủ đề Phát triển phần mềm hướng đối tượng băng UML cho một số lớp sinh viên đại học. Trong quá trình biên soạn tác giả đã nhận được nhiều ý kiến đóng góp quí báu của các chuyên gia trong lĩnh vực này. Trước hết tác giả xin chân thành cảm ơn PGS. TSKH Nguyễn Xuân Huy, CN Ngô Trung Việt, TS Đặng Thành Phu, TS Đoàn Văn Ban, ThS Nguyễn Sơn Hải và các đồng nghiệp khác công tác tại Viện Công nghệ Thông tin, Trung tâm Khoa học Tự nhiên và Công nghệ Quốc gia đã đọc và cho ý kiến sửa chữa bản thảo. Mặc dù đã rất cố gắng nhưng tài liệu này không tránh khỏi các sai sót. Tác giả xin chân thành cám ơn mọi ý kiến đóng góp của bạn đọc.Phát triển phần mềm bằng UML trang | 6 Địa chỉ liên lạc: Viện Công nghệ Thông tin, Trung tâm Khoa học Tự nhiên và Công nghệ Quốc gia. Email: dvduc@ioit.ncst.ac.vn Hà nội, tháng 02 năm 2002 TÁC GIẢPhát triển phần mềm bằng UML trang | 7 CHƯƠNG 1 MỞ ĐẦU Phát triển phần mềm ngày càng trở nên phức tạp. Thay đổi giao diện từ các xâu ký tự sang giao diện đồ họa xu thế sự kiện; kiến trúc hệ thống đa tầng khách/chủ; cơ sở dữ liệu (CSDL) phân tán; Internet … làm tăng độ phức tạp của hệ thống phần mềm. Thách thức trong hai mươi năm tới của xây dựng hệ thống phần mềm không phải là tốc độ thực hiện chương trình, kinh phí hay sức mạnh của nó mà vấn đề sẽ là độ phức tạp (Sun Microsystem). Kẻ thù của chúng ta là độ phức tạp, ta phải loại bỏ chúng (Jan Bean). Vậy, loại bỏ độ phức tạp bằng cách nào? Các phương pháp tiếp cận hướng cấu trúc, tiệm cận hướng logic, tiếp cận hướng hướng đối tượng và tiếp cận hướng tác tử để có thể giải quyết vấn đề này nhưng ở mức độ khác nhau. Tổng quát thì việc xây dựng phần mềm phải quan tâm đến tổ chức, các quan hệ và cấu trúc để hình thành được các hành vi phức tạp của hệ thống. Mọi việc khảo sát hệ thống phải được thực hiện với mức độ trừu tượng khác nhau, từ các chi tiết đến tổ chức tổng thể. Do vậy, xây dựng phần mềm là thực hiện dãy tương tác chia nhỏ và hợp nhất. Chia nhỏ để hiểu rõ vấn đề và hợp nhất để xây dựng hệ thống. Tiến trình chia nhỏ (tách) đã có truyền thống và tuân thủ các tiêu chí chức năng. Các chức năng của hệ thống được nhận diện, sau đó chúng được tách thành các chức năng con. Tiến trình này được thực hiện lặp đi lặp lại cho đến khi có được các thành phần đơn giản đến mức chúng được biểu diễn trực tiếp bằng các hàm hay thủ tục của ngôn ngữ lập trình (hình 1.1). Cách tiếp cận này được gọi là tiếp cận hướng chức năng (hay còn gọi là thủ tục, truyền thống). Người phát triển phần mềm sẽ tập trung vào các nhiệm vụ điều khiển và tách thuật toán lớn thành các thuật toán nhỏ. Khối chính để hình thành phần mềm ở đây là các hàm hay thủ tục. Hình 1.1 Tiếp cận hướng chức năng Kiến trúc phần mềm được cài đặt theo cách tiếp cận vừa mô tả trên sẽ phản ảnh các chức năng hệ thống. Tiếp cận trên cơ sở chức năng và cơ chế phân cấp chỉ cho lại kết quả mong muốn khi các chức năng được nhận biết đầy đủ và nó không được thay đổi theo thời gian. Thực tế lại không đúng như vậy vì trong rất nhiều trường hợp, phát triển phần mềm không bao giờ kết thúc hoàn toàn, luôn có cái gì đó phải sửa đổi, nâng cấp. Sửa đổi hay mở rộng hệ thống quá nhiều làm cho chương trình khác xa quan niệm ban đầu. Do đó cần phải có phương pháp mới cho khả năng làm chủ được độ phức tạp, giúp quản lý được chất lượng, độ tin cậy phần mềm ngày cả khi cấu trúc bị tách ra hay tiến hóa. Chức năng chính Chức năng con 1 Chức năng con 2 Chức năng con 1.1 Chức năng con 1.2 Chức năng con 2.1 Chức năng con 2.2Phát triển phần mềm bằng UML trang | 8 Hình 1.2 Tiếp cận hướng đối tượng Quan điểm hướng đối tượng hình thành trên cơ sở tiếp cận hướng hệ thống, nó coi hệ thống như thực thể được tổ chức từ các thành phần mà chỉ được xác định khi nó thừa nhận và có quan hệ với các thành phần khác. Phương pháp tách vần đề đang giải quyết để hiểu chúng ở đây không chỉ dựa trên cơ sở cái hệ thống làm mà còn dựa trên việc tích hợp hệ thống là cái gì với hệ thống làm gì. Thí dụ trên hình 1.2 mô tả các đối tượng và các quan hệ giữa các đối tượng của hệ thống thang máy. Theo cách tiếp cận này thì các chức năng hệ thống được biểu diễn thông qua cộng tác của các đối tượng; việc thay đổi, tiến hóa chức năng sẽ không ảnh hưởng đến cấu trúc tĩnh của phần mềm. Sức mạnh của tiếp cận hướng đối tượng là việc tách (chia) và nhập (thống nhất) được thực hiện nhờ tập phong phú các cơ chế tích hợp của chúng; khả năng thống nhất cao những cái nó đã được tách ra để xây dựng các thực thể phức tạp từ các thực thể đơn giản. Tiếp cận hướng đối tượng đã tỏ rõ lợi thế khi lập trình các hệ thống phức tạp. Những người phát triển phần mềm nhận thấy rằng phát triển phần mềm hướng đối tượng sẽ cho lại phần mềm thương mại chất lượng cao: tin cậy, dễ mở rộng và dễ sử dụng lại, chạy trơn tru, phù hợp với yêu cầu người dùng đang mong đợi. Chúng còn cho khả năng hoàn thành phần mềm đúng kỳ hạn và không vượt quá khinh phí dự kiến ban đầu.
Chương GIỚI THIỆU CÁC CASE STUDY 1.1 Giới thiệu Trong sách có sử dụng hai case study: CarMatch để minh hoạ làm ví dụ thực hành VolBank dành cho ví dụ thực hành tập tự làm 1.2 CarMatch 1.2.1 Tổng quan CarMatch CarMatch công ty hội viên (franchise company) thành lập với chức khuyến khích người dùng chung xe Ở nhiều thành phố, giao thông ùn tắc đe doạ đến chất lượng sống gây ô nhiễm môi trường đáng kể, bao gồm việc thải khí CO2 vào bầu khí Nhiều quốc gia đồng ý thực hiệp ước quốc tế giảm bớt lượng khí thải Carbon nhằm ngăn chặn tình trạng trái đất nóng dần lên, CarMatch giải pháp cho tình trạng Ở số khu vực, phương tiện giao thông công cộng không sử dụng nhiều số lượng xe riêng ngày tăng, sở hạ tầng hệ thống giao thông công cộng không đáp ứng nhu cầu lại người không sử dụng xe riêng Việc lên kế hoạch chia sẻ xe để dùng chung giải pháp tạm thời giúp giảm bớt lượng lưu thông mà không cần phải đầu tư sở hạ tầng cho phương tiện giao thông công cộng CarMatch tìm kiếm giải pháp khuyến khích việc dùng chung xe đưa dòch vụ chia sẻ xe cho người sống làm việc gần Trong nhiều người làm việc chung dùng chung phương tiện, người làm việc gần lại khó tìm người thích hợp để chung xe Trong vài công ty lớn, làm việc nơi người ta Cấu trúc CarMatch gồm ba lớp: lớp hoạt động toàn cầu mang tính phi lợi nhuận, công ty điều hành trung tâm quốc gia lớp hoạt động đòa phương hội viên CarMatch trung tâm cung cấp dòch vụ cho quyền tổ chức có nghóa vụ pháp lý làm giảm lượng Chương 1: GIỚI THIỆU CÁC CASE STUDY lưu thông nước bang Nó quảng cáo dòch vụ đến với công chúng Những người tham gia phải trả khoảng lệ phí, gọi phí thành viên, số tiền hoàn lại CarMatch đòa phương tìm người có nhu cầu chung với họ cung cấp phương tiện cho họ CarMatch đòa phương thảo thoả thuận mẫu người tham gia để đảm bảo số tiền trao tay cho chi phí xăng coi thu nhập chòu thuế khuyên họ mua bảo hiểm đặc trưng cho việc dùng chung xe CarMatch đòa phương đóng vai trò đại lý cho công ty bán hợp đồng bảo hiểm Nhân viên CarMatch đòa phương học khoá huấn luyện toàn diện công tác tư vấn (vì họ phải giúp đỡ công ty quyền đòa phương, tình trạng pháp lý quốc gia hay bang họï), yêu cầu bảo hiểm, cân nhắc an toàn cách điều hành hệ thống CarMatch Ở số quốc gia, ngành bảo hiểm yêu cầu nhân viên CarMatch phải đáp ứng qui đònh ngành CarMatch dự đònh thu lợi nhuận từ phí thành viên, phí tư vấn hoa hồng bán bảo hiểm CarMatch trung tâm lấy phần lợi nhuận, CarMatch đòa phương giữ phần lại Khi hệ thống tính giá giao thông (road-price) dựa việc liên lạc sóng vô tuyến xe cộ hệ thống tiếp sóng ngày trở nên phổ biến, CarMatch đòa phương bán cài đặt thiết bò, làm việc với quan chức thu phí cầu đường hệ thống tính giá giao thông để thương lượng chiết khấu cho thành viên sở cam kết giảm nhu cầu lưu thông 1.2.2 Hỗ trợ khách hàng CarMatch cần có hệ thống máy tính cho CarMatch đòa phương, để có dòch vụ có hỗ trợ máy tính từ đầu Mỗi quốc gia phải có web-server Các web-server cung cấp cho CarMatch đòa phương thông tin cập nhật thường xuyên dòch vụ môi giới bảo hiểm, cho phép thành viên đăng ký trực tuyến Thông tin thành viên sẽ tải xuống hệ thống CarMatch đòa phương khu vực tương ứng Khi CarMatch đòa phương thích hợp, CarMatch trung tâm cố gắng đáp ứng nhu cầu cho thành viên 1.2.3 Các yêu cầu CarMatch Các yêu cầu sau yêu cầu hệ thống mà CarMatch đòa phương sử dụng (hệ thống trung tâm chủ đề trình phát triển độc lập khác) GIÁO TRÌNH NHẬP MÔN UML Phát triển hệ thống lưu trữ thông tin thành viên CarMatch 1.1 Lưu chi tiết khách hàng tiềm năng, dù họ cung cấp phương tiện tìm phương tiện để chung hai, lưu vò trí đòa lý nhà họ đòa nơi họ làm việc 1.2 Chuyển thông tin chi tiết khách hàng từ web-server họ đăng ký trực tuyến 1.3 Cung cấp giao diện cho hệ thống giao dòch thẻ tín dụng hệ thống chuyển ngân tự động ABTS (Automated Bank Transfer Sysytem) để xử lý việc trả hoàn phí thành viên Ghép thành viên với thành viên khác để dùng chung xe 2.1 Dựa vào vò trí đòa lý thời gian lại để xếp người dùng chung xe 2.2 Lưu chi tiết xếp thành công Ghi lại việc bán bảo hiểm 3.1 Lưu chi tiết hợp đồng bán cho thành viên, xử lý gia hạn 3.2 Ghi nhận hoa hồng thu từ hợp đồng Lưu chi tiết thông tin khách hàng phạm vi hoạt động 4.1 Bảo trì danh sách đòa mail khách hàng tiềm 4.2 Lưu chi tiết thông tin khách hàng cần tư vấn 4.3 Lưu lại hẹn gặp nhân viên (và tiếp xúc khác) khách hàng cần tư vấn Hệ thống phải có khả mở rộng để hợp thông tin phí cầu đường, hệ thống tính phí giao thông thiết bò bán cài đặt cho thành viên 1.3 VolBank 1.3.1 Tổng quan VolBank VolBank tổ chức phi lợi nhuận nhằm liên kết tình nguyện viên với cá nhân hay tổ chức cần giúp đỡ Mục tiêu nhằm tăng trách nhiệm công dân cộng đồng thông qua hoạt động tình nguyện đòa phương Để thực việc cần phải lưu danh sách thông tin hoạt động tình nguyện có danh sách thông tin tình nguyện viên, để phân công hợp lý Phương châm VolBank làm cách để đưa người có kỹ đến với nhu cầu công việc phù hợp Vì tình nguyện viên cần phải đăng ký kỹ có, người nhận giúp đỡ nêu lên yêu cầu kỹ cần giúp đỡ Chẳng hạn như, Pete Duffield tình nguyện giúp việc quét sơn Chương 1: GIỚI THIỆU CÁC CASE STUDY trang trí Anh ta gửi đến tới khu vực đòa phương sau trường học dành cho trẻ mười tuổi cần sơn lại Những đứa trẻ dành thời gian vui đùa nhà dưỡng lão đòa phương Một người đó, bà Hernandez, dành thời gian cho muốn luyện tập đàm thoại tiếng Tây Ban Nha Pete Duffield tiếp xúc với bà ta để ôn lại tiếng Tây Ban Nha trước kỳ nghỉ Mexico Tên VolBank mang ý nghóa người ta gởi thời gian mà họ rỗi cho người khác, kỹ mà họ có để giúp đỡ người khác Các thông tin VolBank cung cấp rộng rãi phương tiện đài phát thanh, đài truyền hình, quảng cáo Internet VolBank đồng thời kết hợp với tổ chức tình nguyện đòa phương để mở rộng hệ thống mạng lưới công tác tình nguyện tình nguyện viên Các tình nguyện viên đăng ký kỹ với VolBank cách gọi điện thoại đến người tổ chức đó, trực tiếp thông qua tổ chức tình nguyện đòa phương điền thông tin chi tiết vào trang web Khi đăng ký họ gởi thời gian theo cách đăng ký Nếu người tình nguyện đăng ký qua tổ chức tình nguyện đòa phương thông tin đưa tới người tổ chức để lưu lại tương tự trường hợp liên hệ trực tiếp điện thoại Các tổ chức tình nguyện cá nhân (bao gồm tình nguyện viên) đăng ký nhu cầu cần giúp đỡ cách liên hệ với người thuộc tổ chức tình nguyện Người cố xếp tình nguyện viên phù hợp với nhu cầu Thường xảy hai trường hợp: tình nguyện viên đáp ứng nhiều nhu cầu, nhu cầu có nhiều tình nguyện viên phù hợp Việc xếp thực dựa thông tin vò trí đòa lý, sử dụng mã số vùng điện thoại mã bưu điện cách đối sánh kỹ Khi tình nguyện viên giao việc, họ thông báo chi tiết cần, thông tin họ chuyển đến tổ chức tình nguyện hay cá nhân yêu cầu giúp đỡ Có điều rõ ràng tình nguyện viên không tự nhiên chấp nhận Với số công việc, chẳng hạn làm việc với trẻ em, có thủ tục kiểm tra kỹ chí có tham gia cảnh sát tổ chức xã hội Đó trách nhiệm tổ chức đề nghò giúp đỡ 1.3.2 Hỗ trợ khách hàng VolBank cần hệ thống máy tính hỗ trợ việc liên kết tình nguyện viên với nhu cầu Hệ thống kết nối web-server VolBank GIÁO TRÌNH NHẬP MÔN UML Các tổ chức thành viên thông báo liên kết nhu cầu tình nguyện viên hoàn tất Việc thông báo thực email fax Tình nguyện viên thông báo thư 1.3.3 Các yêu cầu VolBank Các yêu cầu dành cho hệ thống quản lý việc đăng ký, thực việc liên kết thông báo cho người tham gia Web-server hệ thống độc lập Phát triển hệ thống quản lý việc đăng ký thành viên quỹ thời gian họ 1.1 Ghi nhận thông tin chi tiết tình nguyện viên, kể kỹ đòa người 1.2 Ghi nhận thông tin quỹ thời gian mà tình nguyện viên đăng ký 1.3 Chuyển từ web-server thông tin chi tiết tình nguyện viên thời gian đăng ký họ Quản lý ghi nhu cầu cần tình nguyện giúp đỡ 2.1 Lưu chi tiết thành viên tổ chức tình nguyện 2.2 Lưu nhu cầu cần giúp đỡ tổ chức tình nguyện 2.3 Lưu nhu cầu cần giúp đỡ cá nhân Kết hợp tình nguyên viên với nhu cầu ghi nhận lại kết 3.1 Kết hợp tình nguyện viên với hoạt động tình nguyện thích hợp 3.2 Kết hợp hoạt động tình nguyện với tình nguyện viên thích hợp khu vực 3.3 Lưu kết hợp tình nguyện viên hoạt động tình nguyện 3.4 Thông báo cho tình nguyện viên biết kết hợp 3.5 Thông báo cho tổ chức tình nguyện biết kết hợp 3.6 Ghi nhận thành công kết hợp lập cam kết cho kết hợp đạt Lập báo cáo thống kê số lượng tình nguyện viên nhu cầu, tổng quỹ thời gian mà tình nguyện viên bỏ tổng thời gian cần giúp đỡ Chương CƠ BẢN VỀ UML 2.1 Giới thiệu Ngôn ngữ mô hình hợp UML (Unified Modeling Language) ngôn ngữ trực quan cung cấp cho nhà phân tích thiết kế hệ thống hướng đối tượng cách hình dung hệ thống phần mềm, mô hình hoá tổ chức nghiệp vụ sử dụng hệ thống phần mềm này; xây dựng chúng làm tài liệu chúng Công ty phần mềm Rational OMG (Object Management Group) đưa ba biểu đồ ký hiệu hướng đối tượng có ý nghóa, kết hợp với khía cạnh nhiều ký hiệu khác, tạo ngôn ngữ mô hình chuẩn nhằm biểu diễn cách thực hành tốt ngành công nghiệp phát triển phần mềm UML tiến triển chuẩn, trở thành chuẩn quốc tế tổ chức tiêu chuẩn quốc tế ISO (International Standard Organization) chấp nhận Chương giải thích lòch sử UML, mô tả trạng hướng phát triển tương lai Ngoài ra, chương giải thích cấu trúc UML cách làm tài liệu UML 2.2 Nguồn gốc UML Kỹ thuật phát triển phần mềm hướng đối tượng trải qua giai đoạn: Các ngôn ngữ lập trình hướng đối tượng phát triển bắt đầu sử dụng Các kỹ thuật phân tích thiết kế hướng đối tượng tạo nhằm giúp đỡ công việc mô hình hoá nghiệp vụ, phân tích yêu cầu thiết kế hệ thống phần mềm Những kỹ thuật ngày phát triển rộng rãi UML thiết kế nhằm kết hợp đặc điểm tốt số kỹ thuật ký hiệu phân tích thiết kế để tạo tiêu chuẩn công nghiệp 2.2.1 Các ngôn ngữ lập trình Simula-67 xem ngôn ngữ hướng đối tượng Simula 1, phát triển vào năm đầu thập niên 1960, GIÁO TRÌNH NHẬP MÔN UML ngôn ngữ dùng để mô biến cố rời rạc Một hệ thống mô sử dụng để phân tích tiên đoán hành vi hệ thống vật lý, chẳng hạn hệ thống giao thông, phản ứng hoá học hay dây chuyền lắp ráp Việc mô biến cố rời rạc mô hệ thống thực dạng trạng thái rời rạc nhằm đáp ứng biến cố xảy vào thời điểm cụ thể Đây khác biệt mô rời rạc mô liên tục (trạng thái tiến triển liên tục) Mô hình hoá giao lộ mô biến cố rời rạc: phương tiện giao thông đến đèn giao thông đổi trạng thái vào thời điểm xác đònh Một phản ứng hoá học thường mô mô liên tục: hoá chất phản ứng với liên tục tốc độ phản ứng phụ thuộc vào thay đổi yếu tố nhiệt độ áp suất Simula-67 Kristen Nygaard Ole-Johan Dahl thuộc đại học Oslo trung tâm máy tính Morwegian phát triển vào năm 1967 Nó xây dựng dựa Simula ngôn ngữ lập trình phổ thông Năm 1986, ngôn ngữ biết đến ngôn ngữ Simula gọi ngày Simula giới thiệu nhiều đặc tính ngôn ngữ lập trình hướng đối tượng, chẳng hạn lớp (class) thừa kế (inheritance) Ngôn ngữ lập trình hướng đối tượng tường minh Smalltalk, phát triển Alan Kay trường đại học Utah sau Adele Goldberg Daniel Ingalls Serox PARC (trung tâm nghiên cứu Palo Alto) vào năm 1970 Bản phát hành Smalltalk80 dùng phổ biến rộng rãi vào thập niên 1980 Smalltalk giới thiệu ý tưởng cách giao tiếp đối tượng qua cách truyền thông điệp thuộc tính đóng gói bên đối tượng Các thuộc tính truy cập từ đối tượng khác cách truyền thông điệp Sau Smalltalk, nhiều ngôn ngữ lập trình hướng đối tượng đời như: Objective C, C++, Eiffel CLOS (Common Lisp Object System) Kể từ phiên năm 1996, Java tạo quan tâm lớn phát triển hướng đối tượng Gần Microsoft đưa ngôn ngữ C# ( C-sharp) xem kết hợp tốt Java C++ Giữa Simula C#, nhiều ngôn ngữ trình hướng đối tượng phát triển phát triển tiếp tục phát triển, nhưng, với phát triển Internet, Java làm cho việc phát triển hướng đối tượng trở nên phổ biến 2.2.2 Phân tích thiết kế Sau Smalltalk xuất vài năm, sách phân tích thiết kế hướng đối tượng bắt đầu xuất Một số sách gắn liền với ngôn ngữ cụ thể (chẳng hạn Objective C C++), số lại có mục đích tổng Chương 2: CƠ BẢN VỀ UML quát Trong số đó, phải kể công trình Shaler & Melllor (1988) Coud & Yourdon (1990 & 1991) Phát triển sau Booch (1991), nhóm Rumbaugh, Blaha, Premerlani, Eddy & Lorencesen (1991), không lâu sau Jacobson, Christerson Jonsson & Overgaard (1992) Còn nhiều sách khác sách tác giả nói biết sử dụng hầu khắp Các tác giả khác dùng ký hiệu khác để biểu diễn lớp, đối tượng mối quan hệ chúng Thường họ lại dùng thành phần ký hiệu giống để biểu diễn cho thứ khác Ví dụ, Coad Yourdon dùng hình tam giác để biểu diễn cho quan hệ kết hợp whole-part (xem phần phụ lục), Rumbaugh cộng lại dùng hình tam giác để biểu diễn thừa kế Họ cung cấp phương pháp phân tích thiết kế, bao gồm các giai đoạn tiến hành, công việc phải làm đặc tả cần thiết Chúng đònh nghóa rõ ràng, nhiều hay Đầu thập kỷ 1990 đặc trưng phát triển đa dạng ký hiệu phương pháp, số tác giả gọi “chiến tranh phương pháp” (Method War) Từ 1989 đến 1994, ngôn ngữ mô hình từ mức chưa tới 10 ngôn ngữ phát triển 50 ngôn ngữ Khoảng thập niên 1990, tình hình thay đổi Các phương pháp ba tác giả chính, Rumbaugh Booch Jacobson, bật hẳn lên Rumbaugh sửa đổi công trình kỹ thuật mô hình hướng đối tượng OMT (Object Modelling Technique) thành OMT-2 Booch phát hành ấn thứ hai có tên Booch’93, phương pháp Jacobson biết đến tựa đề Công Nghệ Phần Mềm Hướng Đối Tượng OOSE (Object-Oriented Software Engineering) hay Objectory, tên công ty Jacobson 2.2.3 Sự xuất UML Cả ba phương pháp ba người bắt đầu trở nên tương họ kết hợp đặc tính tốt phương pháp khác Vào năm 1994, Rumbaugh Booch kết hợp làm việc chung với công ty phần mềm Rational để thống hai phương pháp họ Tháng 10 năm 1995, họ đưa phác thảo phương pháp hợp (Unified Method) phiên 0.8 Vào mùa thu năm 1995, Jacobson với công ty gia nhập vào Rational, ba bắt đầu phát triển UML qui trình phát triển phần mềm hợp USDP (Unified Software Development Process), phần lớn dựa phương pháp Objectory Vào tháng tháng 10 năm 1996, phiên 0.9 0.91 phát hành nhận phản hồi từ tổ chức quan tâm đến việc phát GIÁO TRÌNH NHẬP MÔN UML triển ngôn ngữ mô hình hướng đối tượng chuẩn Vào thời điểm OMG đưa Yêu Cầu Hợp Nhất RFP (Request for Proposal) cho ngôn ngữ mô hình hướng đối tượng chuẩn Rational nhận thấy có nhu cầu liên đới tiến trình hợp với hình thành mối liên kết thành viên UML với tổ chức IBM, HP, Microsoft Oracle – tổ chức sẵn sàng cung cấp tài nguyên cho phát triển xa UML phản hồi đến OMG Tháng năm 1997 thành viên UML số tổ chức khác đệ trình đề nghò đến OMG Sau họ đưa UML phiên 1.1 Vào tháng 11 năm 1997, UML phiên 1.1 nằm danh sách kỹ thuật chấp nhận OMG, OMG chòu trách nhiệm tương lai UML OMG thành lập Nhóm Xét Duyệt RTF (Revision Task Force) Cris Kobryn MCI Systemhouse phụ trách, RTF chòu trách nhiệm cải tiến UML – xử lý lỗi lập trình, điều chỉnh sai sót, giải mâu thuẫn khái niệm nhập nhằng Tháng năm 1998, RTF đưa phiên sửa đổi (phiên 1.2) tháng năm 1999, đưa phiên hoàn chỉnh (phiên 1.3) 2.3 UML ngày OMG thành lập RTF để phát triển UML Kế hoạch phát triển UML tương lai giải thích mục 2.5 Phiên 1.3 sưu liệu đặc tả UML (UML Specification – Object Management Group, 1999a) Nội dung bao gồm Chương Tóm tắt UML Chương Ngữ nghóa UML Chương Hướng dẫn ký hiệu UML Chương Sơ lược chuẩn UML Chương Đònh nghóa giao diện UML CORBA Chương Đặc tả UML XMI DTD Chương Đặc tả ngôn ngữ ràng buộc đối tượng Phụ lục A Các thành phần chuẩn UML Phụ lục B Chú thích thuật ngữ mô hình UML Bảng 2.1: Nội dung đặc tả UML Đặc tả UML tài liệu viết cho người dùng bình thường, viết cho đối tượng sau tham khảo: thành viên 10 Chương 2: CƠ BẢN VỀ UML OMG, tổ chức, công ty tạo công cụ CASE, tác giả sách người làm công tác đào tạo – nói chung người muốn tìm hiểu chi tiết UML Đặc biệt, chương chương viết cho người xây dựng cộng cụ CASE Kiến trúc môi giới yêu cầu đối tượng chung CORBA (Common Object Request Broker Architecture) dùng ngôn ngữ đònh nghóa giao diện IDL (Interface Definition Language) để xác đònh nội dung kho liệu phù hợp với việc khởi tạo, lưu trữ thao tác mô hình UML Công cụ đặc tả DTD (khai báo kiểu tài liệu – Document Type Declaration) XMI (bộ chuyển đổi siêu liệu XML – XML Metadata Interchange) dùng ngôn ngữ đánh dấu mở rộng XML (eXtensible Markup Language) cung cấp đặc tả cách thức mà liệu mô hình UML chuyển đổi ứng dụng Chương lập tài liệu cho hai phác thảo chuẩn UML (các cách áp dụng UML cho dự án phát triển khác nhau): cho qui trình phát triển phần mềm cho việc mô hình hoá nghiệp vụ 2.4 UML gì? UML ngôn ngữ trực quan dùng qui trình phát triển hệ thống phần mềm Nó ngôn ngữ đặc tả hình thức (formal specification language) Chúng ta cần ý đến thuật ngữ “ngôn ngữ” Ngôn ngữ ngôn ngữ giống với ngôn ngữ tự nhiên người hay ngôn ngữ lập trình Tuy nhiên có tập qui luật xác đònh cách sử dụng Các ngôn ngữ lập trình có tập phần tử tập qui luật cho phép tổ hợp phần tử lại với để tạo chương trình hợp lệ Các ngôn ngữ đặc tả hình thức giống UML có tập phần tử tập qui luật riêng Với UML, hầu hết phần tử đối tượng đồ hoạ đường thẳng, hình chữ nhật, hình oval, Chúng thường đặt nhãn để cung cấp thêm thông tin Tuy nhiên phần tử đồ hoạ UML biểu diễn phần cần mô hình dạng hình ảnh Ta tạo mô hình UML dạng liệu (giống CORBA XMI DTD làm) Tuy nhiên cách biểu diễn hình ảnh giúp mô hình dễ hiểu trực quan Các qui luật UML mô tả đặc tả UML Có loại qui luật: cú pháp trừu tượng, luật well-formedness (luật hình thức) ngữ nghóa Trong cú pháp trừu tượng biểu diễn biểu đồ ngôn ngữ tự nhiên, luật well-formedness nằm ngôn ngữ ràng buộc đối tượng OCL (Object Constraint Language) Luật biểu diễn biểu đồ 438 sưu liệu, 385 encapsulation, 84 event, 280 extension mechanism, 362 fade mẫu, 389 flow of events analysis, 205 flow relationship, 195 fork, 261 genaralization, 97 actor, 39 discriminator, 109 hậu duệ, 99 hướng dẫn lập mô hình, 100 kết hợp, 112 ký hiệu, 97 lớp cha, 99 lớp con, 99 lớp trừu tượng, 110 ràng buộc, 106 tiền bối, 99 use case, 38 guard-condition, 193, 228 instance, 58, 361 instance name cú pháp, 185, 219 interaction, 179 interface, 66 thành phần, 327 internal worker, 203 invariant OCL, 302 iteration, 223 iteration-clause, 193 join, 261 keyword, 358 message, 189 cú pháp, 190 không hình thức, 180 metamodel, 11 model, 19 model management, 15 multiobject, 195 multiplicity kết hợp, 72 multipliciy thuộc tính, 67 name, 357 namespace, 62 n-ary association, 131 node, 329 CHỈ MỤC note, 359 object, 58