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
Bạn đang xem tài liệu "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", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
ket_hop_kien_truc_va_mo_hinh_agile_vao_phat_trien_phan_mem_c.pdf
Nội dung text: 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
- TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thế Quang và 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 và BÙI MINH PHỤNG TÓM TẮT: Mô hình Agile trong phát triển sản phẩm phần mềm thường ưu tiên về việc viết mã hơn là thiết kế. Nghĩa là mô hình Agile tập trung chủ yếu vào giải quyết và làm thỏa mãn yêu cầu người dùng về các yêu cầu chức năng của sản phẩm phần mềm. Nhưng trong phát triển sản phẩm phần mềm hiện nay, nếu chỉ giải quyết các yêu cầu chức năng thì chưa đủ, mà phải giải quyết cả về vấn đề chất lượng của sản phẩm phần mềm như hiệu năng, khả năng 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 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ừ 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. 1. ĐẶT VẤN ĐỀ sản phẩm. Chức năng ở đây là sản phẩm đó Bất cứ một sản phẩm nào khi đưa đến có những tính năng mà người dùng sử người dùng sử dụng đều phải đáp ứng dụng, thao tác được trên đó để thực hiện nhiều tiêu chí để người dùng chấp nhận và công việc nào đó. Chất lượng ở đây là sản hài lòng với sản phẩm đó, trong đó hai tiêu phẩm đó có tốt hay không, dùng có bền chí bắt buộc phải có là các chức năng không, có dễ sử dụng không, có đáp ứng (Funtionalities) và chất lượng (Quality) của được nhanh chóng các yêu cầu của người 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 làm sao để phát triển chấp nhận xây thấp hơn? Hoặc gia cố một sản phẩm có đầy đủ chức năng và cũng móng? Hoặc phải phá bỏ để làm móng lại? có chất lượng tốt như vậy? Đối với các dự Cho dù có cách nào thì cũng tốn chi phí, án phần mềm, để có thể tạo ra sản phẩm cũng tốn thời gian, phần mềm có chất lượng cao, chúng ta phải Mô hình Agile hiện nay được sử dụng có thiết kế kiến trúc cho sản phẩm phần rộng rãi để phát triển sản phẩm phần mềm. mềm đó. Mặc dù ưu điểm là có thể dễ dàng đáp ứng Việc thiết kế kiến trúc phần mềm cũng các thay đổi yêu cầu của khách hàng, tương tự như thiết kế kiến trúc trong lĩnh nhưng nó có nhược điểm là không dùng để vực xây dựng. Trong xây dựng, thiết kế phát triển các sản phẩm phần mềm lớn [8, kiến trúc phải được làm trước khi bắt đầu tr.459], hoặc sản phẩm phần mềm đòi hỏi giai đoạn xây dựng. Đối với kiến trúc sư chất lượng cao vì Agile ưu tiên viết mã cho xây dựng, bản kiến trúc là nơi mà tất cả các chức năng hơn thiết kế, việc thiết kế kiến bên liên quan như: kỹ sư xây dựng, khách trúc trong Agile hầu như không được đề hàng, người quản lý cùng nhau thảo luận để cập [5, tr.35-59]. Một số bài báo [7, tr.497- bản thiết kế đáp ứng được yêu cầu mong 498] và sách [1] cũng đã đưa ra việc thiết muốn của khách hàng và phải đảm bảo kế kiến trúc trong Agile được làm nhanh những yếu tố chất lượng như thẩm mỹ, vào giai đoạn đầu tiên, nhưng cũng không chống được bão, chống được động đất, đưa ra hướng dẫn thiết kế kiến trúc rõ ràng Trong ngành công nghiệp phần mềm mà chỉ đi vào xây dựng hay chọn một cũng vậy, việc thiết kế kiến trúc cũng phải khung sườn (Framework) để phát triển sản được tiến hành trước khi bắt đầu xây dựng phẩm. Nhưng việc xây dựng hay chọn một sản phẩm. Thiết kế kiến trúc phải đảm bảo khung sườn là việc bắt đầu hay khởi điểm được tất cả các thuộc tính chất lượng của thiết kế kiến trúc. Nó chỉ là việc chọn (Quality Attributes) quan trọng của phần được một mẫu cho thiết kế, mà việc làm mềm phải được giải quyết triệt để, vì nếu này không thỏa mãn được hết các thuộc không, khi chúng ta thực hiện đến giai đoạn tính chất lượng. phát triển sản phẩm (lập trình), xuất hiện 2. PHƯƠNG PHÁP PHÂN TÍCH VÀ một thuộc tính quan trọng chưa đáp ứng THIẾT KẾ PHẦN MỀM THEO được yêu cầu chất lượng thì chúng ta phải HƯỚNG KIẾN TRÚC làm lại giai đoạn thiết kế kiến trúc. Vấn đề Sự phát triển về phân tích và thiết kế này dẫn đến hao tốn chi phí, thời gian, cơ của ngành công nghiệp phần mềm đã trải hội, Giống như khi ta xây một ngôi nhà qua các giai đoạn sau: có năm tầng, kiến trúc sư sẽ thiết kế sao Giai đoạn phân tích và thiết kế theo cho nền móng phải đáp ứng được cho ngôi cấu trúc (Structure Analysis and Design): nhà năm tầng. Nhưng khi ta đang xây dựng tập trung vào phân tích và thiết kế chức tới tầng thứ hai, ba hay bốn mới phát hiện năng của phần mềm. Nhưng đến thời điểm ra là nền móng không đạt được tiêu chuẩn hiện nay, ngành công nghiệp phần mềm để xây nhà năm tầng thì chúng ta buộc phải phát triển vượt bậc và đòi hỏi những phần 49
- TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Thế Quang và tgk mềm phải đạt chất lượng cao, cho nên Giai đoạn phân tích và thiết kế theo phương pháp này sẽ không còn đáp ứng hướng kiến trúc (Software Architecture and được nữa. Design): tập trung giải quyết chất lượng và Giai đoạn phân tích và thiết kế phần chức năng trên ba cảnh quan để đáp ứng mềm theo hướng đối tượng (Object được tất cả các yêu cầu của tất cả các bên Oriented Analysis and Design): tập trung liên quan. vào giải quyết chức năng lẫn chất lượng Vậy, kiến trúc phần mềm được định của phần mềm. Nhưng hầu như phương nghĩa như sau:“Kiến trúc phần mềm của pháp này chỉ tập trung giải quyết chất một chương trình hay hệ thống tính toán là lượng về cảnh quan tĩnh của phần mềm một cấu trúc hay các cấu trúc của hệ (khoảng 90%). Đây là phương pháp phân thống, bao gồm các phần tử phần mềm, các tích và thiết kế theo hướng đối tượng nên thuộc tính thấy được bên ngoài của những không áp dụng được cho các lĩnh vực mà phần tử đó, và mối quan hệ giữa chúng”. phát triển phần mềm chất lượng cao không Để thiết kế được kiến trúc phần mềm, theo hướng đối tượng. chúng ta phải xác định được ba tiêu chí mấu chốt sau (Hình 1): Hình 1. Ba tiêu chí cần để thiết kế kiến trúc Xác định yêu cầu chức năng: mô tả Xác định các ràng buộc: ràng buộc có những gì hệ thống phải làm. Ở mức kiến tác động và ảnh hưởng trực tiếp đến thiết trúc, chúng ta chỉ xác định yêu cầu ở mức kế. Có hai loại ràng buộc: cao. + Ràng buộc về kỹ thuật: những ràng Xác định yêu cầu thuộc tính chất buộc về ngôn ngữ, nền tảng, hệ quản trị, cơ lượng: các đặc trưng mà hệ thống phải có sở dữ liệu. Nó là bức tường chịu lực trên bên cạnh các tính năng. Việc xác định hay không gian thiết kế. để phát hiện ra thuộc tính chất lượng là một + Ràng buộc về kinh doanh: những việc làm không hề đơn giản. ràng buộc về chi phí, chính sách, hoạt động của doanh nghiệp. 50
- TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 02 / 2017 Sau khi xác định được ba tiêu chí trên, Bước 2: Chọn một cảnh quan bất kỳ và chúng ta tiến hành thiết kế kiến trúc cho tiến hành phân rã. phần mềm. Bản thiết kế phải đảm bảo được Bước 3: Nếu chưa thỏa hết các thuộc đầy đủ ba cảnh quan (mô hình thiết kế): tính chất lượng, chuyển sang cảnh quan Cảnh quan động: processes, threads, khác và tiếp tục phân rã. events, dataflows, Bước 4: Lặp lại khi cần thiết. Cảnh quan tĩnh: classes, module, 3. KẾT HỢP KIẾN TRÚC VÀ MÔ library, use, HÌNH AGILE VÀO PHÁT TRIỂN Cảnh quan vật lý: computers, PHẦN MỀM CHẤT LƯỢNG CAO networks, routers, Theo Anthony Latanze [2], việc phát Việc thiết kế kiến trúc phải qua các triển phần mềm chất lượng cao sẽ trải qua bước sau: hai giai đoạn: giai đoạn không chắc chắn và Bước 1: Tạo sơ đồ ngữ cảnh. giai đoạn chắc chắn (Hình 2). Hình 2. Mô tả giai đoạn sử dụng Agile Giai đoạn không chắc chắn: là giai 4. KẾT LUẬN đoạn kiến trúc chưa hoàn thành. Với những phần mềm ngày càng phức Giai đoạn chắc chắn: là giai đoạn đã tạp về nghiệp vụ, rất khó để phát triển sản thiết kế xong kiến trúc cho phần mềm. phẩm theo mô hình truyền thống, nhưng Do mô hình Agile ưu tiên viết mã cho mô hình Agile cũng có nhược điểm là tập chức năng hơn thiết kế nên chúng ta sẽ áp trung vào yêu cầu chức năng của sản phẩm dụng mô hình Agile ở giai đoạn chắc chắn là chính, rất khó để phân tích và đáp ứng để phát triển sản phẩm phần mềm yêu cầu các yêu cầu về thuộc tính chất lượng. Do chất lượng cao. đó, 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 và tgk trúc phần mềm vào trước khi áp dụng mô đoạn thực hiện theo Agile mà chưa đưa ra hình Agile trong quá trình phát triển các dự các tiêu chí cụ thể, cũng như những đánh án phần mềm sẽ giúp cho việc xây dựng giá cụ thể từng bước trong mô hình này. phần mềm có được bộ khung chắc chắn, Chúng tôi cho rằng đây là công việc nên đảm bảo các thuộc tính chất lượng. được nghiên cứu thêm và đưa ra giải pháp Tuy nhiên, chúng tôi chỉ đề xuất về mô cụ thể trong thời gian tới. hình là đưa phần kiến trúc vào trước giai TÀI LIỆU THAM KHẢO 1. Coplien, James and Bjørnvig, Gertrud (2010), Lean Architecture: For Agile Software Development, John Wiley & Sons. 2. Lattanze, Anthony J (2008), Architecting Software Intensive Systems: A Practitioners Guide, CRC Press. 3. Len, Bass, Paul, Clements, and Rick, Kazman (2003), Software architecture in practice, Boston, Massachusetts Addison. 4. Shaw, Mary and Garlan, David (1996), Software Architecture: Perspectives on an Emerging Discipline, Vol. 1, Prentice Hall Englewood Cliffs. 5. Stober, Thomas and Hansmann, Uwe (2010), "Overview of Agile Software Development", Agile Software Development, Springer. 6. Clements, Paul, Kazman, Rick, and Klein, Mark (2002), Evaluating software architectures: methods and case studies, Publié par Addison-Wesley Professional. 7. Kruchten, Philippe (2010), Software Architecture and Agile Software Development: A Clash of Two Cultures?, 2010 ACM/IEEE 32nd International Conference on Software Engineering, IEEE. 8. 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



