🔙 Quay lại trang tải sách pdf ebook Giáo trình công nghệ phần mềm nâng cao Ebooks Nhóm Zalo LÊ VĂN PHÙNG - NGUYÊN VẢN TẢO GIÁO TRÌNH CỎNG NGHỆ PHẢN MÈM NÂNG CAO N1IÀ XUÁT I3ẢN DẠI IIỌC THÁI NGUYÊN NĂM 2018 04-105 MÃ só: - ----- Đ H TN -2018 2 THUẬT NGỦ VÀ TỪ VIÉT TẮT I. Tiếng All li 4GT forth generation technique CASE Computer Aided Software Engineering CBSE C om ponent-Based Software Engineering CMM Capability Maturity Model CMMI Capability Maturity Model lntergration COM Component Object Model CORBA Common Object Request Broker Architecture DC OM Distributed Component Object Model DSQ1 Design Structure Quality Index Kỹ thuật thế hệ 4 Kỹ nghệ phần mềm dược hỗ trợ bởi máy tính Kỹ nghệ phần mềm dựa trẽn thành phẩn Mô hình trưởng thành Mô hình trường thành tích hợp Mô hình đối tượng thành phần Một kiến trúc huớng đối tượng Mô hình đối tượng phân tán Chi số chất lượng về cấu trúc thiết kế E R Entity-Relationship Mô hình thực thể - mối quan hệ EJB Enterprise JavaBeans Một mô hình thành phần phần mềm dành cho việc phát triển và triển khai các ứng dụng nghiệp vụ mức doanh nghiệp 3 HCI Human - Computer Interface HỈPOC Hierarch Input Process Output Chart HTML Hyper Text Markup Language HW Hardware I-CASE Integrated CASE IDL Interface Description Language IEEE Institute Electrical and Electronic Engineers ISO International Standards Organization IT Information Technology LAN Local Arear Network NF Normal form OMG Object Management Group OOA Object - Oriented Approach OOP Object - Oriented Programming ORB Object Request Broker PC Personal Computer Giao diện người - máy Sơ đồ phân cấp vào - ra Ngôn ngữ đánh dấu siêu văn bản Phần cứng CASE tích hợp Ngôn ngữ mô tả giao diện Viện kỹ nghệ điện và điện tử Tổ chức quốc tế về chuẩn hóa Công nghệ thông tin Mạng cục bộ Dạng chuẩn Nhóm quản lý đối tượng Cách tiếp cận hướng đối tượng Phương thức lập trình hướng đối tuợng Bộ phận trừu tượng trung gian Máy tính cá nhân IAD Rapid Application Phát triển ứng dụng nhanh Development Í.UP Rational Unified Tien trình thống Iihat Process ỈC Software configuration cấu hình phần mềm SCI Software Configuration Khoản mục cấu hình phần mềm Item 5CM Software Configuration Quán lý cấu hình phần mềm Management SEI Software Engineering Viện công nghệ phần mềm Mỹ Institute SMI Software Maturity Index Chi so trưởng thành phần mem SOA Service Oriented Kiến trúc hướng dịch vụ Architecture SOAP Simple Object Access Giao thức truy xuất đối tượng đơn giản Protocol SQA Software Quality Bảo đảm chất lượng phần mềm Assurance sw Software Phần mềm UDDI Universal Description, Một thành phần đăng ký dịch vụ Discovery and Integration UIDS User interface Hệ thống phát triển giao diện người dùng / development system UML Unified Modeling Ngôn ngữ mô hình hợp nhất Language 5 VORD Viewpoint-Oriented Xác định yêu cầu hướng theo cách nhìn Requirements Definition w s Web Service Djch V ỊI web WSDL Web Services Ngôn ngữ đặc tả dịch vụ web Description Language XML Extensible Makup Ngôn ngữ đánh dấu mờ rộng Language 2. Tiếng Việt CNTT Công nghệ Thông tin CSDL Cơ sờ dữ liệu HTTT Hệ thống thông tin NSD Người sử dụng 6 MỤC LỤC Trang THUẬT NGỮ VA TỪ VIẾT TẢT...................................................................... 3 LỜI NÓI ĐÂU......................................................................................................... 15 Chương 1. TỐNG QUAN VÊ CÔNG NGHỆ PHÀN MẺM 18 1.1. Định nghĩa phần mềm................................................................................. 18 1.2 Định nghĩa công nghệ phần mềm ............................................................. 19 1.3. Sự khác biệt giữa công nghệ phần mềm với kỹ nghệ phần mềm..........20 1.4. Sự khác biệt giữa kỹ nghệ phần mềm và kỹ nghệ hệ thống.................. 20 1.5. Các phương pháp trong kỹ nghệ phần m ềm............................................. 22 1.6. Bàn thợ C A SE..............................................................................................24 1.6.1. Khái niệm về CASE...............................................................................25 1.6.2. Các loại công cụ CASE........................................................................ 26 1.6.3. Môi trường CASE tích h(_rp.................................................................. 28 1.7. Tiêu chuẩn cùa một phần mềm tốt..............................................................31 1.8. Những thách thức chính đối với công nghệ phần m ềm ...........................32 1.9. Tổng quan một số hưóng kỹ nghệ phần mềm điển h ìn h ........................ 33 l. 9.1. Kỹ nghệ hướng cấu trúc....................................................................... 33 1.9.2. Kỹ nghệ hướng đói turrnịỉ.................................................................... 35 1.9.3. Kỹ nghệ hướng thành phần................................................................ 37 ¡.9.4. Kỹ nghệ hướng dịch vt!........................................................................ 4! r /. 9.5. Điện loàn đám m ây.............................................................................. 43 TÓM TẮT CHƯƠNG........................................................................................46 CẢU HỎI CHƯƠNG 1..................................................................................... 48 BÀI TẬP CHƯƠNG I ...................................................................................... 48 Chương 2. TIẾN TRÌNH PHÁT TRIÊN PHẦN M ẺM ........................................ 50 2.1. Tiến trinh phần mềm...................................................................................50 2.1.1. Khái niệm liến trình phần m ềm ........................................................... 50 2.1.2. Khái niệm mô hình tiến trình................................................................51 2.2.Mô hình thác nước........................................................................................51 2.3. Mô hình tiến hóa.....................................................................................52 2.3.1. Mô hình làm bàn m ẫ u...........................................................................53 2.3.2. M ô hình xoan ốc.................................................................................... 54 2.3.3. Mô hình RUP......................................................................................... 56 2.3.4. Mô hình phát triển tăng d ầ n ................................................................ 56 2.3.5. M ô hình phái triển ứng dụng nhanh ÌIAD.......................................... 57 2.3.6. Mô hình phái triền hệ thống hình thức hóa........................................ 57 2.3.7. Mỏ hình pháI triển phần mềm theo hướng sứ dụng lại..................... 58 2.3.8. Mô hình phá/ trien phần mềm theo kỹ thuật thế hệ thứ lư ................ 59 2.4. Các hoạt động của tiến trình phát triển phần m ềm................................ 60 TÓM TẤT CHƯƠNG.........................................................................................63 CÂU HỎI CHƯƠNG 2 ...................................................................................... 64 Chương 3. ĐẶC TẢ YÊU CẢU PHẢN MỀM VÀ YÊU CẢU HỆ THỐNG . 65 3.1. Các yêu cầu hệ thống................................................................................. 65 3.1.1. Khái niệm vể yêu cầu hệ ihong............................................................65 3.1.2. Phân loại yêu cần hệ thống..................................................................66 3.1.3. Các cách tiếp cận và các kỹ thuật phân tích yêu cầu hệ thắng......68 3.2. Các yêu cầu phần m ềm ..............................................................................72 3.3. Tài liệu đặc tả yêu c ầ u ...............................................................................75 3.4. Tiến trình xác định yêu cầu và phát triển bản m ẫ u ..............................81 3.4.1. Tiến ừ ình xác định và đặc tả yêu cầu phần mềm...............................81 3.4.2. Tiến trình phái triển bản mẫu hệ thong.............................................. 83 3.4.3. Tiến trình phát triển hàn mau phần m ềm...........................................85 TÓM TÀT CHƯƠNG.........................................................................................87 CẢU MOI CHƯƠNG 3 ...................................................................................... 89 BÀI TẬP CHƯƠNG 3 ....................................................................................... 89 Chương 4. ĐẬC TÀ TH1ÉT K Ế ............................................................................. 91 4 .1. Thiết kế và thiết kế phần m ềm ..................................................................91 4 2 Thiết ke dữ liệu............................................................................................94 4.2.1. Thiết ké cư sở dữ liệu mức logic.......................................................... 94 4.2.2. Thict ké cư sớ dữ Hậu mức vật lý ......................................................... 95 4.3. Thiết kế cấu trúc chương trình.................................................................96 4 4 Thiết kế giao diện.......................................................................................97 4.4.1. Ỷ nghĩa và bàn chất cùa thiết kế giao diện HỊỊUỪi- máy.....................97 4.4.2. Sơ đo tuưng tác hệ thống giao diện.....................................................98 4.4.3. Cấu trúc lumig tác trên màn hình..................................................... 100 4.4.4. Những nguyên lắc thiết kè................................................................... 101 4.4.5. Những yêu cầu chung đối với thiếl kẻ giao diện.............................. 102 4.4.6. Tiến trinh íhièt kế giao iliện................................................................104 4.5. Thiết kế mô-đun xử lý.............................................................................. 105 4.5.1. Cách tiếp cận top-down......................................................................105 4.5.2. Phương pháp linh chình từng bước................................................... 106 4.5.3.Đặc tả mô-đun......................................................................................107 TÓM TẢT CHƯƠNG......................................................................................109 CÂU HỎI CHƯƠNG 4 .................................................................................... 111 BÀI TẬP CHƯƠNG 4 .....................................................................................112 Chương 5. ĐẬC TẢ THIẾT KÉ KIÉN TRÚC................................................. 113 5.1. Kiến trúc phần mềm và đặc tả thiết kế kiến trúc................................ 113 5.1.1. Định nghĩa kiến trúc phần mềm......................................................... 113 5.1.2. Vai trò và tầm quan trọng cùa kiến trúc phần mềm........................ 116 5.1.3. Đặc ta thiết kè kiến trúc..................................................................... 116 5.2. Các mô hinh kiến trúc ứng d ụ n g .......................................................... I 19 5.2.1. Kiến trúc phần mềm theo huxrng dữ liệu tập trung hav phân lán. 120 5.2.2. Kiến trúc phan mèm theo hurmg điểu khiển tập trung.................... 124 5.2.3. Kiến trúc phan mềm theo htámỊỊ sự kiện.......................................... 125 5.2.4. Kiến trúc phần mèm Iheo mỏ hình phân rã mô-đim.........................127 5.2.5. Kiến trúc phần mèm theo miền imgdụtig...........................................128 5.3. Một so phương pháp tạo kiến trúc..........................................................129 5.3.1. Phân hoạch ngang.............................................................................. 129 5.3.2. Phân hoạch dọc....................................................................................130 5.3.3. Phương pháp lạn kiến trúc từ biếu đồ luồng dữ liệu........................130 5.4.Tiến trinh thiết kế kiến trúc hệ thống phần m ềm ................................ 131 5.4. Ị. Những hoại động chung cho mọi tiến trình thiết ke .......................131 5.4.2. Quy trình thiết kế kiến tríic chrnmg trình...........................................132 5.5. Phân tích đặc tả yêu cầu phần mềm thành đặc tả kiến trúc phần mềm ...................................................................................................... 134 5.5.1. Khái niệm luồng chuyến đổi và luồng giao dịch...............................135 5.5.2. Phân tích chuyển đoi thành kiến trtic phần m ềm ............................ 137 5.5.3. Phân tích giao dịch thành kiến trúc phan mềm............................... 140 5.6. Chất lượng thiết kế kiến trúc phần mềm............................................... 142 5. <5. /. Một số tiêu chuẩn thiết ké kiến tritc phần mèm............................... 142 5.6.2. Các hướng dan thiết ké kiến trúc........................................................146 TÓM TẮT CHƯƠNG.......................................................................................147 CÂU HÒI CHƯƠNG 5 .................................................................................... 149 BÀI TẬP CHƯƠNG 5 ..................................................................................... 150 Chương 6. ĐẶC TÀ KIẾN TRÚC MỘT SỐ HỆ THỐNG ĐƯỢC THIẾT KẾ THEO HƯỚNG HIỆN ĐAI........................................................................... 151 6.1. Đặc tả kiến trúc hệ thống được thiết kế theo hướng phân tá n .......151 6.1.1. Sơ lược về hệ thống phân lán............................................................ 151 6.1.2. Tổ chức hệ thống iheo mạng địa phưưriịỉ....................................... 153 6.1.3. Tô chúc hệ IhốiiỊỊ theo kiến trúc Client-Server...............................154 6.1.4. Các đặc trưng cùa máy dịch vụ file vù kiến trúc Clienl-Server....157 6.1.5. Các thành phần cùa mô hình Client-Server...................................158 6.1.6. NhũriỊỊ dạng Hên tiến phô dụng cùa kiến trúc ( 'Henl-Server........158 6.1.7. Sự cân bằng giữa các yếu tố trong hệ phân lún.............................162 6.2. Đặc tả kiến trúc hệ thống dược thiết kế theo hướng đối tượng......163 6.2.1. Mô hình hóa kiểu Irúc hệ thống..........................................................163 6.2.2. 1’lĩãn lích kiến trúc.............................................................................. 166 6.2.3. Thiết ké kiến trúc................................................................................. 172 6.2.4. Kiến trúc đối tiạrngphân tán............................................................. 180 6.3. Đặc tà kiến trúc hệ thống được thiết kế theo hướng dịch v ụ ......... 191 6.3.1. Kiéu kiến trúc hệ thong đuxrc thiếí ké iheo hurnig dịch v ụ ...............191 6.3.2. Mô hình kiến trúc hướng dịch vụ....................................................... 192 6.3.3. Các nguyên íắc thièt kế kiến trúc hướng dịch v ụ ............................. 196 TÓM TAT CHƯƠNG....................................................................................199 CẢU HỎI CHƯƠNG 6 .................................................................................... 201 BÀI TẬP CHƯƠNG 6 ..................................................................................... 201 Chương 7. BẢO ĐẢM CHÁT LƯỢNG PHÀN MẺM................................... 202 7.1. Khái niệm bào đảm chất luợng.............................................................. 202 7.2. Mô hình chất lượng.................................................................................. 203 7.2.1. Các chuần đánh giá chất /ur/nịỉ sàn phẩm phàn mém.....................203 7.2.2. Mô hình chát luựng íronịỊ và chảI lượng ngoài...............................208 7.2.3. Mô hình chát ỉuụng về mặt sừdụnịỉ................................................. 208 7.2.4. Mô hình p/ĩâỉi cáp đặc tính................................................................209 7.2.5. Mô hình tiến trinh phần mèm............................................................ 209 7.3. Việc đo chất lượng................................................................................... 210 7.3.1. các chì liêu dành giá chaí lượng phần mèm................................... 210 7.3.2. Các chi liêu đánh giá cổ điển..............................................................211 7.3.3. Các chi tiêu đánh giá chất lượng phần mềm theo ISO 9126........ 211 7.3.4. Các chì tiêu đánh giá chất luợng phần mềm khác............................214 7.3.5. Quá tr ình phòng sạch...........................................................................214 7.4. Các hoạt động bảo đảm chất lư ợ n g ........................................................215 7.4.1. Thầm định và xác m inh....................................................................... 215 7.4.2. Hoạt động thực hiện kiếm thứ............................................................. 216 7.4.3. Quản !ỳ cấu hình phần m ềm ............................................................... 219 7.4.4. Các hoại động khác báo đàm chất lượng phần mềm....................... 220 7.5. Tiến trình triển khai bảo đảm chất lượng..............................................220 7.5.1. Khảo sá! nhu cầu...................................................................................221 7.5.2. 14p kế hoạch triển khai........................................................................ 221 7.5.3. Triển khai...............................................................................................223 TÓM TÁT CHƯƠNG....................................................................................... 228 CÂU HỎI CHƯƠNG 7 .....................................................................................229 BÀI TẬP CHƯƠNG 7 ......................................................................................230 Chương 8. KIẾM THỬ PHẢN MỀM...................................................................232 8.1. Chiến lược kiểm th ử ................................................................................. 232 H. 1. ì. Khái niệm chiến lược kiểm thứ............................................................232 8.1.2. Mô hình chiến lược tồng thể............................................................... 233 8.1.3. Một số chiến lược kiểm ihừbồ trạ..................................................... 234 8.2. Các mức kiểm thừ ......................................................................................236 8.2. ỉ. Kiểm thừ đơn vị....................................................................................237 8.2.2. Kiểm thừ tích hợp.................................................................................241 8.2.3. Kiểm thừ hệ thống............................................................................... 247 8.2.4. Kiếm thừ chấp nhận/hạp lệ................................................................. 251 8.3. Phương pháp và kỹ thuật kiểm thử ........................................................ 253 8.3. /. Kiếm thừ hộp trắng.......................................................................... 255 s.3.2. Kiêm thừ hộp đ e n ................................................................................263 H. 3.3. Kiếm thư ứiig dụng w eb........................................................ 267 8.4. Thiết kế các ca kiểm th ử ......................................................................... 269 8.5. Tiến trinh kiểm th ừ ...................................................................................271 8 6. Các công cụ kiểm th ừ ..............................................................................272 TÓM TÀT CHƯƠNG......................................................................................277 CẢU HỎI CHƯƠNG 8 ................................................................................... 278 BÀI TẬP CHƯƠNG 8 .....................................................................................279 Chương 9. NÂNG CÁP PHẢN M ỀM .................................................................282 9 1. Bảo tri phần m ềm .................................................................................... 282 9.1.1. Khái niệm về bao trì phàn m èm........................................................ 282 9.1.2. Tinh báo trì đưực................................................................................ 284 9.1.3. Dự đoán báo trì và dự đoán íhay đ ô i............................................... 285 9.2. Tiến trình nâng cấp phần m ềm .............................................................. 285 9.3. Tái kỹ nghệ hệ th ố n g .............................................................................. 288 9.3.1. Khái niệm lái kỹ nghệ hệ íhong.........................................................288 9.3.2. Tiến Ir ình lái kỹ nghệ phần m èm .......................................................294 TÓM TẤT CHƯƠNG......................................................................................305 CÂU HÒI CHƯƠNG 9 ................................................................................... 307 Chương 10 KỸ NGHỆ PHÂN MỀM HƯỚNG DỊCH v ụ .............................308 10.1. Kiến trúc hướng dịch vụ....................................................................... 308 10.1.1. Huớhịị tiếp cận dịch vụ....................................................................308 10.1.2. Các thảnh phần cùa mội kiến trúc huứn}Ị dịch v ụ ........................ 311 10.1.3. Các tinh chất cùa một hệ thống SOA..............................................313 10.2. Công nghệ dịch v ụ ................................................................................ 319 10.2.1. Nhận dạng kiều dịch vụ thích hụp..................................................319 10.2.2. Thiết kè dịch v ụ ................................................................................ 321 10.2.3. Các hoại động phút trien dịch v ụ ...................................................324 10.2.4. MỘI số công nghệ tiêu biểu xây dựng kiến trúc hệ thống theo hướng dịch VM................................................................................................. 324 10.3. Phát triển phần mềm bằng kỹ nghệ hướng dịch v ụ .......................... 331 ¡0.3.1. MộI số mô hình triển khai SOA......................................................... 331 10.3.2. Các nguyên tắc phát Iriển ứng đụng theo hướng dịch VII..............334 10.3.3. Vòng đời phát triển cùa dịch VM........................................................336 10.3.4. Các pha cơ bản xây dựng hệ thống SOA.........................................337 /0.3.5. Thiết kế và thực hiện luồng công việc .............................................339 /0.3.6. Các mức độ thực hiện kiến trúc hưởng dịch vti............................. 344 TÓM TẮT CHƯƠNG...................................................................................... 346 CÂU HÒI CHƯƠNG 10..................................................................................347 TÀI LIỆU THAM KHẢO......................................................................................349 14 LỜI NÓI DÀI) Ngay từ năm 1980, trong tạp chi Business Week, dòng tiêu dề "Phần mềm - lực đièu khiên mới hay phản mèm đữ bicirc vào một thời đại" đã đánh dấu chủ đề đáng quan tâm cùa các tạp chí, báo hiệu cho một cách hiểu mới về tầm quan trọng cùa phần mềm máy tinh và dã đem đen những cơ hội và thách thức mới. Công nghệ phần mèm (Software Technology) là tập hợp các kỹ thuật đế tạo ra phần mềm. Công nghệ phần mềm được xem như là cơ sở tin học. Tích hợp thèm vào công nghệ phần mềm các khía cạnh khác như là các tiến trinh sản xuất phần mềm theo quy tac, ký luật và có bài bản, quản lý và đào tạo con người,... tạo nên miền khoa học rộng hơn, đó là kỹ nghệ phần mèm (Software Engineering). Kỹ nghệ phần mềm hay công trinh học phẩn mềm không chi là việc tạo ra sản phẩm mà nó liên quan đến việc sản sinh ra sản phẩm một cách hiệu quả. Đen nay, công nghệ phần mềm đã có sự tiến hóa nhanh chóng. Nhiều hướng phát triển đã nối tiếp nhau sinh ra và lan rộng, trong đó có thể kể ra như hướng cấu trúc, hướng đối tượng, hướng thành phần, hướng dịch vụ, điện toán đám mây. Vì vậy, thừ thách đối với kỹ sư phần mềm trở nên ngày càng cao để tạo ra phần mềm chất lượng cao, với những hạn chế về nguồn lực và phải tuân thù một lịch trình định trước. Tri thức về công nghệ phần mềm hay rộng hơn là kỹ nghệ phần mềm là một hành trang không thể thiếu cùa người làm công nghệ thông tin vì tính thực tiễn và iý luận khoa học tuyệt vời của nó. Cách tiếp cận hướng tới thực hành của những nhà khoa học đi trước như Pressman, Sommerville,.. đang trường tồn và lan rộng Giáo trinh này được soạn thảo nhằm mục đích cung cấp cho học viên cao học ngành công nghệ thông tin những kiến thức nâng cao về công nghệ phần mềm, bổ sung những kiến thức chuyên sâu hơn trong các giáo trình cơ sờ mức 15 đại học. Với những kiến thức mờ rộng này, các học viên có thể nâng cao kiến thức cơ sờ của minh, tăng kỹ năng thực hành làm phần mềm và ứng dụng công nghệ thông tin vào thực tiễn. Giáo trình Cồng nghệ phần mềm nâng cao gồm 10 chương: Chương I - Tổng quan về công nghệ phần mềm: trình bày về những nét chung nhất về công nghệ phẩn mềm. Chiirmg 2 - Tiến trình phát triển phần mềm: trinh bày về các mô hình tiến trình phát triển phần mềm cũng như các hoạt động cùa tiến trình phát triển phần mềm. Chirơng 3 - Đặc tà yêu cầu phần mềm và yêu cầu hệ thống: trình bày về các tiến trình xác định yêu cầu và các đặc tả yêu cầu hệ thống cũng như phần mềm. Chương 4 - Đặc tà thiết kế: trinh bày về công nghệ thiết kế các phương diện quan trọng như dữ liệu, cấu trúc chương trình, giao diện, mô-đun xử lý. Chirơng 5 - Đặc là thiết ké kiến trúc: trình bày về các mô hình kiến trúc ứng dụng, một số phương pháp tạo kiến trúc tiêu biểu, tiến trình thiết kế kiến trúc hệ thống phần mềm, cách phân tích đặc tả yêu cầu phần mềm thành đặc tả kiến trúc phần mềm. Chirmig 6 - Đặc tà kiến trúc mội sổ hệ thống đutrc thiết kế theo hirírnịỉ hiện đại: trình bày về đặc tả kiến trúc của một số hệ thống được thiết kế theo hướng hiện đại như hướng phân tán, hướng đối tượng, hướng dịch vụ. Chương 7 - Báo đảm chất lượng phần mềm: trình bày về các vấn đề quan trọng trong việc đo chất lượng phần mềm. Churrnịỉ 8 - Kiếm thừ phần mềm: trinh bày về các mô hình chiến lược kiểm thừ, các mức kiểm thử, các phương pháp và kỹ thuật kiểm thử, các phương án thiết kế ca kiểm thử, tiến trinh kiểm thừ cũng như các công cụ kiểm thử. Churmg 9 - Năng cấp phản mềm: trình bày về các tiến trình nâng cấp phần mềm và tái kỹ nghệ. 16 ChuxrnịỊ 10 - Công nghệ phần mèm hướng dịch vụ: Irình bày về hướng tiếp cận, các thành phần, các tính chất cùa hệ thống có kiến trúc hướng dịch vụ, công nghệ dịch vụ, quy trình phát triển phần mềm bằng công nghệ hướng dịch vụ Đối tượng thụ hưởng chinh cùa giáo trình này là các học viên cao học ngành Công nghệ thông tin của Truờng Dại học Công nghệ thông tin và Truyền thông (CNTT&TT) thuộc Dại học Thái Nguyên. Giáo trình này có thế dùng làm tài liệu học tập và tham khảo cho học viên cao học các chuyên ngành khác cùa công nghệ thông tin, cho nghiên cứu sinh về công nghệ thông tin, cho các giáo viên, các nhà nghiên cứu và tất cả những ai muốn đi sâu vào lĩnh vực công nghệ phần mềm. Nhóm tác giả xin chân thành cám ơn lãnh đạo Truờng Đại học CNTT&TT, Đại học Thái Nguyên đã tạo điều kiện thuận lợi nhất để hoàn thành giáo trình này. Nhóm tác giả cũng xin chân thành cám ơn PGS.TSKH. Nguyễn Xuân Huy, PGS.TS. Đoàn Văn Ban, PGS.TS. Bùi Thế Hồng, PGS.TS. Đặng Thành Phu, TS. Dương Chính Cương và các bạn đồng nghiệp đã cho chúng tôi nhiều ý kiến quý báu để hoàn thiện giáo trình này. Mặc dù đã có rất nhiều cố gắng tham khảo các tài liệu trong ngoài nước, đúc rút kinh nghiệm từ nhiều năm tham gia các dự án và giảng dạy về công nghệ thông tin, giáo trình được biên soạn một cách cẩn trọng, công phu và tâm huyết, sứa chữa nhiều lần nhưng vẫn khó tránh khòi nhũng thiếu sót do tinh quá rộng và khó cùa vấn đề trình bày. Chúng tôi chân thành mong đợi những nhận xét, ý kiến của các bạn đồng nghiệp, học viên và độc giả để giáo trinh được hoàn thiện hơn. Thư góp ý xin gửi về Phòng Đào tạo, Trường Đại học CNTT&TT, Đại học Thái Nguyên hoặc trực tiếp cho các tác giả theo địa chi: [email protected] Xin trân trọng cảm ơn./. CÁC TÁC GIẢ 17 Chương 1 TỎNG QUAN VÈ CÔNG NGHỆ PHÀN MÈM Phần mềm đã trở thành phần lử chù chốt trong tiến hỏa cùa các hệ thống và sàn phẩm dựa trên máy tính. Công nghệ phần mềm là mộI chuyên ngành khoa học nghiên cứu tìm ra cách tốt nhất để làm ra các phần mềm đáp img các bài toán xử lý Un lừ đơn giản đến phức tạp sao cho chương trình nhận được phải đúng, đáng tin và hiệu quà lại dễ sử dụng. Churmg này giới thiệu những đặc trung chung nhái về công nghệ phần mềm. Học viên cần nắm vững các khái niệm về phần mềm, công nghệ phần mềm, các phuưng pháp trong kỹ nghệ phần mềm, bàn thợ C.ASE, các tiêu chuẩn cùa một phần mềm lốt, những thách thức chính đối với công nghệ phần mềm, khái quát được một số hướng kỹ nghệ phần mềm điển hình. 1.1. Định nghĩa phần mềm Đến nay, đã có nhiều định nghĩa về phần mềm, song định nghĩa sau đây cho chúng ta một khái niệm khá đầy chi về các thành phần phần mềm. Đinh nựhĩa Í91\ Phần mềm bao gồm một tập hợp các thành phần: - Các tài liệu phân tích thiết kế, tài liệu hướng dẫn cài đặt và sử dụng phần mềm, tài liệu bảo trì, nâng cấp; - Cơ sở dữ liệu (CSDL) được cài đặt trong môi truờng thích hợp (hệ quản trị dữ liệu); - Các dòng lệnh (chương trình máy tính) khả thi trên máy tính, phù hợp với hệ quản trị dữ liệu đã cài đặt CSDL; - Các tiện ích số hoá đi kèm hỗ trợ cho chương trinh máy tính. 18 Trong xã hội hiện đụi, phản mềm ỊỊÍữ vai trò ráí quan trụng. Phần mèm (Software -SW) bây ỊỊÌỜ đã giữ vị tri then chốt hon phần cútiỊỊ (HardWare HW): điều mấu chồi cho sự thành công cua nhiều /)(? íhồnịỉ dựa trên máy tinh. Kha HÚHỊỊ lưii trừ cua phàn cútig biêu thị cho tiềm Iiă/Iịỉ linh toán cua máy lính. Còn phần mem the hiện một cơ chế giúp chúng lu chế ngự và khui thác tiềm năng này. Hệ thống phần mèm hoạt động trùn các IIIÚV lính trơ tliành diều kiện sổnịỉ còn cua các máy linh đó. Phần mèm lù nhân lố dúnh ỊỊÍá sự khác hiệt; điều này ihê hiện ơ cho: - Tíiilì đày đu và đúng thời hạn cua thôiiỊỉ Un do phan mèm cung cấp (vù cúc ( 'SU/, liên í/uan) dân đến sự khác biệt ỊỊiũa một công ly này vời các đoi thu cạnh tranh. - Thiết kẻ và "tinh thân thiện" cua san phàm phần mèm cũng lùm khác biệi nỏ với các sản phàm cạnh íranh cú CÙHỊỊ chút năng luxmg tự khúc. Sự íhông minh vù chức năng do phần mèm đur/c nhúng Irong đó đưa ra thường làm khác biệt 2 sàn phẩm tiêu thụ hay công nghiệp tuxrng lự nhau. Như vậy, chinh phần mèm tạo ra sự khác biệt đó. Vai trò cùa phần mèm không ngừng mơ rộng như Norman và Levy /23J dã viết: “Ngày nay, hoạt động tính toán có mặt khắp mọi nơi đã sản sinh ra một thế hệ những người ứng dụng thông tin sử dụng web để cung cấp một mạng lưới thòng tin bao phù liên kết mọi nhà, mọi công sờ đến các xa lộ ”. 1.2. Định nghla công nghệ phần mềm Công nghệ phần mềm (Software technology) là tập hợp các công nghệ (bao gồm nhiều kỹ thuật) để tạo ra phần mềm, mỗi công nghệ có thể có nhiều kỹ thuật tạo chương trình khác nhau [9], Chắng hạn như Công nghệ hướng sự vật: một ỊỊÌải pháp đê thiét kế và lập trình phần mèm hiệu quá nhừ sứ dụng các sự vật LỈur/c xây dwig lừ trước. Công nghệ Java: một giải pháp lạo ra phần mèm cù thê hoạt động trẽn các nền làng khúc nhau trên mạng máy tính. Có thê nói rằng, công nghệ phàn mèm !à lập hợp các phuung pháp, quy trình, kỹ năng, bí quyết, CÔHỊỊ cụ, />hurrnỊỉ tiện đế lùm ra sán phẩm lù phần mèm. 1.3. Sự khác biệt giữa công nghệ phần mềm với kỹ nghệ phần mềm Trong cuộc hội thào chính đầu Hên về chù để kỹ nghệ phần mem, Fritz Rauer đã đira ra định nghĩa han đầu về kỹ nghệ phần mềm. Đinh nnhĩa: Theo Naur p. [9,23], Kỹ nghệ phần mềm (Software Engineering) là việc thiết lập và sừ dụng các nguyên lý công nghệ đúng đắn để thu được phần mềm một cách kinh tế vừa tin cậy vừa làm việc hiệu quả trên các máy thực. Nhiều định nghĩa khác về sau đều nhấn mạnh vàn các yêu cầu về một kỳ luật công nghệ trong việc phát triển. Parnas /2 3 / coi kỹ nghệ phần mèm là việc xây dựng phần mềm nhiều phiên bán bởi nhiều người. Ghezzi /2 5 / xem kỹ nghệ phần mềm là mộ! lĩnh vực cùa khoa học máy linh. Hên quan đến xây dựng các hệ thống phần mềm vừa lởn vùa phirc lạp bởi một hay mội số nhóm kỹ sư. Sommerville ¡25] xác định kỹ nghệ phan mềm là lĩnh vực Hên quan đến lý thuyết, phương pháp và cỏrtỊỊ cụ dùng cho pháI triển phần mèm. Pressman /23/ định nghĩa kỹ nghệ phần mềm là bộ môn tích h1). .. - Dùng biéu đồ luồng dữ liệu đế bicu dicn mô hình ngữ cánh của hộ thống. - Dùng biếu đồ luồng dữ liộu mô tả tien trinh xử lý nghiộp vụ ớ các mức chi tiết dần: trước hết ờ dạng vật lý (mô tá thc giới thực), sau ở dạng logic để phân tích. 1.6. Bàn thợ CASE Môi trường phát triển hệ thống phần mèm bao gồm toàn hộ các công cụ phần cứng và phần mềm đirợc sử dụng mộ! cách thích hợp để trợ giúp việc tạo ra hệ thống phần mềm trong một lĩnh VỊK ímg dụng cụ thề. Có nhiều loại môi trường phát triển phần mèm khác nhau đang đmrc sử dụng. M ôi triàmỵ phá! triển hệ thong phần mềm có thế phân thành 3 nhóm lớn Ị25 Ị được mô lá trong hình 1.2. 24 I Hinh 1.2. Phân loại môi trường phát triền phần mềm Môi Iruờriịỉ lập trình là môi IrutrnỊỊ huxniịỊ vào trợ ỊỊÍúp lập trình, kiém Ihứ và ỊỊỠ rối. Sự irự giúp của nó cho việc xúc định yêu cầu, đặc lá và thiẻl ké phản mềm là rát hạn ché. Bàn íhợ CASE (Computer Aided Software Engineering) là môi trường đặc biệt hướng vào trự giúp chư đặc lá và Ihiél kẻ phần mèm. Chúng thường cung cấp rấl ít ho (rợ cho lập trình. Chúng củ the lùm việc trên máy cá nhân và đuọc sử dụng kết hợp với môi Irut'mg lập trình. Môi Iruừng kỹ nghệ phần mềm là môi trường hướng vào việc trợ giúp để lạo ra các hệ thống phần mềm lớn, cú cuộc sống dài mà chi phi bào trì nó íhường viạrl quá chi phi phái triển và chúng Ihuờng do các đội phát Irìển chứ không phải do các nhà lập trình riêng rẽ thực hiện. Môi trưừrig này thường hổ trợ cho mọi hoạt động phát triển và bào tri. 1.6.1. Khái niệm về CASE Chu đến nay, không phái tất cà các hoại động phát iriền các hệ thống thông tin (HTTT) đã được lự động hóa bằng máy tính mà không cẩn đến sự can thiệp cùa con người. Vì vậy, có rất nhiều công cụ đã được phút triển để trợ giúp cho các bước cùa tiến trình phát triển phần mềm mà la gọi chung là CASE, tiếng Việt được dịch là "Kỹ nghệ phần mềm được hỗ trợ bởi máy tính CASK có thể sừ dụng để írợ giúp một phạm vi rộng rãi các hoại động phát Iriển HTrr. Tuy nhiên, không một sán phẩm CASE đơn lé nào có thể cung cấp đur/c các dịch vụ chu mọi buxrc cua vòng đời hệ Ihống. Người la thường phai dùng nhiều công cụ CASE để lạn nên nhữtiỊỊ công cụ Ihich hợp. Ngày nay, 25 tính năng của chúng đã dime tăng cường và đã làm cho nén trình pháI trién hệ thống ngàv càng mang nhiều hơn các đặc lính kĩ’ thuật, tính nghệ thuật giám đi và chất hợmg cùa hệ thong đã tăng lên đáng kể. Cỏ nhiều công cụ khác nhau đurrc xây dựng. Có công cụ thì đ/: 1- / ‘hân dặc ta; 2- Phần thục thi; 3- MỘI chudn; 4- Cúc gói; 5- 1’hản triên khai. ¡’hát triền hệ thống dụu trên thành phun có thế được chia ihùnh 4 pha: 1- Xác định thành phần - xác định thành phần đang tồn tại là thích hợp cho việc sử dụng trong hệ thống mới, giữ nguyên các yêu cầu chức năng và phi chức năng. 2- Thích nghi thành phần - điều chỉnh thành phần để thực hiện các yêu cầu của hệ thống mới. Đo mức độ phù hợp cùa thành phần phụ thuộc vào các thành phần riêng lè 3- Lắp ráp các thành phần - tích hợp các thành phần để tạo thành một hệ thống phần mềm từ các thành phần khác nhau 4- Tiến hóa hệ thống - thêm mới, xóa, hoặc thay thế một thành phần để nâng cấp hệ thống, thêm các chúc năng mới. Lợi ích cùa công nghệ dựa trên thành phần bao gồm khù năng sứ (lụng lại, khả năng hiểu được, giam chi phi phát íriển và tính mở rộng động. Tuy nhiên, đặc trưng quan Irọng nhai để lính toán ihay đổi là khá năng thích nghi. Các hệ thống ihành phần có khá năng thay đối các cấu hình bằng cách thêm mới, thay íhé và xóa bó các thành phần cấu lạo, làm thích nghi phần mềm như yêu cầu. Kỹ nghệ phần mềm dựa trên thành phần (Component - Based Software Engineering - CBSE) là một tiến hoá lự nhiên cùa tiến trình kỹ nghệ phần 39 mềm. Nhũng điếm nổi trội trong liến trình phát triển phần mèm dựa trên thành phan gồm có: - CRSE là một cách nép cận phát triển phan mềm dira trên việc sử dụng lại phần mềm. - CRSE xuất hiện đề khắc phục loi theo cách phá/ triển huớng đối lượng đến việc ho trợ sử dụng lại hiệu quá, các Urp đoi tượng đơn là quá chi tiết và cụ thể. - Các thành phần trừu tượng lum các Urp đối luựnỊỊ và có thể đưr/c xem là các bộ cung cấp dịch vụ độc lập. Trong quá trình phát triển, các mô hình thành phần nổi bật có Ihé liệt kê như sau: - Mỏ hình đối tirợrig thành phan (ComponenI Object M()del-COM) là một kiến trúc cũ về phần mềm hirimg thành phần được đề xuất đần tiên bởi Microsoft năm 1995. COM I là phiên bàn mới nhất cùa mỏ hình COM cùa Microsoft. Thục thi mồ hình thành phần COM I là nền táng cho nhiều kỹ ihuậi mức cao hơn, bao gồm IỈS, ASP, Site Server, Application Center 2000, và fíiztalk Serrer 2000. - Enterprise JavaReans (FJfí) là một mô hình thành phần phần mềm dành cho việc phát triển và trien khai các ứng dụng nghiệp vụ mức doanh nghiệp. Mô hình bao gồm một đặc tà mở (Matena and Hapner, 1999) mà người sàn xuất thành phần, nginxi tiêu dùng, NSD cuối và ngưìri sàn xuất mô hình thành phần phần mềm đểu cỏ thể sử dụng đế phát triển các sản phẩm phần mểm cùa họ. - Mô hình hoạt động kinh doanh Java Bean được Sun Microsystems pháI triển, là một mô hình thành phần để xây dựng phần mềm hướng thành phần về mặt dịch vụ. Mô hình Java hean là thành phần dùng lại cơ sở trong FJB. - Do các hạn chế với mô hình đối litợng CORHA Irirức đó, OMG thông qua mô hình thành phần CORRA (CORRA Component Model- C.CM) để mở rộng và gộp mô hình đổi tượng CORfíA. C.CM gồm các đặc tả trong CORRA 3.0, đirợc phát hành năm 2001. Phạm vi img dụng cùa CORBA ngày càng rộng 40 nên ('('M đinrc dặt vào vị Iri phù hợp đẻ sư dụng trong các Ú7IỊỊ dụiiịỉ Client Server then chồi. ¡.9.4. Kỹ nghệ hirtmỊỊ dịch vụ Kỹ nghệ hiríniịỉ dịch vụ mà kiến trúc hướng dịch vụ (Service Oriented Architecture-SOA) lù huxniịỊ phút triển mới Iihất, đang đmrc xem như sự phái Iriôn kế nếp cùa các huứiìỊỊ kỹ nghệ trên, được kỳ vụng tạo nên một cuộc cách mạng mới trong việc phút íriển phần mềm. Trong kỹ nghệ phần mèm hướng dịch vụ, việc tách riêng phần thụv hiện dịclì vụ (mô-đun phàn mèm) với giao liếp ỊỊỤÍ dịch vụ lạo nên một cách thức nhài quán cho các úiig dụng khai thác sứ dụng dịch vụ mà không cản quan lâm tới công nghệ thực hiện dịch vụ. Tại diễn đàn kiến trúc hướng dịch vụ do tạp chi InfoWorld tỏ chức năm 2006, SOA được nhận định lù một khung làm việc lớn, trong đó các doanh nghiệp xây dựng, triển khai vù quàn lý các dịch vụ; Các dịch vụ này là các Ihành phần ứng dụng; Chúng có thể được các ứtig dụng khác gọi ra sư dụng thông qua các giao íhức chuẩn. Ở mức độ chung nhất, SOA được hiếu là một loại kiến trúc về hệ thống trong đỏ moi ứng dụng đưực xem như một nguồn cung cap dịch vụ. Nói rõ hơn, SOA là một kiến trúc phần mèm dựa trẽn mội lập các dịch vụ, mỗi dịch vụ đàm nhận một chức năng cơ bàn dưới dạng mô-đun phần mềm có nhiệm vụ thục hiện một qui Irình nghiệp vụ nào đó. Các dịch vụ trong SOA được xác định rõ ràng, có thể thay đối, cập nhật, nâng cấp, tích hợp mới. Các dịch vụ có thể giao tiếp với nhau, độc lập với phần nền cùa hệ thong và có íhế tủi sử dụng. Các giao liếp có the chi là việc chuyển giao dữ liệu đơn giản hoặc là gom ít nhất hai dịch vụ hợp lác thực hiện một hoại động cần thiết nào đó. Theo Gartner, 2003, SOA là hướng nếp cận thiết kế phần mềm kiểu Client-Server, trong đó một ứng dụng gồm có các dịch vụ phan mèm và các nhà liêu dùng các dịch vụ phần mềm (cũng có thẻ hiếu như khách hàng hoặc người yêu cầu dịch vụ). SOA khác mô hình Client-Server ở cho xúc định nhan mạnh vào việc lắp ghép lỏng lẻo giữa các cáu phần phần mềm vù việc sử dụng các giao diện lách biệt nhau. 41 Trong SOA, có hai cách trao đối thông tin giữa các đại lý-Agent (đại diện cùa các ímg đụng) / 14]: I- Điểm tới điểm (Point-to-Point) Hình 1.7. Point-to-Point Cách (mẫu hình) trao đổi thông tin này đitr/c sử dụng khi cần già thông báo lừ nhiều ứng dụng cho mội úng dụng cụ thế. Điểu này xuất hiện trong các kiến trúc hirớng dịch vụ khi nhiều đại ¡ỳ cần gùi tin nhắn cho hàng đợi Un ticc và sau đó chúng đưxrc chuyển đến cho mộl điểm đích. 2- Xuất tin - Đăng ký (Publish - Subscribe) Hình 1.8 Publish - Subscribe Cách trao đổi thông tin này được sứ dụng khi đăng ký cho nhiều ứng dụng cùng nhận một tin nhắn. Điều này xuất hiện trong các kiến trúc hướng dịch vụ, khi một đại lý gửi một thông điệp đến hàng đợi và tin nhắn này sẽ được chuyển cho tất cà các điểm đích đã được thẩm định [ 14]. Nói đến SOA là nói đến “tiết kiệm ”, cả tiết kiệm chi phí lẫn thu được giá trị nhiều hơn từ các hệ thống cỏ sẵn. Có nhiều ¡ỳ do để hàng trăm lập đoàn đã chú ý đến SOA như một giải pháp tích hợp nhằm giảm giá thành cùa một để án công nghệ thông tin (CNTT) mội cách rất ấn tượng /2 2 / như sử dụng lại những thành phần cỏ sẵn, đỏ là một giài pháp úng dụng tổng hợp cho doanh nghiệp. 42 có lính kéí nối long ịỊÍú/) lănịỊ linh linh hoại và khu năiiịỉ trien khui cài dụt, thích ứtiỊỊ với những thay đôi IroiiỊỉ luxrnỵ lui, hỗ trợ da thiết bị vù dư nền taiiỊỊ, lủm; kha nủnị; mơ rộng vù kha nănịỉ .sún SÙHỊỊ CUHỊỈ cap,... Kiến trúc hutniỊỊ dịch vụ ihậl sự đem Jen những lợi ích lo lớn. Thế nhtniịỊ việc xúv clụtiỊỊ, ÚĨIỊ' dụng, quan lý nó như thể nào khỏHỊỉ phưi lù việc đơn gian. Trên thè giới, các công ly CNTT như IBM, Microsoft, BEA, HP, SAP, Tibet) vù Oracle là những nhà cung cấp giai pháp phần mèm kiến trúc huứiiỊỊ dịch VII liànỊỊ đâu liiện nay. Trong chutmg 6, chúng lư sẽ nghiên CÚÌI sâu hưn về kiểu trúc hệ thổiiỊỊ được íhiết kẻ theo hướng dịch vụ và trong chương 10, chủng tu sẽ nghiên cứu các van đe còn lại cua kỹ nghệ huởng dịch vụ. 1.9.5. Diện toán đám mây Diện toán đám mây (Cloud Computing), còn gụi lù điện toán máy chủ ảo, là mô hình tính toán sư ílụng các công nghệ máv lính vù phát trien dựa vào mạng Internet [22]. ï'huàt ngữ “Điện toán dúm m ày” ra đời giữa năm 21)07 không phái đê the hiện một trào lưu mới, mà đẽ khái quá/ lại cúc hướng phút triển cùa cơ sở hạ tầng CN'JT vắn đã và Jang diễn ra lừ những năm qua. Quan niệm này có thê được diễn giải một cách đơn giản: các nguồn linh toán khống lồ như các phan cúng (máy chú), phan mém, và các dịch vụ (chươiig trình úng dụng), .... sẽ nằm tại các máy chù áo (đám mây) trên Internet thay vì trong máy tính gia đình vù văn phòng (trên mặt đất) đê mọi người két noi vù sử dụng mỗi khi họ can. Nói cách khúc, ờ mô hình linh toán này, mọi kha năng liên quan đến c N T ĩ đều được cung cấp dưới dạng các “dịch vụ", cho phép NSD truy cập các dịch vụ C N ÏT lừ một nhà cung cắp nào đỏ “trong đám mây ” mù khting cần phai biết về công nghệ đỏ, cũng như không cần quan tâm đến các CƯ sớ hạ tầng phục vụ còng nghệ đó. 43 MnNttu K _ / JÊ Ê m z - L J ■■ - ( ' Ntầhtk Mchte O B e e Ỉienrtỉ ỉ\ÊLbae B S S B IJedtỴ> RenrtsSaver Hình 1.9. Mô hình “Điện toán đám mây”|22] Theo tổ chức IEEE (Institute Electrical and Electronic Engineers,): “Điện toán đám mày là hình mẫu trong đó thông tin đirợc lưit trữ thường Irttc lại các máy chù trên Interne! và chì được lim trữ lạm thời ở các máv khách, bao gom máy lính cá nhân, trung lâm giải trí, máv tinh trong doanh nghiệp, các phinrnỊỊ tiện máy tính cầm lay, ...” [26], Điện toán đám mây là khái niệm tổng thể bao gồm cả các khái niệm như phần mềm dịch vụ, Web 2.0 và các vấn đề khác xuất hiện gần đây, các xu hướng công nghệ nổi bật, trong đó đề tài chù yếu của nó là vấn đề dựa vào Internet để đáp ứng những nhu cầu tính toán cùa người dùng. Ví dụ, dịch vụ Google Apps cung cấp những ứng dụng kinh doanh trục tuyến thông thường, có thề truy nhập từ một trình duyệt web, còn các phần mềm và dữ liệu đều được lưu trữ trên các máy chù. “Điện toán đám mây” là sự kết hợp nhiều công nghệ hiện có như: Kiến trúc hướng dịch vụ, ảo hóa, điện toán tự trị với những ý tưởng mới để tạo ra một giải pháp CNTT đầy đủ. Điện toán đám mây là một giải pháp bao gồm tất cả, trong đỏ các tài ngiiyên điện toán như phần cứng, phan mềm, mạng, ỉưi! trữ,... đmrc cung cấp nhanh chủng cho ngitìri dùng theo họ yêu cầu. 44 Các nguồn tài nguyên hoặc các dịch vụ được phân phái có thê quan trị dế bao đani kha nănỊỊ sẵn xàng cao, an lúnh vù chất lượng. Yếu tố chinh chu các ịỊÍài piiưp này là chúng sở hừii kha nănịỊ điều chinh íủnỊỊ và giám, đẻ cho người dùng có đưực những tài nguyên mà họ cản. Các giải pháp “điện toán đám mây" cho phép C N ÏT được cung cấp Iihư một dịch vụ. Doi lượng phục vụ chu yếu hiện nay cua C N '/Tlà các lo chức, các cơ sứ doanh nghiệp. 1’hằn lớn hạ (ang C Ư sơ cua điện toán dúm mây hiện nay là sự kéi hợp cua những dịch vụ đáng till cậy đuực phún phối thông qua các trung lâm dữ liệu (Jala center) duxrc xây dựng trên nhũng máy chu với nhũng cấp độ khác nhau cua các công nghệ áo hóa. Những dịch VII này củ thế đinrc Iruy cập l ừ bái kỳ dâu trên thẻ giới, trong đó "đám mây ” lù một diêm truy cập duy nhát cho íál ca các máy tinh có nhu cầu cua khách hàng. Các dịch vụ thương mại càn đáp ứiig yêu cầu chai lượng dịch vụ lừ phía khách hàng và thông íhuờng đều đưa ra các mức thoa thuận dịch vụ. Các tiêu chuẩn mớ (Open standard) và phần mềm mã nguồn mớ (Open source software) cũng góp phần phái Iriến điện toán đám mây. Gia* Soi tmrçtar neradù« I lình 1.10. Mô hỉnh kiến trúc diộn toán dám mây 1151 45 Tất cả các tài nguyên tính toán (phần cứng, phần mềm) được tổ chức thành danh mục các dịch vụ (Services Catalog). Các dịch vụ này được cung cấp lên mạng Internet ờ các Server trong các đám mây thông qua các công cụ cung cấp dịch vụ (Provisioning Tool). Các dịch vụ được tương tác với NSD thông qua các phần giao diện tương tác NSD (User Interaction Interface). Tất cả các dịch vụ được quản lý bời Ọuản lý hệ thống (Systems Management) và được theo dõi bời hệ thống giám sát (Monitoring & Metering). Theo kiến trúc do Sun đề xuất, điện toán đám mây cung cấp các dịch vụ ờ tất cả các tầng, từ phần cứng tới các phần mềm như trong hinh sau [ 14 Viện CNTT (2009]: Web services. Fückr API, Google Maps API, Storage ứn£ dune àr% tanèn Web. Co°£Ỉ* «pp*I saleribrc&cam, c h m Mtfnàk flfckr. Lum ừử ỉo . S v dụng mot ứ ũeibi cảu lùnh u n hoác n ú t chong phán niem tựy chính, amp, C Lss& K w ThúB một hé đièuHanh cầu hnứưắn. Them eac ung dung ritng cùa Han. V ĩ du: may chủ DNS Thue may chủ ảo. T rien ỉd u ỉ mòthmh ảnh ntềyio hoác cai <&t ngấn yep phan mem của riéng bạn ^ C á c dịch V« Các chm rng tim h ứng dụng i H i đ iê u h à n h C í c m á y c h ủ i o Thuê m ói krói tmh toán. V í du: ung ẻụng HPC 1 C í c m á y c h ủ I h Ị t Hình 1.11. Cơ sở hạ tầng các ừng cùa điện toán đám mây [15] TÓM TẮT CHƯƠNG Công nghệ phần mèm là tập hợp các phirrmg pháp, quy trình, kỹ năng, bi quyết, công cụ, phmrnỊỊ tiện để làm ra sản phẩm là phan mèm. 46 Kỹ nghệ phần mèm là việc Ihièt lập vù sư dụnịỊ các nguyên lý công nghệ đúng dằn đè thu đưục phần mèm mội cách kinh tể vừa tin cậy vừa làm việc hiệu lỊuù trên các máy thực. Kỹ nghệ phần mèm không phai là chính việc san sinh ra sán phẩm mù nó liên quan đến việc sun sinh ra sàn phẩm một cách hiệu qua. Giữa kỹ nghệ phần mèm vời công nghệ phần mềm, kỹ nghệ hệ thống củ sự khúc biệt. Phương pháp trong kỹ nghệ phần mồm cho một “cách làm” về mặt kỹ thuật đố xây dụng phần mềm. Các phương pháp thường bao gồm phương pháp luận và các phương pháp cụ thể. Bàn thợ CA SE là môi trưởng đặc biệt hường vào trợ giúp cho đặc lả và thiết kế phần mèm. Chúng thường CUHỊỊ cáp rấí ít hỗ trự cho lập trình. Chúng cỏ thẻ làm việc trên máy cá nhân vù được sư dụng két hợp với môi trường lập trình. Việc đánh giá tổng quái vẻ chất lượng hệ thống bao gồm việc đánh giá chắt lượng tài liệu đặc lá, chất lưựiiỊỊ thiểt kể và chất lượng cùa kỹ nghệ lót thông qua các Ihuộc lính chung. Bào tri được coi là thuộc tính chù chốt vì rằng các chi phi gắn két với sàn phẩm phần mềm chu yếu là trong giai đoạn phan mềm đỏ ciurrc dưa vào sử dụng. Năm 1991, chuẩn ISO/IEC 9126 được đưa ra nhằm quy định các đặc tính . về chất lượng phần mềm. Có 6 đặc tính lớn và được thể hiện thông qua 21 đặc tính con. Các thách thức đối với phát triển phần mềm máy tính gia tăng đã dẫn đến việc chấp nhận thực hành kỹ nghệ phần mềm để có thể tạo nhanh các phần mềm với chất lượng ngày một cao, có quy mô và số lượng ngày một lớn và có nhũng tính năng tương úng với tiềm năng phần cứng. Kể từ năm 1970 đến nay, kỹ nghệ phần mềm đã có sự tiến hóa nhanh chóng. Nhiều hướng kỹ nghệ đã nối tiếp nhau sinh ra và phát triển, trong đó có thể kể ra nhu kỹ nghệ huớng cấu trúc, kỹ nghệ huớng đối tượng, kỹ nghệ hướng thành phần, kỹ nghệ hướng dịch vụ, điện toán đám mây. 47 CÂU HỎI CHƯƠNG 1 /. 1. Anh/Chị hãy thừ đưa ra một định nghĩa phần mềm cùa riêng mình? 1.2. Công nghệ phần mềm khác và giồng kỹ nghệ phần mềm, kỹ nghệ hệ thắng ở điểm nào? 1.3. Phurmg pháp luận và các phương pháp cụ thể khác nhau ở chỗ nào? 1.4. CASE dùng để làm gì? 1.5. Anh/Chị hãy tự đira ra một nhòm thuộc tính chù chồI mà một hộ phần mèm lói hắn phải có? 1.6. So sánh với nhiều cách tiếp cận khác, cách nép cận hur'mg eau trúc cỏ những đặc điếm nổi trội nào? 1.7. Nêu rõ các uV điểm và hạn chế cùa cách tiếp cận hw'mg đối tượng? 1.8. Tại sao ngwri ta phải dùng nhiều phương pháp nép cận khác nhau (hifí'mg cấu trúc hoặc hướng đối tượng) trong việc thiếl kế các thành phần khác nhau cùa mộ! hệ thống? 1.9. Chiến luxrc nào (hux'mg cấu trúc hoặc hurmỊỊ đoi tượng) nu nhaI cho các dự án lớn ? Vì sao ? 1.10. Các cách tiếp cận hướng cấu trúc và hướng đổi tượng có đối kháng nhau ? BÀI TẬP CHƯƠNG 1 Bài tập 1.1: Có mộI hệ thống kinh doanh bán buôn được mô tà như sau: M ột công ty kinh doanh bán buôn một số mặt hàng. Công ty tiếp nhận các Đơn hàng cùa KHACH và sau đó kiểm tra tính hợp lệ cùa đơn hàng. Nếu Đơn hàng hợp lệ thì kiểm tra Khách là cũ hay mới. Nếu khách cũ có nợ quá hạn (rà soát số cồng nơ) hay khách mới (đối chiếu với Danh sách khách) thì chuyển đơn hàng sang bộ phận giải quyết khách, ngưrrc lại chuyển Đơn hàng cho bộ phận xử lý Đ(m hàng. 48 Tại bộ phận giai quyết khách, nếu là khách mới HỊỊUỪi la sẽ trao đỏi với khách nhàm hiẽu rõ Ihêm vé khách, sau đỏ thực hiện ký một hơp dồnu nếu thay cần thiết; Còn dối với khách nợ quá hạn, IIỊỊUỪÌ lu sẽ phai giải quyết nợ cũ và quyct định củ cho phép khách nép lục mua hùnịỉ mới hay không. Tại hộ phận xử lý Đơn hàng, người la dối chiếu Dơn hàng với Thè kho đế biél được khu năng đá/) ứng yêu cầu cùa khách. Trong IruừiiỊỊ hợp thiếu hàiiịỉ hay có các yêu cầu mặl hànịỉ mới, người la sẽ /hoa thuận vời khách, sau đủ lập 1‘hicu giao lianư và nhiếu Ịhu rồi chuyến chúng chư bộ phận gom và ỊỊÙi hùng. Hộ phận gom vù ịỊưi hàng sẽ tổ chức ỊỊotu hàng theo Phiếu giao hàng và gừi hàng clio khách. Trước khi gưi hàng, người ta thoa thuận vời khách về phương thức ỊỊiri và giao cho khách một Phiếu giao hàng kèm theo một phiếu thu. Yêu câu: !-Vẽ biếu đỏ phân rã chút năng cho hệ thong trẽn? 2-Vẽ biểu đò luồng dữ liệu mức 0 (mức dinh) cho hệ thong? Hài tập 1.2: Mộí loại chứrig lừ đưực công ty kinh doanh bán buôn sư dụng có dạng: ĐƠN ĐẶ T HÀNG Sổ: Tên khách hàng: Ngày đặt: Địa chi: Điện thoại: Số rr Tên hàng Mô tà hàng Đơn vị Số luựng Yêu cầu: Vẽ biểu đồ thực thể - mối quan hệ dựa trên chứng tù ĐƠN ĐẬT HÀNG 49 Chirong 2 TIÉN TRÌNH PHÁT TRIẺN PHẢN MÈM Chất lượng phần mềm đitực xây dựng phụ thuộc rất l('m vào tiến trình pháI triền phần mềm. Do vậy, tri thirc về nến trình phát triển phần mềm là rất hữu ích cho các công trình sư phan mềm. Chutmg này trình bày vè nến trình phần mềm và các hoạt động cơ bán cùa nó. Học viên cần nắm vững khái niệm về nén trình và mô hình nén trình, hiếi cách sử dụng các mô hình nến trình như mô hình thác nước, mô hình liến hóa. Học viên cần biết đầy đủ các hoại động của tiến trình phát triển phần mèm cũng như các tài liệu cằn đưa ra trong moi hoạt động. 2.1. Tiến trình phần mềm 2.1.1. Khái niệm tiến trình phần mềm Khi ta xây dựng một phần mềm một cách công nghiệp, điều quan trọng là phải vạch ra được một loạt các bước hoạt động dự kiến trước - một lộ trình, mà theo đó ta có thể tạo ra một phần mềm chất lượng, hiệu quả và đúng thời hạn. Một lộ trình như vậy được gọi là một tiến trình phần mềm (software process) [ 16]. Định nghĩa trên cho thấy, đặc trung trước hết của tiến trình là các hoạt động cần thực hiện Trong các hoạt động đó phải có các hoạt động mang tính kỹ thuật để tạo ra sản phẩm. Mặt khác, sản phẩm phải bảo đảm các chất lượng và các ràng buộc đặt ra. Vì vậy, loại hoạt động cần thiết nữa là các hoạt động quản lý. Đặc trung thú hai cùa tiến trình là trình tự thực hiện các hoạt động. Để tiện cho quản lý, các hoạt động thường được phân chia vào các bước. Trình tự thực hiện hoạt động trong tiến trình được thể hiện qua trình tự thực hiện các 50 bước. Tất nhiên các bước có thế được thực hiện tuần tự hoặc có thể lặp lại một số bước nào đó. 2.1.2. Khái niệm mô hình tiến trình Mô hình tiến trinh phần mềm là sự mô tả tiến trinh một cách đơn giàn hóa khi xem xét nó tù một cách nhìn cụ thể. về bàn chất, mô hinh tiến trình là một sự trừu tượng hóa một lớp các tiến trinh thực. Một vài mô hinh tiến trinh phẩn mềm được nhiều người biết đến như mô hình thác nước, mô hinh xoan ốc, mô hinh làm bản mẫu, mô hinh sử dụng ngôn ngữ thế hệ bốn. Vào năm 1996, Huff [23] đã lần đầu tiên hệ thống hóa các mô hinh tiến trình phần mềm. Sommerville [25] đưa ra một số loại mô hình tiêu biểu: — Mô hình thác nước (waterfall model); — Mô hình phát triển tiến hóa (evolutionary models): là mô hình phái Irién với quá trình lặp đẽ hoàn thiện dần phản mềm; — Phát triển hệ thống hình thức (formal system development): một cách tiếp cận dựa Irên đặc lá hệ thống bằng toán học đẽ chứng minh hay chuyển đổi nó thành chuirng trình nhờ các công cụ íuán học chuyên dụng; — Phát triển phần mềm theo hướng sử dụng lại (reuse oriented sofware development), quá trình phớt triển lập trung vào việc í ích hựp các thành phấn đã có đế nhận đưục hệ thong, đáp ứng được các yêu cầu đặt ra. 2.2. Mô hình thác nước Mô hỉnh thác nước hay còn gọi ià mô hình vòng đời cổ điển do Royce đề xuất năm 1970. Nó yêu cầu tiếp cận một cách hệ thống, tuần tự và chặt chẽ đối với việc phát triển phần mềm, bắt đầu ở mức hệ thống và tiến dần xuống phân tích, thiết kế, mã hóa, kiểm thừ và bảo trì (hinh 2.1). Mô hình vòng đời cổ điển là mô hỉnh có sớm nhất và được sử dụng rộng rãi nhất. Nó đưa ra các phương pháp khoa học, các buớc tổng quát áp dụng được cho nhiều mô hình. Nó là tốt hơn nhiều lần cách tiếp cận tự nhiên. Tuy nhiên, các dự án phần mềm thực tế hiếm khi tuân theo trình tự tuần tự. Quá trinh lặp lại là không thể tránh khỏi. Khi áp dụng mô hình này, nếu không quay lại thì dễ gặp bất trắc, mà lặp lại thi khó quản lý được tiến độ và không đáp ứng 51 kịp thời yêu cầu cùa khách hàng. Mặt khác, khách hàng phải kiên nhẫn đến cuối dự án mới có chương trinh làm việc được. Thời gian thực hiện dự án theo mô hinh này thường dài, các tài liệu đặc tả rất lớn Nếu chương trinh gặp lỗi khi kết thúc mới phát hiện ra thi có thể sẽ là một thảm họa. Kỹ nghệ hộ thống 1 Phân tích Thiềt kề Mã hóa Kiềm thử Báo tri Hình 2. ì Mỏ hình thác nước cùa liến trình phần mém 2.3. Mô hình tiến hóa Ý tường chung cùa phương pháp tiến hóa là phát triển một phiên bản sơ khai ban đầu và giới thiệu để người dùng bình luận rồi làm mịn nó thông qua các bước cho đến khi nhận một hệ thống thích hợp Hình 2.2. Mô hình pháI triển nén hóa 1161 52 Phương pháp này thích hợp khi mà chúng ta khó thực hiện các đặc tả chi tiết ngay từ đầu. Phuơng pháp thiếu đặc tả ihường hay được dùng để phát triển các hệ thống trí tuệ nhân tạo nhằm kích thích những khả năng tư duy cùa con người Chia khóa thành công trong cách tiếp cận này là cho phép thực hiện các bước lập hệ thống một cách nhanh chóng: những sự thay đổi như những gợi ý được phối hợp với việc trinh diễn nhanh đến mức có thể. Nó yêu cầu nhũng ngôn ngữ lập trinh có trinh độ rất cao đe phát triển các phẩn mềm như LISP, Prolog. Biếu đồ tiến trình tổng quát của nó được đặc tả như hình 2.2. Với phương pháp này ta không có mô tả đầy đu nên không the kiểm tra và không thế nói đến một chương trinh đúng. 2.3.1. Mô hình lùm bủn mẫu Làm bản mẫu (prototyping) là tạo ra một mô hinh như thực tc cho phần mềm cần xây dựng. Mô hinh có thể có 3 dạng: 1-Bãn mẫu trên giấy hay trên máy tính cá nhãn (PC) mô la giao diện nguừi - máy lùm người dùng hiếu được cách các tưxniị; lác xuấl hiện. Nó là mội ban mô lá vêu cẩu; 2-Bản mẫu cài đặt chi chứa một tập con chức năng cùa phần mềm mong đợi; 3-Bản mẫu là một chương trình có thể thực hiện mội phần hay lất cà chức nănỊỊ mong muốn nhưng sơ lược cần cai liến thêm các tinh năng khác. Trước hết, người phát triển và khách hàng gặp nhau và xác định mục tiêu tổng thế cho phần mềm, xác định các yêu cầu đã biét, các miền cần khảo sát thêm. Rồi thiết kế nhanh bản mẫu ban đầu. Thiết kế nhanh tập trung vào việc biểu diễn các khía cạnh của phần mềm thấy được đối với người dùng (cách đưa vào và định dạng đưa ra) sau đó làm mịn mẫu, trình diễn để người dùng đánh giá rồi tiếp tục làm mịn các yêu cầu cho phần mềm. Tiến trình này lặp đi lặp lại cho đến khi bản mẫu thỏa mãn yêu cầu của khách, đồng thời giúp người phát triển hiểu kỹ hơn nhu cầu nào cần phải thục hiện (hình 2.3). Cách tiếp cận làm bản mẫu cho kỹ nghệ phần mềm là cách tiếp cận thực tế nhất. Nó rất thích hợp với các hệ thống vừa và nhỏ, đặc biệt khi yêu cầu chưa rõ ràng, chưa xác định cụ thể cái vào cái ra và chưa chắc chan nội dung 53 xử lý hay hiệu quả của một thuật toán. Nó được sử dụng hiệu quả khi kết hợp với các mô hình khác, chẳng hạn, ở giai đoạn xác định yêu cầu của mô hỉnh thác nước,... Hình 2.3 Mô hình làm bán mẫu 2.3.2. Mô hình xoắn ốc Mô hình xoắn ốc, được Boehm đưa ra năm 1988, dựa trên ý tưởng là tối thiểu hóa rủi ro bằng việc phân tích yếu tố rủi ro ở mỗi bước lặp và sử dụng phương pháp làm bản mẫu. Quá trình phát triển được chia thành nhiều bước lặp lại, mỗi bước bắt đầu bằng việc lập kế hoạch, phân tích rủi ro rồi tạo bản mẫu, hoàn thiện và phát triển hệ thống, duyệt lại, và cứ thế tiếp tục (hỉnh 2.4). Nội dung một bước gồm bốn hoạt động chính: I- Lập kế hoạch: xác định mục tiêu, giải pháp và ràng buộc; 54 2- Phân tích rủi ro; p h â n tích cúc p hm niỊỊ án, xú c định vù ỊỊÍai lỊuyét rùi ro; 3- Kỹ nghệ: />hál Iriên san phàm “mức nép theo 4- Dánh giá cùa khách hàng: khăng định két qua cua kỹ nghệ. Với mỗi lần lặp xoắn ốc (bat đầu từ tâm), các phiên bản được hoàn thiện dần. Nếu phàn tich rủi ro chi ra ràng ycu cầu không chắc chắn thì ban mẫu có the được sử dụng trong góc phẩn tư kỹ nghệ; các mô hình và các mô phóng khác cũng được dùng để làm rõ hơn vấn đề và làm mịn yêu cầu. Tại một vòng xoan ốc, phản tích rủi ro phải đi đến quyết định “tiến hành tiếp hay dừng”. Neu rủi ro quá lớn thì có thề đình chi dự án hay thay đối yêu cầu đặt ra cho thich hợp. . . . pliân lích n ii ro d ự a ư ê n lậ p hợ p y ẽu . . ì , ,1 . y êu câ u b an dâu cảu ban d ãu vá Mô hinh này thích hợp để phát triển các hệ thống quy mô lớn. Trong mô hinh này, không có sự phân biệt rõ ràng giữa hoạt động bảo tri và phát triển. Tuy nhiên, việc thay đồi một cách linh hoạt khi phát triển đòi hỏi nhà phát triển và khách hàng phải có liên kết chặt chẽ, nếu không sẽ không làm được gi khi hợp đồng đã ký kết. Mặt khác, quy mô dự án phải đù lớn để chịu được các chi phỉ trả chuyên gia phân tích rủi ro. Bochm cải biên mô hình này năm 1998 với tên là “ WINWIN SpiralM ixieĩ' dùng cho việc phát triển phần mềm hướng đối tượng. 55 2.3.3. Mô hình RƯP Mô hình RUP (Rational Unified Process) là mô hình phát triển phẩn mềm dành riêng cho hướng đối tượng. Nó có ba đặc trưng: lJ y kiến trúc làm trung tâm, điếu khiển hơi các ca sử dụng, lặp và lăng dần. Nó có nhiều điểm tương đồng với mô hình xoắn ốc được Boehm (1998) [16] làm thích ứng cho việc phát triển phần mềm hướng đối tượng. Tuy nhiên, ờ mỗi bước lặp cùa RUP, nội dung các hoạt động có những đặc trung riêng gắn với ngôn ngữ mô hình hóa trực quan - UML. Chính bản thân UML không định nghĩa tiến trình phát triển phần mềm, nhưng UML và phần mềm công cụ Rational Rose (gọi tắt là Rose) được sừ dụng có hiệu quả trong một số công đoạn của tiến trình phát triển phần mềm [5]. 2.3.4. Mô hình phát triển tăng dần Mỏ hình phát triển tăng dan (Incremental mock’/): phát triển một hệ thống càng nhanh càng tốt, rồi cải biên hệ thống đó cho tới khi nó thực hiện được mọi yêu cầu đặt ra. Nó là một biến thể cùa mô hình tiến hóa. Nó có ý tưởng cơ bản gần giống với mô hình làm bản mẫu và mô hình xoắn ốc, nhưng được thực hiện trên từng khối tương đối độc lập (hình 2.5). khối I fìác lá Thiết kế —>triển khai. chuyến cho lích hợp khách * khối 2 tìăc là Thiết kế — Tầ. fríen khai, — ► chuyến cho lích hợp khách khối 3 fìăc tà Thiết kế — *■ triển khai, — »■ chuyển cho tich hợp khách fìăc tà Thiết kế — >- triển khai, — »■ chuyên cho tích hợp khách Hình 2.5. Mô hình phát triển lăng dần /161 56 2.3.5. Mô hình phút triên ứnỊỊ (lụitỊỊ nlianh RAI) RAD (lỉapid Application Deveỉopment) là phương pháp luận gộp các hoại động phân lích, thiết kế, xây dựtiịỉ vào một loạt vòng lặp phát triền ngan . bước lặp ngan bào đàm tính hiệu quà và tự sứa chữa Kỹ thuật RAD hướng đến nhu cầu đưa người dùng tham gia vào việc phân tích và thiết ke hệ thống bằng cách sử dụng CASE. Hệ thống phát triển bang RAD đáp ứng nhu cầu hiệu quà và chi phi báo tri thấp. Chất lượng hệ thống được xác định ở đây là mức độ hệ thống đáp ứng các yêu cầu nghiệp vụ về thời gian. RAD thích hợp cho đội phát triển nhó, người dùng và nguồn lực cùa HTTT không lớn, kết hợp với vòng lặp ngan, tối ưu tốc độ, thống nhất cái nhin và mục tiêu giao tiếp không hình thức, hiệu quá và quản lý dự án đơn giản, mồi bước xuất ra một phiên bàn chức năng cùa hệ thống cuối cùng. Nó đuợc kỹ nghệ riêng, một phần làm việc đầy đù, không giống như làm mẫu. 2.3.6. Mô hình phát triển hệ thống hình thức hóa Quá trinh phát triển hệ thống hình thức hóa được mô tà trên hình 2.6. Tư tường chinh của phương pháp này là biểu diễn các đặc tá yêu cầu ờ dạng biểu diễn các ký pháp toán học. Sau đó áp dụng các biến đổi khác nhau để chuyển đặc tả hình thức thành chương trình. Trong quá trinh chuyển đổi, biểu diễn hình thức của đặc tả ngày càng được chi tiết dần nhưng luôn bảo đảm tính đúng đắn toán học của biểu diễn hệ thong mà không cần đòi hỏi một sự kiểm tra tốn kém. Nhờ vậy mà nó bảo đảm rằng chương trinh nhận được là một triển khai đúng cùa đặc tả. Hình 2.6. Cúc buức cùa liến trình phái triền hình íhứv /16/ 57 Các phép biến đối hình thức TI T2 ĩ'3 T4 Các chứng minh sự đúng đán cùa phép biến đỏi Hình 2.7. Các bước cùa nến trình pháI triển biến đồi hình thírc ¡161 ư u điểm cùa cách tiếp cận này là có thể áp dụng để chứng minh tính đúng đắn của đặc tả, chứng minh được chương trình là đáp ứng được yêu cầu cùa đặc tả đã cho. Chi phi cho đặc tả cao, nhưng các chi phi sau đó là nhỏ hơn nhiều so với các phương pháp khác. Ọuá trinh chuyển đồi tạo thành một dãy các bước nhỏ và có thể dễ theo dõi được. Tuy nhiên, việc đặc tả đòi hỏi một trinh độ trừu tượng cao, việc chọn các chuyển đổi nào để áp dụng lại yêu cầu kỹ năng rất chuyên nghiệp, việc chứng minh sự đúng đắn cùa chuyển đổi là rất khó khăn. Vì vậy, với đa số các kỹ sư phần mềm, phương pháp này là khó áp dụng. 2.3.7. Mô hình phát triển phần mềm theo hiróĩtịỊ sử dụng lại Mô hình phát triển phần mềm theo hướng sừ dụng lại dựa trên cơ sở có rất nhiều các thành phần mềm có thể sử dụng và tích hợp chúng trong một khung làm việc để nhận được một hệ thống làm việc. Sơ đồ tổng quát của quá trình được mô tả như ở hình 2.8. Truớc hết, giống như các tiến trình khác cần đặc tả yêu cầu, sau đó phân tích các yêu cầu thành những thành phần. Tiến hành cải biên các thành phần này để chúng tương ứng với các thành phần sẵn có. Sau đó thiết kế hệ thống dựa trên các thành phần đã có. Trong đó đặc biệt có thể sử dụng các mẫu thiết kế (patterns). Công việc tiếp theo là phát triển và tích hợp hệ thống. Trong trường hợp chung nhất, khi còn có những thành phần chưa có sẵn, lúc đó cần phải phát triển bổ sung. Trong trường hợp đặc biệt, các tài sàn có sẵn là những phần mềm, khi đó 58 ta có phương pháp phát triển dựa trên thành phần (CBSE - Component-Based Software Engineering). Hình 2.8. Tiến trình phát triển hướng sư dụng tại /16/ Phương pháp này có ưu điểm vượt trội là rút ngắn được thời gian phát triển, giám chi phí và đặc biệt ít gặp rủi ro. Hơn thế nữa nó còn cho hệ thống có độ tin cậy cao. Ngày nay, công nghệ huớng dối tượng phát triển phần mềm tiến triển rất nhanh, phát triển phần mềm theo hướng sử dụng lại được sự trợ giúp rất lớn từ công nghệ này. Đặc biệt là dùng lại các khung làm việc {Framework) và mẫu thiết kế. 2.3.8. Mô hình phát triển phần mềm theo kỹ thuật thế hệ thứ tư Thuật ngũ “kỹ thuật thế hệ thứ 4” (4GT) bao gồm một phạm vi rộng các công cụ phần mềm có điểm chung là: Mỗi công cụ đều cho phép xác định một số đặc trưng của phần mềm ở mức cao. Tiếp dó, công cụ tự động sinh ra mã chương trình gốc theo nhu cầu cùa người phát triển. Tiến trình 4GT tập trung vào khả năng xác định phần mềm ở mức độ gần với ngôn ngữ tự nhiên hay dùng một số ký pháp tương ứng với chức nâng. Tiến trình 4GT cho kỹ nghệ phần mềm được thể hiện trên hình 2.9. Môi trường phát triển phần mềm hỗ trợ cho tiến trình 4GT bao gồm một số hoặc tất cả các công cụ sau: - Ngôn ngữ phi thù tục để truy vấn CSDL, - Bộ sinh bảo cáo, - Bộ thao tác dữ liệu, - Bộ tương tác và xác định màn hình. - Bộ sinh chương trình/mã, - Khả năng làm trang tính. Hình 2.9. Mô hình liến tr ình sư dụng ngôn ngừ thế hệ thứ 4 2.4. Các hoạt động của tiến trình phát triển phần mềm Các hoạt động cơ bản của tiến trình phát triển phần mềm bao gồm: /- Đặc tà yêu cầu phần mèm và yêu cầu hệ thống (xác định và đặc tả các chức năng của phần mềm và các ràng buộc mà nó cần tuân thù khi phát triển và hoạt động); 2- Đặc tà thiết kế (đặc tả các chức năng của phần mềm và các ràng buộc ờ mức cao, gần với múc cài đặt); 3- I4 p trình và thừ nghiệm (tạo ra phần mềm theo đúng yêu cầu và thiết kế đã được đặc tả); 4- Kiểm thừ phần mềm (thẩm định phần mềm xem có đáp ứng yêu cầu người dùng không); 5- Đánh giá chất lượng phần mềm (bảo đảm chất lượng phần mềm); 6- Nâng cấp phần mềm (phần mềm được tiến hóa để đáp ứng yêu cầu thay đổi cùa người dùng và môi trường). Trong các tiến trình khác nhau, các hoạt động này được tổ chức theo những cách khác nhau và được mô tả theo những mức chi tiết khác nhau. Tuy nhiên, mỗi kiểu tiến trình có thể là thích hợp với các loại ứng dụng này hơn là với loại khác. 60 Lần lượt trong các chương tiếp theo, chúng ta sẽ nghiên cứu kỹ lưỡng các nội dung cùa các hoạt dộng này Ở đây, cần liệt kẽ các tài liệu đưa ra cho các hoạt động đó. Bảng 2 .1 trình bày các hoạt động cụ thể và các tài liệu tương ứng cần có trong quá trinh phát triển được kiểm soát, lưu trữ trong cấu hình phẩn mềm. lỉuII í; 2.1. ( 'ác hoạt động phủi Iriũn phần mềm và các lùi liệu tuxniỊỊ Ú7IỊỊ Các hoạt ílộttỊỊ Tài liệu dua ra 1 - Đặc là yêu cầu phần mềm và ycu cầu hệ thống 2- Dặc tà thiết kế 3- Lặp trình và thừ nghiệm - Phân tích yêu cẩu - Xác định yêu cầu - Đặc tà hệ thống Đặc tả phần mềm - Thiết kế kiến trúc - Thiết kế dữ liệu - Thiết kế giao diện - Thiết kế chi tiết - Mã hóa và thừ nghiệm - Báo cáo nghiên cứu khả thi; - Yêu cầu khái quát Tài liệu yêu cầu. - Đặc tả chức năng; - Ke hoạch kiểm thừ chấp nhận; - Giới thiệu tóm tắt cách sử dụng. - Cấu trúc các hệ con và giao diện; - Mô tả các hệ con phần mềm. - Đặc tả kiến trúc; - Kế hoạch kiểm thừ hệ thống. - Cấu trúc dữ liệu lôgic/vật lý; - Từ điển dữ liệu. - Đặc tả giao diện; - Ke hoạch kiểm thừ tích hợp. - Đặc tả thiết kế; - Kế hoạch kiểm thứ đơn vị. - Chương trình nguồn; - Biên bản thừ nghiệm. 61 Báo cáo kiểm thử đơn vị. Báo cáo kiềm thừ mô đun. - Báo cáo kiểm thử tích hợp; - Hướng dẫn sử dụng cuối cùng. Báo cáo kiểm thử hệ thống. Hệ thống chương trình và các tài liệu. - Báo cáo các khuyết tật trong hệ thống và tính khả dụng của hệ thống. - Các chiến lược kiểm thử đề xuất; - Các kế hoạch và các đặc tả thiết kế ca kiểm thử; - Đánh giá các lỗi phần mềm phát hiện được sau kiểm thử. - Sổ quản lý các “chế tác” trong tiến trình kỹ nghệ phần mềm. Các báo cáo kết quả: áp dụng công nghệ, kỹ nghệ hiệu quả; rà soát kỹ chính thức và rà soát phần mềm; tuân theo các chuẩn phát triển; khống chế thay đổi; thực hiện đo lường; báo cáo và quản lý các báo cáo; gỡ lỗi; phân tích an toàn phần mềm. - Yêu cầu nâng cấp; - Báo cáo kết quả nâng cấp. 62 4- Kiểm thử phần mềm 5- Bảo đảm chất lượng phần mềm 6- Nâng cấp phần mềm - Kiểm thừ đơn vị - Kiểm thử mô-đun - Kiểm thừ tích hợp - Kiểm thừ hệ thống - Kiểm thừ chấp nhận - Thẩm định và xác minh - Kiểm thù phần mềm - Quản lý cấu hình phần mềm - Các hoạt động quản lý chất lượng khác - Thẩm định yêu cầu nâng cấp; - Thục hiện nâng cấp. TÓM TAT CIIƯƠNG Tien trinh phần mềm là một loạt các buớc hoạt động dự kiến trước, mà theo dó ta có thế tạo ra một phần mềm chất lượng, hiệu quả và đúng thời hạn. Đặc trung cùa tiến trinh là các hoạt động cần thực hiện bao gồm các hoạt động mang tính kỹ thuật để tạo ra sản phẩm và trinh tự thục hiện các hoạt động. Mô hinh tiến trình là một sự đơn giản hóa một lớp các tiến trình thực Một vài mô hình tiến trình phần mềm dược nhiều người biết đến như: mô hình thác nước, mô hình xoan ốc, mô hình làm bản mẫu,... Ý tướng chung cùa phương pháp tiến hóa là phát triển một phiên bản sơ khai ban đầu và giới thiộu đế người dùng binh luận rồi làm mịn nó thông qua các bước cho đen khi nhận một hệ thống thích hợp. Cách tiếp cận làm bản mẫu cho kỹ nghệ phần mềm là cách tiếp cận thực tế nhất. Nó rất thích hợp với các hệ thống vừa và nhỏ, đặc biệt khi yêu cầu chưa rõ ràng, chưa xác định cụ thể cái vào cái ra và chưa chắc chắn nội dung xử lý hay hiệu quà của một thuật toán. Mô hình xoắn ốc dựa trên ý tường là tối thiểu hóa rủi ro bằng việc phân tích yếu tố rủi ro ở mỗi buớc lặp và sữ dụng phương pháp làm bản mẫu. Mô hình này thích hợp để phát triển các hệ thống quy mô lớn. Mô hình RUP là mô hình phát triển phần mềm dành riêng cho hướng đối tượng. Nó có ba đặc trung: Lấy kiến trúc làm trung tâm; Điểu khiển bời các ca sử dụng; Lặp và tăng dần. Mô hình phát triển tăng dằn \à phát triển một hệ thống càng nhanh càng tốt, rồi cải biên hệ thống đó cho tới khi nó thực hiện được mọi yêu cầu đặt ra. Nó là một biến thế cùa mô hình tiến hóa. RAD là phương pháp luận gộp các hoạt động phân tích, thiết kế, xây dựng vào một loạt vòng lặp phát triển ngắn: bước lặp ngắn đảm bào tính hiệu quả và tự sửa. Kỹ thuật RAD hướng đến nhu cầu đưa người dùng tham gia vào việc phân tich và thiết kế hệ thống bằng cách sử dụng CASE. Mô hình phát triển phần mềm theo hướng sừ dụng lại dựa trên cơ sở có rất nhiều các thành phần mềm có thể sử dụng và tích hợp chúng trong một khung làm việc để nhận được một hệ thống làm việc. 4GT có điểm chung: mỗi công cụ đều cho phép xác định một số đặc trưng cùa phần mềm ờ mức cao; công cụ tự động sinh ra mã chương trình gốc theo nhu cầu cùa nguời phát triển. 4GT tập trung vào khả năng xác định phần mềm ờ mức độ gần với ngôn ngữ tự nhiên hay dùng một số kỷ pháp tương ứng với chức năng. Có 6 hoạt động cơ bản cùa tiến trình phát triển phần mềm: Đặc tả yêu cầu phần mềm và yêu cầu hệ thống; Đặc tả thiết kế; Lập trình và thử nghiêm; Kiểm thử phần mềm; Bảo đảm chất lượng phần mềm; Nâng cấp phần mềm. CÂU HỎI CHƯƠNG 2 2.1. Tại sao chúng ta phải quan tâm đến tiến trình phát triển phần mềm? 2.2. Tiến trình, quá trình và quy trình có gì khác nhau? 2.3. Tiến trình và mô hình tiến trinh có những nét gì khác biệt? 2.4. Các pha trong mô hình thác nước bao gồm hoạt động nào? 2.5. Tại sao mô hình thác nước tuy là mô hình cổ điển (ra đời sớm nhất) nhưng đến nay nó vẫn còn giá trị? 2 6. Theo Anh/Chị thì mô hình tiến hóa và mô hình thác nước khác nhau cơ bản ở điểm nào? 2.7. Cách tiếp cận làm bản mẫu cho kỹ nghệ phần mềm là cách tiếp cận thực tế nhất. Nó rất thích hợp với các hệ thống có quy mô như thế nào? 2.8. Mô hình xoắn ốc thích hợp để phát triển các hệ thống có quy mô như thế nào? 2.9. Phương pháp dựa theo huớng sử dụng lại có ưu điểm gì? 2.10. Trong 6 hoạt động của tiến trinh (1-Đặc tả yêu cầu phần mềm và yêu cầu hệ thống; 2-Đặc tả thiết kế; 3-Lập trình và thử nghiệm, 4-Kiểm thử phần mềm; 5-Bảo đảm chất lượng phần mềm; 6-Nâng cấp phần mềm) thì hoạt động nào, theo Anh/Chị, là quan trọng nhất? tại sao? 64 Chuo’ng 3 DẠC TẢ YÊU CÀU PHÀN MÈM VÀ YÊU CÀU HỆ THỐNG Yêu cầu phun mèm vù yêu cầu hệ thốiiịỉ phai đuxrc viel sao cho NSD có ihê hiên được mà không cản mội kiến thút chuyên môn đặc biệt nào. ( 'hmrnịỊ này ve các yêu cầu phan mèm vù hệ thống và các kỹ thuật thô hiện yêu cảu. Học viên cần nam VŨ7IỊỊ các yêu cầu hệ IhốiiịỊ, yêu cầu phần mèm, tiến trình xác định yêu cầu vù đặc tá yêu cầu phần mèm. Học viên cần rèn luyện các kỹ năng đặc tà yêu cầu vù viết tài liệu yêu cầu. 3.1. Các yêu cầu hệ thổng 3.1.1. Khái niệm về yêu cầu hệ thống Yêu cầu cho một hệ thống mô tả những việc mà hệ thống làm và những ràng buộc mà nó phải tuân thù khi hoạt động [16] Vi du 3.1 Đặc tả yêu cầu hệ thống: - Người dùng phải được cung cấp phương tiện để dễ dàng xác định đuợc kiểu file ngoài. - Với mỗi kiểu file ngoài cần có một công cụ thích hợp cho nó. - Mỗi kiểu file ngoài có thể được thể hiện bằng một biểu tượng (icon) trên màn hình cùa người dùng. - Phương tiện phải được cung cấp cho mỗi biểu tượng đại diện cùa một kiểu file ngoài khi người dùng xác định. - Khi người dùng chọn một biểu tượng cho kiểu file ngoài thì công cụ thích hợp được áp dụng để truy nhập và trình diễn kiểu file đó. 65 3.1.2. Phăn loại yêu cầu hệ thống Yêu cầu hệ thống được phân thành 4 loại cơ bản: 1- Các yêu cầu chức năng Các yêu cầu chiK năng (functional requirements) là các yêu cầu về các dịch vụ mà phần mềm /hệ thống phải cung cấp. Yêu cầu chức năng hiểu theo nghĩa rộng cũng có thể là yêu cầu không nên thực hiện chức năng nào đó. Các yêu cầu chức năng cho một hệ thống đur/c thế hiện bằng các đặc lá về các hoại động cùa hệ thống hay các dịch vụ mà hệ thống sẽ cung cấp. Chúng phụ thuộc vào loại phần mềm được xây dựng, vào sự mong đợi của người dùng, vào quy mô hệ thống được phát triển và môi trường mà ở đó nó được cài đặt (môi trường đích). v ề nguyên tắc, đặc tả yêu cầu chức năng cần phải đày đù và nhất quán Đầy đủ, có nghĩa là tất cả chức năng mà người dùng cần ờ hệ thống phải được xác định. Nhất quán nghĩa là các yêu cầu nêu ra không được mâu thuẫn với nhau Tuy nhiên, đối với một hệ thống lớn và phức tạp, điều này rất khó có thể đạt ngay được. 2- Các yêu cầu phi chức năng Các yêu cầu phi chức năng (non-ýmcíional requirements) là các ràng buộc mà phần mềm/hệ thống phải tuân theo. Đó là những ràng buộc bắt các dịch vụ hoặc chức năng mà hệ thống cung cấp phải tuân thù. Các yêu cầu phi chức năng không liên quan trực tiếp tới các hoạt động chức năng cụ thể của hệ thống. Chúng có thể liên quan đến các thuộc tính quan trọng cùa hệ thống, đến hiệu năng của hệ thống như độ tin cậy, thời gian đáp ứng àia dịch vụ, việc sử dụng bộ nhớ, hay đến những ràng buộc lên hệ thống như khả năng vào ra cùa thiết bị, sự biểu diễn dữ liệu trên các giao diện cùa hệ thống,... Chúng bao gồm các ràng buộc như về thời gian, về ngân sách, các ràng buộc trong tiến trình phát triển, hay các ràng buộc về chuẩn sử dụng,.. Rất nhiều yêu cầu phi chức năng liên quan đến tổng thể hệ thống hơn là đến từng bộ phận riêng rẽ. Điều đó có nghĩa là, chúng thường quan trọng hơn 66 rất nhiều những chức năng bộ phận, trong khi lỗi cùa một chức năng bộ phận có thề sứa đổi và nâng cấp, thì lỗi cùa một ycu cầu phi chức năng có thể làm cho hệ thống ngừng hoạt động, không sử dụng được. Sommerville [25] dã mô tá các kiểu khác nhau cùa yêu cầu phi chức năng: - Yêu cẩu về sàn phàm: yêu cầu này xuất hiện từ những đòi hỏi của sản phấm sẽ được phân phối sừ dụng trong những trường hợp cụ the. Vi dụ yêu cầu về thời gian hệ thống phải trả lại kết quả, về tinh tin cậy (tỳ lệ lỗi chấp nhận được),... Các yêu cầu này thuờng trực tiếp từ nhu cầu của NSD - Yêu cầu mang tinh lô chức: Những yêu cầu này xuất phát từ các quy định và thù tục cùa các tồ chức. Vi dụ, một số chuấn bắt buộc phài áp dụng như yêu cầu ngôn HỊỊŨ lập trình hoặc phương pháp thiếl kề được sừ dụng, ... Các yêu cầu này có thể từ cả NSD và từ các tổ chức phát triển. - Yêu cầu mớ rộng: Khái niệm này để chi tất cả những yêu cầu xuất phát từ các nhân tố bên ngoài tác động lên hệ thống trong tiến trình phát triển và vận hành. Nó bao gồm yêu cầu về tinh lur/HỊỊ hựp: xác định cách thúc hệ thống tương tác với các hệ thống khác trong môi trường mà nó hoạt động. Yêu cầu về linh pháp lý, yêu cầu về tính văn hóa đặt ra nhằm bảo đảm sản phẩm đưa ra phải phù hợp với phong tục, đạo đức, thói quen của người dùng,... 3- Các yêu cầu miền lĩnh vực Trong thực tế, người ta còn quan tâm đến cúc yêu cầu miền lĩnh vực (domain requirements). Đó là các yêu cầu xuất phát tù miền ứng dụng. Chúng phàn ánh các đặc trưng cùa lĩnh vực ứng dụng này thông qua các yêu cầu nghiệp vụ. Chúng có thể là chức năng hay phi chức năng. 4- Các yêu cầu của người dùng Yêu cầu của ngux'ri dùng (User requirements) là những đòi hỏi cùa NSD về các dịch vụ mà hệ thống cung cấp và các ràng buộc khi nó hoạt động. Chúng được diễn tả bằng ngôn ngữ tự nhiên và thường có kèm theo biểu đồ. Đó là những mô là theo cách cùa người dùng. Ví dụ về yêu cầu người dùng: Phần mềm phải cung cấp phương tiện biểu diễn và truy cập tới những file ngoài được tạo ra bời một công cụ khác. 67 3.1.3. Các cách tiếp cận và các kỹ thuật phân tích yêu cầu hệ thống 3.1.3.1. Khái quáI về các cách nếp cận và các kỹ thuật phân lích Có nhiều phương pháp khác nhau để tiếp cận việc xác định yêu cầu: 1- Phưanu pháp mô hinh. Đây là phương pháp phân tích yêu cầu được sử dụng rộng rãi nhất. Một số mô hình được xây dựng để dành riêng cho việc suy luận và phân tích yêu cầu. Một số khác lại rất gần với việc định nghĩa cho một phương pháp. Các phân tích dựa trên mô hinh điển hình đi theo hai hướng tiếp cận: + Tiếp cận định hướng chÍK năng là các phương pháp phân tích hướng cấu trúc dựa trên luồng dữ liệu. + Tiếp cận định hw'mg đối lượng. 2- Phương pháp huớng cách nhìn (viewpoint). Sommerville (2001), đã ghi nhận hướng cách nhìn theo một trong các góc độ sau: + Từ nguồn hay đích lới cùa dữ liệu: Cách nhìn ờ đây tập trung vào điểm đại diện cho việc tạo ra hay sử dụng dữ liệu. Việc phân tích bao gồm việc xác định dữ liệu gì được tạo ra, được sử dụng và những xử lý nào được tiến hành. Nó điển hình cho phương pháp phân tích vào / ra (Input - Output analysis). + Từ khung làm việc trình diễn: Cách nhìn này xem xét từ loại hình công cụ mô tả mô hình hệ thống. Ví dụ như mô hình thực thế - mối quan hệ, mô hình máy trạng /hái hữu hạn. Mỗi cách tiếp cận phát hiện ra những đối tuợng khác nhau của hệ thống được phân tích và những mối quan hệ của chúng. + Từ sự liếp nhận dịch vụ: Cách nhìn này tù ngoài vào hệ thống và sự tiếp nhận dịch vụ từ hệ thống. Các quan điểm này cung cấp dữ liệu cho các dịch vụ và các tín hiệu kiểm tra. Việc phân tích bao gồm kiểm tra các dịch vụ nhận được theo quan điểm khác nhau, thu thập chúng và giải quyết các xung đột. Có nhiều kỹ thuật phân tích yêu cầu. Một số kỹ thuật điển hình: 1- Kỹ thuât phân tích vêu cầu dua trẽn phương pháp mồ hình hoá Kỹ thuật phân tích yêu cầu dựa trên phương pháp mô hình hoá đang là phương pháp phổ dụng hiện nay. Chúng ta sẽ tìm hiểu phương pháp này kỹ hơn thông qua những ví dụ được trình bày dưới đây. 68 2- Kv thuât VORD (Viewpoint-Oriented Requirements Definition) được Kotonua and Sommeville đề xuất năm 1996. Các giai đoạn cơ bản cùa VORD bao gồm: + Xúc định khung nhìn bao gồm việc tìm kiếm các khung nhìn thu nhận các dịch vụ hệ thống và việc xác đjnh các dịch vụ cung cấp cho từng khung nhìn. + Cấu trúc khung nhìn bao gồm nhóm các khung nhìn liên quan vào trong một hộ thống phân cấp. Các dịch vụ chung được cung cấp ờ mức cao trong hệ thống này và được các khung nhin ờ mức thấp hơn kế thừa. + Lùm lài liệu khung nhìn bao gồm việc làm mịn các mô tả khung nhìn và dịch vụ được xác định. + Ánh xạ hệ Ihổng - khung nhìn: xác định các đối tượng trong một thiết kế hướng đối tượng khi sừ dụng các thông tin dịch vụ đuợc bao gói trong một khung nhìn. 3- Kỹ thuât phân tích hình thức hoà Kỹ thuật phân tích hình thức hóa dựa trên việc sử dụng các khái niệm, ký pháp và mô hình toán học để phân tích và biểu diễn hệ thống. Việc phân tích không tách thành mô hinh riêng, mà kết quả cùa hoạt động phân tích và mô hình hóa cho ngay đặc tả yêu cầu cùa hệ thống. 3.1.3.2. Kỹ ihuậí phân tích yêu cầu dựa trên phương pháp mô hình hoá Để phát hiện được các yêu cầu, cả hai cách tiếp cận hướng chức năng và hướng đối tượng đều tập trung hướng vào mô tả mặt nghiệp vụ của hệ thống thực và kết quả thu được là một mô hình nghiệp vụ. I- Mô hình nghiệp vụ Mô hình nghiệp vụ được xây dựng trên cơ sở của phương pháp phân tích hộ thống bao gồm: + Một mô hình ngữ cánh mô tả hệ thống được xét trong môi trường cùa nó. Ở đây đặc biệt chú ý đến các yếu tố môi truờng có tương tác với hệ thống 69 gọi là các tác nhân. Thông qua mô hinh này cũng cho phép xác định rõ phạm vi cùa hệ thống cần nghiên cứu. Tùy theo cách tiếp cận mà khái niệm về tác nhân và mối quan hệ tmrnỊỊ lác của hệ thống với tác nhân được mô tả bằng cách khác nhau (cả về khái niệm và ký pháp) + Các mô hình cấu trúc chức năng mô tả cấu trúc các chức năng bên trong hệ thống. Các mô hình này thường có nhiều mức, mỗi mức mô tả chức năng ờ mức gộp hay chi tiết khác nhau. Ở mức thấp nhất, nội dung các chức năng đù dễ hiểu và có thể mô tả chi tiết nó với các thông tin cần thiết. Tùy theo cách tiếp cận mà khái niệm chức năng và liên kết cấu trúc giữa chúng cũng như ký pháp sử đụng là khác nhau. Ở đây các phương pháp phân hoạch/phân rã các chức năng khác nhau được sử dụng. + Mô là chi nết các chức năng: Một cách tự nhiện, mô tả chi tiết chỉ cẩn thiết và có thể thực hiện với các chức năng mức thấp nhất - chức năng cơ sở. Tuy nhiên, cũng có thể mô tả chức năng ở mức cao (theo hướng đối tượng) để dễ hiểu và lần vết trong quá trình tiếp cận dần. Tùy thuộc vào cách tiếp cận, nội dung và cách mô tả chức năng cũng khác nhau. + Mô là các đối tượng dữ liệu cần cho việc lưu giữ sau này. Do bản chất của mỗi cách tiếp cận mà sự mô tả ở đây là khác nhau về cơ bản Theo hirớng cấu trúc, mô tả dữ liệu bao gồm tất cả hồ sơ được sử dụng trong hoạt động nghiệp vụ và các bản mẫu thực của chúng. Trong khi đó, theo hướng đối tượng, mô tả lại bao gồm các đối tượng và khái niệm của thế giới thực. + Mỏ lả mói liên kết giữa dữ liệu và chức năng: Mô tả này chi cần thiết đối với cách tiếp cận hướng cấu trúc. + Từ điển giải thích liên quan đến các khái niệm và dữ liệu sử dụng. Từ điển này là cần thiết để có sự hiểu biết chung thống nhất về hệ thống thực được mô tả cũng như các đặc trung cùa các dữ liệu cần lưu giữ. 2- Các the hiện cùa mô hình phân tích Mô hỉnh nghiệp vụ của hoạt động phân tích yêu cầu theo hai cách tiếp cận định hướng cấu trúc và định hướng đối tượng được thể hiện trong bảng 3.1 70 Báng 3. ì. The hiện cua mỏ hình nghiệp vụ theo cách liếp cận Các Ihànli phần của mô hình Thể hiện của I1IÔ hình theo HưóvỊỊ cấu trúc Hưóng đối tượng 1 - Mô hình IIỊỊŨ canh 2- Mỏ hình cấu trúc các chức năng 3- Mô tù chi tiết chức năng Gồm ba thành phần: - Các Hen trình (hình chữ nhật góc tròn/elip) duy nhất mô tá hệ thống, - Các túc nhân (hình chữ nhật) mô tả người, tổ chức, hệ thống khác không thuộc hệ thống - Các luồng dữ liệu (mũi tên) liên kết giữa tác nhân và hệ thống, kèm theo các thông tin chuyển giao Gồm một hay một số biểu đồ phân cấp hình cây, mỗi nút là một chức năng; Mỗi chức năng ờ mức dưới nhận được bằng cách phân rã chức năng trên của nó; Chức năng mức thấp nhất là chức năng cơ sở . Chi mô tả chức năng cơ sờ; Mô tả gồm tên chức năng, các dữ liệu vào, dữ liệu ra, nguồn, đích, các quy tắc nghiệp vụ để thực hiện chức năng. Gồm ba thành phần: - Các ca sư dụng (hình elip) mức cao mô tá hệ thống - Các tác nhân (hình iiịỊuxri) là người, các hệ khác có tương tác với hệ thong - Các Hùn kèí luxrriỊỊ lác (kỳ pháp UML) giữa tác nhân với các ca sử dụng, và giữa ca sừ dụng với nhau Là các biếu đồ ca sứ dụng tương úng với các mức khác nhau; Biểu đồ của mức dưới nhận được tù sự phân rã các ca sừ dụng mức trên; Ca sù dụng mức thấp có thể mô tả sự tương tác. Mô tả mỗi ca sừ dụng bằng các luồng tương tác chính/ ngoại lệ giữa tác nhân và hệ thống; Các ràng buộc lên luồng tương tác. 71 4- Mõ tà các đối hrợnịỉ dữ liệu 5- Mô tà Hên két giũa chirc năng và dữ liệu Danh sách các hồ sơ dữ liệu sử dụng; Các mẫu hồ sơ, từ điển dữ liệu. Ma trận thực thể-chức năng: mỗi cột ứng với một hồ sơ, mỗi dòng-một chức năng; Mỗi ô ghi tương tác giữa chức năng và hồ sơ. Mô hình miền lĩnh vụv với các đối tượng là các thực thể hay khái niệm được liên kết với nhau. Không cần 6- Từ điển giải thích Từ điển giải thích Từ điển giải thích khái niệm 3.2. Các yêu cầu phần mềm Yêu cầu phần mềm là các đòi hỏi không thề thiếu về các chức năng /dịch VM mà phần mềm dự kiến phải cung cấp và các ràng buộc mà phần mềm và cả hệ thống phải tuân thù khi vận hành. Yêu cầu phần mềm phải được viết sao cho NSD có thể hiểu được mà không cần một kiến thức chuyên môn đặc biệt nào. Yêu cầu phần mềm được biểu diễn bằng các mô tả trừu tượng. Cỏ hai đòi hỏi cơ bàn đế đoi với các yêu cầu phan mềm: 1 - Các yêu cầu phần mềm phái bộc lộ theo phương thức "trên- xuống". Các chức năng, giao diện và thông tin chù yếu phái đirợc hiếu hoàn loàn rõ trước khi xác định chi tiết các tầng kế tiếp. 2- Người phân lích cũng phải hiểu từng khuôn cành phần mềm và đánh siá được các bước kỹ nghệ phần mềm tổng quát, áp duns được bất kể khuôn cành nào cần dùng. Nhiều yêu cầu phần mềm không tirờng minh (như thiết kế cho bào trì) được tồ hợp vào Bản đặc tả yêu cầu chi nếu người phân tích hiếu được kỹ nghệ phần mèm. Bản đặc tả các yêu cầu phần mềm được tạo ra tại đỉnh cao cùa nhiệm vụ phân tích. Chức năng và hiệu năng được cấp phát cho phần mềm xem như một phần của kỹ nghệ hệ thống thường được làm mjn bằng cách thiết lập phần mô tả thông tin đầy đù nhu mô la chức năng chi liai, chi báo vè cúc yêu cầu hiệu nãiiỊỉ và những rùnịỉ buộc thiếí ke, các tiêu chiián hợp lậ thích hợp vù những dữ liệu khúc thuìmg cằn lới. Cơ quan tiêu chuẩn quốc gia, IEEE và Bộ quốc phòng Mỹ de nghj các định dạng cho các đặc tả ycu cầu phần mềm. Hang 3.2. I)ÙIì hùi đặc la yêu cầu phan mèm /23/ Dàn bài đặc ta yêu càu phàn mèm I Giới thiệu A Đại cương về hệ thống B. Mô tả chung c . Các ràng buộc dự án phần mềm II. Mô tả thông tin A. Biểu diễn luồng thông tin 1. Luồng dữ liệu 2. Luồng điều khiển B. Biểu diễn nội dung thông tin c . Mô tả giao diện hệ thống III. Mô tả chức năng A. Phân hoạch chức năng B. Mô tả chức năng 1. Tường thuật về cách xử lý 2. Hạn chế/giới hạn 3. Yêu cầu hiệu năng 4. Ràng buộc thiết kế 5. Biểu đồ trợ giúp (mục tiêu, mục đích) (cấu trúc) (phạm vi) (chi tiết) (dựa vào cấu trúc thông tin) (đặc biệt chú ý đến khi xét các hệ thời gian thực) (cho từng chức năng) (lời giải thích) (về các mặt, kinh tế, xã hội, kỹ thuật, chi phí, thời gian) (theo từng mô-đun) (có luận giải) (cấu trúc tổng thể, tương quan với các phần từ hệ thống khác) 73 c. Mô tả điêu khiên 1. Đặc tả điều khiển 2. Ràng buộc thiết kế (có luận giải) rv. Mô tả hành vi (xem xét vận hành của phần A. Trạng thái hệ thống mềm) B. Sự kiện và hành động (mức toàn cảnh, mức đỉnh) V. Tiêu chuẩn hợp lệ (mức cụ thể, bộ phận) A. Giới hạn hiệu năng (quan trọng nhất nhung hay bị B Lớp các kiểm thừ bỏ quên) c. Đáp úng phần mềm dự kiến D. Các xem xét đặc biệt (tiêu chuẩn hướng tới (lí tưởng)) VI. Sách tham khảo (tài liệu công nghệ phần mềm khác, tham khảo kỹ thuật,...) VII. Phụ lục(Danh sách các nhà cung cấp, các chuẩn,...) Trong nhiều trường hợp bản đặc tà các yêu cầu Phần mềm còn có thể còn có kèm theo một bản mẫu thực hiện được (mà trong một số trường hợp có thể thay thế được cho bản đặc tả), một bản mẫu trên giấy, hay lài liệu sơ bộ của ngurri dùng. Bản lài liệu sơ bộ của người dùng trình bày phần mềm như hộp đen. Túc là, chù yếu nhấn mạnh vào cái vào cùa người dùng và cái ra kết quả. Tài liệu này có thể dùng như một công cụ có giá trị để làm lộ ra vấn đề ờ giao diện người -máy. Việc xét duyệt bản đặc tá các yêu cầu phần mềm (và hoặc bản mẫu) do cả người phát triển phần mềm và khách hàng cùng tiến hành. Bởi vì đặc tả tạo nên nền tảng cho giai đoạn phát triển nên cần phải cực kỳ cẩn thận trong khi tiến hành cuộc họp xét duyệt. Mộ! khi việc xét duyệt đã hoàn tất thì bàn đặc tá các yêu cầu phan mèm sẽ được cả khách hàng lẫn ngirtri phát triển "ký tắt". Ràn đặc tà trớ thành "hợp 74 đồnịỉ" cho việc phái triền phần mèm. Những thay đối trong yêu cầu được nêu ra sau khi bán đặc tả đã hoàn thành sẽ không bị loại bỏ. Nhưng khách hàng phải lưu ý rang từng thay đổi sau khi ký đều là một mở rộng cùa phạm vi phần mềm và do đó có thế làm tăng thêm chi phi và/hoặc kéo dài lịch biểu Bản đặc tả rất khó "kiểm thừ" theo mọi cách có nghĩa, do đó sự không nhất quán hay bỏ sót có thể bị bỏ qua không chú ý tới. Trong khi xét duyệt, người ta có thể khuyến cáo những thay đối cho bán đặc tả. Có thể sẽ cực kỳ khó khăn để định lượng tác động toàn cục cùa thay đổi, tức là làm sao việc thay đối trong một chức năng lại ảnh hướng tới các ycu cầu cho chức năng khác? Người ta đã phát trien các công cụ đặc tả tự động hoá để giúp giải quyết van đề này. 3.3. Tài liệu dặc tả yêu cầu Tài liệu yêu càu mức hệ thống (system requirements) nêu ra các dịch vụ cùa hệ thong và chi tiết các ràng buộc cùa nó. Tài liệu này đôi khi còn gọi là đặc la chức năng hệ thống, cần phải rõ ràng và chính xác. Nó được sừ dụng làm cư sở cho hợp đồng giữa người mua và nguời phát triển phần mềm [16]. Đặc ta phần mem (software specification) là sự mô tả khái quát các chức năng phần mềm trợ giúp hoạt động nghiệp vụ làm cơ sờ để thiết kế và triển khai phần mềm sau này. Tài liệu đặc íù phần mềm được bổ sung thêm các đặc tả về các phần tù khác trong hệ thống để trở thành lài liệu đặc là yêu cầu hệ thống. Yêu cầu hệ thống được mô tả theo các mức khác nhau phực vụ cho những người đọc khác nhau. Yêu cầu người dùng phải hướng tới mức quản lý, tức là cả khách hàng và nguời quản lý thầu đều hiểu được. Trong khi đó đặc tớ yêu cầu hệ thong lại huớng tới nhóm kỹ thuật và những người quản lý dự án. Người sừ dụng hệ thống có thể đọc cả hai loại tài liệu nói trên. Cuối cùng, đặc là yêu cầu phần mèm là tài liệu hướng tới việc triển khai. Nó được viết cho các kỹ sư phần mềm, những người tham gia vào tiến trình phát triển hệ thống. 75 về nguyên tắc, các yêu cầu cùa hệ thống phải là vừa đầy đủ, vừa không gây ra mâu thuẫn. Thực tế đối với các hệ lớn và phức tạp thì thực khó đạt được tính đầy đủ và tính không gây mâu thuẫn cho phiên bản đầu cùa tư liệu yêu cầu phần mềm. vấn đề là khi duyệt lại hoặc trong các pha sau này của vòng đời phần mềm nguời ta phát hiện ra các sự không thoả mãn đó thi tư liệu yêu cầu phải được chinh lý lại. Việc xác đjnh yêu cầu là việc đặc tả hướng khách hàng và được viết hời ngôn ngữ cùa khách hàng. Khi đó có thể dùng các khái niệm không chính xác, ngôn ngữ tự nhiên và các biểu đồ. Đặc lả yêu cầu (được gọi là đặc lá chức năng) là cơ sở cho hợp đồng làm hệ thống: nó phải không được mơ hồ, mà mơ hồ đó có thể dẫn tới sự hiểu lầm bởi khách hàng hoặc bởi người ký hợp đồng. Đặc tả yêu cầu thường được trinh bày bằng các mô hình hệ thống. Rất nhiều vấn đề của kỹ nghệ phần mềm là khó khăn đối với đặc tả yêu cầu. Với một yêu cầu mơ hồ thì người phát triển sẽ thực hiện nó sao cho rẻ nhất. Trong khi đó khách hàng lại không muốn như vậy. Sau các cuộc đấu khẩu kéo dài thì các yêu cầu mới sẽ được thiết lập và có các đổi thay đối với hệ thống. Dĩ nhiên việc đó làm trì hoãn ngày phân phát hệ thống và làm tăng chi phí. Chi phi do các sai sót trong việc phát biểu các yêu cầu có thể là rất cao, đặc biệt là nếu các sai này còn vẫn chưa được phát hiện truớc khi hệ thống được thực hiện. Boehm báo cáo rằng trong một vài hệ thống lớn thỉ có đến 95% các mã đã phải viết lại để thoả mãn các yêu cầu của người dùng đã đổi thay và 12% các lỗi được phát hiện trong khoảng ba năm đầu sử dụng là các lỗi do đặc tả yêu cầu không đúng đắn. Chi phi do thay đổi một yêu cầu là đắt hơn nhiều so với chi phí sửa chữa thiết kế hoặc do lỗi mã. Khi đặc tả yêu cầu thường phải sử dụng những công cụ đặc biệt, như các mô hình hay các ngôn ngữ đặc tả chuyên dụng vì việc mô tả bằng ngôn ngữ tự nhiên có nhiều hạn chế [9], Có người đề nghị rằng các ngôn ngữ đặc tả hình thức toán học nên được dùng để biểu thị các yêu cầu hệ thống. Nhưng đa số các khách hàng lại không 76 hiểu đặc tả hinh thức toán học. Hall [23] đề xuất COI1 đường đẻ di vòng qua khó khăn đó là viết thêm các chú giài dài dòng ngay bôn cạnh cho người dùng dc hiểu. Khi nào người dùng trở nên quen thuộc hơn với những ưu điểm của đặc tả hình thức và các kỹ sư phần mềm không còn miễn cưỡng dùng các phương pháp hinh ihức thì sẽ có nhiều các đặc tả yèu cầu SC dựa trên các mô hình hình thức cùa chức năng hệ thống. Hiện tại, có nhiều lựa chọn khác đã được nghiên cứu thay cho việc đặc tà bằng ngôn ngữ tự nhiên, đó là: - Ngôn ngữ tự nhiên cỏ cấu trúc; - Ngôn ngữ mô la churrtiỊỊ trình; - Ngôn ngữ đặc tá yêu cầu; - Đặc tà dựa trẽn mô hình với ký pháp đò họa; - Đặc lá bằng toán học - hình ihức hóa. Tuỳ theo các tổ chức cụ thể, đặc tả yêu cầu có thể đuợc thể hiện bằng các cách khác nhau kề từ mức phát biểu bằng ngôn ngữ tự nhiên về các dịch vụ mà hệ cần cung cấp đến mức đặc tả hệ thống một cách hình thức kiểu toán học. Danh giới giữa các yêu cầu và đặc tả hình thức là một thứ rất tinh tế và các thuật ngữ này lại còn có thể được dùng theo nghĩa như nhau. Bản đặc tả hệ thống là một tài liệu nền tảng cho kỹ nghệ phần cứng, kỹ nghệ phần mềm, kỹ nghệ CSDL và kỹ nghệ con nguời. Nó mô tả về chức năng và hiệu suất của hệ thống và những ràng buộc hệ thống, quy định cả giới hạn cho từng phần từ hệ thống, mô tả thông tin (dữ liệu và điều khiển) vào và ra khỏi hệ thống. Dàn bài về bản đặc tả hệ thống sẽ được trình bày trong bảng 3.3. Tuy nhiên cần lưu ý rằng đây chỉ là một trong nhiều dàn bài có thể được dùng để định dạng một tài liệu mô tả hệ thống. Định dạng và nội dung thực tế có thể còn tuỳ vào các chuẩn kỹ nghệ hệ thống hay phần mềm. Nó được điều chinh theo yêu cầu và mức ưa chuộng của người dùng. 77 Ráng 3.3. Dàn hài đặc tà hệ ihống /23/: I. Giới thiệu A. Phạm vi và mục tiêu cùa dự án B. Tồng quan 1. Mục tiêu 2. Ràng buộc II. Mô tả chức năng và dữ liệu A. Kiến trúc hệ thống 1 Biểu đồ ngữ cảnh kiến táic 2. Mô tả về biểu đồ ngữ cảnh hệ thống B. Cấu trúc dữ liệu III. Mô tả các hệ thống con A. Đặc tả biểu đồ kiến trúc cho hệ con n 1. Biểu đồ luồng kiến trúc 2. Chú giải mô-đun hệ thống 3. Vấn đề về hiệu suất 4. Ràng buộc thiết kế 5. Cách tạo các thành phần hệ thống B Từ điển kiến trúc c. Biểu đồ và mô tả liên nối hệ thống IV. Các kết quả mô hỉnh hoá và mô phỏng hệ thống A. Mô hình hệ thống được dùng cho mò phỏng B. Kết quả mô phỏng c. Vấn đề hiệu suất đặc biệt V. Vấn đề dự án A. Chi phí xây dựng dự phòng B. Lịch biểu dự phòng VI. Phụ lục Đặc là hệ thống phái được xét duyệt. Cuộc xét duyệt đặc tả hệ thống nhằm đánh giá tính đúng đắn của định nghĩa được chứa trong bản đặc tả hệ 78 thống. Mức độ chi tiết trong giai đoạn đánh giá kỹ thuật (họp xét duyệt hộ thống) phụ thuộc vào mức độ chi tiết trong nhiệm vụ xác định ban đầu. Bản đặc tả các yêu cầu phần mềm dược tạo ra tại đỉnh cao của nhiệm vụ phân tich. Chức năng và hiệu năng được cấp phát cho phần mềm xem như một phần cùa kỹ nghệ hệ thống thường được làm mịn bằng cách thiết lặp phần mô tả thông tin đầy đủ như mô la chức năng chi tiết, chi báo ve các yên cầu hiệu năng và những ràriỊỊ buộc thiêí kẻ, các liêu chuân hợp lệ thích hợp và nhũng dữ liệu khác thường cấn lới. Cơ quan tiêu chuấn quốc gia, IEEE và Bộ quốc phòng Mỹ đề nghị các định dạng cho các đặc tá yêu cầu phần mềm. Hanỵ 3.4. Dàn bùi đặc lá yêu cáu phân mèm Dàn bài dặc la yêu cẩu phần mềm 1. Giới thiệu A. Đại cương về hệ thống (mục tiêu, mục đích) B. Mô tả chung (cấu trúc) c. Các ràng buộc dự án (phạm vi) phần mềm (chi tiết) II. Mô tả thông tin (dựa vào cấu trúc thông tin ) A. Biểu diễn luồng thông tin 1. Luồng dữ liệu 2. Luồng điều khiển B. Biểu diễn nội dung thông tin c. Mô tả giao diện hệ thống III. Mô tả chức năng A. Phân hoạch chức năng B. Mô tả chức năng (đặc biệt chú ý đến khi xét các hệ thời gian thực) (cho từng chức năng ) (lời giải thich) (về các mặt, kinh tế, xã hội, kỹ thuật, chi phí, thời gian) 79