Bài viết đề xuất giải pháp kết hợp thiết kế kiến trúc phần mềm và mô hình Agile để giải quyết vấn đề chất lượng của sản phẩm phần mềm trong quá trình phát triển sản phẩm phần mềm chất lượng cao.
TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thế Quang tgk KẾT HỢP KIẾN TRÚC VÀ MƠ HÌNH AGILE VÀO PHÁT TRIỂN PHẦN MỀM CHẤT LƯỢNG CAO INTEGRATION OF ARCHITECTURE AND AGILE MODEL INTO HIGH-QUALITY SOFTWARE DEVELOPMENT NGUYỄN THẾ QUANG BÙI MINH PHỤNG TĨM TẮT: Mơ hình Agile phát triển sản phẩm phần mềm thường ưu tiên việc viết mã thiết kế Nghĩa mơ hình Agile tập trung chủ yếu vào giải làm thỏa mãn yêu cầu người dùng yêu cầu chức sản phẩm phần mềm Nhưng phát triển sản phẩm phần mềm nay, giải yêu cầu chức chưa đủ, mà phải giải vấn đề chất lượng sản phẩm phần mềm hiệu năng, khả mở rộng, dễ thay đổi, tính sẵn sàng,… Bài viết đề xuất giải pháp kết hợp thiết kế kiến trúc phần mềm mơ hình Agile để giải vấn đề chất lượng sản phẩm phần mềm trình phát triển sản phẩm phần mềm chất lượng cao Từ khóa: Mơ hình Agile, thiết kế kiến trúc phần mềm, phương pháp phát triển phần mềm ABSTRACT: Agile Model for software product development focuses on writing code rather than on design It means Agile Model focuses primarily on resolving and satisfying user requirements for functionalities of software products With the complexities of software products today, however, a software product which meets user functional requirements is not sufficient; it is also required to meet qualities of software products such as effciency, scalability, modifiability, availability, etc This paper offers a solution by combining software architectural design with Agile Model to improve the quality of software products during the process of developing high quality software products Key words: Agile model, software architecture and design, software development models sản phẩm Chức sản phẩm có tính mà người dùng sử dụng, thao tác để thực cơng việc Chất lượng sản phẩm có tốt hay khơng, dùng có bền khơng, sử dụng khơng, có đáp ứng nhanh chóng yêu cầu người ĐẶT VẤN ĐỀ Bất sản phẩm đưa đến người dùng sử dụng phải đáp ứng nhiều tiêu chí để người dùng chấp nhận hài lòng với sản phẩm đó, hai tiêu chí bắt buộc phải có chức (Funtionalities) chất lượng (Quality) ThS Trường Đại học Văn Lang, Email: tonghunganh@vanlanguni.edu.vn ThS Trường Đại học Văn Lang, Email:buiminhphung@vanlanguni.edu.vn (**) 48 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 02 / 2017 dùng không,… Vậy để phát triển sản phẩm có đầy đủ chức có chất lượng tốt vậy? Đối với dự án phần mềm, để tạo sản phẩm phần mềm có chất lượng cao, phải có thiết kế kiến trúc cho sản phẩm phần mềm Việc thiết kế kiến trúc phần mềm tương tự thiết kế kiến trúc lĩnh vực xây dựng Trong xây dựng, thiết kế kiến trúc phải làm trước bắt đầu giai đoạn xây dựng Đối với kiến trúc sư xây dựng, kiến trúc nơi mà tất bên liên quan như: kỹ sư xây dựng, khách hàng, người quản lý thảo luận để thiết kế đáp ứng yêu cầu mong muốn khách hàng phải đảm bảo yếu tố chất lượng thẩm mỹ, chống bão, chống động đất,… Trong ngành công nghiệp phần mềm vậy, việc thiết kế kiến trúc phải tiến hành trước bắt đầu xây dựng sản phẩm Thiết kế kiến trúc phải đảm bảo tất thuộc tính chất lượng (Quality Attributes) quan trọng phần mềm phải giải triệt để, khơng, thực đến giai đoạn phát triển sản phẩm (lập trình), xuất thuộc tính quan trọng chưa đáp ứng yêu cầu chất lượng phải làm lại giai đoạn thiết kế kiến trúc Vấn đề dẫn đến hao tốn chi phí, thời gian, hội,… Giống ta xây ngơi nhà có năm tầng, kiến trúc sư thiết kế cho móng phải đáp ứng cho nhà năm tầng Nhưng ta xây dựng tới tầng thứ hai, ba hay bốn phát móng khơng đạt tiêu chuẩn để xây nhà năm tầng buộc phải chấp nhận xây thấp hơn? Hoặc gia cố móng? Hoặc phải phá bỏ để làm móng lại? Cho dù có cách tốn chi phí, tốn thời gian,… Mơ hình Agile sử dụng rộng rãi để phát triển sản phẩm phần mềm Mặc dù ưu điểm dễ dàng đáp ứng thay đổi yêu cầu khách hàng, có nhược điểm khơng dùng để phát triển sản phẩm phần mềm lớn [8, tr.459], sản phẩm phần mềm đòi hỏi chất lượng cao Agile ưu tiên viết mã cho chức thiết kế, việc thiết kế kiến trúc Agile không đề cập [5, tr.35-59] Một số báo [7, tr.497498] sách [1] đưa việc thiết kế kiến trúc Agile làm nhanh vào giai đoạn đầu tiên, không đưa hướng dẫn thiết kế kiến trúc rõ ràng mà vào xây dựng hay chọn khung sườn (Framework) để phát triển sản phẩm Nhưng việc xây dựng hay chọn khung sườn việc bắt đầu hay khởi điểm thiết kế kiến trúc Nó việc chọn mẫu cho thiết kế, mà việc làm khơng thỏa mãn hết thuộc tính chất lượng PHƯƠNG PHÁP PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM THEO HƯỚNG KIẾN TRÚC Sự phát triển phân tích thiết kế ngành công nghiệp phần mềm trải qua giai đoạn sau: Giai đoạn phân tích thiết kế theo cấu trúc (Structure Analysis and Design): tập trung vào phân tích thiết kế chức phần mềm Nhưng đến thời điểm nay, ngành cơng nghiệp phần mềm phát triển vượt bậc đòi hỏi phần 49 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thế Quang tgk mềm phải đạt chất lượng cao, phương pháp không đáp ứng Giai đoạn phân tích thiết kế phần mềm theo hướng đối tượng (Object Oriented Analysis and Design): tập trung vào giải chức lẫn chất lượng phần mềm Nhưng phương pháp tập trung giải chất lượng cảnh quan tĩnh phần mềm (khoảng 90%) Đây phương pháp phân tích thiết kế theo hướng đối tượng nên không áp dụng cho lĩnh vực mà phát triển phần mềm chất lượng cao không theo hướng đối tượng Giai đoạn phân tích thiết kế theo hướng kiến trúc (Software Architecture and Design): tập trung giải chất lượng chức ba cảnh quan để đáp ứng tất yêu cầu tất bên liên quan Vậy, kiến trúc phần mềm định nghĩa sau:“Kiến trúc phần mềm chương trình hay hệ thống tính tốn cấu trúc hay cấu trúc hệ thống, bao gồm phần tử phần mềm, thuộc tính thấy bên ngồi phần tử đó, mối quan hệ chúng” Để thiết kế kiến trúc phần mềm, phải xác định ba tiêu chí mấu chốt sau (Hình 1): Hình Ba tiêu chí cần để thiết kế kiến trúc Xác định u cầu chức năng: mơ tả hệ thống phải làm Ở mức kiến trúc, xác định yêu cầu mức cao Xác định yêu cầu thuộc tính chất lượng: đặc trưng mà hệ thống phải có bên cạnh tính Việc xác định hay để phát thuộc tính chất lượng việc làm không đơn giản Xác định ràng buộc: ràng buộc có tác động ảnh hưởng trực tiếp đến thiết kế Có hai loại ràng buộc: + Ràng buộc kỹ thuật: ràng buộc ngôn ngữ, tảng, hệ quản trị, sở liệu Nó tường chịu lực khơng gian thiết kế + Ràng buộc kinh doanh: ràng buộc chi phí, sách, hoạt động doanh nghiệp 50 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 02 / 2017 Sau xác định ba tiêu chí trên, tiến hành thiết kế kiến trúc cho phần mềm Bản thiết kế phải đảm bảo đầy đủ ba cảnh quan (mơ hình thiết kế): Cảnh quan động: processes, threads, events, dataflows,… Cảnh quan tĩnh: classes, module, library, use,… Cảnh quan vật lý: computers, networks, routers,… Việc thiết kế kiến trúc phải qua bước sau: Bước 1: Tạo sơ đồ ngữ cảnh Bước 2: Chọn cảnh quan tiến hành phân rã Bước 3: Nếu chưa thỏa hết thuộc tính chất lượng, chuyển sang cảnh quan khác tiếp tục phân rã Bước 4: Lặp lại cần thiết KẾT HỢP KIẾN TRÚC VÀ MƠ HÌNH AGILE VÀO PHÁT TRIỂN PHẦN MỀM CHẤT LƯỢNG CAO Theo Anthony Latanze [2], việc phát triển phần mềm chất lượng cao trải qua hai giai đoạn: giai đoạn không chắn giai đoạn chắn (Hình 2) Hình Mơ tả giai đoạn sử dụng Agile Giai đoạn không chắn: giai đoạn kiến trúc chưa hoàn thành Giai đoạn chắn: giai đoạn thiết kế xong kiến trúc cho phần mềm Do mơ hình Agile ưu tiên viết mã cho chức thiết kế nên áp dụng mơ hình Agile giai đoạn chắn để phát triển sản phẩm phần mềm yêu cầu chất lượng cao KẾT LUẬN Với phần mềm ngày phức tạp nghiệp vụ, khó để phát triển sản phẩm theo mơ hình truyền thống, mơ hình Agile có nhược điểm tập trung vào yêu cầu chức sản phẩm chính, khó để phân tích đáp ứng u cầu thuộc tính chất lượng Do đó, việc đưa thêm giai đoạn thiết kế kiến 51 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thế Quang tgk trúc phần mềm vào trước áp dụng mô hình Agile trình phát triển dự án phần mềm giúp cho việc xây dựng phần mềm có khung chắn, đảm bảo thuộc tính chất lượng Tuy nhiên, chúng tơi đề xuất mơ hình đưa phần kiến trúc vào trước giai đoạn thực theo Agile mà chưa đưa tiêu chí cụ thể, đánh giá cụ thể bước mơ hình Chúng tơi cho công việc nên nghiên cứu thêm đưa giải pháp cụ thể thời gian tới TÀI LIỆU THAM KHẢO Coplien, James and Bjørnvig, Gertrud (2010), Lean Architecture: For Agile Software Development, John Wiley & Sons Lattanze, Anthony J (2008), Architecting Software Intensive Systems: A Practitioners Guide, CRC Press Len, Bass, Paul, Clements, and Rick, Kazman (2003), Software architecture in practice, Boston, Massachusetts Addison Shaw, Mary and Garlan, David (1996), Software Architecture: Perspectives on an Emerging Discipline, Vol 1, Prentice Hall Englewood Cliffs Stober, Thomas and Hansmann, Uwe (2010), "Overview of Agile Software Development", Agile Software Development, Springer Clements, Paul, Kazman, Rick, and Klein, Mark (2002), Evaluating software architectures: methods and case studies, Publié par Addison-Wesley Professional Kruchten, Philippe (2010), Software Architecture and Agile Software Development: A Clash of Two Cultures?, 2010 ACM/IEEE 32nd International Conference on Software Engineering, IEEE Mohammad, Adel Hamdan and Alwada'n, Tariq (2013), Agile Software Methodologies: Strength and Weakness, International Journal of Engineering Science and Technology 5(3) Ngày nhận bài: 07/11/2016 Ngày biên tập xong: 07/3/2017 Duyệt đăng: 21/3/2017 52 ... rã Bước 4: Lặp lại cần thiết KẾT HỢP KIẾN TRÚC VÀ MƠ HÌNH AGILE VÀO PHÁT TRIỂN PHẦN MỀM CHẤT LƯỢNG CAO Theo Anthony Latanze [2], việc phát triển phần mềm chất lượng cao trải qua hai giai đoạn:... hình Agile giai đoạn chắn để phát triển sản phẩm phần mềm yêu cầu chất lượng cao KẾT LUẬN Với phần mềm ngày phức tạp nghiệp vụ, khó để phát triển sản phẩm theo mơ hình truyền thống, mơ hình Agile. .. để phát triển sản phẩm có đầy đủ chức có chất lượng tốt vậy? Đối với dự án phần mềm, để tạo sản phẩm phần mềm có chất lượng cao, phải có thiết kế kiến trúc cho sản phẩm phần mềm Việc thiết kế kiến