Chương 1 giới thiệu cơ sở lý thuyết cho luận văn bao gồm phương pháp phát triển phần mềm hướng mô hình và kiến thức về lập trình ứng dụng di động trên nền tảng Android nhằm vận dụng, xây dựng ứng dụng thực nghiệm phục vụ cho kết quả chính của luận văn. Giới thiệu Phương pháp phát triển phần mềm hướng mô hình (MDD - Model Driven Development) được biết đến như một phương pháp giúp nâng cao hiệu quả trong phát triển phần mềm. Phương pháp này được áp dụng rộng rãi trong phát triển phần mềm nói chung nhưng chưa thực sự phổ biến trong lĩnh vực lập trình ứng dụng di động. MDD được giới thiệu trong chương này nhằm cung cấp kiến thức nền tảng về kỹ thuật xây dựng ứng dụng hướng mô hình.
Thêm vào đó, tác giả thực hiện đánh giá kỹ thuật mô hình hóa luồng tương tác bằng các xây dựng ứng dụng di động Android song song: xây dựng ứng dụng gốc và xây dựng ứng dụng với IFML. Kiến thức về lập trình ứng dụng di động nói chung và lập trình ứng dụng di động trên Android nói riêng được đề cập đến với mục tiêu phục vụ quá trình xây dựng ứng dụng gốc trong các phần tiếp theo. Tổng quan phương pháp phát triển phần mềm truyền thống Theo sự phát triển của công nghệ, nhu cầu về phần mềm ngày càng gia tăng, mô hình phát triển phần mềm truyền thống vẫn được áp dụng phổ biến trong quá trình xây dựng, phát triển phần mềm. Phát triển phần mềm theo phương pháp truyền thống là sự lựa chọn chính cho các nhà phát triển phần mềm do đã dần hoàn thiện qua quá trình dài sử dụng và kiểm chứng.
Tuy nhiên, với sự phát triển mạnh mẽ của công nghệ phần mềm, phương pháp phát triển truyền thống dần lộ ra những điểm bất cập cần phải khắc phục. Các giai đoạn phát triển một phần mềm theo phương pháp truyền thống được mô tả trong Hình 1.1: Quy trình phát triển phần mềm theo phương pháp truyền thống Theo Hình 1.1, các tài liệu thể hiện trong các giai đoạn phát triển phân tích, thiết kế đều ở dạng văn bản, hình ảnh minh họa hay một số biểu đồ UML như biểu đồ ca sử dụng, biểu đồ tương tác, biểu đồ lớp, biểu đồ hoạt động. Giai đoạn lập trình với mã nguồn được tham chiếu theo các tài liệu phân tích thiết kế, tuy nhiên, việc thay đổi yêu cầu là vấn đề luôn gặp phải trong phát triển phần mềm. Các yêu cầu thay đổi về nghiệp vụ, tính năng đi theo trong suốt quá trình xây dựng hệ thống.
Việc thay đổi này dẫn đến phải sửa đổi toàn bộ tài liệu từ những giai đoạn ban đầu, dẫn đến sự chậm trễ về tiến độ phát triển, sự tiêu tốn về chi phí, sự không đồng nhất giữa tài liệu phân tích thiết kế và ứng dụng thực tế. Vấn đề này còn tiếp tục nảy sinh trong quá trình triển khai, bảo trì và nâng cấp phần mềm. Thêm vào đó, một hạn chế rất lớn của phương pháp phát triển phần mềm truyền thống nằm ở khả năng tương thích với môi trường cài đặt. Với sự tồn tại của nhiều nền tảng hiện nay, nhà phát triển phải xây dựng mỗi nền tảng một phần mềm tương ứng do một sản phẩm phần mềm hầu như không có khả năng tương thích trên nhiều nền tảng.
Sự tốn kém về chi phí, thời gian, công sức phát triển dẫn đến nhu cầu về một phương pháp phát triển phần mềm mới cho phép cải thiện các vấn đề còn tồn tại đã nêu. Phương pháp phát triển phần mềm hướng mô hình Với phương pháp phát triển truyền thống, mỗi nền tảng quy định mô hình xây dựng gốc của nó sử dụng các mã nguồn gốc như Java, Objective - C, C/C++. Sự đặc trưng của các ngôn ngữ gốc ảnh hưởng trực tiếp đến sự phát triển, chất lượng, hiệu quả, khả năng bảo trì, khả năng tương tác và tính khả chuyển của phần mềm là những yếu tố quan trọng để đánh giá tổng thể một ứng dụng phần mềm. Mức độ trừu tượng của ngôn ngữ gốc là rất thấp dẫn đến việc cụ thể hóa mạnh mẽ ở cấp độ ngôn ngữ.
Đây cũng là một trong những khó khăn lớn nhất khi nhà phát triển muốn xây dựng ứng dụng phần mềm trên các nền tảng khác nhau. Giới thiệu Sự ra đời của phương pháp phát triển phần mềm hướng mô hình (MDSD - Model - Driven Software Development) như là một giải pháp cho các vấn đề gặp phải trong quá trình phát triển phần mềm theo phương pháp truyền thống. Sử dụng kiến trúc hướng mô hình (MDA - Model Driven Development) cho phương pháp MDSD, các giai đoạn phát triển phần mềm được thể hiện trong Hình 1.2: Quy trình phát triển phần mềm hướng mô hình Các giai đoạn phát triển phần mềm với MDA không khác biệt so với phương pháp truyền thống, điều cốt lõi là các kết quả của mỗi giai đoạn, các tài liệu được đặc tả bởi các mô hình hình thức, do vậy tính khả chuyển giữa các mô hình cao cho 6 z phép rút ngắn thời gian, chi phí của mỗi giai đoạn. Thông qua các công cụ chuyển đổi mô hình, từ mô hình độc lập nền (PIM - Platform Independent Model) có thể chuyển đổi thành các mô hình phụ thuộc nền (PSM - Platform Specific Model) và chuyển đổi thành các mã nguồn hoặc tài liệu.
Cách tiếp cận phát triển phần mềm hướng mô hình là việc sử dụng các mô hình trừu tượng của hệ thống phần mềm trong quá trình xây dựng phần mềm. Các mô hình có tính trừu tượng và hình thức hơn giúp thể hiện bản chất của vấn đề. Quy trình này được vận dụng trong hai cách cơ bản: Tạo ra các thể hiện cuối như ngôn ngữ lập trình và lược đồ dữ liệu (M2T - Model to Text) hoặc chuyển đổi thành các mô hình khác có ngữ nghĩa rõ ràng và sẵn sàng tạo thành các hệ thống hoàn chỉnh (M2M - Model to Model). Điều này không chỉ dừng lại ở việc tạo ra "bộ khung" của ứng dụng mà còn hướng tới mục tiêu tạo thành một ứng dụng hoàn chỉnh.
Ưu điểm MDSD mang đến nhiều lợi ích khắc phục các nhược điểm của phương pháp phát triển phần mềm truyền thống, các ưu điểm chính của MDSD có thể kể đến như sau: Giảm chi phí phát triển: Giảm thời gian phát triển dẫn đến giảm chi phí phát triển phần mềm. Ưu điểm này có thể thấy được qua khả năng tạo ra các mã nguồn có chả năng chạy (runable code) từ các mô hình hình thức sử dụng một hoặc nhiều bước chuyển (M2M và M2T). Tăng chất lượng phần mềm: MDSD sử dụng các bước chuyển tự động và ngôn ngữ hình thức giúp tăng chất lượng phần mềm, đặc biệt là khi có thể sử dụng các kiến trúc, thành phần phần mềm có khả năng tái sử dụng đã được sử dụng và kiểm chứng trước đó một hoặc nhiều lần. Tính khả chuyển cao: Các kiến trúc, ngôn ngữ mô hình hóa và bộ chuyển đổi có thể được sử dụng để sản xuất các hệ thống phần mềm khác nhau.
Điều này nâng cao khả năng tái sử dụng và rút ngắn một bước nữa trong việc giảm thiểu chi phí và thời gian phát triển phần mềm. Sự độc lập về nền tảng: MDSD mang đến khả năng vượt trội - sự độc lập về nền tảng. Nhà phát triển có thể xây dựng sản phẩm hướng mô hình mà không cần quan tâm đến nền tảng của sản phẩm. Sau đó, thực hiện chuyển đổi sang các nền tảng tương ứng nhờ các bộ chuyển đổi.
7 z Nhược điểm Sự hoàn thiện của sản phẩm: Các sản phẩm của các quá trình chuyển đổi trong MDA thường chưa hoàn chỉnh. Đòi hỏi sự cải thiện, bổ sung của nhà phát triển trước khi đưa tới người dùng cuối. Sự hỗ trợ các tính năng gốc: Do các công cụ mô hình hóa không phải là công cụ gốc, được phát triển bởi bên thứ ba nên việc cập nhật tính năng nhằm hỗ trợ các công nghệ mới thường chậm trễ hơn công cụ sử dụng mã nguồn gốc. Giới hạn về công cụ: Các tính năng, loại phần mềm có thể xây dựng phụ thuộc hoàn toàn và nhà cung cấp công cụ phát triển, hay các bộ chuyển đổi.
Tồn tại không ít nhược điểm bên cạnh các ưu điểm nổi trội, MDD vẫn được xem như phương pháp phát triển phần mềm ưu việt cho xu thế phát triển phần mềm hiện tại. Tuy nhiên, tùy thuộc vào đặc thù của mỗi hệ thống, nhà phát triển cần xem xét và cân nhắc kỹ lưỡng trước khi đưa ra phương pháp tối ưu nhất. Các khái niệm chính 1. Mô hình Mô hình là một biểu diễn trừu tượng của cấu trúc, tính năng và hành vi của hệ thống.
Mô hình có thể được biểu diễn bằng các ký hiệu đồ họa và diễn tả bằng ngôn ngữ đặc tả miền cụ thể dưới dạng ngôn ngữ hình thức. AnneKe đã định nghĩa mô hình như sau [4]: "Một mô hình là một mô tả (hoặc một phần) của một hệ thống được viết bởi một ngôn ngữ hình thức". "Ngôn ngữ hình thức là ngôn ngữ với mẫu được xác định rõ ràng và ngữ nghĩa phù hợp với việc biên dịch tự động bởi máy tính". Mô tả về mô hình được biểu diễn cụ thể hơn trong Hình 1.3: Mô hình được viết bởi ngôn ngữ hình thức nhằm biểu diễn hệ thống.
Meta-model Meta-model là một mô hình ở mức trừu tượng hơn và sử dụng để biểu diễn mô hình. Metamodel được viết bởi ngôn ngữ gọi là Meta-language. Meta-model được biểu diễn trong Hình 1.4: Meta-model định nghĩa model được viết bởi Meta-language. Chuyển mô hình Chuyển mô hình bao gồm hai phương thức cơ bản sau : Mô hình thành Mô hình (M2M) và Mô hình thành Văn bản (M2T).
Các phương thức này dùng các công cụ chuyển đổi (transformation tool) để thực hiện chuyển mô hình, bộ chuyển đổi bao gồm một tập hợp các định nghĩa chuyển đổi (transformation definition). Mô hình được chuyển đổi tuân theo chặt chẽ các luật chuyển này. Luật chuyển là thành phần cốt lõi của các bộ chuyển đổi mô hình.5 [4] mô tả các bước chuyển đổi mô hình: Hình 1.5: Các bước chuyển mô hình trong MDA. Luật chuyển mô hình Luật chuyển mô hình được định nghĩa như sau [4]: "Một luật chuyển đổi mô hình là sự mô tả cách một hay nhiều cấu trúc trong ngôn ngữ nguồn có thể thay đổi thành một hoặc nhiều cấu trúc trong ngôn ngữ đích".
Luật chuyển mô hình mô tả cách một phần của mô hình nguồn có thể được chuyển đổi thành một phần của mô hình đích. Các cấu trúc thể hiện các phần trong mô hình nguồn được ánh xạ tới các cấu trúc thể hiện các phần trong mô hình đích tương ứng.